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

下载本文档

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

文档简介

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

2、信息,并显 示。5、删除功能: 通过输入职工的姓名完成对该名职工的信息进行删除。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;cha

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

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

7、oid search_tel 函数来实现。10. 修改模块:可以修改需要修改的职工的相关信息,通过自己定义的 void modify ()函数 来实现。11. 退出系统模块:退出职工信息管理系统, 通过头文件 windows.h 中的 exit (0) 函数来实现。使用说明及运行实例1. 运行程序,进入职工信息管理系统的主菜单:丄录入职3 -直询职5 添加职 丁雇出工信息2-SIBssnz工信息4舰IWT工信息6-修谢使用*信息信息信息隨再次选挥你需要提作的步:图1:进入主菜单界面2. 输入数字“1”进行录入职工信息:*裁:迎进入职工1 虽入职工植會3 -直询耳RZD言息轧曆加职工信息.信息管

8、理系统* a-Mwre 息 名删除职工信息 "修改a旺信息NJCMEHJtJCHHMSaOtJCXNNJiENKlif 乂射二射4导超算其艮算珂疋蕈梵梵就覽弭XKiMIKK请选择你需要操作的步骤 丄-?:1 输入耳RT信息* 请输入裾要创建信思的耳疋匸人数"一丄仙:1清输入强工号:1谴输入姓呂:xiedongxlna请输入區U好-女1-男:E请勒入岳龄=1®请输入学历:daxuebenke 请输?Ct资:200 请输入住址m jiangxishen?请输入电话:匚锂完毕?是否乡瞪真进行Jn:图2 :录入职工信息3. 输入“ y”返回主菜单(界面同图1)4. 输入“

9、 2”浏览职工信息:更选擇悔需要阕乍的涉骤"一巧= 浏览职工信息 职工号年龄1xxedanxingrm18学历工资住址电话daMue he n he20Sj 1 an Qf x is hen</152H8S71BI38基否继续进行4ov n > :图3:浏览职工信息5. 输入“y ”后继续,输入“ 3 ”进行查询职工信息:请选择你需要操作的步骤<1-7> : 按职工号査询职工信息 按职工号查询请按丄:按学历查询情按2 ;按电话号码查询请按M ;进入主圉数请按4 豪职工寻查询畜输入要査找的职工号二1已找到此人,其记录为:年龄1xiedongxingmie学历工资

10、住址电话dawuebenke200JiangKl$henglS23UB?100a萨回查i旬固数请按1,纟毘续查询职工号请按2萨职工号查闻谓按“按学历查询灣按鮎按电活号i眶询谶按3;进入主雷数谓按4 限学历查询F青输入要查找的学历:1520087100&tlaxuebenke职工号年龄1xiedongrxingrm18学历工资住址电话已找其记录为;jlangrxisherbgdaxuebenke230图4:按职工号及学历查询职工信息返回查询囲数请按-继续查询学历j青按21按职工号査询请按"按学历苣询请按器按电话号码資询请按矢进入主囲数请按她按电话号硝査询请输入要查找的电话昌码;

11、1S20S871OM8已找到此;人,其记录为:职工号年龈1xiedangxingrF1IE学历工资住址电话daxuebenke2 AHj ianxis hen回萱询:函数请按继续查询电话号码请按2图5:按电话号码查询职工信息6. 进入主菜单,输入“ 4”进行删除职工信息: 删B鈿RT倍息原来的职工信息;职工寻年龄1xiedonsrxiny18学历工资fflih电话daxueb&nke200Jian$fxis heng1520871000k青输入要删除的职工的姓名:xiedongxing我到此人,原始记录为:职工号8年龄1xledongx ingPI1S学历工资

12、任址电话daxuebenke200jiangxisheng1S200S71&0B确实要删除此人信息请按仃不删除i青按材1浏览删除后的所有职工信息,职工号年龄学历工资住址电话纟酸删除请按不再删除请按0图6:删除职工信息7. 进入主菜单输入“ 5”进行添加职工信息:添加职工信息原来的职工信息:职工号姓名mil年龄1xiedonfrxin?18学历工资住址电话daxuebenk#200Jiangxishen输入想壇加的职工;i请输入新增加职工的信息: 请输入职工号;3请输入姓各 ii 输 AffiiKf- 请输入年龄匚 请勒入学历: iiw- 谨输入电话:wenxi

13、ao jun1女男:tl19daxuehenke200hunansheng已增加的人数:1添加完毕F.111 ”% _ n一-1.列克増即后旳所有耳信思:耳RT号年龄1xiedongxingrnia2wenxiao jun19学历工资住址电话daxuebenke20fiJ iangxisheng1520087108daxuebenke200luirtanshengf152U0S50G49图7:添加职工信息8. 进入主菜单输入“ 6”进行修改职工信息:原来前职工信息:耳RT号年龄1xiedongxingm18学历住址电话daxuebenke200jiaogxis hen

14、输人要修改的兢I曲姓名: xiedongxintg已找到此人, 駆T号®!l年龄1xiedongxingmIB学历工资住址电话daxuebenke200jiangxishens1E200&71608确实要修改此人信息请按1 ;不修改请按0 1需要进行修改的选项一耳RT昌冬姓名亠性别4.年龄厂学历工资 请输人祢想修改的那一项序畧,<1?住址驭电话姓名改为:wenxiaojtin馨昵能帧信息?是 谓按1 :不重新修改 谱按 1浏览修改后的乐有职工信息:耳RX号年龄1wenxiaojunm18学历住址电话daxuebenke203jiangxis heng1520087100

15、8图8:修改职工信息9. 进入主菜单输入”7”退出职工信息管理系统职工信息管理系统源程序代码#include <stdio.h>#include <windows.h>#include <string.h>#define N 100 struct employeeint num;char name20; char sex;int age;char xueli30;int wage;char addr30;char tel20;em100; /* 定义一个结构体 void menu();void input();void save(int);void disp

16、lay();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify(); /* 定义各函数 */void main() menu(); int n,flag; char a; do printf(" 请选择你需要操作的步骤 scanf("%d",&n);*/(1-7):n");if(n>=1&&n<=7)flag=1;break;elseflag=0;printf(&q

17、uot; 您输入有误,请重新选择 !");while(flag=0);while(flag=1)switch(n)case1:printf("n");printf("n");input();break;case2:printf("n");printf("n");display();break;case 3:printf(" n");printf("n");search();break;case 4:printf(" n");printf(&quo

18、t;n");del();break;case5:printf("n");printf("n");add();break;case6:printf("n");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

19、9;)flag=1;system("cls"); /* 清屏 */menu(); /* 调用菜单函数 */printf(" 请再次选择你需要操作的步骤 scanf("%d",&n); 输入职工信息 浏 览职 工信息 按职工号查询职工信息 删 除职工信息 添 加职 工信息 修 改 职 工 信 息 (1-7):n");printf("n");else exit(0); void menu() /* 菜单函数 */printf(" * 欢迎进入职工信息管理系统 *n")printf("

20、;1.录入职工信息printf("2.浏览职工信息printf("3.查询职工信息printf("4.删除职工信息printf("5.添加职工信息printf("6.修改职工信息printf("7.退出 n");printf("*");n");");n");");n");谢谢使用 *n");printf("n"); printf("n");void input() /* 录入函数 */int i,m;pri

21、ntf(" 请输入需要创建信息的职工人数 (1-100):n"); scanf("%d",&m);for (i=0;i<m;i+)printf(" 请输入职工号: "); scanf("%d",&emi.num); printf(" 请输入姓名 : "); scanf("%s",);getchar();printf(" 请输入性别 (f- 女 m- 男 ): "); scanf("%c",&

22、emi.sex);printf(" 请输入年龄 : "); scanf("%d",&emi.age);printf(" 请输入学历 : "); scanf("%s",emi.xueli);printf(" 请输入工资 : "); scanf("%d",&emi.wage); printf(" 请输入住址 : "); scanf("%s",emi.addr);printf(" 请输入电话 : ");sc

23、anf("%s",emi.tel); printf("n");printf("n 创建完毕 !n"); save(m);void save(int m) /* 保存文件函数 */int i;FILE*fp;if (fp=fopen("employee_list","wb")=NULL)printf ("cannot open filen");exit(0);for (i=0;i<m;i+) /* 将内存中职工的信息输出到磁盘文件中去 */ if (fwrite(&

24、;emi,sizeof(struct employee),1,fp)!=1)printf("file write errorn");fclose(fp);int load() /* 导入函数 */FILE*fp;int i=0;if(fp=fopen("employee_list","rb")=NULL)printf ("cannot open filen");exit(0);elsedofread(&emi,sizeof(struct employee),1,fp);i+;while(feof(fp)=0

25、);fclose(fp);return(i-1);void display() /* 浏览函数 */int i;int m=load();printf(" 职工号 t 姓名 tt 性别 tt 年龄 n");for(i=0;i<m;i+) /*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 为输入部分的职工人数

26、*/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 name20;printf("n 原来的职工信息 :n");display();printf("n");printf(" 请输入要删除的职工的姓名 :n");scanf("%s",name);for(flag=1,i=0;flag&&i<

27、m;i+)if(strcmp(,name)=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,emi.tel)

28、;printf("n 确实要删除此人信息请按 1, 不删除请按 0n"); scanf("%d",&n);if(n=1)for(j=i;j<m-1;j+)strcpy(,emj+1.name); emj.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

29、; if(!flag)m=m-1;elseprintf("n对不起,查无此人 !n");printf("n浏览删除后的所有职工信息 :n");save(m); /*调用保存函数 */display(); /*调用浏览函数 */printf("n 继续删除请按 1 ,不再删除请按 0n"); scanf("%d",&t);switch(t)case 1:del();break;case 0:break;default :break;void add()/* 添加函数 */FILE*fp;int n;int c

30、ount=0;int i;int m=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(" 请输入职工号 : ");sca

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

32、f("%s",emi.xueli);printf("请输入工资 : ");scanf("%d",&emi.wage);printf(" 请输入住址 : ");scanf("%s",emi.addr);printf(" 请输入电话 : "); scanf("%s",emi.tel);printf("n");count=count+1;printf(" 已增加的人数 :n");printf("%dn&q

33、uot;,count);printf("n 添加完毕 !n"); m=m+count;printf("n 浏览增加后的所有职工信息 :n");printf("n");save(m);display();fclose(fp);void search()/* 查询函数 */int t,flag;doprintf("n 按职工号查询请按 1; 按学历查询请按 2; 按电话号码查询请按 3; 进入 主函数请按 4n");scanf("%d",&t);if(t>=1&&t&l

34、t;=4)flag=1;break;elseflag=0;printf(" 您输入有误,请重新选择 !");while(flag=0);while(flag=1)switch(t)case 1:printf("按职工号查询 n");search_num();break;case 2:printf("按学历查询 n");search_xueli();break;case 3:printf("按电话号码查询 n");search_tel();break;case 4:main();break;default:break

35、;void search_num()int num;int i,t;int m=load();printf(" 请输入要查找的职工号 :n"); scanf("%d",&num);for(i=0;i<m;i+)if(num=emi.num)printf("n 已找到此人,其记录为: n");printf(" 职工号 t 姓名 tt 性别 tt 年龄 n");printf("n %dtt%st%ctt%dtn",emi.num,,emi.sex,emi.age); p

36、rintf("n学历 tt 工资 tt 住址 tt 电话 n");printf("n %st%dtt%st%sn",emi.xueli,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: b

37、reak;default:break;void search_xueli()char xueli30;int i,t;int m=load();printf(" 请输入要查找的学历 :n"); scanf("%s",xueli);for(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

38、.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);if(i=m)printf("n 对不起,查无此人 n");printf("n");printf(" 返回查询函数请按 1, 继续查询学历请按 2n"); scanf("%d",&t);switch(t)case 1

39、:search();break;case 2:break;default :break;void search_tel()char tel20;int i, t;int m=load();printf(" 请输入要查找的电话号码 :n"); scanf("%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%

40、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("n 对不起,查无此人 n");printf("n");printf(" 返回查询函数请按 1, 继续查询电话号码请按 2n"); scanf("%d&

41、quot;,&t);switch(t)case 1:search();break;case 2:break;default :break;void modify() /* 修改函数 */int num;char name20;char sex;int age;char xueli30;int wage;char addr30;char tel20;int b,c,i,n,t,flag;int m=load();printf("n 原来的职工信息 :n");display();printf("n");printf(" 请输入要修改的职工的

42、姓名 :n");scanf("%s",name);for(flag=1,i=0;flag&&i<m;i+)if(strcmp(,name)=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"

43、);printf("n %st%dtt%st%sn",emi.xueli,emi.wage,emi.addr,emi.tel);printf("n 确实要修改此人信息请按 1 ; 不修改请按 0n");scanf("%d",&n);if(n=1)printf("n 需要进行修改的选项 n 1. 职工号 2. 姓名 3. 性别 4. 年龄 5. 学历 6. 工资 7. 住址 8. 电话 n");printf(" 请输入你想修改的那一项序号 :n");scanf("%d"

44、,&c);if(c>8|c<1)printf("n 选择错误,请重新选择 !n");flag=0;if(flag=1)printf("n 对不起,查无此人 !n");doswitch(c) /* 因为当找到第 i 个职工时 ,for 语句后 i 自加了 1, 所以下面的应该把改 后的信息赋值给第 i-1 个人 */case 1:printf(" 职工号改为 : "); scanf("%d",&num);emi-1.num=num;break;case 2:printf(" 姓名

45、改为 : "); scanf("%s",name); strcpy(,name);break;case 3:printf(" 性别改为 : "); getchar(); scanf("%c",&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

温馨提示

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

最新文档

评论

0/150

提交评论