C语言链表员工信息管理系统实验报告册.pdf
电子科技大学成都学院实验报告册课程名称:C C 语言课程设计_姓 名: _蒋明轩 _学 号: 18 _18 _院 系: _ 微电子技术系_专 业: _ 嵌入式系统工程_教 师: _ 孙轲 _20162016 年 5 5月 3030 日第1章 设计目的设计整体框架设计任务现对员工信息的管理,包括姓名,工号,性别,测评成绩,以及等级,可 以实现对于员工信息的输入,插入,删除,排序,修改,统计,查询,保存。设计要求员工信息的输入,插入,删除,排序,修改,统计,查询,保存等设计意义此程序用于新建及管理员工信息,其包括员工工号,姓名,性别,以及员 工的考核成绩,在程序中根据提示信息输入相关内容, 输入完成后,可对其输入 的内容进行修改,删除,追加,统计等操作,操作完成后保存文件,文件在下一 次启动程序时将进行自动读取信息内容。第2章设计方案软件工作主函数中开始读取保存的TXT文件,若不存在则建立该文件,根据的选项, 循环调用各个功能模块,直到选择退出时,将标识符改变,退出循环,退出该程 序。模块流程图第3章实现功能实现功能描述主函数:检测是否有对应的文件,若存在则打开该文件,否则则建立该文件,设置标识符循环功能模块,根据输入选项选择需要使用的功能;增加员工信息:根据工号判断是否需要动态分配存储空间,而后输入员工信息;查询员工信息:在链表节点中查找对应信息的节点,并打印节点信息;删除员工信息:在链表中查找对应信息节点,查找到后将节点指向更改后,释放 对应节点信息;修改员工信息:查找对应信息,然后重新输入该节点信息;插入员工信息:打印员工信息,并选择需要插入的节点,链表中指向该节点后的 指针,分配一个新的空间,输入信息,并更改指针指向;统计员工信息:统计员工中各个等级的员工个数,并打印;排序:根据员工分数,降序排列员工信息,并打印;保存:利用指针函数保存链表中的信息;模块功能描述增加员工信息:根据工号判断是否需要动态分配存储空间,而后输入员工信息;查询员工信息:在链表节点中查找对应信息的节点,并打印节点信息;删除员工信息:在链表中查找对应信息节点,查找到后将节点指向更改后,释放 对应节点信息;修改员工信息:查找对应信息,然后重新输入该节点信息;插入员工信息:打印员工信息,并选择需要插入的节点,链表中指向该节点后的 指针,分配一个新的空间,输入信息,并更改指针指向;统计员工信息:统计员工中各个等级的员工个数,并打印;排序:根据员工分数,降序排列员工信息,并打印;保存:利用指针函数保存链表中的信息; 第4章调试与实现调试中遇到的重点和难点在使用链表时对于链表节点的指向不清,操作地址混淆 解决办法利用画图的方法,明确对指针指向的问题 实现展示显示結果姓名蒋明小轩大性 别男里男良级中好优菩秀等a4n显示员工信息员工佶息管理慕统曝不:文杵还不奇在.是否创津?m提示:文件己霾打开.正在导入记最.提示:记录导人完毕*共导入0条记录.NutR * * * n* *七* 串* 半* 乍卓 *4t!M mu* * it*4单(*34171增畀员工倍昱査询员工信息挂入员工记录排序显示聞嚅四统存 统 工国】4傑出除工信d足录咸F0改修计工* G R * 钳*;K * *K * * 卒* * 丰* 卒* 扌卒扌 * *0牛* *W*W: *h *h *=: * 钉仪片 * 钳 * * * 卒*.H.IrftTb请选择:主程序显示琴平平平 E E茶平宰军平夢3 3F*F*E rTTYTT TTTT E rTTYTT TTTT TTTT=FT=FT平辛平平平罕耳 k 蓼平节苹苇戸=萼辛辛帯基平请选择:3请输入要査技的工号:1A技结集二号 姓名 性别 成绩 等级1蒋明轩男88良好查询1 1 按工号删除2 2 按姓名删除1 1常输入要删除的工号:2 2提示;该员工己经成功删除!立克之克玄此之之玄比土比*土此玄之立氏玄之土丘左Sc土:R论盘NSrN玄玄*兄克玄*丈克*次尢血*之比之=删除1最克分徴为;启陆分数为:32大白男小白插入99男优秀66合格统计第5章总结通过此次实验,让我认识到了自身能力的不足,也发现了平时一些不易发现的小毛病,让我意识到了程序中,任何一个小的细节,将会导致的大问题,比如 在此次程序的编写中,一个微不足道的取地址符将会导致内存的崩溃和输出内容 的错误,使我养成了检查代码的习惯;此次程序中,我使用的是链表,在学习数 据结构理论知识时,觉得链表使用应该是简单,方便,快捷的,但通过此次实践 证明,理论与实际的巨大差距,不但对指针的认识更加具体,也让我磨炼了意志 力,学会了责任与担当,挑战了个人能力,认识自身缺点。第6章 代码清单#include #include #include #include int saveflag=O;有條记录已经保存.)n,count);saveflag=0;else system(cls); printf(保存文件失败,O条记录被保存!n);fclose(fp); xt,a+);else exit(O); .n);while(!feof(fp) n,count);while(1)Show_Window(); printf(tt请选择:); scanf(%d,&choose);if(choose=O)if(saveflag=1)getchar();printf(n提示:资料已经改动,是否将改动保存到文件中scanf(%c,&ch);if(ch=y|ch=Y)Save(list);printf(nt提示:已经退出系统!n); break;switch(choose)case 1:Add(list);break; /增加员工记录case 2:Del(list);break;/删除员工记录case 3:(y/n)?n);serch(list);break;/查询员工记录case 4:Change(list);break;/修改员工记录case 5:Insert(list);break;/插入员工记录case 6:Tongji(list);break;/统计员工记录case 7:Sort(list);break;/排序员工记录case 8:Save(list);break;/保存员工记录case 9: system(cls); Sleep(1000); Disp(list); break; /显示员工记录default:Wrong(); getchar(); break;