职工信息管理系统裴新慧.docx
《职工信息管理系统裴新慧.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统裴新慧.docx(8页珍藏版)》请在冰豆网上搜索。
职工信息管理系统裴新慧
《高级语言程序设计》
课程设计报告
设计题目职工信息管理系统
专业计算机科学与技术(软件)
班级软件
姓名裴新慧
学号061124013
2007年6月5日
目录
1.设计目标…………………………………………………3
2.设计思想…………………………………………………6
3.类及对象设计……………………………………………6
4.程序源代码………………………………………………19
5.调试记录…………………………………………………22
6.总结………………………………………………………22
职工信息管理系统
1.设计目标
设计一个实用的小型职工信息管理系统,用链表来存储职工的基本信息和工资信息,完成对工资的录入、插入、删除、查询、统计、输出等操作。
2.设计思想
⑴设计职工工资信息的数据结构表
序号成员名数据类型长度含义
1numint职工编号
2namechar8职工姓名
3sexchar6职工性别
4ageint职工年龄
5base_salaryfloat基本工资
6post_salaryfloat岗位工资
7bonusfloat奖金
8deal_salaryfloat应发工资
9fundfloat医疗住房基金
10taxfloat税金
11fact_salaryfloat实发工资
(2)以结构体建类,以类为结点建立链表
(3)用类的成员函数对链表的数据进行操作
1)构造函数workers();
2)建立链表函数voidcreat();//新建职工纪录
3)统计函数voidstatisticdeal();//统计应发工资
4)统计函数voidstatisticfact();//统计实发工资
5)插入函数voidinsert();//在指定位置插入职工信息
6)查询函数voidlookup();//查询指定编号的职工信息
7)删除函数voidcancel();//在指定位置删除职工信息
8)输出函数voidoutput();//输出所有职工信息
9)平均函数voidaverager();//平均工资
10)写文件函数voidwritefile1();//向文件写入职工信息(覆盖)
11)写文件函数voidwritefile2();//向文件写入职工信息(附加)
12)读文件函数voidreadfile();//从文件中读取职工信息
13)结束函数voidExit();//退出
14)析构函数~workers();
(4)设计菜单来实现功能设计
1)新建职工信息表
2)向职工信息表中插入职工信息
3)在职工信息表中删除职工信息
4)在职工信息表中查询职工信息
5)在屏幕中输出全部职工信息
6)向文件中写入职工信息
7)从文件读取职工信息
8)计算所有职工平均工资
9)退出(并保存修改)
3.设计类及对象
(1)本程序先定义结构体datatype和worker,然后用结构体worker建立类workers,定义如下:
classworkers
{
worker*head;//头指针
worker*temp;//当前指针
worker*tail;//尾指针
public:
workers();//构造
voidcreat();//新建职工纪录
voidstatisticdeal();//统计应发工资
voidstatisticfact();//统计实发工资
voidinsert();//插入
voidlookup();//查询
voidcancel();//删除
voidoutput();//输出
voidaverager();//平均工资
voidwritefile1();//从文件中读取职工信息(附加)
voidwritefile2();//从文件中读取职工信息(覆盖)
voidreadfile();//向文件写入职工信息
voidExit();//退出
~workers();
};
(2)在主函数里说明了一个对象workerswork,通过使用对象来调用成员函数实现功能设计。
case'1':
work.creat();break;//1、新建职工信息表
case'2':
cout<<"现在学生的信息如下:
"<work.statisticdeal();
work.statisticfact();
work.output();
work.insert();break;
case'3':
cout<<"现在学生的信息如下:
"<work.statisticdeal();
work.statisticfact();
work.output();
work.cancel();break;
case'4':
cout<<"现在学生的信息如下:
"<work.statisticdeal();
work.statisticfact();
work.output();
work.lookup();break;
case'5':
work.statisticdeal();//5、在屏幕中输出全部学生信息
work.statisticfact();
work.output();break;
case'6':
work.writefile2();break;//6、向文件中写入职工信息
case'7':
work.readfile();break;//7、从文件中读取职工信
case'8':
work.averager();break;
case'9':
work.statisticfact();//退出(并保存修改)
work.Exit();break;
4.程序源代码
5.调试纪录
(1)创建函数voidcreat()的测试
Error:
输入女或男时运行屏幕上字体乱跳。
改正:
把charsex改为charsex[6]。
(2)插入函数insert()
(3)删除函数cancel()
(4)查询函数()
错误:
输出的编号与要查询的不同
原因:
用intnum来存储编号可能造成数据溢出
错误:
判断输入的工号和要查询的工号相等时出错.
改正:
用strcmpy(str1,str2)==0
Error:
在进行查询操作时,屏幕上许多代码在跳。
原因:
在查找成功后没用break跳出,导致死循环。
(5)写文件和读文件函数
(6)输出函数和计算平均工资
最初设计的域宽不适当,导致输出时若输入的工资大排版就不清晰,两项数据连在一起。
(7)错误:
编译时无法识别exit,errorC2065:
'exit':
undeclaredidentifier.
原因:
没加头文件
6.总结
这次课程设计是对我的很好自我检测机会,通过一年的学习,虽然掌握了很多新知识,但在编程上很容易眼高手低,刚进行测试编译时,出现了各种各样的错误,自己感到很苦恼,例如少加了一个}导致出现编译错误:
errorC2601:
'writefile':
localfunctiondefinitionsareillegal;errorC2601:
'readfile':
localfunctiondefinitionsareillegal;errorC2601:
'Exit':
localfunctiondefinitionsareillegal。
当时导致运行不出结果,我深切感受到调试程序的经验不足,在输入源代码时一定要仔细、认真。
由于时间紧迫,该职工信息管理系统还存在许多不完善的地方,我列出主要的几个不足:
(1)只能在指定位置插入和删除某个职工纪录,不能插入和删除指定工号的职工纪录。
(2)虽然通过插入和删除可以修改某个职工纪录,但没有修改函数直接进行操作。
(3)利用二进制文件的形式对结构体进行读写操作时,无法直接打开磁盘文件查看职工信息。
在这次课程设计中,感受最深的一个字就是“难”,同时感到自己知识方面还存在许多漏洞,但经过老师和同学的帮助,学到了许多。
我也深切体会若到想在计算机方面有所成就,就必须有锲而不舍的精神和认真端正的态度。