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

付费下载

下载本文档

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

文档简介

C语言课程设计报告-职工信息管理系统一、设计任务课题:职工信息管理系统设计工号不重复)。是设计一职工信息管理系统,使之能提供以下功能:系统以菜单方式工作职工信息录入功能(职工信息用文件保存)——输入职工信息浏览功能——输出查询和排序功能——算法按工资查询按学历查询等职工信息删除,修改功能。补充要求:1)整个系统均用c语言实现;2)可以利用数组,指针,链表来实现数据结构设计;3)系统具有输入,显示,查询,删除,排序,插入,保存,读取等基本功能;4)系统的各个功能模块都用函数的形式来实现;5)可以将信息保存在文件中读取出来。二、系统设计方案1.程序采用模块化设计,主函数为程序的入口,各模块独立,可分块调试,各模块由主函数控制调用。主函数的控制功能通过循环执行一个开关语句来实现。该开关语句的条件值为调用主菜单函数得到的返回值,根据该值,调用相应的各功能函数。。2.应用高级语言程序设计中的基本控制结构,如选择和循环等,并且包含对文件的读、写等基本操作,在软件开发过程中应用了软件工程的基本理论。因此,系统的设计方法是结构化设计方法,开发手段是C语言。3.源程序运用多个函数,开头先进行函数声明,然后分别定义、调用各函数。程序流程图三、程序主要代码分析/*下面定义职工信息结构*/id;charname[20];charsex[3];intage;charedu[50];intwages;charadr[255];charphone[13];}WORKER,*PWORKER;//typedefstructWORKER*PWORKER;typedefstructlink分析:我认为链表的使用正是本程序的最精彩的地方所在,较数组而言它的使用带来了很多优点:(1)空间的灵活分配,虽然地址不是连续的,但只要找到链表的头所有数据都可以迅速找到(2)可以灵活的插入或删除元素而不会像数组那样带来较多数据的移动。。WORKERw;structlink*next;}LINK,*PLINK;//typedefstructLINK*PLINK;/*创建职工信息链表*/PLINKcreate。。PLINKp=(PLINK)malloc(sizeof(LINK));if(NULL!=p)。p->next=NULL;returnp;}printf("内存不足!\n");returnNULL;}/*显示程序界面文字*/voidmessage。{system("color09f");/*设置当前窗口的背景色和前景色*/分析:界面设计我运用了适当的标点使得界面变得清晰大方,背景色的添加也可给用户新的视觉效果/*0=黑色8=灰色1=蓝色9=淡蓝色2=绿色A=淡绿色3=浅绿色B=淡浅绿色4=红色C=淡红色5=紫色D=淡紫色6=黄色E=淡黄色7=白色F=亮白色*/system("cls");printf("\t\t************************************************\n\n");printf("\t\t************************************************\n\n");printf("\t\t**************ChooseFunction*************\n\n");printf("\t\t************帮助请输入:0************\n\n");printf("\t\t************录入职工信息请输入:1************\n\n");printf("\t\t************浏览职工信息请输入:2************\n\n");printf("\t\t************查询职工信息请输入:3************\n\n");printf("\t\t************删除职工信息请输入:4************\n\n");printf("\t\t************修改职工信息请输入:5************\n\n");printf("\t\t************清屏请输入:6************\n\n");printf("\t\t************退出请输入:-1***********\n\n");printf("\t\t************************************************\n\n");printf("\t\t************************************************\n\n");}/*录入职工信息*/intadd(PLINKp)。分析:周密地考虑到了内存不足以及职工号已存在导致的录入失败,给予用户适当的提示使得设计更加人性化PLINKh=NULL;PLINKq=(PLINK)malloc(sizeof(LINK));if(NULL==q)。printf("录入失败提示:内存不足!\n");return-1;}printf("请输入职工号(数字):");scanf("%d",&q->w.id);h=p->next;while(h)。if(h->w.id==q->w.id)。free(q);printf("录入失败提示:此职工号已经存在!\n");return-1;}h=h->next;分析:适当的录入提示,更加方便了用户的录入操作}printf("请输入职工姓名(文字):");scanf("%s",&q->);printf("请输入职工性别(文字):");scanf("%s",&q->w.sex);printf("请输入职工年龄(数字):");scanf("%d",&q->w.age);printf("请输入职工学历(文字):");scanf("%s",&q->);printf("请输入职工工资(数字):");scanf("%d",&q->w.wages);printf("请输入职工住址(文字):");scanf("%s",&q->w.adr);scanf("%s",&q->w.phone);q->next=p->next;p->next=q;printf(".^_^.录入成功!.^_^.\n");return-1;}/*按姓名查询*/PLINKfindname(PLINKp,char*name)。message(;printf("按姓名查询\n");分析:链表、结构指针的使用大大方便了信息的查找定位。值得注意的是判断两字符串内容是否相同时需用到strcmp函数!while(NULL!=p->next)。if(0==strcmp(p->next->,name))。printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",p->next->w.id,p->next->,p->next->w.sex,p->next->w.adr,p->next->,p->next->w.wages,p->next->w.adr,p->next->w.phone);returnp;}p=p->next;}printf(".^_^.查询结束!.^_^.\n");returnNULL;}/*按职工号删除职工信息*/intdel(PLINKp,intid)。message(;printf("按职工号删除职工信息\n");while(NULL!=p->next)。if(p->next->w.id==id)。PLINKq=p->next;p->next=p->next->next;free(q);printf(".^_^.删除成功!.^_^.\n");return1;}p=p->next;}printf("没有你输入的职工号!\n");return-1;}分析:及时的在程序结束时释放内存,避免占用多余的空间充分显示出了链表使用的优越性,占用最小的空间满足用户更多的需求/*程序结束释放内存*/voidrelease(PLINKp)。PLINKq;while(NULL!=p->next)。q=p;p=p->next;free(q);}free(p);}/*查询调用*/分析:此处是我对源程序的改进处之一,用此函数调用另外3种查询方式使得界面变得更清晰简单些,虽然只是小小switch函数的使用但会使用户的使用更具目的指向性id;charname[20];charstr[20];PLINKpworker;intl;printf("\t\t\t\t*姓名查找按:1*\n");printf("\t\t\t\t*学历查找按:2*\n");printf("\t\t\t\t*职工号查按:3*\n");scanf("%d",&l);if(l>0&&l<4){switch(l)。scanf("%s",name);findname(pworker,name);break;case2:printf("请输入要查询的职工学历:");scanf("%s",str);find_sr(pworker,str);break;case3:printf("请输入要查询的职工号:");scanf("%d",&id);findid(pworker,id);break;}printf("\n\n选择完毕!!!");}elseprintf("\t\t\t\t输入有误!!!");}/*修改职工信息*/intmodify(PLINKp){intid;PLINKq;PLINKh=NULL;分析:此修改函数是我对原函数的一个补充,弥补了原程序修改功能的缺失,但相比较别人的函数似乎浪费了许多资源,单个信息的修改根本不需要如此大费周章,急需一改进——就是对需改进处的准确定位。当然相比较我原本打算的先删除再录入还是有了一定的进步之出。printf("请输入职工号(数字):");scanf("%d",&id);h=p->next;while(h)。if(h->w.id==id)。break;}h=h->next;}if(h==NULL)。printf("找不到此职工,请重试\n");return-1;}printf("请输入职工姓名(文字):");scanf("%s",&h->);printf("请输入职工性别(文字):");scanf("%s",&h->w.sex);printf("请输入职工年龄(数字):");scanf("%d",&h->w.age);printf("请输入职工学历(文字):");scanf("%s",&h->);printf("请输入职工工资(数字):");scanf("%d",&h->w.wages);printf("请输入职工住址(文字):");scanf("%s",&h->w.adr);scanf("%s",&h->w.phone);q->next=p->next;p->next=q;printf(".^_^.修改成功!.^_^.\n");return-1;}cmd=0;分析:主函数实现了控制调用其他函数的功能,一个while循环给用户以多次更改的机会,从而更好的满足用户的不同要求。swith条件语句,编写简单明了,恰到好处的考虑到了用户的需求intid;charname[20];charstr[20];PLINKpworker;if(!(pworker=create())。exit(0);}while(cmd!=-1)。switch(cmd)。case0:message(;break;case1:add(pworker);break;case2:show(pworker);break;case3:search(;break;case4:printf("请输入要删除的职工号:");scanf("%d",&id);del(pworker,id);break;case5:modify(pworker);break;case6:message(;break;}printf("请输入操作命令数字:\n");scanf("%d",&cmd);}printf(".^_^.谢谢使用!.^_^.\n");release(pworker);return0;}四、程序调试中出现的问题及其解决方法(1)由于开始不能完全看懂链表在各个函数中是怎样调用的,以致编写查询调用search()函数时,一再出现什么什么未定义的状况解决方法:加入“charname[20];charstr[20];PLINKpworker;”对未定义的结构、数组什么的定义一下就完成了(2)计划加入背景色时,对“system("color09f");”应该添加的位置很难琢磨解决方法:经查阅资料了解该函数可能添加的位置,最终放在了界面设计message(函数中,终于可以正常运行了(3)各种变量的运用需要注意,稍对程序进行改动就会出现各种变量未定义解决方法:再次通看源程序,分清外部变量、局部变量五、改进意见与收获体会改进意见:(1)运行程序时,输入信息后,再关闭,输入的数据会丢失,所以急需一个实时保存的函数,写入一文件中,可以下次使用时打开读取(2)修改函数中需要一定位功能避免需要对一个记录整体修改,耗时又增大了继续录入错误的可能性(3)界面设计可以更加灵活一些,加入动画或是什么的。或者可以考虑利用书中提供的下拉菜单的方式使使用更方便便捷(4)对不同用户进行不同的登录方式或许会更加实用,可以分普通职工用户、高层管理人员、系统管理人员,对不同用户提供更据针对性的服务,比如职工主要就是浏览查询个人资料,高层管理可查询了解所有职工的信息,

温馨提示

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

评论

0/150

提交评论