11网信计算机C语言课程设计计划书.docx
《11网信计算机C语言课程设计计划书.docx》由会员分享,可在线阅读,更多相关《11网信计算机C语言课程设计计划书.docx(12页珍藏版)》请在冰豆网上搜索。
11网信计算机C语言课程设计计划书
C语言课程设计报告
题目:
职工信息管理系统设计
设计者:
王锐
专业班级:
网信11-3班
学号:
311109050323
指导教师:
张保定
2012年6月13日
河南理工大学计算机学院
目录
设计任务书……………………………………………………3
1.题目与要求…………………………………………………3
1.1问题提出…………………………………………………3
1.2本系统涉及的知识点…………………………………………3
1.3功能要求……………………………………………………4
2.功能设计……………………………………………………4
2.1算法设计……………………………………………………4
2.2部分模块流程图……………………………………………5
3.程序代码设计……………………………………………6
3.1输入模块……………………………………………………6
3.2保存模块(参考)……………………………………………6
3.3删除模块……………………………………………………7
3.4添加模块……………………………………………………7
3.5查询模块……………………………………………………7
5.C程序设计总结……………………………………………8
参考文献………………………………………………………8
设计任务书
1题目与要求
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:
Ø系统以菜单方式工作
Ø职工信息录入功能(职工信息用文件保存)
Ø职工信息浏览功能
Ø查询和排序功能:
(至少一种查询方式)
●按工资查询
●按学历查询等
Ø职工信息删除、修改功能(任选项)
1.1问题提出
本人计划编写一个职工信息管理系统,主要以菜单方式工作,以用来实现职工信息录入功能(职工信息用文件保存),职工信息浏览功能,对职工信息进行查询和排序,其中按工资查询,按学历查询等至少一种查询方式,并且要实现职工信息的删除和修改功能(任选项)。
1.2本系统涉及的知识点
结构体、数组、循环、函数、分支
1.3功能要求
本人所要实现的题目功能
1、建立职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)
2、浏览职工信息;
3、分别按职工号,学历,电话号码查询职工信息;
4、删除职工信息,添加职工信息,修改职工信息;
5、退出职工信息管理系统。
2功能设计
1.菜单模块:
显示职工管理系统的主菜单,供用户选择所需的功能
2.输入模块:
输入职工的工号、姓名以及其它的一些职工的相关信息
3.保存模块:
将内存中职工的信息输出到磁盘文件中(网上参考)
4.删除模块:
删除需要删除的职工的所有信息
5.添加模块:
添加需要添加的职工的相关信息
6.查询模块:
可以按职工号,职工的电话来查询职工的相关信息
2.1算法设计
将题目分成若干模块或部分、各模块或部分的算法设计(小四,宋体),
本系统需要实现的功能要求:
1.通过自己定义的voidmenu()函数,do-while循环体以及switch条件选择语句来实现显示职工管理系统的主菜单,供用户选择所需的功能。
************欢迎进入职工信息管理系统**********
1.录入职工信息2.浏览职工信息
3.查询职工信息4.删除职工信息
5.添加职工信息6.修改职工信息
7.退出
********************谢谢使用******************
图1职工信息管理系统主菜单
1)选择1,调用for循环函数,进入函数后利用scanf和printf语句实现一个职工信息的录入,如图2所示的菜单
1请输入职工号
2请输入姓名
3请输入性别(f--女m--男)
4请输入年龄
5请输入学历
6请输入工资
7请输入住址
8请输入电话
图2职工信息菜单
根据所选菜单编写相应代码:
输入函数input:
利用循环输入的方式,将有关信息存入结构数组,结构数组根据实际的人数,采用动态方式建立……
2)选择2,通过voiddisplay()函数和for循环将图2的类容呈现出来
3)选择3,通过voidsearch_num()函数,if条件选择,以及switch选择语句对职工信息进行查询
4)选择4,通过voiddel()删除函数,删除职工信息
5)选择5,通过自己定义的voidadd()函数来实现。
6)选择6,以修改需要修改的职工的相关信息,通过自己定义的voidmodify()函数来实现。
2.2部分模块流程图
3程序代码设计
输入模块:
输入职工的工号、姓名以及其它的一些职工的相关信息,通过自己定义的voidinput()函数来实现。
1)函数原形voidinput()
2)功能:
通过for循环创建职工基本信息.
3)变量及类型:
inti:
循环控制变量。
intn:
整型形参变量,接收main()传过来的数组人数。
保存模块(参考):
将内存中职工的信息输出到磁盘文件中,可以通过自己定义的voidsave(int)函数来实现(网上参考)。
1)函数原形:
voidsave(int)
2)功能:
将内存中职工的信息输出到磁盘文件中并保存
删除模块:
删除需要删除的职工的所有信息,通过自己定义的voiddel()函数来实现。
1)函数原形:
voiddel()
2)功能:
删除需要删除的职工的所有信息
3)变量及类型:
inti,j:
循环控制变量。
charname[20]一维数组
添加模块:
添加需要添加的职工的相关信息,通过自己定义的voidadd()函数来实现。
1)函数原形:
voidadd()
2)功能:
添加需要添加的职工的相关信息
3)变量及类型:
intn整型形参变量,inti循环控制变量。
查询模块:
可以按职工号和职工的电话来查询职工的相关信息,通过自己定义的voidsearch_num()函数和voidsearch_tel函数来实现。
1)函数原形:
voidsearch_num()和voidsearch_tel函数
2)功能:
按职工号和职工的电话来查询职工的相关信息
4C程序设计总结
内容:
1.程序调试情况:
调试还行,问题不大
2.本人在程序设计中感想:
通过这次课程设计,增加了我们对软件技术的了解,虽然还不明确软件技术包含的具体内容,但从学习C语言这门课程开始,已发现程序设计的好处,它对我们数学的学习也有很大的帮助。
参考文献(左对齐,宋体粗四号)
[1]《C程序设计》(第三版)谭浩强著清华大学出版社清华大学出版社
[2]《C程序设计题解与上机指导》(第三版)谭浩强编著
附录:
程序清单
#include
#include
#include
#defineN100
structemployee{intnum;charname[20];charsex;intage;charxueli[30];intwage;charaddr[30];chartel[20];}em[100];/*定义一个结构体*/
voidmenu();voidinput();voidsave(int);voiddisplay();voiddel();voidadd();voidsearch();voidsearch_num();voidsearch_xueli();voidsearch_tel();voidmodify();/*定义各函数*/
voidmain(){menu();intn,flag;chara;
do{printf("请选择你需要操作的步骤(1--7):
\n");scanf("%d",&n);
if(n>=1&&n<=7){flag=1;break;}
else{flag=0;printf("您输入有误,请重新选择!
");}}while(flag==0);
while(flag==1){switch(n){case1:
printf("◆◆◆输入职工信息◆◆◆\n");printf("\n");input();break;case2:
printf("◆◆◆浏览职工信息◆◆◆\n");printf("\n");display();break;case3:
printf("◆◆◆按职工号查询职工信息◆◆◆\n");printf("\n");search();break;case4:
printf("◆◆◆删除职工信息◆◆◆\n");printf("\n");del();break;case5:
printf("◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break;case6:
printf("◆◆◆修改职工信息◆◆◆\n");printf("\n");modify();break;case7:
exit(0);break;default:
break;}getchar();printf("\n");printf("是否继续进行(yorn):
\n");scanf("%c",&a);
if(a=='y'){flag=1;system("cls");/*清屏*/menu();/*调用菜单函数*/printf("请再次选择你需要操作的步骤(1--7):
\n");scanf("%d",&n);printf("\n");}
elseexit(0);}}
voidmenu()/*菜单函数*/{printf("************欢迎进入职工信息管理系统**********\n");printf("1.录入职工信息");printf("2.浏览职工信息\n")printf("3.查询职工信息");printf("4.删除职工信息\n");printf("5.添加职工信息");printf("6.修改职工信息\n");printf("7.退出\n");printf("********************谢谢使用******************\n");printf("\n");printf("\n");}
voidinput()/*录入函数*/{inti,m;printf("请输入需要创建信息的职工人数(1--100):
\n");scanf("%d",&m);for(i=0;i");scanf("%d",&em[i].num);printf("请输入姓名:
");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女m--男):
");scanf("%c",&em[i].sex);printf("请输入年龄:
");scanf("%d",&em[i].age);printf("请输入学历:
");scanf("%s",em[i].xueli);printf("请输入工资:
");scanf("%d",&em[i].wage);printf("请输入住址:
");scanf("%s",em[i].addr);printf("请输入电话:
");scanf("%s",em[i].tel);printf("\n");}printf("\n创建完毕!
\n");save(m);}
voidsave(intm)/*保存文件函数....参考*/{inti;FILE*fp;if((fp=fopen("employee_list","wb"))==NULL){printf("cannotopenfile\n");exit(0);}for(i=0;i=1)printf("filewriteerror\n");fclose(fp);}intload()/*导入函数*/{
FILE*fp;
inti=0;
if((fp=fopen("employee_list","rb"))==NULL)
{printf("cannotopenfile\n");exit(0);}
else{do{fread(&em[i],sizeof(structemployee),1,fp);i++;}while(feof(fp)==0);}
fclose(fp);return(i-1);}
voiddisplay()/*浏览函数*/
{inti;intm=load();printf("职工号\t姓名\t\t性别\t\t年龄\n");
for(i=0;ivoiddel()/*删除函数*/
{intm=load();inti,j,n,t,flag;charname[20];printf("\n原来的职工信息:
\n");display();printf("\n");printf("请输入要删除的职工的姓名:
\n");scanf("%s",name);for(flag=1,i=0;flag&&i{if(strcmp(em[i].name,name)==0)
{printf("\n已找到此人,原始记录为:
\n");printf("职工号\t姓名\t\t性别\t\t年龄\n");printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n学历\t\t工资\t\t住址\t\t电话\n");printf("\n%s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);printf("\n确实要删除此人信息请按1,不删除请按0\n");scanf("%d",&n);if(n==1)
{for(j=i;jif(!
flag)
m=m-1;
elseprintf("\n对不起,查无此人!
\n");printf("\n浏览删除后的所有职工信息:
\n");save(m);/*调用保存函数*/display();/*调用浏览函数*/printf("\n继续删除请按1,不再删除请按0\n");scanf("%d",&t);switch(t)
{case1:
del();break;case0:
break;default:
break;}}
voidadd()/*添加函数*/
{FILE*fp;intn;inti;intm=load();printf("\n原来的职工信息:
\n");display();printf("\n");fp=fopen("emploee_list","a");printf("请输入想增加的职工数:
\n");scanf("%d",&n);for(i=m;i<(m+n);i++)
{printf("\n请输入新增加职工的信息:
\n");printf("请输入职工号:
");scanf("%d",&em[i].num);printf("\n");printf("请输入姓名:
");scanf("%s",em[i].name);getchar();printf("请输入性别(f--女m--男):
scanf("%c",&em[i].sex);printf("请输入年龄:
");scanf("%d",&em[i].age);printf("请输入学历:
");scanf("%s",em[i].xueli);scanf("%d",&em[i].wage);printf("请输入住址:
");scanf("%s",em[i].addr);printf("请输入电话:
");scanf("%s",em[i].tel);printf("\n");count=count+1;printf("已增加的人数:
\n");printf("%d\n",count);}printf("\n添加完毕!
\n");m=m+count;printf("\n浏览增加后的所有职工信息:
\n");printf("\n");save(m);display();fclose(fp);}
voidsearch()/*查询函数*/
{intt,flag;do{printf("\n按职工号查询请按1;按学历查询请按2;按电话号码查询请按3;进入主函数请按4\n");scanf("%d",&t);if(t>=1&&t<=4)
{flag=1;break;}else{flag=0;printf("您输入有误,请重新选择!
");}}
while(flag==0);while(flag==1){switch(t){case1:
printf("按职工号查询\n");search_num();break;case2:
printf("按学历查询\n");search_xueli();break;case3:
printf("按电话号码查询\n");search_tel();break;case4:
main();break;default:
break;}}}
voidsearch_num()
{intnum;inti,t;intm=load();printf("请输入要查找的职工号:
\n");scanf("%d",&num);for(i=0;i\n");printf("职工号\t姓名\t\t性别\t\t年龄\n");printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n学历\t\t工资\t\t住址\t\t电话\n");printf("\n%s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);break;}
if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询职工号请按2\n");scanf("%d",&t);switch(t){case1:
search();break;case2:
break;default:
break;}}
voidsearch_xueli()
{charxueli[30];inti,t;intm=load();printf("请输入要查找的学历:
\n");scanf("%s",xueli);for(i=0;i{printf("\n已找到,其记录为:
\n");printf("职工号\t姓名\t\t性别\t\t年龄\n");printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n学历\t\t工资\t\t住址\t\t电话\n");printf("\n%s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);}
if(i==m)printf("\n对不起,查无此人\n");printf("返回查询函数请按1,继续查询学历请按2\n");scanf("%d",&t);switch(t){case1:
search();break;case2:
break;default:
break;}}
voidsearch_tel()
{chartel[20];inti,t;intm=load();printf("请输入要查找的电话号码:
\n");scanf("%s",tel);for(i=0;iprintf("\n已找到此人,其记录为:
\n");printf("职工号\t姓名\t\t性别\t\t年龄\n");printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);printf("\n学历\t\t工资\t\t住址\t\t电话\n");printf("\n%s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);break;}
if(i==m)printf("\n对不起,查无此人\n");printf("\n");printf("返回查询函数请按1,继续查询电话号码请按2\n");scanf("%d",&t);switch(t){case1:
search();break;case2:
break;default:
break;}}
voidmodify()/*修改函数*/
{intnum;charname[20];charsex;intage;charxueli[30];intwage;charaddr[30];chartel[20];intb,c,i,n,t,flag;intm=load();printf("\n原来的职工信息:
\n");display();printf("\n");printf("请输入要修改的职工的姓名:
\n");scanf("%s",name);for(flag=1,i=0;flag&&i