程序设计实践2.doc_第1页
程序设计实践2.doc_第2页
程序设计实践2.doc_第3页
程序设计实践2.doc_第4页
程序设计实践2.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

电子科技大学成都学院计算机系实践专周设计报告课 程 名 称:_ 程序设计实践_2_ 设 计 题 目:_员工信息评测系统_指导 教师 组:_ _ 组长学号姓名:_ _ 组员学号姓名:_ _ 组员学号姓名:_ _组员学号姓名:_ _ 计算机系制2016年6月目录目 录第1章引言.11.1 设计目标11.1.1 基本功能.11.1.2 扩展功能.11.2 信息描述11.3 功能描述21.4 设计思路2第2章总体设计.42.1 程序功能结构图42.2 程序的功能分析42.3 系统体系结构5第3章详细设计.63.1 存储结构设计63.2 模块功能及算法设计63.2.1 输入模块.63.2.2 输出模块.83.2.3 查找模块.83.2.4 统计模块.103.2.5 排序模块.123.2.6 修改模块.153.2.7 硬盘保存模块.183.2.8 硬盘读取模块.18第4章系统实现.204.1 系统主界面.204.2 输入员工信息.214.3 浏览所有员工信息.224.4 查找员工信息.234.5 修改信息.244.6 统计信息.254.7 保存到硬盘.264.8 从硬盘读取信息.27第5章测试和总结285.1 测试和调试.285.2 系统存在的问题及解决方案.285.3 收获及心得体会.28参考文献29致谢3133第1章 引言第1章 引言1.1 设计目标1.1.1 基本功能(略).设计一个员工评测系统。该系统将完成员工的评测,查找,排序,本系统的功能模块图如图1-1所示。主界面键盘输入输出硬盘读存文件应用查询评分排序手动输入显示输出信息存入文件读取修改信息输出信息图1-1 个人理财软件的功能模块图1.1.2 扩展功能1. 使用快速排序算法替换冒泡排序或者直接插入排序。2. 使用realloc确保当员工数目突破数组初始大小时,能够确保增大数组。3. 使用链式存储结构(而不是顺序存储结构)而不是数组存放员工信息。以员工号为关键字,使用二叉排序树插入员工记录,从而可以较快的根据员工号查询并修改某位员工的信息;使用二叉树中序遍历查出得分最高和最低的员工信息,统计每一等级的员工数目。1.2 信息描述 员工号Eid员工姓名Name性别Gender年龄Age综合得分Score等级Level其中,等级不需要输入;采用C语言的结构体进行描述struct employeeinteid;/员工号charname30;/姓名,用字符数组存放。姓名的最大长度不超过30个字符chargender;/性别,取值Male和Female之一intage;/年龄doublescore;/综合得分charlevel;/等级,不能直接输入,而是通过计算1.3 功能描述l 录入员工信息l 根据员工的分数自动设置员工的等级l 显示所有员工信息(以一定的格式)l 查询员工信息(以一种或多种方式)l 修改员工信息并保存l 统计员工信息并显示l 对员工信息进行排序并显示l 保存员工信息到硬盘文件l 从硬盘文件获得员工信息1.4 设计思路使用C语言结构体描述和数组结构进行存储,程序设计思路结构图如图1.1:系统界面扩展功能用户选择 退出员工信息系统操作界面待定选项操作错误相应操作图1.1第2章 总体设计第2章 总体设计2.1 程序功能结构图按学号查询从文件读入按姓名查询修改姓名删除记录插入记录排序记录男女比例和不及格人数统计输出至文件输出至屏幕 退出模块 输出模块 统计模块 查询模块 员工评测管理系统 输入模块 更新模块从键盘输入图2-1 程序功能结构图2.2 程序的功能分析输入模块:实现系统对外部数据输入的接受并将已有的数据块制成链表形式。查询模块:实现用户相应的信息查询需求,系统正常完成对链表内已有信息的查询并输出所查询到的信息。硬盘存度模块:实现将信息存入硬盘并可从硬盘读取信息。统计模块:实现用户对现有链表上相应数据的统计,统计完成后将其统计结果输出到屏幕上。修改模块:实现对员工信息的修改。排序模块:实现根据评分对员工进行排序。输出模块:实现系统已有链表中的数据按照用户指定的方式进行输出。退出模块:确认并实现员工信息表程序的结束。2.3 系统体系结构系统大致体系结构图如图2.2:账号登陆扩展功能用户登入进入菜单相应操作退出程序退出 输入 输出 更新 统计 查询 退出图2.2第3章 详细设计第3章 详细设计3.1 存储结构设计要想计算机对数据进行处理,首先要将数据储存到计算机。为此,必须先定义数据的结构类型。定义数据储存类型时要注意各学生信息对应什么样的类型,在本程序中采用结构体数组存储结构,结构类型定义如下:#include#include#define EMPLOY_COUNT 3struct employee /员工结构体 int Eid;/员工号int Age;/年龄char Name20 ;/姓名char Gender5;/性别 int Score;/评分char Level;/等级empEMPLOY_COUNT;3.2 模块功能及算法设计3.2.1 输入模块case 1: /员工信息输入system(cls); for(i=0;iEMPLOY_COUNT;+i) printf(请输入第%d个员工的信息(员工号):,i+1); scanf(%d,&empi.Eid); printf(请输入第%d个员工的信息(姓名):,i+1); scanf(%s,&empi.Name); printf(请输入第%d个员工的信息(年龄):,i+1); scanf(%d,&empi.Age); printf(请输入第%d个员工的信息(性别):,i+1); scanf(%s,empi.Gender); printf(请输入第%d个员工的信息(评分):,i+1); scanf(%d,&empi.Score); if(empi.Score=90)empi.Level=O; if(empi.Score=80)empi.Level=E; if(empi.Score=70)empi.Level=A; if(empi.Score=60)empi.Level=P; if(empi.Score60)empi.Level=D; system(cls); break;3.2.2 输出模块case 2:/员工信息输出for(i=0;iEMPLOY_COUNT;+i) printf(%st%st%st%st%st%s,员工号,姓名,年龄,性别,评分,等级n);printf(-n);for(i=0;iEMPLOY_COUNT;+i) printf(%dt%st%dt%st%dt%ct,empi.Eid,empi.Name,empi.Age,empi.Gender,empi.Score,empi.Level); putchar(n);printf(-n); break;3.2.3 查找模块case 5:/查找某个员工信息 / printf(最后一位数不计入);for(i=0;iMAX;+i)Datai=Arrayi+1; /scanf(%d,&Datai);ST.elem=Data;ST.lengh=MAX-1;printf(请输入待查找元素的关键字:);scanf(%d,&key);index=Search_Bin(ST,key);if(index=-1)printf(找不到关键字%d!n,key);elseprintf(评分为%d的排序号为:%dn,key,index+1 );/k=-1;for(i=0;iEMPLOY_COUNT;+i)k=i;if(key=empi.Score) printf(%st%st%st%st%st%s,员工号,姓名,年龄,性别,评分,等级n);printf(-n);printf(%dt%st%dt%st%dt%ct,empi.Eid,empi.Name,empi.Age,empi.Gender,empi.Score,empi.Level);putchar(n);printf(-n);break; if(k=-1)printf(SORRY NOT FIND!n);/printf(); break;3.2.4 统计模块case 4:/统计员工信息printf(等级统计:n);a=0;b=0;c=0;d=0;e=0;for(i=0;iEMPLOY_COUNT;+i)if(empi.Level=O) +a;if(empi.Level=E) +b;if(empi.Level=A) +c;if(empi.Level=P) +d;if(empi.Level=D) +e;printf(等级O有%d个人n,a);printf(等级E有%d个人n,b);printf(等级A有%d个人n,c);printf(等级P有%d个人n,d);printf(等级D有%d个人n,e);if(a+b+c+dd) printf(员工中等级D的人数较多,不利于公司发展!n);elseprintf(员工中等级高的人数较多,对公司发展较好!n);printf(n);printf(性别统计:n);a=0;b=0;for(i=0;iEMPLOY_COUNT;+i) if(strcmp(famale,empi.Gender)=0) +a;if(strcmp(male,empi.Gender)=0) +b;printf(女性员工有%d个人n,a);printf(男性员工有%d个人n,b);if(ab)printf(女性员工较少!男女比例失调,不利于提高效率n);else printf(男性员工较少!男女比例失调,不利于提高效率n);printf(n);break;3.2.5 排序模块/直接插入排序函数void Insert_Sort (int a,int num) int i,j; /声明数组的两个下标。 for (i = 2;i num;i+) / 首先a1为有序区。所以从a2开始比较。 a0 = ai; /将待排序的元素的值赋给哨兵。 for (j = i-1;a0 aj;j-) / 从待排元素的前一个元素开始往前比较。 aj+1 = aj; /依次将大于a0的元素向后移。 aj+1 = a0; /把a0插入到aj的后一个位置。 case 3:/排序printf(请选择排序方式(员工号冒泡排序;评分直接插入排序):n); printf(1代表直接插入排序,2代表冒泡排序n);scanf(%d,&ch);switch(ch)case 1:printf(评分排序); for (i = 1; i MAX;i+) Arrayi=empi-1.Score;/ 从a1 开始赋值。 Insert_Sort (Array,MAX); /调用函数。 printf(排序后的员工信息:n);for (i = 1;i MAX;i+) /empi-1.Score=Arrayi;for(j=0;jEMPLOY_COUNT;j+) if(empj.Score =Arrayi) printf(t%st%dn,empj.Name ,Arrayi); break; case 2:printf(按员工号排序);/从小到大for(i=0;iEMPLOY_COUNT;i+)for(j=0;jempj+1.Eid)EXEid=empj.Eid;EXAge=empj.Age;strcpy(EXName,empj.Name);strcpy(EXGender,empj.Gender);EXScore=empj.Score;EXLevel=empj.Level;empj.Eid=empj+1.Eid;empj.Age=empj+1.Age;strcpy(empj.Name,empj+1.Name);strcpy(empj.Gender,empj+1.Gender);empj.Score=empj+1.Score;empj.Level=empj+1.Level;empj+1.Eid=EXEid;empj+1.Age=EXAge;strcpy(empj+1.Name,EXName);strcpy(empj+1.Gender,EXGender);empj+1.Score=EXScore;empj+1.Level=EXLevel; for(i=0;iEMPLOY_COUNT;+i) /printf(%st%st%st%st%st%s,员工号,姓名,年龄,性别,评分,等级n);printf(n-n);for(i=0;iEMPLOY_COUNT;+i) printf(%dt%st%dt%st%dt%ct,empi.Eid,empi.Name,empi.Age,empi.Gender,empi.Score,empi.Level); putchar(n);printf(-n); break;break;3.2.6 修改模块/修改某个员工信息printf(请输入你要修改的学生姓名n);scanf(%s,name);k=-1;for(i=0;iEMPLOY_COUNT;+i)if(strcmp(name,empi.Name)=0)k=i;break;if(k=-1)printf(对不起,没有此人信息n);elseprintf(%st%st%st%st%st%s,1.ID,2.姓名,3.年龄,4.性别,5.评分,等级n);printf(-n);printf(%dt%st%dt%st%dt%ct,empi.Eid,empi.Name,empi.Age,empi.Gender,empi.Score,empi.Level);putchar(n);printf(-n);printf(请输入你要修改的%s的信息项(1-5):,empk.Name);scanf(%d,&choice);switch(choice)case 1:printf(你要修改的员工号是%dn,empk.Eid);printf(请输入更正后的员工号:);scanf(%d,&temp_int);empk.Eid=temp_int;break;case 2:printf(你要修改的员工姓名是%sn,empk.Name);printf(请输入更正后的姓名:);scanf(%s,&temp_char);strcpy(empk.Name,temp_char);break;case 3:printf(你要修改的员工年龄是%dn,empk.Age);printf(请输入更正后的年龄:);scanf(%d,&temp_int);empk.Age=temp_int;break;case 4:printf(你要修改的员工性别是%sn,empk.Gender);printf(请输入更正后的性别:);scanf(%s,&temp_gender); strcpy(empk.Gender,temp_gender);break;case 5:printf(你要修改的员工评分是%dn,empk.Score);printf(请输入更正后的评分:);scanf(%d,&temp_int);empk.Score=temp_int;if(empi.Score=90)empi.Level=O; if(empi.Score=80)empi.Level=E; if(empi.Score=70)empi.Level=A; if(empi.Score=60)empi.Level=P; if(empi.Score60)empi.Level=D;break;default:printf(SORRY!.输入错误,重新输入n);break;break;break;3.2.7 硬盘保存模块case 7:/保存员工信息到硬盘printf(请命名文件名:);scanf(%s,outfile);if(fp=fopen(outfile,a+)=NULL) /打开方式为追加 printf(文件不存在。/n); exit(0); for(i=0;in;i+) fprintf(fp,%d %s %d %s %dn,empi.Eid,empi.Name,empi.Age,empi.Gender,empi.Score); fclose(fp);break;3.2.8 硬盘读取模块case 8:/从硬盘文件获得员工信息fp = fopen(从硬盘读取的文件.txt, r);while (fgets(buf, sizeof buf, fp) /在这里处理buf,buf就是一行的数据token = strtok(buf, );i =0;while (token != NULL) /分割bufprintf(%s , token);token = strtok(NULL, );i+;break;第4章 系统实现第4章 系统实现4.1 系统主界面图4-1 系统主界面4.2 输入员工信息图4-2 输入员工信息4.3 浏览所有员工信息图4-3 输出员工信息4.4 查找员工信息图4-4 查找员工信息4.5 修改信息图4-5 修改员工信息4.6 统计信息图4-6 统计员工信息4.7 保存到硬盘图4-7 保存到硬盘4.8 从硬盘读取信息图4-8 从硬盘读取信息第5章 测试第5章 测试和总结5.1 测试和调试测试试例 :用户在操作界面能够完成对员工信息的输入并将其保存到链表中,在查询模块中能更具员工号或姓名查找到相应员工信息,在更新模块中能对链表进行删除,插入,排序等一系列操作,在统计模块中能对员工的指定信息进行统计并输出,在输出模块中能根据用户要求进行相应数据输出,并能成功退出。5.2 系统存在的问题及解决方案进入系统必须初始化员工信息,当系统中无初始化信息时系统无法正常运行。应设计程序使其能在无初始化信息时依然能够正常运行。没有输入错误纠正措施,一旦输入错误会导致无限循环。5.3 收获及心得体会在短短几周时间里,通过我们小组各成员之间的相互讨论和合作,我们完成了学生管理系统的程序设计,更值得高兴的是我们学会了团队合作的精神,明白了完成任何事如要讲效率那么团队是必须的道理。参考文献参考文献1克里斯托弗.H.洛夫洛克. 服务营销(第三版).北京:中国人民大学出版社,2001.78802胡运权等.运筹学教程(第2版).北京:清华大学出版社,2003.1281323 Richard B.Chase, Nicholas J. Aquilano, F. Robert Jacobs. 运营管理(原书第9版).北京:机械工业出版社,2003.1451634Madeleine E Pullman, Gary Thompson. Strategies for integrating capacity with demand in service networks, Journal of Service Research, 2003, Vol.5,No.6:16205Mark M. Davis等. 服务管理(第1版).北京:人民邮电出版社, 2006.1321486Madeleine E Pullman, Gary M Thompson, Evaluating capacity- and demand-management decisions at a ski resort, Cornell Hotel and Restaurant Administration Quarterly, 2002, Vol.43,No.6:25377陈敏. 基于需求管理的成都地区供电企业服务营销策略研究:工商管理硕士(MBA)学位论文. 成都:四川大学,20048Kenneth J Klassen, Thomas R Rohleder, Combining operations and marketing to manage capacity and demand in services, The Service Industries Journal, 2001, Vol.21,No.2:25309Rhyne, David M, the Impact of Demand Management on Service System Performa, the Service Industries Journal, 1988, Vol.8,No.4:263110Douglas R Moodie,Demand management: The evaluation of price and due date negotiation strategies using simulation,Production and Operations Management, 1999, Vol.8, No.2:152311Eitan Altman, Uri Yechiali, Analysis of customers impatience in queues with server vacations,Queuing Systems, 2006, Vol.52,No.4:616312盛骤, 谢式千等. 概率论与数理统计(第3版). 浙江大学出版社, 2001.636513James A Fitzimmons等. 服务管理(第5版). 北京:机械工业出版社, 2007.18520714Ward Whitt, Sensitivity of Performance in the Erlang-A Queuing Model to Changes in the Model Parameters, Operations Research, 2006, Vol.54,No.2:141815James A Fitzimmons等. 服务管理(第5版). 北京:机械工业出版社, 2007.29830416蔡滟. 浅谈消费者的需求管理. 商业时代学术评论, 2006, Vol.7,No.5:444817罗鹏. 服务营销中的排队管理. 营销策略, 2006,Vol.6,No.7:505118李平英. 排队现象及其管理研究. 山东农业大学学

温馨提示

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

评论

0/150

提交评论