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

下载本文档

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

文档简介

职工信息管理系统设计一、设计任务课题:职工信息管理系统设计职工信息包括职工号,姓名,性别,年龄,学历,工资,住址,电话等(职工号不重复)。是设计一职工信息管理系统,使之能提供以下功能:系统以菜单方式工作职工信息录入功能(职工信息用文件保存)输入职工信息浏览功能 输出查询和排序功能 算法 按工资查询 按学历查询等职工信息删除,修改功能。补充要求:1)整个系统均用c语言实现;2)可以利用数组,指针,链表来实现数据结构设计;3)系统具有输入,显示,查询,删除,排序,插入,保存,读取等基本功能;4)系统的各个功能模块都用函数的形式来实现;5)可以将信息保存在文件中读取出来。二、系统设计方案1.程序采用模块化设计,主函数为程序的入口,各模块独立,可分块调试,各模块由主函数控制调用。主函数的控制功能通过循环执行一个开关语句来实现。该开关语句的条件值为调用主菜单函数得到的返回值,根据该值,调用相应的各功能函数。 2.应用高级语言程序设计中的基本控制结构,如选择和循环等,并且包含对文件的读、写等基本操作,在软件开发过程中应用了软件工程的基本理论。因此,系统的设计方法是结构化设计方法,开发手段是C语言。 3.源程序运用多个函数,开头先进行函数声明,然后分别定义、调用各函数。开始主函数载入模块录入记录模块浏览记录模块修改记录模块删除记录模块查询记录模块退出程序模块按学历按工号按姓名保存数据模块结束程序流程图三、程序主要代码分析/*下面定义职工信息结构*/typedef struct worker int id; char name20; char sex3; int age; char edu50; int wages; char adr255; char phone13; WORKER, *PWORKER;/typedef struct WORKER *PWORKER;typedef struct link分析:我认为链表的使用正是本程序的最精彩的地方所在,较数组而言它的使用带来了很多优点:(1)空间的灵活分配,虽然地址不是连续的,但只要找到链表的头所有数据都可以迅速找到(2)可以灵活的插入或删除元素而不会像数组那样带来较多数据的移动 WORKER w; struct link *next;LINK, *PLINK;/typedef struct LINK *PLINK;/*创建职工信息链表*/PLINK create() PLINK p=(PLINK)malloc(sizeof(LINK); if(NULL!=p) p-next=NULL; return p; printf(内存不足!n); return NULL;/*显示程序界面文字*/ void message() system(color 09f);/*设置当前窗口的背景色和前景色*/分析:界面设计我运用了适当的标点使得界面变得清晰大方,背景色的添加也可给用户新的视觉效果/* 0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 A = 淡绿色 3 = 浅绿色 B = 淡浅绿色 4 = 红色 C = 淡红色 5 = 紫色 D = 淡紫色 6 = 黄色 E = 淡黄色 7 = 白色 F = 亮白色*/ system(cls); printf(tt*nn); printf(tt欢迎进入职工管理系统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,&); printf(请输入职工性别(文字):); scanf(%s,&q-w.sex); printf(请输入职工年龄(数字):); scanf(%d,&q-w.age); printf(请输入职工学历(文字):); scanf(%s,&); printf(请输入职工工资(数字):); scanf(%d,&q-w.wages); printf(请输入职工住址(文字):); scanf(%s,&q-w.adr); printf(请输入职工电话(文字):); scanf(%s,&q-w.phone); q-next=p-next; p-next=q; printf(._.录入成功!._.n); return -1;/*按姓名查询*/ 分析:链表、结构指针的使用大大方便了信息的查找定位。值得注意的是判断两字符串内容是否相同时需用到strcmp函数!PLINK findname(PLINK p,char *name)message();printf(按姓名 查询n);printf(职工号t姓名t性别t年龄t学历t工资t住址t电话n);while(NULL!=p-next)if(0=strcmp(,name)printf(%dt%st%st%dt%st%dt%st%sn,p-next-w.id,,p-next-w.sex,p-next-w.adr,,p-next-w.wages,p-next-w.adr,p-next-w.phone);return p;p=p-next;printf(._.查询结束!._.n);return NULL;/*按职工号删除职工信息*/int del(PLINK p,int id)message();printf(按职工号删除职工信息n);while(NULL!=p-next)if(p-next-w.id=id)PLINK q=p-next;p-next=p-next-next;free(q);printf(._.删除成功!._.n);return 1;p=p-next;printf(没有你输入的职工号!n);return -1;分析:及时的在程序结束时释放内存,避免占用多余的空间充分显示出了链表使用的优越性,占用最小的空间满足用户更多的需求/*程序结束释放内存*/void release(PLINK p)PLINK q;while(NULL!=p-next)q=p;p=p-next;free(q);free(p);分析:此处是我对源程序的改进处之一,用此函数调用另外3种查询方式使得界面变得更清晰简单些,虽然只是小小switch函数的使用但会使用户的使用更具目的指向性/*查询调用*/void search() int id;char name20;char str20;PLINK pworker;int l;printf(tttt*姓名查找按:1*n);printf(tttt*学历查找按:2*n);printf(tttt*职工号查按:3*n);scanf(%d,&l);if(l0&lnext; while(h) if(h-w.id=id) break; h=h-next; if (h = NULL) printf(找不到此职工,请重试n); return -1; printf(请输入职工姓名(文字):); scanf(%s,&); printf(请输入职工性别(文字):); scanf(%s,&h-w.sex); printf(请输入职工年龄(数字):); scanf(%d,&h-w.age); printf(请输入职工学历(文字):); scanf(%s,&); printf(请输入职工工资(数字):); scanf(%d,&h-w.wages); printf(请输入职工住址(文字):); scanf(%s,&h-w.adr); printf(请输入职工电话(文字):); scanf(%s,&h-w.phone); q-next=p-next; p-next=q; printf(._.修改成功!._.n); return -1;int main()int cmd=0;分析:主函数实现了控制调用其他函数的功能,一个while循环给用户以多次更改的机会,从而更好的满足用户的不同要求。swith条件语句,编写简单明了,恰到好处的考虑到了用户的需求int id;char name20;char str20;PLINK pworker;if(!(pworker=create()exit(0);while(cmd!=-1)switch(cmd)case 0: message(); break;case 1: add(pworker); break;case 2: show(pworker); break;case 3: search(); break; case 4: printf(请输入要删除的职工号:); scanf(%d,&id); del(pworker,id); break;case 5: modify(pworker); break;case 6: message(); break;printf(请输入操作命令数字:n);scanf(%d,&cmd);printf(._.谢谢使用!._.n);release(pworker);return 0;四、程序调试中出现的问题及其解决方法(1)由于开始不能完全看懂链表在各个函数中是怎样调用的,以致编写查询调用search()函数时,一再出现什么什么未定义的状况 解决方法:加入“char name20; char str20; PLINK pworker;”对未定义的结构、数组什么的定义一下就完成了(2)计划加入背景色时,对“system(color 09f);”应该添加的位置很难琢磨 解决方法:经查阅资料了解该函数可能添加的位置,最终放在了界面设计message()函数中,终于可以正常运行了(3)各种变量的运用需要注意,稍对程序进行改动就会出现各种变量未定义 解决方法:再次通看源程序,分清外部变量、局部变量五、改进意见与收获体会改进意见:(1)运行程序时,输入信息后,再关闭,输入的数据会丢失,所以急需一个实时保存的函数,写入一文件中,可以下次使用时打开读取(2)修改函数中需要一定位功能避免需要对一个记录整体修改,耗时又增大了继续录入错误的可能性(3)界面设计可以更加灵活一些,加入动画或是什么的。或者可以考虑利用书中提供的下拉菜单的方式使使用更方便便捷(4)对不同用户进行不同的登录方式或许会更加实用,可以分普通职工用户、高层管理人员、系统管理人员,对不同用户提供更据针对性的服务,比如职工主要就是浏览查询个人资料,高层管理可查询了解所有职工的信息,系统管理人员用到修改、删除等功能(5)加入登录时的密码保护,便于保护各个用户的私人资料不外漏,这样会使程序更加人性化收获体会: 回顾起此次课程设计,我感慨颇多,从拿到题目到完成整个编程,从理论到实践,一星期里,我学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,链表,文件,循环,半个学期的学习以及这一周的课程设计,我的C语言学习出现了很多的问题,可以看到基础的薄弱,通过请教同学,讨论

温馨提示

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

评论

0/150

提交评论