[ZA]C语言程序设计职工信息管理系统029_第1页
[ZA]C语言程序设计职工信息管理系统029_第2页
[ZA]C语言程序设计职工信息管理系统029_第3页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、申函犬C语言课程设计C语言课程设计任务书一、题目:职工信息管理系统二、追求和要求追求:要求熟练掌握C语言的基本知识和编辑技能。 基本掌握结构化程序设计的基本思路和方法。要求:设计一个职工信息管理系统,使之能提供以下功能:1、应提供一个桌面来调用各个功能,调用桌面和各个功能的制作桌面 应尽可能清晰美观!2、输入功能:职工信息录入(职工信息用文件保存),可以一次完成 若干条记录的输入。3、浏览功能:完成对全部职工信息的显示。4、查找功能:完成按职工的职工号查询职工的相关信息,并显示。 完成按职工的学历查询职工的相关信息,并显示。 完成按职工的电话号码查询职工的相关信息,并显示。5、删除功能:通过输

2、入职工的姓名完成对该名职工的信息进行删除。6、添加功能:完成添加新职工的信息的任务。7、修改功能:通过输入职工的姓名完成对该名职工的信息进行修改。 8退出职工信息管理系统。三、信息描述职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等。四、解决技术指导文件1、第一步进行需求分析,搞清楚系统功能和任务。2、然后在总体设计中确定模块结构、划分功能模块,将软件功能需求分配给所划分的最单元模块。确定模块间的联系,确定数据结构、文件结构、数据库 模式,确定测试方法与策略。3、在详细设计中,为每个模块确定采用的算法,选择适当的工具表达算法 的过程(进程安排图) 来描述模块的详细过程。 确定每一

3、模块采用的数据结构和 模块接口的细节, 包括对系统外部的接口和用户桌面, 对系统内部其他模块的接 口。4、根据分析编写C语言代码。五、进度安排课程设计进度为两周,分为五个阶段完成:1、分析设计阶段。在老师的指导下自主学习和钻研问题,明确设计要求, 找出现实方法。按照需求分析、总体设计、详细设计几个步骤进行。这一 阶段前 1-2 天完成。2、编码调试阶段。根据设计分析技术指导文件编写 C语言代码,然后调试 该代码,实现课题要求的功能。这一阶段在 3-7 天完成。3、汇总报告报告阶段。汇总报告设计工作,写出课程设计技术指导文件, 包括需求分析、总体设计、详细设计、编码、测试的步骤和内容。这一阶 段

4、在 8-9 天完成。4、考核阶段。六、写课程设计汇总报告课程设计报告要求 汇总报告报告包括需求分析、总体设计、详细设计、编码(详细写出编程步 骤)、测试的步骤和内容、课程设计汇总报告和参考资料等。七、参考资料C程序设计(第三版) 谭浩强 著 清华大学出版社C程序设计题解与上机指导(第三版 )谭浩强 编著 清华大学出版社目录1 总体设计技术指导文件32 使用说明及运行实例53项目源程序代码104 课程设计心得23总体设计技术指导文件系统的总体进程安排图图1.系统的总体进程安排图 二.为了方便使用结构此系统结构均为全局类型定义 struct employee/定义一个职工信息的结构体int num

5、;char n ame10;char sex;int age;char xueli30;int wage;char addr30;char tel20;em100;三.各模块的功能和实现1. 菜单模块:显示职工管理系统的主菜单,供用户选择所需的功能,通过自己定 义的void menu()函数来实现。2. 输入模块:输入职工的工号、姓名以及其它的一些职工的相关信息,通过自己定义的void input()函数来实现。3保存模块:将内存中职工的信息输出到磁盘文件中,可以通过自己定义的voidsave(i nt)函数来实现。4.浏览模块:浏览所有职工的相关信息,通过自己定义的void display

6、()函数来实现。5.删除模块:删除需要删除的职工的所有信息,通过自己定义的void del()函数来实现。6.添加模块:添加需要添加的职工的相关信息,通过自己定义的void add()函数来实现。7. 按职工号查询模块:可以按职工号来查询职工的相关信息,通过自己定义的 void search_num()函数来实现。8. 按职工的的学历查询模块:可以按职工的学历来查询职工的相关信息,通过自己定义的void search_xuelil函数来实现。9. 按职工的电话号码查询模块:可以按职工的电话来查询职工的相关信息,通过自己定义的void search_tel函数来实现。10. 修改模块:可以修改需

7、要修改的职工的相关信息,通过自己定义的void modify ()函数来实现。11. 退出系统模块:退出职工信息管理系统,通过头文件windows.h中的exit (0)函数来实现。使用说明及运行实例1. 运行程序,进入职工信息管理系统的主菜单:*十迎进入职工信息筍里乗充 g 录入职工信息2-浏览职X信息3 -萱询职工信恿4 .删際职X信息5 潘加职工信息6 *修改职工信息丫傕出杠杠“杠“朴祁X谢谢使用“柿杠“和情再次选择(儒要按作的步骤r?>:图1:进入主菜单桌面2. 输入数字“1”进行录入职工信息:欢迎进入职工信息管理系统*hm«*卄1-录入职工肯飮2 -浏览职工信息3 .

8、查询职工信息4.U翔壬言层5 曆密职工信息& -修改SRX信息NJCMEHJtJtHHMiagiKJCWNJCJiEiCKlif 疋射£射勺戸:MKiMWE iCXifaCXXMiCMKiCiMIKM:请选择你需要操作的步<1-7> :1 输入耳RT信息* 请输入裾要创建信息的耳RT人数"一"酣:1清输入g疋匸号:1 请输入姓芒:xiedangxinflf 请输入區U好-女 叶-男X E请蠶入岳龄:1®请输入学历:daxuebenke请無入土资:200请输入住址f Jiangxishen?请输入电话:1S200871008创建完毕青是

9、呑醱进行3图2:录入职工信息3. 输入“ y”返回主菜单(桌面同图1)4. 输入“ 2”浏览职工信息:薔选擇朋需聲操作的步睦£6: 浏览职T信息 职工号年龄1xxedonscingrmIB学历工资住址电话daMue he n ke20»J lancyxis hen*/152EI0871008扁继续s行sok* n > :图3:浏览职工信息5. 输入“y ”后继续,输入“ 3 ”进行查询职工信息:请选择你需要操作的步骤<1-7> : 按职工号直询职工倍息 按职工写查询请按1 ;按学历查询请按2 ;按电话号話直询请按M ;进入主固数请按4 簷厭童詈垠的职工号已

10、找到此人,其记录为:职工号年龄1xiedonxingfm18学历工资住址电话daxue benke2001S2QUS71009腿回查i旬參数请按1,纟毘续查询职工号请按2按职工号查询谓按空 按学历查询谓按罷 按电话号查询1WJS3 ;进入主刚数谓按嗎 3按学历查询请输入要查找的学历:jdaxuebenke已找其记录为;职工号性年龄1xiedongxingrm18学历工资住址电话daxuebenke200j lan grxis he n g152008710US图4:按职工号及学历查询职工信息返回查询團数请按继续查询学历j青按21夢职工号査询请按"按学历苣询请按器按电话号码資询请按矢进

11、入主国数请按她 按电话昌码査询请输入要査找的电话号码:152008718M8已找到此人其记录为:职工号年龄1xiedongxingrFI18学历工资住址电话daxuebenkc2A0j ianxis henr版回叠询囲数请按匚继续查询电话皂码谓按?图5:按电话号码查询职工信息6. 进入主菜单,输入“ 4”进行删除职工信息:删除职X倍息原来的职工信息:职工寻年龄1xiedongfxin18学历工资Sit电话daxuebenke200Jiansfxis heng152H087100Bk青输入要删除的职工的姓名:xiedongxing已找到此人,原始记录为:职工号年龄1xledongx ingA19

12、学历工资在址电话daxuebenke2&QJiangxisJieng152Q087100B确实要删除此人信息请按i 不删除请按事 1浏览删除后的所有职工信息:职工号年龄学历工资住址电话纟细ffl除请按不再删除请按0图6:删除职工信息7. 进入主菜单输入“ 5”进行添加职工信息:年龄原来的耳RI信息: 职工寻19xiEdonrxin字历工资住址电话dAxu#benk«200jiangxisheng152Q0B7100e请输入想増加的职工数请输入新增加职工的信思: 请输入职工昜;2髓年逹 输输输输输输输wenxiao jun一女 mi里):n19daxuebenkehunansh

13、eng已增加的人数;浏览增加后的所有KL信息:职工号年龄xiedonrxinsr18wenxiao jun19学历工资住址电话daxuebenke2Q&jiangxisheng152068710BBdaxuRbenk&2B0Imnanshengr图7:添加职工信息8. 进入主菜单输入“ 6”进行修改职工信息:年龄xiedongxing学历电话住址daxuebenkejiangxishengr1520087138b青输人要修改的冃RTffi姓名pciedonigxingffiS'J年龄xiedongxins学历住址电话daxuebenkejiangxishen15200B

14、?ld08備实要修改肚人信息i青按不修改请按0浏览修改后的所有职工信息年龄职工号wenxiaojun学历电话住址daxuebenkejiaigxiheiisf已找到此人 职工号原来的职工信息 耳RT号鷲鲁每障宗鬻蘿改谓按g需要进行修改的选顷-职工号2姓名3.性 4.年龄5学历6工资7住址筑电话 请输人0W修 端那一耐导2姓名改为:wftrtxiaojun图8:修改职工信息9. 进入主菜单输入”退出职工信息管理系统职工信息管理系统源程序代码#i nclude <stdio.h>#in elude <win dows.h>#in clude <stri ng.h>

15、;#defi ne N 100struct employeeint num;char n ame20;char sex;int age;char xueli30;int wage;char addr30;char tel20;em100; /* 定义一个结构体 */void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify(); /* 定义

16、各函数 */void main()menu();int n,flag;char a;doprintf(" 请选择你需要制作的步骤 (1-7):n"); scanf("%d",&n);if(n>=1&&n<=7)flag=1;break;elseflag=0;printf(" 您输入有误,请重新选择 !");while(flag=0);while(flag=1)switch(n) 输入职工信息 case 1:printf("n");printf("n");inp

17、ut();break;case 2:printf(" n");printf("n");display();break;case 3:printf(" n");printf("n");search();break;case 4:printf(" n");printf("n");del();break;case5:printf("n");printf("n");add();break;case6:printf("n");

18、printf("n");modify();break;case 7:exit(0);break;default :break;getchar();printf("n");printf(" 是否继续进行 (y or n):n"); scanf("%c",&a);if(a='y')flag=1;system("cls"); /* 清屏 */ menu(); /* 调用菜单函数 */ printf(" 请再次选择你需要制作的步骤 scanf("%d"

19、;,&n);printf("n"); 浏 览职 工信息 按职工号查询职工信息 删 除职工信息 添 加职 工信息 修改职工信息 (1-7):n");else exit(0);printf("*欢迎进入职工信息管理系统 *n");printf("2printf("3printf("4printf("5printf("6printf(" 1.录入职工信息 "); 浏览职工信息 n"); 查询职工信息 ");删除职工信息 n"); 添加职工信息

20、");修改职工信息 n");printf(" 7.退出 n");printf("*谢谢使用);void menu() /* 菜单函数 */printf("n");printf("n");void input() /* 录入函数 */int i,m;printf(" 请输入需要创建信息的职工人数 (1-100):n"); scanf("%d",&m);for (i=0;i<m;i+)printf(" 请输入职工号: "); scanf

21、("%d",&emi.num);printf(" 请输入姓名 : ");scanf("%s",);getchar();printf(" 请输入性别 (f- 女 m- 男 ): "); scanf("%c",&emi.sex);printf(" 请输入年龄 : "); scanf("%d",&emi.age);printf(" 请输入学历 : "); scanf("%s",emi

22、.xueli);printf(" 请输入工资 : "); scanf("%d",&emi.wage);printf(" 请输入住址 : "); scanf("%s",emi.addr);printf(" 请输入电话 : ");scanf("%s",emi.tel);printf("n");printf("n 创建完毕 !n");save(m);void save(int m) /* 保存文件函数 */int i;FILE*fp;

23、if (fp=fopen("employee_list","wb")=NULL)printf ("cannot open filen");exit(0);for (i=0;i<m;i+) /*将内存中职工的信息输出到磁盘文件中去 */if (fwrite(&emi,sizeof(struct employee),1,fp)!=1) printf("file write errorn");fclose(fp);int load() /* 导入函数 */FILE*fp;int i=0;if(fp=fope

24、n("employee_list","rb")=NULL)printf ("cannot open filen");exit(0);elsedofread(&emi,sizeof(struct employee),1,fp);i+;while(feof(fp)=0);fclose(fp);return(i-1);void display() /* 浏览函数 */int i;int m=load();printf(" 职工号 t 姓名 tt 性别 tt 年龄 n");for(i=0;i<m;i+) /*

25、m 为输入部分的职工人数 */printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age); printf("n 学历 tt 工资 tt 住址 tt 电话 n");for(i=0;i<m;i+) /*m 为输入部分的职工人数 */printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel);void del() /* 删除函数 */int m=load();int i,j,n,t,flag;char name

26、20;printf("n 原来的职工信息 :n");display();printf("n");printf(" 请输入要删除的职工的姓名 :n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i+)if(strcmp(,name)=0)printf("n printf("已找到此人,原始记录为: n"); 职工号 t 姓名 tt 性别 tt 年龄 n");printf("n %dtt%s

27、t%ctt%dtn",emi.num,,emi.sex,emi.age);printf("n 学历 tt 工资 tt 住址 tt 电话 n");printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel); printf("n 确实要删除此人信息请按 1, 不删除请按 0n"); scanf("%d",&n);if(n=1)for(j=i;j<m-1;j+)strcpy(,emj+1.name);e

28、mj.num=emj+1.num;emj.sex=emj+1.sex;emj.age=emj+1.age;strcpy(emj.xueli,emj+1.xueli);emj.wage=emj+1.wage;strcpy(emj.addr,emj+1.addr);strcpy(emj.tel,emj+1.tel);flag=0; if(!flag)m=m-1;elseprintf("n对不起,查无此人 !n");printf("n浏览删除后的所有职工信息 :n");save(m); /*调用保存函数 */display(); /*调用浏览函数 */prin

29、tf("n 继续删除请按 1,不再删除请按 0n"); scanf("%d",&t);switch(t)case 1:del();break;case 0:break;default :break;void add()/* 添加函数 */FILE*fp;int n;int count=0;int i;int m=load();printf("n 原来的职工信息 :n");display();printf("n");fp=fopen("emploee_list","a"

30、);printf(" 请输入想增加的职工数 :n"); scanf("%d",&n);for (i=m;i<(m+n);i+)printf("n 请输入新增加职工的信息 :n"); printf(" 请输入职工号 : "); scanf("%d",&emi.num);printf("n");printf(" 请输入姓名 : ");scanf("%s",);getchar();printf("

31、; 请输入性别 (f- 女 m- 男 ): "); scanf("%c",&emi.sex);printf(" 请输入年龄 : ");scanf("%d",&emi.age);printf("请输入学历 : ");scanf("%s",emi.xueli);printf("请输入工资 : ");scanf("%d",&emi.wage);printf(" 请输入住址 : ");scanf("%

32、s",emi.addr);printf(" 请输入电话 : ");scanf("%s",emi.tel);printf("n");count=count+1;printf(" 已增加的人数 :n");printf("%dn",count);printf("n 添加完毕 !n");m=m+count;printf("n 浏览增加后的所有职工信息 :n"); printf("n");save(m);display();fclose

33、(fp);void search()/* 查询函数 */int t,flag;doprintf("n 按职工号查询请按 1; 按学历查询请按 2; 按电话号码查询请按 3。 进入 主函数请按 4n");scanf("%d",&t);if(t>=1&&t<=4)flag=1;break;elseflag=0;printf(" 您输入有误,请重新选择 !");while(flag=0);while(flag=1)switch(t)case 1:printf("按职工号查询 n");s

34、earch_num();break;case 2:printf("按学历查询 n");search_xueli();break;case 3:printf("按电话号码查询 n");search_tel();break;case 4:main();break;default:break;void search_num()int num;int i,t;int m=load();printf(" 请输入要查找的职工号 :n");scanf("%d",&num);for(i=0;i<m;i+)if(num

35、=emi.num)printf("n 已找到此人,其记录为: n");printf(" 职工号 t 姓名 tt 性别 tt 年龄 n");printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age); printf("n学历 tt 工资 tt 住址 tt 电话 n");printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel); break;if(i=m)printf(&q

36、uot;n 对不起,查无此人 n");printf("n");printf(" 返回查询函数请按 1, 继续查询职工号请按 2n"); scanf("%d",&t);switch(t)case 1:search();break;case 2: break;default:break;void search_xueli()char xueli30;int i,t;int m=load();printf(" 请输入要查找的学历 :n");scanf("%s",xueli);for(

37、i=0;i<m;i+)if(strcmp(emi.xueli,xueli)=0)printf("n 已找到,其记录为: n");printf(" 职工号 t 姓名 tt 性别 tt 年龄 n");printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age); printf("n学历 tt 工资 tt 住址 tt 电话 n");printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,

38、emi.tel);if(i=m)printf("n 对不起,查无此人 n");printf("n");printf(" 返回查询函数请按 1, 继续查询学历请按 2n");scanf("%d",&t);switch(t)case 1:search();break;case 2:break;default :break;void search_tel()char tel20;int i, t;int m=load();printf(" 请输入要查找的电话号码 :n"); scanf(&qu

39、ot;%s",tel);for(i=0;i<m;i+)if(strcmp(tel,emi.tel)=0)printf("n 已找到此人,其记录为: n");printf(" 职工号 t 姓名 tt 性别 tt 年龄 n");printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age); printf("n学历 tt 工资 tt 住址 tt 电话 n");printf("n %st%dtt%st%sn",emi.xueli

40、,emi.wage,emi.addr,emi.tel); break;if(i=m)printf("n 对不起,查无此人 n");printf("n");printf(" 返回查询函数请按 1, 继续查询电话号码请按 2n"); scanf("%d",&t);switch(t)case 1:search();break;case 2:break;default :break;void modify() /* 修改函数 */int num;char name20;char sex;int age;char x

41、ueli30;int wage;char addr30;char tel20;int b,c,i,n,t,flag;int m=load();printf("n 原来的职工信息 :n");display();printf("n");printf(" 请输入要修改的职工的姓名 :n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i+)if(strcmp(,name)=0)printf("n 已找到此人,原始记录为: n"

42、;);printf(" 职工号 t 姓名 tt 性别 tt 年龄 n");printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age);printf("n学历 tt 工资 tt 住址 tt 电话 n");printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel);printf("n 确实要修改此人信息请按 1 ; 不修改请按 0n");scanf("%d"

43、;,&n);if(n=1)printf("n 需要进行修改的选项 n 1. 职工号 2. 姓名 3. 性别 4. 年龄 5. 学历 6. 工资 7. 住址 8. 电话 n");printf(" 请输入你想修改的那一项序号 :n");scanf("%d",&c);if(c>8|c<1)printf("n 选择不对,请重新选择 !n");flag=0;if(flag=1)printf("n 对不起,查无此人 !n");doswitch(c) /* 因为当找到第 i 个职工

44、时 ,for 语句后 i 自加了 1, 所以下面的应该把改 后的信息赋值给第 i-1 我 */case 1:printf(" 职工号改为 : "); scanf("%d",&num);emi-1.num=num;break;case 2:printf(" 姓名改为 : "); scanf("%s",name); strcpy(,name);break;case 3:printf(" 性别改为 : "); getchar(); scanf("%c",

45、&sex);emi-1.sex=sex;break;case 4:printf(" 年龄改为 : "); scanf("%d",&age);emi-1.age=age;break;case 5:printf(" 学历改为 : "); scanf("%s",xueli);strcpy(emi-1.xueli,xueli);break;case 6:printf(" 工资改为 : "); scanf("%d",wage);break;case 7:printf(" 住址改为 : "); scanf("%s",addr);strcpy(emi-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论