1、c+职工信息管理系统课程设计说明书带全部源码 课程设计说明书课程名称 C+项目设计 设计题目 学生姓名 学号 专 业 指导教师 年 月 日 课程设计评语与成绩评定项目 评判标准 (在每一项目对应的标准下方空格内标记)优秀 良好 中等 及格 不及格 工作量能很好地完成任务书规定的工作量。能较好地完成任务书规定的工作量。按时完成任务书规定的工作量。基本完成任务书规定的工作量。没有完成任务书规定的工作量。资料收集方案设计独立提出实施方案,有分析整理、获取新知识的能力。能阅读一些自选资料,能较好地分析整理各类信息。能分析整理各类信息。能阅读教师指定的参考资料。未完成教师指定的参考资料的阅读。综合应用能
2、力能熟练掌握和运用基本理论,取得的结果有一定的实用价值。能熟练掌握和运用有关理论,能独立取得结果。 较好地掌握有关理论,在教师指导下能完成工作。掌握和运用理论比较符合要求。基本理论模糊不清,无任何结果。技术水平实际能力设计合理,有较强的实际动手能力和计算机应用能力。设计比较合理、有一定的实际动手能力和计算机应用能力。设计比较合理,实际动手尚可。设计基本合理,理论分析与实施无大错。设计不合理,实际动手能力差。说明书撰写质量结构严谨,逻辑性强,层次清晰,文字流畅,符合规范化要求,打印精美。结构合理,符合逻辑,文章层次分明,语言准确,达到规范化要求,打印工整。结构基本合理,层次较分明,文理通顺,基本
3、达到规范化要求。结构基本合理,文字尚通顺,勉强达到规范化要求。结构混乱,文字表达不清,错别字较多,达不到规范化要求。学习态度态度认真,作风严谨,严格按进度开展各项工作。学习态度比较认真,能按期圆满完成任务书规定的任务。遵守纪律,基本保证设计时间,按期完成各项工作。态度尚可,在指导教师的帮助下能按期完成任务。纪律涣散,不能保证设计时间和进度。 综合评定成绩:优秀 良好 中等 及格 不及格 指导教师: 年 月 日随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须
4、建立与自身特点相适应的管理信息系统。本文介绍了在Microsoft Visual C+ 6.0环境下开发一个职工信息管理系统的过程。本系统界面友好,操作简单,比较实用。一、系统开发相关情况(一)开发背景随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。(二)系统开发的目标为了更好地适应我校的要求,进一步提供全方位的信息服务,职工信息管理系统在实施后应该能够达到以下的目标: 能够准确地记录职工的相关信息。 系统界面友好、操作
5、简单易行,查询灵活方便,数据储存安全可靠。 系统维护安全、方便、可靠,并且能够实现实用性,先进性的要求。二、系统以及需求分析(一)系统目标除了前面所述,我们所开发的系统还应该具有以下功能: 原始数据修改简单方便; 方便的数据查询; 删除数据方便简单,稳定性好; 数据计算自动完成,尽量减少人工干预;(二)系统可行性分析1、技术可行性分析 由于本系统管理的对象单一,都是公司职工,所以涉及的计算过程不是很复杂。现在学校用于学生管理的微机都是Pentium(R)4 CPU以上的机器,在存储量、速度方面都能满足各方面的要求。在技术难度方面,由于有指导老师的指导和相关参考文献,因此完全可以实现。2、开发工
6、具可行性分析Microsoft Visual C+ 6.0简介Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。Visual C+6.0不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发
7、环境(integrated development environment,IDE)。Visual C+6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。根据以上对开发工具的功能的了解,我们相信,依靠Microsoft Visual C+ 6.0能开发出我们所期待的系统。因此,在开发工具方面是可行的。三、程序功能描述以及模块结构(一)功能模块描述及主要类描述模块一:增加人员函数Add();增加职工基本信息。模块二:删除人员函数Delete();删除指
8、定的职工的基本信息以及薪酬。模块三:修改人员函数Modify();修改指定的职工基本信息。模块四:查询职工信息函数Query();查询指定的职工信息以及薪酬。模块五:基础数据设置函数Set();设置五类职位的基本薪酬。模块六:数据存盘,载入函数Save()以及Load();储存职工基本信息,薪酬以及五类职位的基本薪酬。 本系统采用了面向对象的程序设计方法。所有的方法均以类为基础。所涉及到的类包括:class Person 基本员工类;该类是一个基类,设置了属于保护类的职工基本属性,以及构造函数Person(char ID,char *Name,int Duty)。可以给职工类型继承。 clas
9、s Cservant文员类;由Person类继承而来。定义了职工上个月的工作量Workload,获得工作量函数double GetWorkload(),传入工作量函数void SetWorkload(double Amount),以工作量计算薪酬函数void CalcSalary(),输出薪酬结果以及该类职工信息函数void Output()。class Salesman业务员类;同Cservant文员类。class APman行政人员类;同Cservant文员类。class CSman文员兼职业务人员类;同Cservant文员类。class ACman行政人员兼职文员类;同Cservant文
10、员类。class Company 公司类;该类定义了前文所述六个模块功能的实现方法,链表的使用也包括其中。此类的作能在于将所有功能模块集成并定义本系统使用的主要方法。(二)程序流程图开始定义变量数据处理调用输出函数退出系统YN输入C的值C=1&Cnext ,使其链接起来。指令“2删除人员”代表调用删除人员函数Delete(),要求操作者输入职工的相关ID,系统根据操作者输出的ID,找出对应的记录,然后删除该职工的信息,如果删除的是第一个结点,则 p1-next,指向第二个结点;下图示范了删除第一个节点之后的显示结果:如果删除的是第i个(0 i n)就把下一个结点地址赋给前一个结点地址;如果找不
11、到对应的ID,则不会删除任何一个记录,并输出“未找到!”。指令“3修改人员”代表调用修改人员函数Modify(),体统根据操作者输入的ID找到对应的记录,将新输入的数据对应地赋给要修改的各成员。包括调整职位,修改姓名,工作量。如果没有找到对应的ID,则不会修改任何一个记录,并输出“未输出!”。指令“4查询职工信息”表示调用查询职工信息函数Query(),先输出所有的职工记录,然后系统根据输入的ID找到对应的数据,并输出总支出薪酬,如果没有找到对应的记录,则输出“未找到!”。指令“5基础数据设置”表示调用基础数据设置函数Set(),要求操作员输入文员,行政人员,业务员的基本工资,以便计算每位职工
12、的薪酬。指令“6数据存盘”表示调用存盘函数Save(),输入“Y”或者“N”以进一步操作。指令“7数据装入”表示调用载入函数Load(),系统直接导入数据。(三)优缺点分析优点: 系统中包含了输入、输出、保存、删除、查询、修改等多种功能,系统操作灵活性较强,功能较强大; 可以随意地选择不同的指令进行操作; 自动计算本月应该支出的所有薪酬; 排版效果清晰明了,美观; 操作简单方便。缺点: 在调用某些函数时,若没有找到对应记录的情况下,输出结果的处理不太完善,例如查询函数; 录入函数的设计不完善,这也是整个程序设计中最突出的问题。五、总结本次设计我选择的题目是职工信息管理系统。因为事先的计划非常明
13、确,所以我们在完成这个设计的过程也是比较顺利的。在系统分析和设计的部分仍然花了比较多的时间。模块设计部分因为涉及功能的实现,要从抽象的设计转化成实际的代码,因此对于某项功能的实现方法都思考得比较详尽。加上在开发系统之前,我阅读很多与本系统有相关内容的书籍以做参考,使得此次系统编写能顺利进行。由于班里每个人都需要做一份设计,所以我们经常互相交流。在交流的时候经常能够互相提出更好的建议。经过对职工信息管理系统的分析与编写,我得到了很大的收获。自主学习的必要性更是解决问题的基础。这次设计使我重温了以前学过的各科知识,让我对C编程有了更深刻的认识。除了对系统作出正确的分析,实际的调查工作对系统的整体设
14、计有着至关重要的作用。所以在分析系统之前,我花了一些时间在公司的实际管理工作调查上。也因为这样,如何编写代码逐渐变得明朗。每一个功能模块经过调查后后,各个功能逐渐显露出来,然后,反复探讨,验证这项功能是否有存在的必要,是否可以改进得更好。在这样的前提下,最后顺利完成了这份设计。 这次C系统设计作业,提升了我分析问题的能力和思考问题的逻辑能力,更明白实际调研的重要性。从这次设计学到的东西,相信会对我们日后的学习工作起到很大的指导作用参考文献:1 徐士良:C常用算法程序集,清华大学出版社,1995年版.2 洪永清:面向对象建模与设计,清华大学出版社,1993年版.3 谭浩强:C程序设计,清华大学出
15、版社,1991年版.4 张国峰:C语言及其程序设计教程,电子工业出版社,1997年版.5 侯捷:STL源码剖析,华中科技大学出版社,2002年版.6 Bruce Eckel:Thinking in C(2 nd ed),机械工业出版社,2003年版.附录:职工信息管理系统源码(C)#include #include #include #include /全局数据,对象 double CSalary; /文员的基本工资 double SSalary; /业务员的基本工资 double APSalary; /行政人员的基本工资 int ID; /员工工号(要保证唯一) class Person /
16、员工类 protected: int No; /编号 char Name20; /姓名char Sex10; /性别char Tel20; /联系方式char Nation30; /国籍int Duty; /职位 double Earning; /收入 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 cl
17、ass Company; ; class Cservant:public Person /文员类 private: double Workload; /上个月完成工作量 public: Cservant(char ID,char *Name,int Duty,double Workload):Person(ID,Name,Duty) this-Workload=Workload; double GetWorkload() return Workload; void SetWorkload(double Amount) this-Workload=Amount; void CalcSalary(
18、) Earning=CSalary+(Workload-20)*20; void Output() CalcSalary(); coutNotNamet文员tttEarningWorkload=Workload; double GetWorkload() return Workload; void SetWorkload(double Amount) this-Workload=Amount; void CalcSalary() Earning=SSalary+(Workload-15)*20+150; /150为业务补贴 void Output() CalcSalary(); coutNot
19、Namet业务员tttEarningWorkload=Workload; double GetWorkload() return Workload; void SetWorkload(double s) Workload=s; void CalcSalary() Earning=250+APSalary+CSalary+(Workload-15)*20; void Output() CalcSalary(); coutNotNamet行政人员兼职文员tEarningendl; ; class APman:public Person /行政人员类 public: APman(char ID,ch
20、ar *Name,int Duty):Person(ID,Name,Duty) void CalcSalary() Earning=APSalary+250;/250为行政补贴 void Output() CalcSalary(); coutNotNamet行政人员ttEarningWorkload=Workload; double GetWorkload() return Workload; void SetWorkload(double Amount) this-Workload=Amount; void CalcSalary() Earning=(Workload-25)*20+CSal
21、ary+150+SSalary;/150为业务补贴 void Output() CalcSalary(); coutNotNamet文员兼职业务人员tEarningnext; delete Worker; Worker=p; Worker=0; void Find(char Name20);/按姓名查找 void Find(int ID);/按编号查找 void Add(); /增加人员 void Delete(); /删除人员 void Modify(); /修改人员 void Query(); /查询人员 void Set(); /基础数据设置 void Save(); /数据存盘(包括基
22、础数据,人员数据) void Load(); /数据装入(包括基础数据,人员数据) ; void Company:Clear() /清除内存中人员数据(内部使用) Person* p=Worker; while(p) Worker=p-next; 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(Duty) case 1:p=new Cservant(ID,Name,Duty,Workload); break; case 2:p=new ACman(ID,Name,Duty,Workload); break; case 3:p=n
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1