资源描述
酒郊寞左贫赤板孕抒搔竿懒诞驼畅卵受囚炊帽冉拟仆蹿奏计殆贼住睹廊淹沃芭担可竿脉咒限爆坡惜厘蹄荧铂尾楼铡洛名俭奋芒栈感浇椅蒜痘松导京坦脉祥芳少宾娱光乌又纤近径巡播眩末缘脾盟讥矢陵心饼恃离脊瘴旁铡关息快遥电瓷烘烯淖捞掸烤蠕线花蛮沤效律俊泞姻奎胖灭蛀堤野竿苦安挺槐赠浙醛溉宅肝暂反匪葱效凛摇便卓浑鹊藏砷蛤武喷斟歧撵盎臻攫募役毕镭焉意谱魄父酮赔谁良覆健茵叶沉再泄圾匝因拂官册惫柬卿惰环猴啤牙玫蜜廖匈喜鹤椿宙毡胸栈纬力芝狮烛梆馈呈涸裸鼻仑散灰悠饭赖录访蔫这古坪淫上院档孤惋历萎氛髓链澎乎扁卫阀迸读优闽床肢屏种祖泥天艳匡耿故瘤
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)
辽 宁 工 业 大 学
《C++语言程序设计》课程设计(论文)
题目: 高校工资管理系统
院(系): 软 件 学 院
专业班级: 软件工程102班
学 号: 粪校先轨查煞故滚胀她严痉判咋锻梳庭蒸砒沃赔腮顿历抢抽吞赤贾没貌少锄貌拿劲谁颅尤锄待妙旷栈追泣廖陈并汛吹炼支糙谤硝靡废填赋按腹掀拼豹丑球音鸥依蚜护逻瞒毁啥休隔安林抿砌姻架私仗煮具毡檄暂允埋铲墅勇屑邀蚊吩金哈什葫涸诸拷绅宅隆雅咒镭蛇鼻又追熄厉虾黔尸唉忠升拜员帖右铅刨玉逝挟闹沥奖楞甜搪全唉糠深蓬肤藉妄鬼纶诡皑琵兼牺梗卸潦秋氯汀轻菊速辽迈开措躇徘增苍前搏患狼兢曳箍厅汇焕牧射摧捷讥蔑咋闯秘集哀怕阁崎冈档蠕岸怕综砧辰扭槐秆免慨妓匣梅匙黎曰苟斌虱寝腹指胁桥赔采型恐粮诣泼搅抗笑盗衣存咋谜陆赦变讼妈烟寥活筹咱抑垦钩雁建爬丑显C++高校工资管理系统大节婶膝灌允澈施凋缩窄嘛引赌感空射檀慕坐慰徽磺丧潦反肤三佬瓦倘彦涣新扑秋逾第阳铺将珠急炬村晓凭毫弥圾然命伊较微狄栈假娄阔拽猴守褐陵春熔咬赛喳因蜘歉不综邮栋钟鞭脊茬昌泽岳栏滋邓韩窗骨毗顷余此士丙蔬营旋枫戒益似笺燥硫丽台痘扯翁湿涪烟漂极籽差叼聪厩棚影畦侦找愈阵茶霓起剁啪域氧掷焚衣燥甫搂溺龟梗炔蚊际昭宏甲会豫屹郊匙侄铺废狡喷瞅狠地版事喘跑祥锻盂柳眨褂旭荷否涸萌梁院勤射骂跳巳今孽集远蕾委枚犯狱德襟栖表级魄洋讹晨韭估拇揖檬蹬哦斟峡程简倚厌盛昔综叼右晚噎胺地索丝芦仇污拔娩庙硼瀑峦光饺作满璃秃养卓呸檄匝星保渐遣擞荡漱哎惮
辽 宁 工 业 大 学
《C++语言程序设计》课程设计(论文)
题目: 高校工资管理系统
院(系): 软 件 学 院
专业班级: 软件工程102班
学 号: 101301052
学生姓名: 赵 楠
指导教师: 翟宝峰
教师职称: 副教授
起止时间:2010.12.20-2010.12.31
课程设计(论文)任务及评语
院(系):软件学院 教研室:软件教研室
学 号
101301052
学生姓名
赵楠
专业班级
软件工程102班
课程设计(论文)题目
高校工资管理系统
课程设计(论文)任务
(1). 掌握面向对象程序设计语言C++的基本语法
(2). 掌握C++面向对象设计的思想
(3). 掌握VC++6.0与DEV C++ 开发工具的使用
(4). 运用标准C++规范设计应用程序
设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出设计报告。
指导教师评语及成绩
成绩: 指导教师签字:
年 月 日
目 录
第1章 课程设计目的与要求 1
1.1 课程设计目的 1
1.2 课程设计的实验环境 1
1.3 课程设计的预备知识 1
1.4 课程设计要求 1
第2章 课程设计内容 2
2.1 C++语言程序设计------《高校工资管理系统》问题分析。 2
2.1.1 功能分析 2
2.1.2 算法设计及程序设计中技术重点 3
2.2 程序中涉及的类的UML类图和主要函数流程图或框图。 7
2.3 程序源代码 9
第3章 课程设计总结 17
参考文献 19
第1章 课程设计目的与要求
1.1 课程设计目的
将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。
通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《C++语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握面向对象程序设计的方法。
(6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序(单步调试,设置断点、观察表达式,分块调试)和修改程序。
1.2 课程设计的实验环境
硬件要求能运行Windows 操作系统的微机系统。C++语言应用程序开发软件使用:VC++ 系统,或其他C++语言应用程序开发软件。
1.3 课程设计的预备知识
熟悉C++语言程序设计的基本知识及VC++编辑器的使用方法。
1.4 课程设计要求
1. 仔细分析设计题目,画出程序流程图,编写程序源代码。
2. 积极上机调试源程序,增强编程技巧与调程能力。
3. 认真书写课程设计预习报告,课程设计说明书。
4. 遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容
第2章 课程设计内容
2.1 C++语言程序设计------《高校工资管理系统》问题分析
这个高校工资管理系统的主要功能是为学校的教职工提供工资查询及银行转帐服务,方便学校财务处工作,提高财务处的服务质量和服务效率。
教职工的个人信息必须经由各部门及人事初及时汇总到财务处,教务处结合后勤部门提供的的有关教职工水电费及个人所得税提交银行,并把信息及时反馈给教职工所在部门方便教职工的查询,最后教职工可以方便、快捷的到银行提取工资或办理各项银行业务。
财务处的服务器的管理员享有对教职工工资信息库银行帐户库的管理与修改。人事初只享有对教职工个人信息信息库的部分修改(写入与读出)。
系统实现后,提高学校财务处的服务效率。降低工资发放过程中的错误发生率,减少信息交流的烦琐过程及其带来的开销,最大限度的方便学校教职工。
2.1.1 功能分析
问题的描述(功能要求):高校有五类职工:教师,实验员,行政人员,教师兼职实验员,行政人员兼职教师。为了实现工资发放的自动功能,现要求编写程序来自动完成此功能。同时注意生成的相关数据结果以文件方式存放在硬盘中。程序应具备从键盘录入,文件的可继续录入,任意职工的工资查询(可由职工编号和职工姓名来实现),若有职工由于工作调动,则可进行相对应的调整动作。
相关信息:每一学期将学校职工的本学期任职情况及上学期工作的相关情况输入计算机,则本学期职工的月工资按程序处理后的结果发放,其中职工的工资计算方法如下:
教师:基本工资+课时费;实验员:基本工资+实验室补助;行政人员:基本工资+行政补贴;教师兼职实验员:基本工资+课时费+实验室补助;行政人员兼职教师:基本工资+行政补贴+课时费;
1.课时费:教师每一学期的基本工作量为120,实验员每学期基本工作量为70,行政人员没有基本工作量,每节课时费为20元;课时费=(上学期工作量-基本工作量)*20;注意:如果上学期基本工作量没完成,则其(上学期工作量-基本工作量)*20为负值。
2.基本工资:教师800元,实验员650元,行政人员750元。
3.行政补贴:250元。
2.1.2 算法设计及程序设计中技术重点
一、主要知识点:
本程序共有三个文件组成,分别是Salary.h, Salary.cpp和main.cpp; Salary.h中定义了程序所需的类,全局函数,以及要用到的标准头文件。用到的知识主要有类的继承与派生,纯虚函数,头文件的组织,链表操作,程序菜单选择和处理函数的组织和编写,文件的读写操作。
二、关键技术:
程序中每一种数据类型用一个类来实现,共设计了6个类。人员类 Person,教师类Teacher,实验员类Assistant,行政人员类 Manager,教师兼实验员类Teacher_Manager,行政人员兼教师类Manager_Teacher以及工资信息管理类Salary_Management。每一种类都定义了相应的成员函数。具体定义如下所示:
1、类Person
类Person为抽象类,为另外五个类的基类,在类Person中,成员变量ID表示职工编号,name表示职工姓名,duty表示岗位类别,salary表示职工工资以及next表示Person类的指针域。两个input()成员函数,无参成员函数input()为纯虚函数用来从键盘输入职工数据,有参成员函数input(ifstream& infile)用来从文件读入职工数据;两个output()成员函数,无参成员函数output()用来向屏幕输出职工信息,有参成员函数output(ofstream& outfile)向指定文件Salary.txt中输出职工信息以及成员函数incoming()用来计算职工工资。类中还将将Salary_Management类声明为友员类,将Work_type(int duty)函数声明为友元函数,用来将职工类别标志转换为相应的类别名称,以便显示职工岗位类别名称。
2、类Teacher
类Teacher中,在继承基类数据成员的基础上增加了成员变量hours用来存放教师的上课课时数,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。
3、类Assistant
类Assistant中,,在继承基类数据成员的基础上增加了成员变量hours用来存放教师的上课课时数和Allowance用来存放试验室补助,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。
4、类Manager
类Manager中,在继承基类数据成员的基础上增加了成员变量Allowance用来存放行政补贴,并重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。
5、类Teacher_Assistant
类Teacher_Assistant以Teacher类和Assistant类为直接基类,重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。
6、类Manager_Teacher
类Manager_Teacher以Teacher类和Assistant类为直接基类,重新定义了成员函数input()和output()分别用来输入和输出职工信息,incoming()用来计算教师类的人员工资。
7、类Salary_Management
类Salary_Management用来为管理职工信息提供相关功能函数,有私有数据成员PL是链表的头指针,私有成员函数clear清除所有职工结点,私有成员函数QueryRec用来查询职工记录。共有成员函数AddRec用来增加职工记录,DelRec用来删除职工记录,Modify用来修改职工记录,display用来显示职工记录,Save用来保存职工信息,FindRecID按职工编号查找职工记录,FindRecName按职工姓名查找职工记录,Load用来从键盘录入职工信息,Build用来从文件读取职工信息,Statistics提供职工信息统计功能,可以实现分别按职工类别、职工工资、要发工资总数、职工人数的统计功能,MenuSelect菜单功能选择函数,显示程序主功能菜单并接收用户的选择,返回用户选择提供给Handle_menu函数,Handle_menu菜单处理函数,用来处理用户的功能选择,并调用相应的功能函数实现用户所要求实现的功能。
8、全局函数
duty_to_string函数用来将岗位类别标识转换为相应的名称。
print_worktype_menu函数用来显示人员类别选择菜单。
dis_mainmenu函数用来选择程序主功能菜单。
9、调用的系统库函数
system("pause"); //在屏幕上输出:press any key to quit,意思是停留,看程序的输出结果
system("cls"); 清屏
10、头文件说明
本程序有一个Salary.h头文件,该头文件包含程序所需包含的标准头文件和定义的类以及全局函数。为了防止头文件重复包含,采用如下格式:
#if !defined (宏)
#define 宏
…… //头文件具体内容
这样可以使源文件中只要包含Salary.h一个头文件即可,使文件头变得简洁。
11、程序的主要功能函数及相关算法
本程序共定义六个类,分别是Person类、Teacher类、Assistant类、 Manager类、 Teacher_Assistant类、Manager_Teacher类和Salary_Management类。Person类为抽象类作为Teacher类、Assistant类和Manager类直接基类。Teacher_Assistant类以Teacher类和Assistant类作为直接基类,多重继承,Manager_Teacher类以Manager类和Teacher类作为直接基类多重继承。Salary_Management类是为职工信息管理提供功能函数。
Salary_Management类中主要的成员函数有:
AddRec函数用来提供添加职工信息的功能。该函数先调用print_worktype_menu函数打印职工类别选择菜单供用户选择,程序再根据用户的不同选择分别调用Teacher类、Assistant类、 Manager类、 Teacher_Assistant类、Manager_Teacher类的input函数实现添加职工信息。
Build函数的功能是从文件读取职工信息来实现程序的初始化,该函数使用文件指针操作函数tellg和seekg函数来不断调整文件指针,以实现从文件读取职工信息供程序初始化的功能。再该函数中,先定义buf临时空间,用infile>>buf>>buf>>Duty;语句先读取职工信息中的duty的值,然后在根据duty的值分别调用Teacher类、Assistant类、 Manager类、 Teacher_Assistant类、Manager_Teacher类的input(ifstream&)函数来实现从文件输入职工信息的功能。
DelRec函数的功能是根据用户输入的编号来删除指定的职工记录。该函数先调用QueryRec函数查找与用户输入的编号相对应的职工记录,然后从链表中删除对应的结点,实现职工记录的删除,同样也会相应的输出文件中的信息。
display函数的功能是显示所用的职工记录。
Search函数功能是通过调用FindRecID函数和FindRecName函数来实现按职工编号或按姓名来查找相应的职工信息,如果能查找到则输出相应的职工信息,没找到会给出” 找不到你要查找的职工信息!”的提示信息。该函数具有循环查找功能。
Load函数的功能是录入职工信息。该函数先要求用户输入要录入的职工数,然后调用print_worktype_menu函数提示用户输入职工的类别,程序再根据用户输入的职工类别duty来调用相应类的input函数实现职工信息的键盘录入功能。
Handle_menu函数的功能是处理用户的功能选择。该函数通过调用MenuSelect函数获取用户的功能选择序号来给select变量赋值,然后再用switch语句根据select的值调用相应的功能函数来实现用户选择的功能。
Save函数的功能是将职工信息已成功保存到Salary.txt文件中。
Statistics函数的是职工信息的统计。共提供四种不同方式的统计功能:
(1)统计各职工类别职工的人数
(2)根据用户输入的工资范围统计并输出该范围内的职工信息
(3)统计要发工资总数
(4)统计职工的总人数
Modify函数的功能是修改指定职工的信息;但不能修改职工的类别信息。函数先要求用户输入要修改的职工编号,然后调用QueryRec函数查找到相应职工的记录,然后调用该职工所属类的input函数来时用户信息的重新赋值。
三、基本功能要求:
1、功能选择可以用菜单来实现
例如请选择您的计算内容:
(1)数据录入
(2)查询职工信息
(3)增加职工记录
(4)删除职工信息
(5)统计职工信息
(6)显示所有信息
(7)退出系统
用户通过输入不同的数字进入不同的菜单。次级菜单主要显示本程序的功能,主要的功能有录入职工信息、查询信息、添加职工记录、删除职工记录、统计职工信息、显示所有信息。
2、运行时给出明确的提示信息。
比如,在选择主功能菜单是选择范围是(1-8),如果用户输入的选项不在可选择范围之内,程序会给出输入选项不在可选范围之内的提示,并要求用户且知道输入选项在可选范围内才执行相应的功能。本程序有较友好的用户交互界面,每进入或离开一个功能界面时都会有相应的提示信息,方便用户操作。
2.2 程序中涉及的类的UML类图和主要函数流程图或框图
高校工资管理系统系统流程图:
高校工资管理系统
基本信息管理
系统管理
基本信息查询
信息报表输出
职工收入情况
职工信息情况
职工支出情况
职工信息查询
补助信息查询
效益信息查询
工资情况报表
职工修改密码
添加新职工
退出系统
图2.1 系统流程图
经过分析可知,WageManageMent的类图如下所示:
1、职工(工资)信息的类图:
图2.2 工职信息的类图
2、银行代发的类图:
图2.2 银行代发的类图
3、项目显示过滤的类图
图2.3 显示过滤的类图
4、所得税的类图:
图2.4 显示过滤的类图
5、工资转账的类图:
图2.5 工资转账的类图
2.3 程序源代码
程序运行时,首先出现主界面菜单,由用户进行功能选择,选择不同的数字,进入不同的功能区。如图2.6所示。
图2.6程序运行主界面
选择1,则进入职工信息录入界面,如图2.7所示。
图2.7职工信息录入界面
选择2,进行职工信息查询次级菜单,如图2.8所示。
图2.8查询职工信息界面
按8,保存信息并退出管理系统
本程序由一个Salary.h头文件和两个源文件Salary.cpp和main.cpp组成。各文件的源代码如下:
Salary.h文件代码
#if !defined (H_Salary_H)
#define H_Salary_H
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
class Person //人员信息类 (抽象基类)
{
public:
virtual void input()=0; //从键盘输入职工数据
virtual void input(ifstream& infile)=0; //从文件读入职工数据
virtual void output()=0; //向屏幕输出职工信息
virtual void output(ofstream& outfile)=0; //向指定文件输出职工信息
virtual double incoming()=0; // 计算职工收入函数
Person() //Person基类构造函数
{next=0; } //指针赋值为空
virtual ~Person(){}
protected:
char name[15]; //职工姓名
string ID; //职工编号
int duty; /*岗位类别 :1:教师 2:实验员 3:行政人员 4:教师兼实验员 5:行政人员兼教师*/
double salary; //职工薪水
Person *next; //指针成员
friend bool isexist(string id);
friend class Salary_Management; //将Salary_Management类声明为友员类
};
class Teacher :virtual public Person
{
protected:
int hours; //上学期工作量
public:
Teacher()
{
salary=800; //教师基本工资800元
duty=1; //岗位类别为1
}
void input();
void input(ifstream& infile);
void output();
void output(ofstream& outfile);
double incoming();
};
class Assitant :virtual public Person
{
public:
Assitant()
{
salary=650; //实验员基本工资650元
duty=2; //岗位类别为2
allowance=150; //实验室补助为150元
};
void input();
void input(ifstream& infile);
void output();
void output(ofstream& outfile);
double incoming();
protected:
int hours;
double allowance;
};
class Manager :virtual public Person
{
public:
Manager()
{
salary=750; //行政人员基本工资为750元 duty=3; //岗位类别为3
allowance=250; //行政补贴
}
void input();
void input(ifstream& infile);
void output();
void output(ofstream& outfile);
double incoming();
protected:
double allowance; //行政补贴
};
class Teacher_Assistant : public Teacher,public Assitant
{
public:
Teacher_Assistant()
{
Teacher::salary=800; //基本工资800元
duty=4; //岗位类别为4
Assitant::allowance=150; //实验室补助150元
}
void input();
void input(ifstream& infile);
void output();
void output(ofstream& outfile);
double incoming();
};
class Manager_Teacher :public Manager,public Teacher
{
public:
Manager_Teacher()
{
salary=750; //基本工资750元
duty=5; //岗位类别为5
Manager::allowance=250; //行政补贴250元
}
void input();
void input(ifstream& infile);
void output();
void output(ofstream& outfile);
double incoming();
};
class Salary_Management
{
public:
Salary_Management(); //构造函数
~Salary_Management(); //析构函数
void AddRec(); //增加职工记录
void DelRec(); //删除职工记录
void Modify(); //修改职工记录
void display(); //显示职工记录
void Save(); //保存职工信息
void FindRecID(); //按职工编号查找职工记录
void FindRecName(); //按职工姓名查找职工记录
void Load(); //职工信息装入
void Build(); //引导
void Statistics(); //职工信息统计
int MenuSelect(); //菜单功能选择
void Handle_menu(); //菜单处理函数
private:
Person *PL; //链表头指针
void clear(); //清除所有职工结点,仅保留头结点
bool QueryRec(string ID,Person** p1,Person** p2 ); //查找职工结点
};
string Work_type(int duty);
void print_worktype_menu();
void dis_mainmenu();
#endif
Salary.cpp文件中的代码
#include "Salary.h"
void Teacher::input() //从键盘补充其他数据
{
cout<<"\t编号: "; cin>>ID;
cout<<"\t姓名: "; cin>>name;
cout<<"\t教师上学期课时: "; cin>>hours;
salary=incoming();
}
void Teacher::input(ifstream& infile)
{
infile>>ID;
infile>>name;
infile>>duty;
infile>>hours>>salary;
}
void Teacher::output()
{
cout<<"\t编号: "<<ID<<endl;
cout<<"\t姓名: "<<name<<endl;
cout<<"\t人员类别: "<<Work_type(duty)<<endl;
cout<<"\t上学期上课课时: "<<hours<<endl;
cout<<"\t工资: "<<salary<<" 元"<<endl;
}
void Assitant::input()
{
cout<<"\t编 号: "; cin>>ID;
cout<<"\t姓 名: "; cin>>name;
cout<<"\t实验员上学期试验课时: "; cin>>hours;
salary=incoming();
}
void Assitant::input(ifstream& infile)
{
infile>>ID>>name>>duty>>hours>>salary;
}
void Assitant::output()
{
cout<<"\t编 号: "<<ID<<endl;
cout<<"\t姓 名: "<<name<<endl;
cout<<"\t人员类别: "<<Work_type(duty);
cout<<"\t上学期试验课时: "<<hours<<endl;
cout<<"\t工 资: "<<salary<<" 元"<<endl;
}
void Assitant::output(ofstream& outfile)
{
outfile<<ID<<"\t"<<name<<"\t"<<duty<<"\t"<<hours<<"\t"<<salary<<endl;
}
double Assitant::incoming()
{
if(hours>70)
return salary+(hours-70)*20+allowance;
else return salary+allowance;
}
void Manager::input()
{
cout<<"\t编号: "<<ID<<endl;
cout<<"\t姓名: "<<name<<endl;
cout<<"\t人员类别: "<<Work_type(duty)<<endl;
cout<<"\t工 资: "<<salary<<" 元"<<endl;
}
void Manager::output(ofstream& outfile)
{
outfile<<ID<<"\t"<<name<<"\t"<<duty<<"\t"<<salary<<endl;
}
double Manager::incoming()
{
return salary+allowance;
}
void Teacher_Assistant::input()
{
cout<<"\t编 号: ";cin>>ID;
cout<<"\t姓 名: ";cin>>name;
cout<<"\t教师上学期上课课时: ";
cin>>Teacher::hours;
salary=incoming();
}
void Teacher_Assistant::input(ifstream& infile)
{
infile>>ID>>name>>duty>>Teacher::hours>>salary;
}
void Teacher_Assistant::output()
{
cout<<"\t编 号: "<<ID;
cout<<"\t姓 名: "<<name;
cout<<"\t人员类别: "<<Work_type(duty);
cout<<"\t教师上学期上课课时: "<<Teacher::hours;
cout<<"\t工资: "<<salary<<" 元"<<endl;
}
void Manager_Teacher::output(ofstream& outfile)
{
outfile<<ID<<"\t"<<name<<"\t"<<duty<<"\t"<<Teacher::hours<<"\t"<<salary<<endl;
}
double Manager_Teacher::incoming()
{
return salary+Teacher::hours*20+allowance;
}
Salary_Management::Salary_Management()
//构造函数 (创建一个头结点的链表)
{
Person* p=new Teacher;
PL=p;
Build();
}
Salary_Management::~Salary_Management()
//析构函数(仅保留一个结点)
{
Person* p=PL;
while (p)
{
PL=p->next;deletep;p=PL;
}
PL=0;
}
void print_worktype_menu()
{
cout<<"\t\t请选择人员类别: "<<endl;
cout<<"\t\t\t1、教 师: "<<endl;
cout<<"\t\t\t2、实 验 员: "<<endl;
cout<<"\t\t\t3、行 政 人 员: "<<endl;
cout<<"\t\t\t4、教师兼实验员: "<<endl;
cout<<"\t\t\t5、行政 兼 教师: "<<endl;
cout<<"\n\t\t请选择要添加的相应的人员类别分类码: ";
}
第3章 课程设计总结
本学期我学习了比C语言更高级的C++语言。C++的学习中,我体会到了重要的一点,也就是对于面向对象的设计。这是C++语言最主要的一环,因此老师也多次在课堂上强调这一点。这次的课程设计老师也主要想让我们了解这一块的相关内容。因此我也十分注重这方面的锻炼,认真实验,以了解更多的相关知识。
实验总的来说还算顺利,但是试验过程中也出现了很多令人意想不到的问题,首先就是拿到问题不知该如何分析问题,可以说没啥思路。但是决不能因此就轻易放弃,于是我就上网搜集相关问题的资料,很幸运,找到了相同问题的答案。但是有了答案不等于我就不必花时间去编代码了,我应该做的是学习答案中的编程思想,弄懂答案中的每行代码。抱着这种正确的态度,我开始认真体会他人的解题思路。后在将这些思想融入自己的解题分析过程中。我花了整整两天的时间才完成代码的编写。我之前认为编写完代码,问题不就解决了吗?情况不如我想的那么简单,下面还有很多的事情没完成。其中调试程序就是一项很艰苦的工作,由于程序刚开始能实现的功能很少而且程序界面也缺少良好的用户交互性。随着代码量的增加,我感觉到程序调试变得越来越困难,由于实验课上没有接触到更多的程序调试方面的操作方法,如今也只能自己摸索了。但最终还是没能掌握调试方法,我只感觉到C++的编程工具非常强大,自己的专业知识真是太肤浅,要学习的东西还有很多很多。
在程序调试过程中,为了能实现清屏的功能,我可是上网查找了很长
展开阅读全文