C语言课程设计报告职工信息管理系统.doc
《C语言课程设计报告职工信息管理系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计报告职工信息管理系统.doc(23页珍藏版)》请在咨信网上搜索。
. . 中国地质大学 课 程 设 计 报 告 书 所属课程名称 C程序设计 题 目 职工信息管理系统 院 〔系〕 班 级 学 号 学生XX 指导教师 辅导教师 中国地质大学 2021年9月6日 . .word.zl. . . 课 程 设 计〔 论 文 〕任 务 书 工程学院 专 业 052081 班 一、课程设计〔论文〕题目 职工信息管理系统 二、课程设计〔论文〕工作:自 2021年 08月 28 日起至 2021年 09月 08 日止。 三、课程设计〔论文〕的容要求: 1、设计容: 制作职工信息管理系统,职工信息包括职工号,XX,性别,年龄,学历,工资,住址,等(职工号不重复),并实现数据录入、数据删除和数据浏览以及数据查询等一些功能。 2、课程设计的要求: A.系统以菜单方式工作 B.职工信息录入功能(职工信息用文件保存)--输入 C.职工信息浏览功能 --输出 D.查询和排序功能:(至少一种查询方式) --算法 E.按工资查询 F.按学历查询等 G.职工信息删除,修改功能(任选项) 2021 年 9月 6 日 一、需求分析 1.能够对职工的根本情况进展输入、修改、增加以及删除和存盘。 2.能够对职工信息的浏览。 3.能够实现对职工的查询。 4.能够对职工的根本工资情况进展设定。 5.能够将职工信息和根本工资信息以文档形式保存 6.程序能够以菜单形式出现 . .word.zl. . . 二、概要分析 职工信息管理系统设计 职工信息包括职工号,XX,性别,年龄,学历,工资,住址,等(职工号不重复),试设计一职工信息管理系统,使之能提供以下功能: ü 系统以菜单方式工作 ü 职工信息录入功能(职工信息用文件保存)--输入 ü 职工信息浏览功能 --输出 ü 查询和排序功能:(至少一种查询方式) --算法 ü 按工资查询 ü 按学历查询等 ü 职工信息删除,修改功能(任选项) 下面是功能框架图: 三、详细设计以及调试分析 A.详细设计 1,创立了一个构造体employee,它包含num〔工号〕,name〔XX〕,sex〔性别〕,age〔年龄〕,xueli〔学历〕,wage(工资),addr〔住址〕,tel〔〕8个基类,即为员工的根本信息。 2,创立了主函数main〔〕,用它调用子函数menu〔〕,add〔〕,del〔〕,display〔〕, Input〔〕,load〔〕,modify〔〕,save〔〕,search〔〕,search num〔〕,search xueli〔〕。通过主函数对子函数的调用实现程序的各项功能。 B.调试分析 void main() { menu(); int n,flag; char a; --------------------Configuration: 1 - Win32 Debug-------------------- piling... 1.c g:\1.c(55) : error C2143: syntax error : missing ';' before 'type' g:\1.c(56) : error C2143: syntax error : missing ';' before 'type' g:\1.c(61) : error C2065: 'n' : undeclared identifier g:\1.c(64) : error C2065: 'flag' : undeclared identifier g:\1.c(90) : error C2065: 'a' : undeclared identifier Error executing cl.exe. 1.obj - 5 error(s), 0 warning(s) 开场由于在主函数的调用过程中把子函数的调用放在了变量的定义之前,导致程序无法运行,后来改正错误,程序可以正常运行。另外在程序中还出现各种小错误,这里不一一列举。通过调试我发现调试是一个漫长而枯燥的过程 ,很锻炼人的耐心。 . .word.zl. . . 四、程序使用指南 1.翻开程序出现菜单项选择项 2,选择录入职工信息,按提示录入 3.通过选项依次实现对职工信息的浏览,查询,删除,增加和修改。 五.源代码 #include <stdio.h> #include <windows.h> #include <time.h> #include <string.h> #define N 100 struct employee { int num;//工号 char name[10];//XX char sex; //性别 int age;//年龄 char xueli[30];//学历 int wage;//工资 char addr[30];//住址 long int tel;// }em[100]; 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(); void menu() { printf(" ******欢迎使用查询系统******\n"); printf("\n"); printf("\n"); 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"); } void main() { int n,flag; char a; menu(); 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) { case 1:printf("◆◆◆输入职工信息◆◆◆\n");printf("\n");input();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; case 5:printf("◆◆◆添加职工信息◆◆◆\n");printf("\n");add();break; case 6: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') { flag=1; system("cls"); menu(); printf("请再次选择你需要操作的步骤(1--7):\n"); scanf("%d",&n); printf("\n"); } else exit(0); } } void input() { int i,m; printf("请输入需要创立信息的职工人数(1--100):\n"); scanf("%d",&m); for (i=0;i<m;i++) { printf("职工号: "); srand((int)time(0)); em[i].num=rand()%10000+20000000; if(em[i].num!=em[i-1].num) printf("%8d ",em[i].num); printf("\n"); printf("请输入XX: "); 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("%d",&em[i].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 file\n"); exit(0); } for (i=0;i<m;i++) if (fwrite(&em[i],sizeof(struct employee),1,fp)!=1) printf("file write error\n"); fclose(fp); } int load() { FILE*fp; int i=0; if((fp=fopen("employee_list","rb"))==NULL) { printf ("cannot open file\n"); exit(0); } else { do { fread(&em[i],sizeof(struct employee),1,fp); i++; } while(feof(fp)==0); } fclose(fp); return(i-1); } void display() { int i; int m=load(); printf("\n 职工号\tXX\t性别\t年龄\t学历\t工资\t住址\t \n"); for(i=0;i<m;i++) printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); } void del() { int m=load(); int i,j,n,t,flag; char name[20]; printf("\n 原来的职工信息:\n"); display(); printf("\n"); printf("请输入要删除的职工的XX:\n"); scanf("%s",name); for(flag=1,i=0;flag&&i<m;i++) { if(strcmp(em[i].name,name)==0) { printf("\n已找到此人,原始记录为:\n"); printf("\n职工号\tXX\t性别\t年龄\t学历\t工资\t住址\t \n"); printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,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;j<m-1;j++) { strcpy(em[j].name,em[j+1].name); em[j].num=em[j+1].num; em[j].sex=em[j+1].sex; em[j].age=em[j+1].age; strcpy(em[j].xueli,em[j+1].xueli); em[j].wage=em[j+1].wage; strcpy(em[j].addr,em[j+1].addr); em[j].tel=em[j+1].tel; } flag=0; } } } if(!flag) m=m-1; else printf("\n对不起,查无此人!\n"); printf("\n 浏览删除后的所有职工信息:\n"); save(m); display(); printf("\n继续删除请按1,不再删除请按0\n"); 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"); printf("请输入想增加的职工数:\n"); scanf("%d",&n); for (i=m;i<(m+n);i++) { printf("\n 请输入新增加职工的信息:\n"); printf("请输入职工号: "); srand((int)time(0)); em[i].num=rand()%10000+20000000; if(em[i].num!=em[i-1].num) printf("%8d ",em[i].num); printf("\n"); printf("请输入XX: "); 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("%d",&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); } void search() { int t,flag; do { printf("\n按职工号查询请按1 ; 按学历查询请按2 ;进入主函数按3\n"); scanf("%d",&t); if(t>=1&&t<=4) { flag=1; break; } else { flag=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:main();break; default:break; } } } void search_num() { int num; int i,t; int m=load(); printf("请输入要查找的职工号(20001111---20009999):\n"); scanf("%d",&num); for(i=0;i<m;i++) if(num==em[i].num) { printf("\n已找到此人,其记录为:\n"); printf("\n职工号\tXX\t性别\t年龄\t学历\t工资\t住址\t \n"); printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,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) { case 1:search();break; case 2: break; default:break; } } void search_xueli() { char xueli[30]; int i,t; int m=load(); printf("请输入要查找的学历:\n"); scanf("%s",xueli); for(i=0;i<m;i++) if(strcmp(em[i].xueli,xueli)==0) { printf("\n已找到,其记录为:\n"); printf("\n职工号\tXX\t性别\t年龄\t学历\t工资\t住址\t \n"); printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); } if(i==m) printf("\n"); printf("返回查询函数请按1,继续查询学历请按2\n"); scanf("%d",&t); switch(t) { case 1:search();break; case 2:break; default :break; } } void modify() { int num; char name[10]; char sex; int age; char xueli[30]; int wage; char addr[30]; long int tel; int b,c,i,n,t,flag; int m=load(); printf("\n 原来的职工信息:\n"); display(); printf("\n"); printf("请输入要修改的职工的XX:\n"); scanf("%s",name); for(flag=1,i=0;flag&&i<m;i++) { if(strcmp(em[i].name,name)==0) { printf("\n已找到此人,原始记录为:\n"); printf("\n职工号\tXX\t性别\t年龄\t学历\t工资\t住址\t \n"); printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); printf("\n确实要修改此人信息请按1 ; 不修改请按0\n"); scanf("%d",&n); if(n==1) { printf("\n需要进展修改的选项\n 1.职工号 2.XX 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"); do { switch(c) { case 1:printf("职工号改为: "); scanf("%d",&num); em[i-1].num=num; break; case 2:printf("XX改为: "); scanf("%s",name); strcpy(em[i-1].name,name); break; case 3:printf("性别改为: "); getchar(); scanf("%c",&sex); em[i-1].sex=sex; break; case 4:printf("年龄改为: "); scanf("%d",&age); em[i-1].age=age; break; case 5:printf("学历改为: "); scanf("%s",xueli); strcpy(em[i-1].xueli,xueli); break; case 6:printf("工资改为: "); scanf("%d",&wage); break; case 7:printf("住址改为: "); scanf("%s",addr); strcpy(em[i-1].addr,addr); break; case 8:printf("改为: "); scanf("%ld",&tel); em[i-1].tel=tel; break; } printf("\n"); printf("\n是否确定所修改的信息?\n 是 请按1 ; 不,重新修改 请按2: \n"); scanf("%d",&b); } while(b==2); printf("\n浏览修改后的所有职工信息:\n"); printf("\n"); save(m); display(); printf("\n继续修改请按1,不再修改请按0\n"); scanf("%d",&t); switch(t) { case 1:modify();break; case 0:break; default :break; } } 六、总结 开场看到题目时,一点头绪都没有,无从下手。后来通过看书了解到了构造化设计方法,顿时豁然开朗。于是我按照题目要求把一个大系统分成模块,一个模块一个模块地编程序,这样就相当于在做小题目,问题简化多了。编模块时,开场也无从下手,经过反复思考后,终于有点思路了,后来越来越熟练,逐渐得心应手起来。我的程序很烦琐,编得很痛苦,连续奋战了几天,终于调试成功。虽然很烦琐,但我无怨无悔,因为我通过学习,学会了调试一个较长程序的根本方法,学会了用流程图表示算法,不仅初步了解了C++的使用,还进一步掌握和提高了利用C语言进展程序设计的能力。 教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。 . .word.zl.- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 职工 信息管理 系统
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文