版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课 程 设 计 报 告课程名称 面向对象程序设计 课题名称 高校工资管理系统 专 业 计算机科学与技术 班 级 计算机1181班 学 号 201113030122 姓 名 宋思达 指导教师 李珍辉 谭小兰 2012年 12 月 15 日湖南工程学院课 程 设 计 任 务 书课程名称 面向对象程序设计 课 题 高校工资管理系统 专业班级 计算机1181班 学生姓名 宋思达 学 号 201113030122 指导老师 李珍辉 谭小兰 审 批 任务书下达日期 2012 年 12 月 15 日任务完成日期 2013 年 01 月 05 日一、设计内容与设计要求1.课程设计目的:面向对象程序设计课程设计
2、是集中实践性环节之一,是学习完面向对象程序设计课程后进行的一次全面的综合练习。要求学生达到熟练掌握C+语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,从而提高动手编程解决实际问题的能力。2.课题题目 高校工资管理系统3设计要求: (1)根据自己对应的课题完成以下主要工作:完成系统需求分析:包括系统设计目的与意义;系统功能需求(系统流程图);输入输出的要求。完成系统总体设计:包括系统功能分析;系统功能模块划分与设计(系统功能模块图)。完成系统详细设计:包括数据库需求分析;数据库概念结构设计(ER图);数据库逻辑结构设计;类
3、层次图;界面设计与各功能模块实现。系统调试:调试出现的主要问题,编译语法错误及修改,重点是运行逻辑问题修改和调整。使用说明书及编程体会:说明如何使用你编写的程序,详细列出每一步的操作步骤。关键源程序(带注释)(2) 按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。(3)不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。二、进度安排第 17 周 星期二 8:0012:00 星期三 8:0012:00 星期四 8:0012:00 星期五 8:0012:00 星期六 8:0012:00第 18 周 星期五 8:0012:00 三、参考书籍1.C程序设计课程设计 刘振安编著
4、TP312C5632.C+ Builder和Delphi课程设计与系统开发案例 伍俊良 清华大学出版社 7-302-06072-X 3.Visual C+课程设计案例精编 严华峰 中国水利水电出版社 7-5084-2007-1 2004 4.Visual C+课程设计与系统开发案例 伍俊良 清华大学出版社 7-302-05968-3 20025.Visual C+语言课程设计 : 案例精选与编程指导 陈清华朱红 东南大学出版社 7-81089-275-4 2003 6.VisualC+课程设计案例精编 中国水利水电出版社 7-5084-1004-1 2002 7.数据结构课程设计案例精编 :
5、用C/C+描述 李建学李光元吴春芳 清华大学出版社 7-302-14536-9 2007 (编程平台不限,vc+, c+ Builder等等。)高校工资管理系统 (一)、课程设计题目:高校工资管理系统(二)、目的与要求: 1、目的: (1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中至少要定义四个类,每个类中要有各自的属性和方法;
6、(4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三)、设计方法和基本原理: 1、问题描述(功能要求): 现一高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),如若有职工由于工作调动,则可进行相对应的删除动作。相关信息:每一学期将学校职工的本学期任职情况及上学期工作
7、的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:其中工资的基本构成如下: 教师: 基本工资+课时费; 实验员: 基本工资+实验室补助; 行政人员: 基本工资+行政补贴; 教师兼职实验员: 基本工资+课时费+实验室补助; 行政人员兼职教师:基本工资+行政补贴+课时费;(其中:(1)课时费:教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20; 注意:如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。 (2)基本工资:教师800元,
8、实验员650元,行政人员750元。 (3)行政补贴:250元。 (4)实验室补助:150元。2、问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)写出需求分析(做什么);(2)分析系统中的各个实体之间的关系及其属性和行为; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述(包括属性和方法); (5)完成类中各个成员函数的定义; (6)用户界面的设计; (7)分析系统功能模块(系统流程图);(8)代码编写 ,功能调试;(9)完成系统总结报告以及系统使用说明书。 目 录 1.系统需求分析32.总体设计83.详细设计124.系统调试165.结果分析196.
9、总结201.系统化需求分析 随着计算机技术的飞速发展计算机在高校管理中应用的普及利用计算机实现高校人事管理势在必行。对于高校来说利用计算机支持高校高效率完成人事管理的日常事务是适应现代高校制度的要求推动高校人事管理走向科学化、规范化的必要条件计算机管理所无法比拟的优点检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大的提高人事管理的效率也是高校科学化、正规化的管理与世界接轨的重要条件,学校有对职工具体信息操作,对职工信息的查询,修改,增加和删除,工资的计算和发放需求.这个系统可以保存员工信息,根据输入的数据自动实现工资发放功能,也可以查询该职工所有信息,也可以
10、按职工在编号或姓名来实现职工在修改,增加和删除功能,实现了任意职工的工资查询。职工信息保存在文件里,实现文件保存功能主菜单2.总体设计退出程序职工的增加和删除职工信息查询和修改职工工资查询职工工资放统计和发放职工信息录入增加职工新学期工资统计工资发放信息查询信息修改删除职工3.详细设计 GUANLI-name: string-sex: string-address: string-id: string-job: string-number: int-classhour: int-newclsshour: int-pay: int-year: int-month: int -day: int&l
11、t;<static>>-laoshiji: int<<static>>-shiyanji: int<<static>>-xingzhengji: int<<static>>-shiyanbu: int<<static>>-xingzhengbu: int<<static>>-classpay: int+GUANLI()+outname(): string+outsex(): string+outaddress(): string+outid(): strin
12、g+outjob(): string+outnumber(): int+outclasshour(): int+outnewclasshour(): int+outpay(): int+outyear(): int+outmonth(): int+outday(): int+changejob(): void+pay(): void+display(): void+newpay(): void+shanpay(): void 4. 系统调试1.图:进入主菜单: 2.图:职工信息录入: 3.图:输入“N”回到主菜单: 3. 图:查询职工信息: 5.图:修改职工信息: 6.图:增加职工信息: 7.
13、图:浏览职工信息: 8.图:删除职工信息: 8. 返回主菜单,退出程序。5.结果分析这个设计的独到指出就是,操作简单,实现方便,基本实现了员工基本资料的查询和修改,对工资的操作也很简洁方便。不足之处是挺多的功能都未实现,比如整个系统,职工资料对外都是全部开放的,任何人都可对系统进行操作,员工的资料还没进行保密和封锁工作,系统还有很多需要完善的地方,系统的实用性和灵活性都还很缺乏,不完善之处还需继续努力的修改6. 总结这次的程序设计相对于上学期还是有了进步的,这次的课设中,我遇到了很多的问题,有的通过思考或查看书本解决了,有的还留在脑子里,只有通过孜孜不倦的求索我们才会有进步,不懂得思考就不能真
14、正的掌握一门知识。这次的实验给以了我警示,它让我明白我所掌握的知识还很欠缺,对于继承与派生这一章的知识,我以为自己勉强掌握了,这次实验后我发现我掌握得还不够。基类的保护成员公有继承到派生类,类外是否可以通过对象来访问呢,原先我认为是可以的,经过这次程序设计,我知道我错了。 总之,我觉得做学问不应该马虎,对于所学一定要有深入的理解,这也是我这次课设得到的启示。课程设计总体感觉就是有点小麻烦,也终于知道到当初李珍辉老师讲的C+比上学期学的C语言要难要深奥很多也难了狠多,因为C+的知识面和深度都比C大很多,学起来相对也比较吃力。而这次的课设,把我在学这门课程存在的弊端全部暴露出来了,原来对于这门课,
15、我学到的仅仅是一些皮毛而已,在做程序的过程中,发现好多功能我都无法用我脑中的知识去实现它,必须翻开课本依葫芦画瓢才能把程序写出来,还有遇到的一些要求根本没遇到过,比如用文件保存的方式保存,这就得用到c+里的文件流来输入输出,并保存到指定的文件里,这些知识点老实虽然没讲,但是作为一个大学生,并不是老师不讲就不看的,应该自己去看,因为后边的只是点反而是最重要的,在我们班,有了好几个同学都已经把后边的知识看了几遍了,所以他们用起来就得心应手了,而我,也来不及去好好看书了,只能厚着脸皮去问他们,让他们列个模版给我,然后再由自己去想程序的具体实行部分,这直接导致的结果就是浪费了好多时间,所以我决定以后一
16、定认真听课,坚决不旷课早退,要把这么只是彻彻底底的学好,学扎实。附:源程序#include <fstream.h>#include <string.h>class Person /人员类(抽象类)protected: double num; /编号 char Name20; /姓名 int Duty; /人员类别标志(1-教师,2-实验员,3-行政人员,4-教师兼实验员,5-行政兼教师) double Salary; /基本工资 Person *next; /指针域public: Person() /基类构造 next=0; /指针域设置为空 virtual Perso
17、n() /基类虚析构 virtual void Input()=0; /从键盘输入数据 virtual void Input(ifstream& ifs)=0; /从文件输入数据 virtual void Output()=0; /向屏幕输出数据 virtual void Output(ofstream& ofs)=0; /向文件输出数据 virtual double Incoming()=0; /计算收入 friend class College;class Teacher:virtual public Person /教师类protected: int Hours; /教师
18、课时public: /为对象设置数据分为两种途径,通过1)构造函数,2)一般成员函数 /分开可以使得程序中应用更加灵活 /本程序采用:缺省构造+Input() Teacher() /构造函数,初始化部分数据 Duty=1; Salary=800; void Input() /键盘补充输入其它数据 cout<<"n编号:" cin>>num; cout<<"n姓名:" cin>>Name; cout<<"n教师上学期课时:" cin>>Hours; Salary=I
19、ncoming(); void Input(ifstream& ifs) ifs>>num>>Name>>Duty>>Hours>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<
20、;endl; void Output(ofstream& ofs) ofs<<num<<"t"<<Name<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<endl; double Incoming() if(Hours>120) return Salary+(Hours-120)*20; else return S
21、alary; ;class Assistant:virtual public Person /实验员protected: int Allowance; int Hours; public: Assistant() Duty=2; Salary=650; Allowance=150; void Input() cout<<"n编号:" cin>>num; cout<<"n姓名:" cin>>Name; cout<<"n实验员上学期实验课时:" cin>>Hours;
22、 Salary=Incoming(); void Input(ifstream& ifs) ifs>>num>>Name>>Duty>>Hours>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t&quo
23、t;<<endl; void Output(ofstream& ofs) ofs<<num<<"t"<<Name<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<endl; double Incoming() if(Salary>70) return Salary+Allowance+(Hours-70)
24、*20; else return Salary+Allowance; ;class Manager:virtual public Person /行政人员protected: int Allowance;public: Manager() Duty=3; Salary=750; Allowance=250; void Input() cout<<"编号:" cin>>num; cout<<"姓名:" cin>>Name; Salary=Incoming(); void Input(ifstream&
25、 ifs) ifs>>num>>Name>>Duty>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<Duty<<"t"<<"t"<<Salary<<"t"<<endl; void Output(ofstream& ofs) ofs<<num<<&
26、quot;t"<<Name<<"t"<<Duty<<"t"<<Salary<<"t"<<endl; double Incoming() return Salary+Allowance; ;class Teacher_Assistant:public Teacher,public Assistant /教师兼实验员public: Teacher_Assistant() Duty=4; Teacher:Salary=800; Assistant:
27、Allowance=150; void Input() cout<<"n编号:" cin>>num; cout<<"n姓名:" cin>>Name; cout<<"n教师上学期课时:" cin>>Teacher:Hours; Salary=Incoming(); void Input(ifstream& ifs) ifs>>num>>Name>>Duty>>Teacher:Hours>>Salar
28、y; void Output() cout<<num<<"t"<<Name<<"t"<<Duty<<"t"<<Teacher:Hours <<"t"<<Salary<<endl; void Output(ofstream& ofs) ofs<<num<<"t"<<Name<<"t"<<Dut
29、y<<"t"<<Teacher:Hours<<"t" <<Salary<<"t"<<endl; double Incoming() if(Teacher:Hours>120) return Salary+(Teacher:Hours-120)*20 +Allowance; else return Salary+Allowance; ;class Manager_Teacher:public Manager,public Teacher /行政人员兼教师pub
30、lic: Manager_Teacher() Duty=5; Manager:Salary=750; void Input() cout<<"n编号:" cin>>num; cout<<"n姓名:" cin>>Name; cout<<"n行政人员兼职教师上学期课时:" cin>>Hours; Salary=Incoming(); void Input(ifstream& ifs) ifs>>num>>Name>>Duty
31、>>Hours>>Salary; void Output() cout<<num<<"t"<<Name<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<endl; void Output(ofstream& ofs) ofs<<num<<"t"<&l
32、t;Name<<"t"<<Duty<<"t"<<Hours<<"t"<<Salary<<"t"<<endl; double Incoming() return Manager:Salary+Allowance+Hours*20; ;class Collegeprivate: Person *PL; void Clear(); int College:Cfind(int ID,Person *p1,Person *p2);
33、public: College(); /构造 College(); /析构 void Add(); /增加职工 void Delete(); /删除职工 void Modify(); /修改职工 void Print(); /输出职工信息 void Save(); /职工信息存盘 void Load(); /职工信息装入 void Find(); /查找 void Build(); /导引 void Stat(); /统计 ;College:College() /构造函数(创建1个头结点的链表) Person *p=new Teacher; PL=p; cout<<"自动
34、装入数据n" Build();College:College() /析构函数(仅保留1个头结点) Person *p=PL; while(p) /逐个删除结点,包括头结点 PL=p->next; delete p; p=PL; PL=0; void College:Add() /增加职工 char c; do cout<<"n* 增加职工 *n" /查找尾结点 Person *p=PL; while(p->next)p=p->next; int ch; cout<<"输入职工分类码1-教师,2-实验员,3-行政人
35、员,4-教师兼实验员,5-行政兼教师:n" cin>>ch; /创建新结点,录入数据,连接到链表 Teacher *pt; Assistant *pa; Manager *pm; Teacher_Assistant *pta; Manager_Teacher *pmt; switch(ch) case 1: pt=new Teacher; pt->Input(); p->next=pt; break; case 2: pa=new Assistant; pa->Input(); p->next=pa; break; case 3: pm=new M
36、anager; pm->Input(); p->next=pm; break; case 4: pta=new Teacher_Assistant; pta->Input(); p->next=pta; break; case 5: pmt=new Manager_Teacher; pmt->Input(); p->next=pmt; break; default: return; cout<<"是否进行循环?y/nn" cin>>c; while(c='y'|c='Y'); Sav
37、e();void College:Clear() /清除所有的职工结点(仅保留头结点) Person *p=PL->next; while(p) PL->next=p->next; delete p; p=PL->next; /查找void College:Find() double ID; Person *p1; Person *p2; cout<<"输入你要查询的编号:" cin>>ID; p1=PL->next; p2=PL; while(p1) if(p1->num=ID) break; /找到 else
38、p2=p1; /继续查找 p1=p1->next; if(!p1) cout<<"找不到你所查询的人!n请确认你所查询的编号是否出错!n"return; else cout<<"n* 职工信息表 *n" cout<<"编号 姓名 岗位 课时 收入情况(元)n" p1->Output();/查找职工结点(返回1-找到,0-未找到.结点指针由p1返回,p2为前看指针)int College:Cfind(int ID,Person *p1,Person *p2) *p1=PL->next
39、; *p2=PL; while(*p1) if(*p1)->num=ID) break; /找到 else *p2=*p1; /继续查找 *p1=(*p1)->next; return *p1?1:0;void College:Delete() /删除职工 cout<<"n* 删除职工 *n" int num; Person *p1,*p2; cout<<"编号:" cin>>num; if(!Cfind(num,&p1,&p2) cout<<"指定的人员没有找到!n&
40、quot; else p2->next=p1->next; /连接 delete p1; cout<<"正确删除!n" Save(); void College:Modify() /修改职工 cout<<"n* 修改职工 *n" int num; Person *p1,*p2; cout<<"编号:" cin>>num; if(!Cfind(num,&p1,&p2) cout<<"指定的人员没有找到!n" else p1->
41、;Output(); /输出原来的职工信息(做提示) p1->Input(); /输入新的职工信息(更新) cout<<"修改完成!n" Save(); void College:Print() /输出职工信息 cout<<"n* 职工信息表 *n" cout<<"编号 姓名 岗位 课时 收入情况(元)n" Person *p=PL->next; if(!p) cout<<"无职工记录!n" return; while(p) /遍历链表,输出职工信息 p-
42、>Output(); p=p->next; void College:Save() /职工信息存盘? ofstream f("Person.dat",ios:out); /打开文件 /遍历输出至文件 Person *p=PL->next; while(p) p->Output(f); p=p->next; f.close(); /关闭文件 cout<<"职工信息已经保存在Person.dat.n"void College:Build() /职工信息 char buf81; /临时空间 int Duty; /人员类
43、型 Person *p2; /新建结点的指针 long t; /读写位置 /清除现有结点(保留头结点) Clear(); /打开文件 ifstream f("Person.dat",ios:in); /建立结点,读数据 Person *p=PL; /尾结点指针 while(1) /读取人员类型 t=f.tellg(); f>>buf>>buf>>Duty; if(f) /根据人员类型创建新结点 switch(Duty) case 1: p2=new Teacher; break; case 2: p2=new Assistant; bre
44、ak; case 3: p2=new Manager; break; case 4: p2=new Teacher_Assistant; break; case 5: p2=new Manager_Teacher; break; default: f.close(); return; p->next=p2; p=p->next; f.seekg(t); p->Input(f); else break; /关闭文件 f.close();void College:Load() /职工信息录入 char ah; int c; cout<<"n* 职工信息录入
45、*n" do cout<<"输入要录入的职工个数:n" cin>>c; for(int i=1;i<=c;i+) /查找尾结点 Person *p=PL; while(p->next)p=p->next; int ch; cout<<"输入职工分类码1-教师,2-实验员,3-行政人员,4-教师兼实验员,5-行政兼教师:" cin>>ch; /创建新结点,录入数据,连接到链表 Teacher *pt; Assistant *pa; Manager *pm; Teacher_Assi
46、stant *pta; Manager_Teacher *pmt; switch(ch) case 1: pt=new Teacher; pt->Input(); p->next=pt; break; case 2: pa=new Assistant; pa->Input(); p->next=pa; break; case 3: pm=new Manager; pm->Input(); p->next=pm; break; case 4: pta=new Teacher_Assistant; pta->Input(); p->next=pta;
47、 break; case 5: pmt=new Manager_Teacher; pmt->Input(); p->next=pmt; break; default: return; Save(); cout<<"是否还要继续录入职工信息? y/nn" cin>>ah; while(ah='Y'|ah='y');void College:Stat() Person *p1; Person *p2; double Sa=0; int a,b,i=0; double c,d; cout<<"选择你要统计的类别n1类别;2工资;3要发的工资总数;4总的人数n" cin>>a; if(a=1) cout<<"输入你要统计的类别:n1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024工厂盘让买卖合同
- 2024商品房买卖合同(预售)
- 2024不动产附负担赠与合同下载
- 编程代码大全(15篇)
- 2024上海市技术开发合同
- 2024标准的赠与合同格式
- 2024学校食堂委托经营的合同
- 2024劳务合同模板国际劳务合同范本
- 2024广东省甘蔗种植订购合同范本
- 2024股票转让合同范本
- 钢结构工程冬季施工方案
- 2024年宏观经济发展情况分析报告
- 摄影入门课程-摄影基础与技巧全面解析
- 251直线与圆的位置关系(第1课时)(导学案)(原卷版)
- XX有限公司人员分流方案
- 大语言模型赋能自动化测试实践、挑战与展望-复旦大学(董震)
- 期中模拟检测(1-3单元)2024-2025学年度第一学期西师大版二年级数学
- 追觅科技在线测评逻辑题
- 2024-2030年中国演艺行业发展分析及发展前景与趋势预测研究报告
- 2024年重庆市渝北区数据谷八中小升初数学试卷
- 凝中国心铸中华魂铸牢中华民族共同体意识-小学民族团结爱国主题班会课件
评论
0/150
提交评论