C课程设计报告-员工信息管理系统_第1页
C课程设计报告-员工信息管理系统_第2页
C课程设计报告-员工信息管理系统_第3页
C课程设计报告-员工信息管理系统_第4页
C课程设计报告-员工信息管理系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

word文档可自由复制编辑C语言课程设计报告题目:员工信息管理系统院系名称:计算机学院专业名称:软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间:一.设计目的1.熟练掌握C语言的基本知识和编辑技能。2.基本掌握程序设计的基本思路和方法。3.通过自主编程的过程,对理论学习及动手能力有了很大的提高。二.设计内容1.通过管理员和普通用户登录界面进入员工管理系统。2.该系统实现录入,添加,查询,修改,删除,排序,统计,浏览等功能。3.可以注册新用户和修改用户密码。三.概要设计1.功能模块图;主界主界面登录主菜单录入模块添加模块修改模块查询模块删除模块排序模块统计模块浏览模块注册用户修改密码1.录入模块:creat1()录入员工信息。2.文件保存模块:save_file()保存员工信息。3.文件读取模块:read_file()创建模块并读取文件中的信息。4.添加模块:add()添加一位员工的信息。5.修改模块:change()修改一位员工的信息。6.删除模块:delete()删除某位员工。7.排序模块:sort()对员工的信息排序。8.查询模块:search()查询某位员工的信息。9.浏览模块:output()浏览所有员工的信息。10.统计模块:record()对员工的信息进行统计。11.登录模块:login()给系统设置密码,选择用户界面。12.注册模块:sign()注册新用户。13.密码修改模块:modify()修改用户名密码。四.详细设计1.功能函数的调用关系图主函数主函数Login()(0Sign()Modify()Creat1()Add()Change()Output()Delete()Record()Sort()Search()2.各功能函数的数据流程图管理员界面登录模块管理员界面登录模块用户界面输入密码退出系统注册模块注册模块注册新的用户名和设置密码。退出系统修改密码修改密码通过输入原先的用户名和旧密码,若都正确,则输入新密码,否则不能修改。退出系统录入信息模块录入信息模块输入员工信息继续录入不继续返回主菜单添加信息模块添加信息模块输入员工号输入员工信息返回主菜单修改信息模块修改信息模块输入要修改的员工号选择要修改的一项保存在文件中返回主菜单删除信息模块删除信息模块输入要删除的员工姓名员工不存在员工存在返回主菜单查询信息模块查询信息模块输入查询选项员工号姓名输出返回主菜单员工排序模块员工排序模块年龄排序员工号排序工资排序输出返回主菜单统计信息模块统计信息模块按年龄统计按工资统计输出统计人数返回主菜单浏览信息模块浏览信息模块输出所有员工信息返回主菜单3.重点设计及编码在员工排序时,用的是冒泡排序,交换的是指针域。for(r=head1;r!=NULL;r=r->next)for(p=head1;p->next->next!=NULL;p=p->next){if((p->next->age)>(p->next->next->age)){t=p->next->next;p->next->next=t->next;t->next=p->netx;p->next=t;}}五.测试数据及运行结果1.正常测试数据和运行结果登录界面(用管理员账号登录)进入系统:浏览员工信息(输入1)对员工按年龄进行排序查询员工信息修改员工信息2.异常测试数据及运行结果当你输入不在范围的数据时会显示出错。输入不存在的员工姓名,会提示你此人不存在。六.调试情况,设计技巧及体会1.改进方案通过这次c语言程序设计,很大程度上锻炼了我们写程序的动手能力和自主思考能力。但还是有很多不足之处:1.没有对界面进行操作,只是实现了简单的功能。2.部分代码较繁琐,可利用率不高。3.程序注释不是太完善。4.对于数据的错误输入提示不明确。2.体会通过这次课程设计,我对C语言有了更深刻的了解,增强了程序的编写能力,巩固了专业知识,对程序的模块化观念也由模糊逐渐变得清晰了。在程序的运行与调试过程中出现了很多错误,通过反复地复习课本上的知识和上网查询资料等,不停地修改与调试,我终于完成了这段程序,在调试过程中,我认识到了C语言的灵活性与严谨性,同一个功能可以由不同的语句实现,但编写程序时要特别注意细节方面的问题,因为一个小小的疏忽就能导致整个程序不能运行。当然我也认识到了自己的薄弱之处,如文件运用的不熟练,在以后的学习中我要集中精力、端正态度,争取把知识学得更扎实、更全面。七.参考文献《C语言程序设计》王曙燕科学出版社《C语言程序设计》谭浩强清华大学出版社八.附录:#include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>structnode{charid[10];/*员工号*/charname[20];/*姓名*/charsex;/*性别*/intage;/*年龄*/charpost[20];/*职位*/intb_pay;/*底薪*/intreward;/*奖金*/intreal_pay;/*实际工资*/structnode*next;};structcode{charname[10];/*用户名*/charmima[10];/*密码*/structcode*next;};/*录入模块*/structnode*creat_1()/*尾插法创建带头结点的单链表*/{structnode*head1,*r,*s;inti=0;charchoice;head1=(structnode*)malloc(sizeof(structnode));/*创建头结点*/r=head1;do{s=(structnode*)malloc(sizeof(structnode));printf("请输入第%d个人的信息:\n",++i);printf("输入员工序号:");scanf("%s",s->id);printf("输入员工姓名:");getchar();scanf("%s",s->name);printf("输入员工性别:");getchar();scanf("%c",&s->sex);printf("输入员工年龄:");scanf("%d",&s->age);printf("输入员工职位:");getchar();scanf("%s",s->post);printf("输入员工底薪:");scanf("%d",&s->b_pay);printf("输入员工奖金:");scanf("%d",&s->reward);printf("输入员工实际工资:");scanf("%d",&s->real_pay);r->next=s;/*尾插新结点*/r=s;/*指向尾结点*/printf("是否继续录入?(Y/N):");getchar();choice=getchar();}while(choice=='Y'||choice=='y');r->next=NULL;returnhead1;}/*员工文件保存模块*/voidsave_file(structnode*head1)/*将单链表的信息保存到指定的磁盘文件中*/{structnode*s;FILE*fp;if((fp=fopen("s.txt","wt"))==NULL){printf("写文件出错,按任意键退出!\n");getchar();exit(1);}for(s=head1->next;s!=NULL;s=s->next)fprintf(fp,"%s%s%c%d%s%d%d%d\n",s->id,s->name,s->sex,s->age,s->post,s->b_pay,s->reward,s->real_pay);printf("\n文件已成功保存,按任意键返回.");getchar();fclose(fp);}/*员工文件读取模块*/structnode*read_file()/*从指定的磁盘文件中读取信息并存入单链表*/{structnode*head1,*r,*s;FILE*fp;if((fp=fopen("s.txt","r"))==NULL){printf("读文件出错,按任意键退出!\n");getchar();exit(1);}head1=(structnode*)malloc(sizeof(structnode));r=head1;while(!feof(fp)){s=(structnode*)malloc(sizeof(structnode));fscanf(fp,"%s%s%c%d%s%d%d%d\n",s->id,s->name,&s->sex,&s->age,s->post,&s->b_pay,&s->reward,&s->real_pay);r->next=s;r=s;}r->next=NULL;fclose(fp);returnhead1;}/*密码录入模块*/structcode*creat_2()/*尾插法创建带头结点的单链表*/{structcode*head2,*r,*s;inti=0;charchoice;head2=(structcode*)malloc(sizeof(structcode));r=head2;do{s=(structcode*)malloc(sizeof(structcode));printf("请输入第%d个人的信息:\n",++i);printf("请输入用户名:");scanf("%s",s->name);printf("请输入密码:");scanf("%s",s->mima);r->next=s;/*尾插新结点*/r=s;/*指向尾结点*/printf("是否继续?(Y/N):");getchar();choice=getchar();}while(choice=='Y'||choice=='y');r->next=NULL;returnhead2;}/*密码文件保存模块*/voidsave_inf(structcode*head2)/*将单链表的信息保存到指定的磁盘文件中*/{structcode*s;FILE*fp;if((fp=fopen("yuan.txt","wt"))==NULL){printf("写文件出错,按任意键退出!\n");getchar();exit(1);}for(s=head2->next;s!=NULL;s=s->next)fprintf(fp,"%s%s\n",s->name,s->mima);printf("\n文件已成功保存.按任意键返回.");getchar();fclose(fp);}/*密码文件读取模块*/structcode*read_inf()/*从指定的磁盘文件中读取信息并存入单链表*/{structcode*head2,*r,*s;FILE*fp;if((fp=fopen("yuan.txt","r"))==NULL){printf("读文件出错,按任意键退出!\n");getchar();exit(1);}head2=(structcode*)malloc(sizeof(structcode));r=head2;while(!feof(fp))/*文件未结束*/{s=(structcode*)malloc(sizeof(structcode));/*开辟新空间存放读取的信息*/fscanf(fp,"%s%s",s->name,s->mima);r->next=s;r=s;}printf("文件中信息已正确读出,按任意键返回!\n");r->next=NULL;fclose(fp);returnhead2;}/*输出员工信息模块*/voidoutput(structnode*head1){structnode*s;printf("\n序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");for(s=head1->next;s!=NULL;s=s->next)printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d\n",s->id,s->name,s->sex,s->age,s->post,s->b_pay,s->reward,s->real_pay);}/*添加员工信息模块*/voidadd(structnode*head1){structnode*r,*p,*s;r=head1;charchoice;printf("---------------------------------\n");printf("***********添加员工信息**********\n");printf("---------------------------------\n");do{p=(structnode*)malloc(sizeof(structnode));printf("请输入您添加的员工信息:\n");printf("输入员工序号:");scanf("%s",p->id);printf("输入员工姓名:");getchar();scanf("%s",p->name);printf("输入员工性别:");getchar();scanf("%c",&p->sex);printf("输入员工年龄:");scanf("%d",&p->age);printf("输入员工职位:");getchar();scanf("%s",p->post);printf("输入员工底薪:");scanf("%d",&p->b_pay);printf("输入员工奖金:");scanf("%d",&p->reward);printf("输入员工实际工资:");scanf("%d",&p->real_pay);p->next=r->next;r->next=p;save_file(head1);printf("\n是否继续添加(Y/N):");choice=getchar();}while(choice=='Y'||choice=='y');}/*修改员工信息模块*/change(structnode*head1){structnode*p;p=head1;charname[10];charchoose;intchoice,flag;do{printf("**********************************************\n");printf("-----------修改员工信息------------\n");printf("**********************************************\n");printf("请输入您要修改的员工姓名:");getchar();gets(name);while(p!=NULL){if(strcmp(p->name,name)==0){printf("\n序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d",p->id,p->name,p->sex,p->age,p->post,p->b_pay,p->reward,p->real_pay);printf("\n你想修改的是:\n");printf("\n1.序号");printf("\n2.姓名");printf("\n3.性别");printf("\n4.年龄");printf("\n5.职位");printf("\n6.底薪");printf("\n7.奖金");printf("\n8.实际工资");printf("\n请选择(1-8):");scanf("%d",&choice);switch(choice){case1:printf("输入修改后的序号:");getchar();gets(p->id);break;case2:printf("输入修改后的姓名:");getchar();gets(p->name);break;case3:printf("输入修改后的性别:");getchar();scanf("%c",&p->sex);break;case4:printf("输入修改后的年龄:");scanf("%d",&p->age);break;case5:printf("输入修改后的职位:");getchar();gets(p->post);break;case6:printf("输入修改后的底薪:");scanf("%d",&p->b_pay);break;case7:printf("输入修改后的奖金:");scanf("%d",&p->reward);break;case8:printf("输入修改后的实际工资:");scanf("%d",&p->real_pay);break;}printf("您修改后的信息显示:\n");printf("序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->age,p->post,p->b_pay,p->reward,p->real_pay);break;}p=p->next;}if(p==NULL)printf("此人不存在.\n");printf("是否继续修改?(Y/N)");getchar();flag=getchar();}while(flag=='Y'||flag=='y');}/*删除员工信息模块*/voiddelete(structnode*head1){charname[10];structnode*p,*q;p=head1;printf("--------------------------------------\n");printf("**************删除员工信息************\n");printf("--------------------------------------\n");printf("输入您要删除的员工姓名:");getchar();gets(name);while(p!=NULL){q=p;p=p->next;if(strcmp(p->name,name)==0){q->next=p->next;printf("删除的信息显示:\n");printf("序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->age,p->post,p->b_pay,p->reward,p->real_pay);free(p);save_file(head1);printf("已成功删除.\n");break;}}if(p==NULL)printf("您输入的姓名不存在.\n");}/*查询员工信息模块*/voidsearch(structnode*head1){intchoice;charflag;charname[10],ID[10];structnode*p;do{printf("**********查询员工信息*********\n");printf("----------1.按姓名查询.-------------------\n");printf("----------2.按序号查询.-------------------\n");printf("请选择(1-2):");scanf("%d",&choice);switch(choice){case1:printf("请输入姓名:");getchar();gets(name);for(p=head1->next;p!=NULL;p=p->next){if(strcmp(name,p->name)==0){printf("\n序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->age,p->post,p->b_pay,p->reward,p->real_pay);break;}}if(p==NULL)printf("您输入的姓名不存在.");break;case2:printf("请输入序号:");getchar();gets(ID);for(p=head1->next;p!=NULL;p=p->next){if(strcmp(ID,p->id)==0){printf("\n序号\t姓名\t性别\t年龄\t职位\t底薪\t奖金\t实际工资\n");printf("%s\t%s\t%c\t%d\t%s\t%d\t%d\t%d\n",p->id,p->name,p->sex,p->age,p->post,p->b_pay,p->reward,p->real_pay);break;}} if(p==NULL)printf("您输入的序号不正确.\n");break;default:printf("输入错误!\n");break;}printf("\n是否继续查询?(Y/N)");flag=getchar();}while(flag=='y'||flag=='Y');}/*员工排序模块*/voidsort(structnode*head1){structnode*p,*q,*r,*t;charflag;intchoice,age,b_pay,reward,real_pay;charid[10],name[10],post[10];charsex;head1=read_file();printf("---------------------------------\n");printf("***********员工排序模块**********\n");printf("---------------------------------\n");printf("***********1.按年龄排序.*********\n");printf("---------------------------------\n");printf("***********2.按序号排序.*********\n");printf("---------------------------------\n");printf("***********3.按实际工资排序.*****\n");printf("---------------------------------\n");printf("-----------请选择(1-3):");scanf("%d",&choice);switch(choice){case1:for(r=head1;r!=NULL;r=r->next)for(p=head1;p->next->next!=NULL;p=p->next){if((p->next->age)>(p->next->next->age)){t=p->next->next;p->next->next=t->next;t->next=p->netx;p->next=t;}}break;case2:for(r=head1;r!=NULL;r=r->next)for(p=head1;p->next->next!=NULL;p=p->next){ if(strcmp(p->next->id,p->next->next->id)>0){t=p->next->next;p->next->next=t->next;t->next=p->next;p->next=t;}}break;case3:for(r=head1;r!=NULL;r=r->next)for(p=head1;p->next->next!=NULL;p=p->next){if((p->next->real_pay)>(p->next->next->real_pay)){t=p->next->next;p->next->next=t->next;t->next=p->next;p->next=t;}}break;}output(head1);}/*员工统计模块*/voidrecord(structnode*head1){structnode*p;intchoice;inta,b,c;a=b=c=0;printf("---------------------------------------------\n");printf("|**************员工统计模块*******************\n");printf("---------------------------------------------\n");printf("***************1.年龄统计*********************\n");printf("***************2.薪水统计*********************\n");printf("---------------请选择(1-2)");scanf("%d",&choice);switch(choice){case1:for(p=head1->next;p->next!=NULL;p=p->next){if(p->age<30)a++;elseif(p->age>=30&&p->age<=40)b++;elsec++;}printf("30岁以下的员工人数是:%d\n",a);printf("30岁到40岁之间的员工人数是:%d\n",b);printf("40岁以上的员工人数是:%d",c);break;case2:for(p=head1->next;p->next!=NULL;p=p->next){if(p->real_pay<5000)a++;elseif(p->real_pay>=5000&&p->real_pay<=10000)b++;elsec++;}printf("薪水在5000元以下的员工人数是:%d\n",a);printf("薪水在5000到10000元之间的员工人数是:%d\n",b);printf("薪水在10000元以上的员工人数是:%d\n",c);break;default:printf("输入错误!\n");break;}}welcome(){printf("\n--------------------------------------------\n");printf("**********欢迎使用员工信息管理系统**********\n");printf("--------------------------------------------\n");printf("--------------------------------------------\n");printf("************指导老师:王亚刚*****************\n");printf("--------------------------------------------\n");printf("****************作者:袁祝平*****************\n");printf("--------------------------------------------\n");}/*管理员界面*/fun1(){intchoice;charflag,choose;structnode*head1,*p;printf("\n您需要创建新链表吗:\n");getchar();flag=getchar();if(flag=='Y'||flag=='y'){head1=creat_1();save_file(head1);head1=read_file();}elsehead1=read_file();do{printf("\n********欢迎进入员工管理系统***********\n");printf("\n1.输出员工信息\n");printf("\n2.添加员工信息\n");printf("\n3.修改员工信息\n");printf("\n4.删除员工信息\n");printf("\n5.查询员工信息\n");printf("\n6.员工排序模块\n");printf("\n7.统计员工信息\n");printf("\n0.退出系统\n");printf("请选择(0-7):");scanf("%d",&choice);switch(choice){case1:output(head1);break;case2:add(head1);break;case3:change(head1);save_file(head1);break;case4:delete(head1);break;case5:search(head1);break;case6:do{sort(head1);printf("是否继续排序?\n");getchar();flag=getchar();}while(flag=='Y'||flag=='y');break;case7:record(head1);break;case0:break;default:printf("输入错误!\n");break;}}while(choice!=0);}/*普通用户界面*/fun2(){intchoice;charflag;structnode*head1;head1=read_file();do{printf("\n-----------------------------------------\n");printf("**********欢迎进入员工管理系统***********\n");printf("-----------------------------------------\n");printf("\n1.输出员工信息\n");printf("\n2.查询员工信息\n");printf("\n3.员工排序模块\n");printf("\n4.统计员工信息\n");printf("\n0.退出系统\n");printf("请选择(0-4):");scanf("%d",&choice);switch(choice){case1:output(head1);break;case2:search(head1);break;case3:do{sort(head1);getchar();flag=getchar();}while(flag=='Y'||flag=='y');break;case4:record(head1);break;case0:break;default:printf("输入错误!\n");break;}}while(choice!=0);}/*用户登录模块*/login(structcode*head2){intchoice;charname[10],mima[10];structcode*p;printf("--------1.管理员--------\n");printf("--------2.普通用户------\n");printf("--------请选择:");scanf("%d",&choice);switch(choice){case1:printf("请输入管理员的用户名:");scanf("%s",name);if(strcmp(name,"yuan")==0){printf("请输入密码:");system("stty-echo");scanf("%s",mima);system("sttyecho");if(strcmp(mima,"zhuping")==0){fun1();/*调用管理员界面函数*/break;}elseprintf("\n密码错误\n");}elseprintf("\n用户名不存在\n");break;case2:printf("请输入你的用户名:");scanf("%s",name);for(p=head2->next;p!=NULL;p=p->next){if(strcmp(name,p->name)==0){printf("请输入密码:");system("stty-echo");scanf("%s",mima);system("sttyecho");if(strcmp(mima,p->mima)==0){fun2();/*调用用户界面函数*/}elseprintf("\n密码错误\n");break;}}if(p==NULL)printf("\n用户名不存在\n");break;default:printf("输入错误!\n");break;}}/*用户注册模块*/sign(structcode*head2){structcode*p;charmima1[10],mima2[10];printf("---------------------------------------------\n");printf("****************欢迎注册**********************\n");printf("---------------------------------------------\n");p=(structcode*)malloc(sizeof(structcode));printf("请注册你的用户名:\n");scanf("%s",p->name);printf("请输入你的密码:\n");system("stty-echo");scanf("%s",mima1);system("sttyecho");printf("请再次输入你的密码:\n");system("stty-echo");scanf("%s",mima2);system("sttyecho");if(strcmp(mima1,mima2)==0){strcpy(p->mima,mima1);p->next=head2->next;head2->next=p;printf("注册成功\n");save_inf(head2);}elseprintf("两次输入密码不一致.\n");}/*密码修改模块*/voidmodify(structcode*head2){structcode*p;cha

温馨提示

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

评论

0/150

提交评论