C语言课程设计报告Word文件下载.docx
- 文档编号:6028874
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:52
- 大小:692.01KB
C语言课程设计报告Word文件下载.docx
《C语言课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告Word文件下载.docx(52页珍藏版)》请在冰点文库上搜索。
●(3)给定工作部门,显示该部门的职工信息。
●(4)给定职工号,修改职工的信息。
●(5)给定职工号,删除职工信息。
提示:
(1)按照分析、设计、编码、调试、测试的软件过程完成这个应用程序。
(2)职工信息应该包含职工号、姓名、工作部门、职称、入厂时间、工资。
(3)为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。
(4)应用程序运行后在屏幕上显示一个菜单。
用户可以根据需求,选定相应的操作项目。
进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。
程序根据用户输入的信息完成相应的处理,实现要求的功能。
(5)能对输入的数据进行简单的校验,例如,入厂时间必须是合法的日期格式,职工号是唯一的(一个职工号对应一个职工的职工信息)。
(6)在程序完成处理后,要清楚地给出程序的处理结果。
例如,在给定职工号删除职工信息时,如果该职工不存在,要提示没能删除,如果删除成功要提示删除成功。
(7)使用结构体表示职工信息,一个结点保存一条职工信息。
1.4运行环境
1)WindowsXP/7系统
2)VC++6.0编译环境
1.5开发工具
C语言
二.系统设计
2.1系统流程设计
本系统的功能模块如图1所示,主要有以下模块:
2.2系统模块设计
1)系统欢迎界面:
显示欢迎界面,并提示是否导入职工信息。
2)主菜单界面:
构造函数voidmenu(),实现系统主菜单的显示。
3)创建职工信息链表:
构造函数voidcreat(),实现新建职工的信息。
4)根据职工号显示信息:
构造函数voidnumber(),实现查询指定职工号的职工信息
5)根据工作部门显示信息:
构造函数voidpart(),实现查询指定部门的职工的信息。
6)根据职工号修改信息:
构造函数voidmodify(),实现对指定职工号信息的修改。
7)根据职工号删除信息:
构造函数voiddel(),实现对指定职工号信息的删除。
8)显示全部职工的信息:
构造函数voiddisplay(),实现显示全部职工信息。
9)显示职工的平均工资:
构造函数voidAveWage(),实现显示职工的平均工资。
10)插入职工的信息:
构造函数voidinsert(),在指定位置插入职工的信息
11)从文件中读入职工信息:
构造函数read(),在指定文件中读入职工信息
12)保存职工的信息:
构造函数voidsave(),保存职工信息
13)退出系统:
构造函数voidexit0()用于退出程序。
2.3.详细设计
(1)数据结构设计
根据系统要求,系统中需要保存的数据信息,其结构如下:
数据项名称
数据项系统表示
数据类型
数据长度
备注
职工号
number
字符串
20
姓名
name
10
工作部门
part
40
职称
job
入厂日期
time
15
工资
wage
整形
为了能实现不受限制的增加职工信息,采用链表的结构保存职工信息,在增加职工的基本信息时,创建一个职工信息的节点,将其插入到链表中,示意图如下。
职工信息1职工信息2职工信息3职工信息4
为此,声明一个类型为structstaff的结构体,其成员为职工各项基本信息。
然后通过对指针、链表、文件等数据结构的操作,实现对职工信息的录入,存盘,查询,浏览,删除,修改等一系列操作。
其中,结构体定义如下:
typedefstructstaff
{
charnum[20];
charname[10];
charpart[40];
charjob[20];
chartime[15];
intwage;
structstaff*next;
}STA;
(2)模块接口设计
1)所有函数模块声明如下:
2)intgetindex(char*num);
3)voidmenu();
4)voidcreat();
5)voidnumber();
6)voidpart();
7)voidmodify();
8)voiddel();
9)voidfreelist();
10)voidAveWage();
11)intcode();
12)voidfirst();
13)voiddisplay();
14)voidread();
15)voidinsert();
16)voidsave();
2)主要模块的实现
系统以主函数voidmain()为入口,首先显示欢迎界面。
然后调用voidmenu()函数,进入主菜单界面。
系统接收用户输入的选择,调用相应的函数,进入到下一级菜单进行相关工作。
(3)主要模块的流程图:
1)主菜单函数:
图1主函数流程序
2)新建职工信息
图2信息建立流程图
2)
信息查询函数:
4)修改职工信息流程图
5)信息删除函数:
图5信息删除流程图
6)文件导入信息流程图
三.程序测试与运行结果
3.1程序测试
(1)各模块分别调试过程及结果
建立职工信息:
运行程序选择0进入新建职工信息界面,按提示输入一条职工基本信息,再回到主菜单,选择5显示所有职工信息,看到有刚建立的职工信息说明该模块功能可以实现。
查询职工信息:
运行程序进入主菜单,选择1,输入一职工号,显示出该职工信息。
部门查询职工信息:
运行程序进入主菜单,选择2,输入部门信息,结果显示该部门所有职工信息,结果与实际一致。
修改职工信息:
运行程序进入主菜单,选择3,输入需要修改职工号,重新按提示输入职工信息,再回到主菜单,选择5显示所有职工信息,看到有刚修改的职工信息。
删除职工信息:
运行程序进入主菜单,选择4,输入需要删除的职工号,再选择5,显示结果无刚才所删除的职工信息。
显示职工的平均工资:
运行程序进入主菜单,选择6,显示结果为平均工资。
插入职工信息:
运行程序进入主菜单,选择8,输入需要插入的职工号,再选择5,显示结果有刚才插入的职工信息。
从文件导入信息:
首先在外部磁盘上建立以文本文件建立几条职工记录,运行主菜单,选择7,显示信息成功导入,返回主菜单,再选择5后,有职工信息显示出来说明导入成功。
保存职工记录:
运行程序进入主菜单,选择0新建职工记录后,选择9保存,再查看指定路径文件,结果显示该职工的记录。
退出系统:
运行程序进入主菜单,选择10,按任意键后成功退出。
(2)集成调试过程及结果。
运行程序进入主菜单,依次选择各功能,结果能正常运行。
(3)功能调试过程及结果
3.2欢迎界面:
3.3主菜单界面
输入选择,进入相应的功能。
3.4职工信息录入界面:
3.5职工号查询职工信息:
从键盘中输入要查询的职工号,显示该职工的信息。
3.6职工部门查询界面:
从键盘中输入要查询的职工部门,显示该职工的信息。
3.7修改职工信息界面:
从键盘中输入要修改的职工号,重新输入职工信息。
3.8删除职工信息界面:
从键盘中输入要删除的职工号,删除该职工记录。
3.9显示所有职工信息界面:
4.0退出界面:
四.课程设计总结
4.1.问题与不足
1)详细设计中存在的问题和分析
2)功能不是很齐全,难以满足各种要求。
3)代码编制中存在的问题和分析
4)调试和测试中存在的问题和分析
4.2.建议
建议以后的课设中老师辅导的时间能增加一些,另外题目应多一些,且难易适中。
4.3.心得体会
经过这次课设,我的编程能力有了很大提高,c语言基础知识的掌握更加牢固。
同时,了解了软件开发的基本流程和思路,深刻体会到模块化的编程思想是多么重要,这次课设是综合应用c语言知识分析问题解决问题的过程,在这个过程中,我遇到了很多问题,发现了很多不足,这对我以后继续学习编程乃至其它课程都有借鉴意义,因为不管学习什么,思路和方法永远是最重要的。
总之,我认为课程设计是一门非常好的课程,它把理论和实践相结合,给了我们一次应用所学知识分析问题解决问题的机会,这对提高我们的能力是非常重要的。
五.程序源代码:
#include<
stdio.h>
stdlib.h>
string.h>
typedefstructstaff/*定义一个结构体*/
/*职工号姓名部门职称入厂时间*/
charname[10];
STAhead,*p;
/*定义头结点*/
STA*findpart(char*part,intm);
STA*findnode(char*num);
intgetindex(char*num);
voidmenu();
voidcreat();
voidnumber();
voidpart();
voidmodify();
voiddel();
voidfreelist();
voidAveWage();
intcode();
voidfirst();
voiddisplay();
voidread();
voidinsert();
voidsave();
intmain()//★★★★★★★★★★★主函数★★★★★★★★★★★★
intselect,m,i;
system("
color20"
);
//屏幕颜色
first();
while
(1)
{
m=code();
if(m==0)
{
printf("
你已成功登陆.....\n"
for(i=0;
i<
20000;
i++)
for(m=0;
m<
m++);
break;
}
}
head.next=NULL;
menu();
printf("
\t请输入您的选择(0~10):
"
end:
scanf("
%d"
&
select);
fflush(stdin);
//清除键盘缓冲区
switch(select)
case0:
creat();
break;
case1:
number();
case2:
part();
case3:
modify();
case4:
del();
case5:
display();
case6:
AveWage();
case7:
read();
case8:
insert();
case9:
save();
case10:
freelist();
system("
cls"
\n\t★★★★★★感★谢★使★用★★★★★★\n"
\t★★\n"
\t★祝您:
★\n"
\t★★生活顺心★万事如意★★\n"
\t★★★★★★★职工管理系统★★★★★★\n\n"
exit(0);
default:
{
printf("
\t★★★★输入错误,请重新输入(0~10):
gotoend;
}
\n"
system("
pause"
//暂停屏幕显示
return0;
}
voidmenu()//★★★★★★★★★★★目录函数★★★★★★★★★★★★
printf("
\n\t★★★★职工管理菜单★★★★\n\n"
\t★\t0.创建职工信息链表\t\t★\n\n"
\t★\t1.根据职工号显示信息\t\t★\n\n"
\t★\t2.根据工作部门显示信息\t\t★\n\n"
\t★\t3.根据职工号修改信息\t\t★\n\n"
\t★\t4.根据职工号删除信息\t\t★\n\n"
\t★\t5.显示全部职工的信息\t\t★\n\n"
\t★\t6.显示职工的平均工资\t\t★\n\n"
\t★\t7.从文件中读入职工信息\t\t★\n\n"
\t★\t8.插入职工的信息\t\t★\n\n"
\t★\t9.保存职工的信息\t\t★\n\n"
\t★\t10.退出\t\t\t★\n\n"
\t★★★★★★★★★★★\n\n"
voidcreat()//★★★★★★★★★★★创建链表函数★★★★★★★★★★★★
inti,m,j=0;
charc;
STA*p,*tail;
if(head.next!
=NULL)
职工链表成功创建!
return;
end1:
tail=&
head;
\t★★请输入职工的人数:
\t"
scanf("
m);
\n★★★★★★★★★请输入职工的信息★★★★★★★\n"
for(i=0;
m;
p=(STA*)malloc(sizeof(STA));
if(p==NULL)
内存分配失败!
return;
\t职工号:
\t\t\t"
scanf("
%s"
p->
num);
\t姓名:
name);
\t工作部门:
\t\t"
part);
\t职称:
job);
\t入厂时间(2015.11.20):
time);
\t工资(整数):
p->
wage);
tail->
next=p;
p->
next=NULL;
tail=p;
tail=&
p=tail->
next;
tail=p->
m-1;
i++)//判断是否有相同的职工号
for(j=0;
j<
m-1-i;
j++)
if(strcmp(p->
num,tail->
num)==0)
gotoend;
tail=tail->
next;
p=p->
tail=p->
}
\n★★★★★★★★★★已成功保存★★★★★★★★★\n"
if(j<
0)//因为j不可能小于0,只有职工号相同时才执行以下操作
\t★★★★★★★★★★★★★★★★★★\n"
\t★★★★★★\n"
\t★★★有相同职工号★★★\n"
\t★★★保存失败★★★\n"
\t★★★请*重*新*输*入★★★\n"
\t★★★★★★★★★★★★★★★★★★\n\n"
free(p);
fflush(stdin);
\t★★★是否继续(Y/N)?
scanf("
%c"
c);
if(c=='
Y'
||c=='
y'
)
{
system("
gotoend1;
}
else
{system("
printf("
exit(0);
return;
voidnumber()//★★★★★★★★★根据职工号显示职工信息函数★★★★★★★★★★
if(head.next==NULL)
\n★★未创建职工链表★★\n"
★★请输入要查找的职工号:
gets(num);
p=findnode(num);
if(p==NULL)
★★★★★★★该职工信息不存在★★★★★★\n"
else
\n★★★★★★★该职工的信息为★★★★★★★\n"
\t★职工号:
\t%s\n\n"
\t★姓名:
\t\t%s\n\n"
\t★工作部门:
\t★职称:
\t★入厂时间:
\t★工资:
\t\t%d\n\n"
return;
voidpart()//★★★★★★★★★根据职工部门显示职工信息函数★★★★★★★★★
inta=-10,m=0;
\n★★未创建职工信息链表★★"
return;
★★请输入要查找的部门:
gets(part);
p=findpart(part,m);
if(a>
0)
p=p->
p=findpart(part,m);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告