c职工信息管理系统课程设计说明书毕业设计(论文)word格式

上传人:1888****888 文档编号:36046562 上传时间:2021-10-29 格式:DOC 页数:29 大小:533.02KB
收藏 版权申诉 举报 下载
c职工信息管理系统课程设计说明书毕业设计(论文)word格式_第1页
第1页 / 共29页
c职工信息管理系统课程设计说明书毕业设计(论文)word格式_第2页
第2页 / 共29页
c职工信息管理系统课程设计说明书毕业设计(论文)word格式_第3页
第3页 / 共29页
资源描述:

《c职工信息管理系统课程设计说明书毕业设计(论文)word格式》由会员分享,可在线阅读,更多相关《c职工信息管理系统课程设计说明书毕业设计(论文)word格式(29页珍藏版)》请在装配图网上搜索。

1、 课程设计说明书课程名称 C+项目设计 设计题目 学生姓名 学号 专 业 指导教师 年 月 日 课程设计评语与成绩评定项目 评判标准 (在每一项目对应的标准下方空格内标记)优秀 良好 中等 及格 不及格 工作量能很好地完成任务书规定的工作量。能较好地完成任务书规定的工作量。按时完成任务书规定的工作量。基本完成任务书规定的工作量。没有完成任务书规定的工作量。资料收集方案设计独立提出实施方案,有分析整理、获取新知识的能力。能阅读一些自选资料,能较好地分析整理各类信息。能分析整理各类信息。能阅读教师指定的参考资料。未完成教师指定的参考资料的阅读。综合应用能力能熟练掌握和运用基本理论,取得的结果有一定

2、的实用价值。能熟练掌握和运用有关理论,能独立取得结果。 较好地掌握有关理论,在教师指导下能完成工作。掌握和运用理论比较符合要求。基本理论模糊不清,无任何结果。技术水平实际能力设计合理,有较强的实际动手能力和计算机应用能力。设计比较合理、有一定的实际动手能力和计算机应用能力。设计比较合理,实际动手尚可。设计基本合理,理论分析与实施无大错。设计不合理,实际动手能力差。说明书撰写质量结构严谨,逻辑性强,层次清晰,文字流畅,符合规范化要求,打印精美。结构合理,符合逻辑,文章层次分明,语言准确,达到规范化要求,打印工整。结构基本合理,层次较分明,文理通顺,基本达到规范化要求。结构基本合理,文字尚通顺,勉

3、强达到规范化要求。结构混乱,文字表达不清,错别字较多,达不到规范化要求。学习态度态度认真,作风严谨,严格按进度开展各项工作。学习态度比较认真,能按期圆满完成任务书规定的任务。遵守纪律,基本保证设计时间,按期完成各项工作。态度尚可,在指导教师的帮助下能按期完成任务。纪律涣散,不能保证设计时间和进度。 综合评定成绩:优秀 良好 中等 及格 不及格 指导教师: 年 月 日目录一、系统开发相关情况1(一)开发背景1(二)系统开发的目标1二、系统以及需求分析1(一)系统目标1(二)系统可行性分析11、技术可行性分析12、开发工具可行性分析2三、程序功能描述以及模块结构2(一)功能模块描述及主要类描述2(

4、二)程序流程图3(三)数据结构表4四、用户使用说明与调试结果4(一)使用说明4(二)调试结果4(三)优缺点分析8五、总结8参考文献:9附录:职工信息管理系统源码(C)9随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。本文介绍了在Microsoft Visual C+ 6.0环境下开发一个职工信息管理系统的过程。本系统界面友好,操作简单,比较实用。一、系统开发相关情况(一)开发背景随着信息技术在管理上越来越深入而广泛的应用

5、,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。(二)系统开发的目标为了更好地适应我校的要求,进一步提供全方位的信息服务,职工信息管理系统在实施后应该能够达到以下的目标: 能够准确地记录职工的相关信息。 系统界面友好、操作简单易行,查询灵活方便,数据储存安全可靠。 系统维护安全、方便、可靠,并且能够实现实用性,先进性的要求。二、系统以及需求分析(一)系统目标除了前面所述,我们所开发的系统还应该具有以下功能: 原始数据修改简单方便; 方便的数据查询; 删除数据方便

6、简单,稳定性好; 数据计算自动完成,尽量减少人工干预;(二)系统可行性分析1、技术可行性分析 由于本系统管理的对象单一,都是公司职工,所以涉及的计算过程不是很复杂。现在学校用于学生管理的微机都是Pentium(R)4 CPU以上的机器,在存储量、速度方面都能满足各方面的要求。在技术难度方面,由于有指导老师的指导和相关参考文献,因此完全可以实现。2、开发工具可行性分析Microsoft Visual C+ 6.0简介Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行

7、软件开发的首选工具。虽然微软公司推出了Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为De

8、veloper Studio的组件集成为和谐的开发环境。根据以上对开发工具的功能的了解,我们相信,依靠Microsoft Visual C+ 6.0能开发出我们所期待的系统。因此,在开发工具方面是可行的。三、程序功能描述以及模块结构(一)功能模块描述及主要类描述模块一:增加人员函数Add();增加职工基本信息。模块二:删除人员函数Delete();删除指定的职工的基本信息以及薪酬。模块三:修改人员函数Modify();修改指定的职工基本信息。模块四:查询职工信息函数Query();查询指定的职工信息以及薪酬。模块五:基础数据设置函数Set();设置五类职位的基本薪酬。模块六:数据存盘,载入函数

9、Save()以及Load();储存职工基本信息,薪酬以及五类职位的基本薪酬。 本系统采用了面向对象的程序设计方法。所有的方法均以类为基础。所涉及到的类包括:class Person 基本员工类;该类是一个基类,设置了属于保护类的职工基本属性,以及构造函数Person(char ID,char *Name,int Duty)。可以给职工类型继承。 class Cservant文员类;由Person类继承而来。定义了职工上个月的工作量Workload,获得工作量函数double GetWorkload(),传入工作量函数void SetWorkload(double Amount),以工作量计算薪

10、酬函数void CalcSalary(),输出薪酬结果以及该类职工信息函数void Output()。class Salesman业务员类;同Cservant文员类。class APman行政人员类;同Cservant文员类。class CSman文员兼职业务人员类;同Cservant文员类。class ACman行政人员兼职文员类;同Cservant文员类。class Company 公司类;该类定义了前文所述六个模块功能的实现方法,链表的使用也包括其中。此类的作能在于将所有功能模块集成并定义本系统使用的主要方法。(二)程序流程图开始定义变量数据处理调用输出函数退出系统YN输入C的值C=1&

11、Cnext ,使其链接起来。指令“2删除人员”代表调用删除人员函数Delete(),要求操作者输入职工的相关ID,系统根据操作者输出的ID,找出对应的记录,然后删除该职工的信息,如果删除的是第一个结点,则 p1-next,指向第二个结点;下图示范了删除第一个节点之后的显示结果:如果删除的是第i个(0 i n)就把下一个结点地址赋给前一个结点地址;如果找不到对应的ID,则不会删除任何一个记录,并输出“未找到!”。指令“3修改人员”代表调用修改人员函数Modify(),体统根据操作者输入的ID找到对应的记录,将新输入的数据对应地赋给要修改的各成员。包括调整职位,修改姓名,工作量。如果没有找到对应的

12、ID,则不会修改任何一个记录,并输出“未输出!”。指令“4查询职工信息”表示调用查询职工信息函数Query(),先输出所有的职工记录,然后系统根据输入的ID找到对应的数据,并输出总支出薪酬,如果没有找到对应的记录,则输出“未找到!”。指令“5基础数据设置”表示调用基础数据设置函数Set(),要求操作员输入文员,行政人员,业务员的基本工资,以便计算每位职工的薪酬。指令“6数据存盘”表示调用存盘函数Save(),输入“Y”或者“N”以进一步操作。指令“7数据装入”表示调用载入函数Load(),系统直接导入数据。(三)优缺点分析优点: 系统中包含了输入、输出、保存、删除、查询、修改等多种功能,系统操

13、作灵活性较强,功能较强大; 可以随意地选择不同的指令进行操作; 自动计算本月应该支出的所有薪酬; 排版效果清晰明了,美观; 操作简单方便。缺点: 在调用某些函数时,若没有找到对应记录的情况下,输出结果的处理不太完善,例如查询函数; 录入函数的设计不完善,这也是整个程序设计中最突出的问题。五、总结本次设计我选择的题目是职工信息管理系统。因为事先的计划非常明确,所以我们在完成这个设计的过程也是比较顺利的。在系统分析和设计的部分仍然花了比较多的时间。模块设计部分因为涉及功能的实现,要从抽象的设计转化成实际的代码,因此对于某项功能的实现方法都思考得比较详尽。加上在开发系统之前,我阅读很多与本系统有相关

14、内容的书籍以做参考,使得此次系统编写能顺利进行。由于班里每个人都需要做一份设计,所以我们经常互相交流。在交流的时候经常能够互相提出更好的建议。经过对职工信息管理系统的分析与编写,我得到了很大的收获。自主学习的必要性更是解决问题的基础。这次设计使我重温了以前学过的各科知识,让我对C编程有了更深刻的认识。除了对系统作出正确的分析,实际的调查工作对系统的整体设计有着至关重要的作用。所以在分析系统之前,我花了一些时间在公司的实际管理工作调查上。也因为这样,如何编写代码逐渐变得明朗。每一个功能模块经过调查后后,各个功能逐渐显露出来,然后,反复探讨,验证这项功能是否有存在的必要,是否可以改进得更好。在这样

15、的前提下,最后顺利完成了这份设计。 这次C系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。从这次设计学到的东西,相信会对我们日后的学习工作起到很大的指导作用参考文献:1 徐士良:C常用算法程序集,清华大学出版社,1995年版.2 洪永清:面向对象建模与设计,清华大学出版社,1993年版.3 谭浩强:C程序设计,清华大学出版社,1991年版.4 张国峰:C语言及其程序设计教程,电子工业出版社,1997年版.5 侯捷:STL源码剖析,华中科技大学出版社,2002年版.6 Bruce Eckel:Thinking in C(2 nd ed),机械工业出版社,2003

16、年版.附录:职工信息管理系统源码(C)#include #include #include #include /全局数据,对象 double CSalary; /文员的基本工资 double SSalary; /业务员的基本工资 double APSalary; /行政人员的基本工资 int ID; /员工工号(要保证唯一) class Person /员工类 protected: int No; /编号 char Name20; /姓名char Sex10; /性别char Tel20; /联系方式char Nation30; /国籍int Duty; /职位 double Earning;

17、 /收入 Person *next; public: Person(char ID,char *Name,int Duty) this-Duty=Duty; strcpy(this-Name,Name); this-No=ID; virtual void CalcSalary()=0; virtual void Output()=0; friend class Company; ; class Cservant:public Person /文员类 private: double Workload; /上个月完成工作量 public: Cservant(char ID,char *Name,i

18、nt Duty,double Workload):Person(ID,Name,Duty) this-Workload=Workload; double GetWorkload() return Workload; void SetWorkload(double Amount) this-Workload=Amount; void CalcSalary() Earning=CSalary+(Workload-20)*20; void Output() CalcSalary(); coutNotNamet文员tttEarningWorkload=Workload; double GetWorkl

19、oad() return Workload; void SetWorkload(double Amount) this-Workload=Amount; void CalcSalary() Earning=SSalary+(Workload-15)*20+150; /150为业务补贴 void Output() CalcSalary(); coutNotNamet业务员tttEarningWorkload=Workload; double GetWorkload() return Workload; void SetWorkload(double s) Workload=s; void Cal

20、cSalary() Earning=250+APSalary+CSalary+(Workload-15)*20; void Output() CalcSalary(); coutNotNamet行政人员兼职文员tEarningendl; ; class APman:public Person /行政人员类 public: APman(char ID,char *Name,int Duty):Person(ID,Name,Duty) void CalcSalary() Earning=APSalary+250;/250为行政补贴 void Output() CalcSalary(); coutN

21、otNamet行政人员ttEarningWorkload=Workload; double GetWorkload() return Workload; void SetWorkload(double Amount) this-Workload=Amount; void CalcSalary() Earning=(Workload-25)*20+CSalary+150+SSalary;/150为业务补贴 void Output() CalcSalary(); coutNotNamet文员兼职业务人员tEarningnext; delete Worker; Worker=p; Worker=0;

22、 void Find(char Name20);/按姓名查找 void Find(int ID);/按编号查找 void Add(); /增加人员 void Delete(); /删除人员 void Modify(); /修改人员 void Query(); /查询人员 void Set(); /基础数据设置 void Save(); /数据存盘(包括基础数据,人员数据) void Load(); /数据装入(包括基础数据,人员数据) ; void Company:Clear() /清除内存中人员数据(内部使用) Person* p=Worker; while(p) Worker=p-next

23、; delete p; p=Worker; void Company:Find(char Name20) void Company:Add() Person *p; /新结点指针 int Duty; char Name20; char Sex10; /性别char Tel20; /联系方式char Nation30; /国籍double Workload; coutn* 新增员工 *n; /输入员工信息 coutID; coutDuty; coutName; coutSex;coutTel;coutNation;if(Duty!=4) coutWorkload; /创建新员工结点 switch

24、(Duty) case 1:p=new Cservant(ID,Name,Duty,Workload); break; case 2:p=new ACman(ID,Name,Duty,Workload); break; case 3:p=new CSman(ID,Name,Duty,Workload); break; case 4:p=new APman(ID,Name,Duty); break; case 5:p=new Salesman(ID,Name,Duty,Workload); break; p-next=0; /员工结点加入链表 if(Worker) /若已经存在结点 Person

25、 *p2; p2=Worker; while(p2-next) /查找尾结点 p2=p2-next; p2-next=p; /连接 else /若不存在结点(表空) Worker=p; /连接 void Company:Delete() /删除人员 int No; coutn* 删除员工 *n; coutNo; /查找要删除的结点 Person *p1,*p2; p1=Worker; while(p1) if(p1-No=No) break; else p2=p1; p1=p1-next; /删除结点 if(p1!=NULL)/若找到结点,则删除 if(p1=Worker) /若要删除的结点是

26、第一个结点 Worker=p1-next; delete p1; else /若要删除的结点是后续结点 p2-next=p1-next; delete p1; cout找到并删除n; else /未找到结点 cout未找到!n; void Company:Modify() int No,Duty; char Name20; double Workload; coutn* 修改员工 *n; coutNo; /查找要修改的结点 Person *p1,*p2; p1=Worker; while(p1) if(p1-No=No) break; else p2=p1; p1=p1-next; /修改结点

27、 if(p1!=NULL)/若找到结点 p1-Output(); coutDuty; if(p1-Duty!=Duty) /若职位发生变动 /修改其它数据 coutName; if(Duty!=4) coutWorkload; /创建新员工结点 Person *p3; switch(Duty) case 1:p3=new Cservant(p1-No,Name,Duty,Workload); break; case 2:p3=new ACman(p1-No,Name,Duty,Workload); break; case 3:p3=new CSman(p1-No,Name,Duty,Workl

28、oad); break; case 4:p3=new APman(p1-No,Name,Duty); break; case 5:p3=new Salesman(p1-No,Name,Duty,Workload); break; /员工结点替换到链表 p3-next=p1-next; if(p1=Worker) /若要替换的结点是第一个结点 Worker=p3; else /若要删除的结点是后续结点 p2-next=p3; /删除原来的员工结点 delete p1; else /若职位没有变动 coutp1-Name; if(Duty=1) coutWorkload; (Cservant *)

29、p1)-SetWorkload(Workload); else if(Duty=2) coutWorkload; (ACman *)p1)-SetWorkload(Workload); else if(Duty=3) coutWorkload; (CSman *)p1)-SetWorkload(Workload); else if (Duty=5) coutWorkload; (Salesman *)p1)-SetWorkload(Workload); cout修改成功!n; else /未找到结点 cout未找到!n; void Company:Query() int chet,count(

30、0); coutn* 查询职工信息以及本月销售信息 *n; cout编号t姓名t职位ttt工资(元/月)Output(); sum2+=p-Earning; p=p-next; cout本月实发工资总数:sum2元endl; coutchet; Person *p4=Worker; while(p4) if(p4-No=chet) if(p4-Duty=1) (Cservant*)p4)-Output(); count+; break; else if(p4-Duty=2) (ACman*)p4)-Output(); count+; break; else if(p4-Duty=3) (CSm

31、an*)p4)-Output(); count+; break; else if(p4-Duty=4) (APman*)p4)-Output(); count+; break; else if(p4-Duty=5) (Salesman*)p4)-Output(); count+; break; else p4=p4-next; if(count=0) cout未找到!endl; void Company:Set() coutn* 设置基础数据 *n; cout文员基本工资CSalaryCSalary; cout行政人员基本工资APSalaryAPSalary; cout业务人员基本工资SSal

32、arySSalary; cout=IDID; void Company:Save() /数据存盘(包括基础数据,人员数据),均采用文本文件 ofstream fPerson,fBase; char c; coutc; if(toupper(c)!=Y)return; /保存人员编号、姓名、职位 fPerson.open(person.txt,ios:out); Person *p=Worker; while(p) fPersonNotNametDutyDuty=1) fPersonGetWorkload()Duty=2) fPersonGetWorkload()Duty=3) fPersonG

33、etWorkload()Duty=5) fPersonGetWorkload()t; fPersonnext; fPerson.close(); /保存基础数据 fBase.open(base.txt,ios:out); fBase文员基本工资tCSalaryendl; fBase行政人员基本工资tAPSalaryendl; fBase业务人员基本工资tSSalaryendl; fBaseIDtIDendl; fPerson.close(); coutbufCSalary; /文员基本工资 fBasebufAPSalary; /行政人员基本工资 fBasebufSSalary; /业务人员基本

34、工资 fBasebufID; /员工工号fBase.close(); /清除内存人员数据 Clear(); /人员数据数据装入 ifstream fPerson; Person *p=Worker; int No; char Name20; int Duty; double Workload; fPerson.open(person.txt,ios:in); /读一条记录 fPersonNoNameDuty; if(Duty!=4)fPersonWorkload; while(fPerson.good() /创建员工结点 switch(Duty) case 1:p=new Cservant(N

35、o,Name,Duty,Workload); break; case 2:p=new ACman(No,Name,Duty,Workload); break; case 3:p=new CSman(No,Name,Duty,Workload); break; case 4:p=new APman(No,Name,Duty); break; case 5:p=new Salesman(No,Name,Duty,Workload); break; p-next=0; /员工结点加入链表 if(Worker) /若已经存在结点 Person *p2; p2=Worker; while(p2-next

36、) /查找尾结点 p2=p2-next; p2-next=p; /连接 else /若不存在结点(表空) Worker=p; /连接 /读下一条记录 fPersonNoNameDuty; if(Duty!=4)fPersonWorkload; fPerson.close(); coutn人员和基础数据已经装入.n; void main() char c; Company a; do coutn* 职工信息管理系统 *n; cout1增加人员n; cout2删除人员n; cout3修改人员n; cout4查询职工信息n; cout5基础数据设置n; cout6数据存盘n; cout7数据装入n; coutc; switch(c) case 1: a.Add(); break; case 2: a.Delete();break; case 3: a.Modify();break; case 4: a.Query(); break; case 5: a.Set(); break; case 6: a.Save(); break; case 7: a.Load(); break; while(c!=8); 26

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!