1、课程设计人事信息管理系统湖南科技学院课程设计报告课程名称:计算机高级语言(C+)课程设计课程设计题目:人事信息管理系统系:数学系专 业:信息与计算科学年级、班:信计0801姓 名:XXX学 号:200805002128指导教师:XXX职 称:讲师200X年XX月XX日目 录1. 需求分析-22. 概要设计-23. 程序实现思路-44. 设计总结-65. 参考文献-76. 源代码-71一、 需求分析本课程设计要求设计一个人事信息管理系统,主要功能有:建立职工信息数据,包括职工号、姓名、性别、工资、出生时间、参加工作时间和年龄(必须计算得到)。实现数据录入、数据删除、数据修改、数据浏览和数据查询等
2、功能。用文件保存数据二、 概要设计(一)抽象数据类型定义表序号成员名数据类型含义1snoint编号2namestring姓名3birthdayint出生时间4Adateint参工时间5salarydouble工资6sexstring性别7ageint参工年龄8flagbool记录修改标志9sm100Staff记录数组 2(二)主程序的流程3(三)各程序模块的功能void StaffClear(SList &slist); /清空职工记录void StaffInsert(SList &slist); /插入职工记录void StaffDelete(SList &slist); /删除职工记录vo
3、id StaffFind(SList &slist); /查找某编号的职工记录void StaffView(SList &slist); /显示所有职工的记录void StaffInit(SList &slist); /初始化职工数据void StaffXG(SList &slist); /修改职工数据void StaffSave(SList &slist); /将数据保存到文件int Search(SList &slist,int sno); /查找编号为sno的职工,返回记录元素的下标void Exit(SList &slist); /退出程序三、 程序实现思路(1)设计菜单实现功能建立职
4、工信息数据,包括职工号、姓名、性别、工资、出生时间、参加工作时间和年龄(必须计算得到)。实现数据录入、数据删除、数据修改、数据浏览和数据查询等功能。用文件保存数据4(2)设计类与对象struct Staff int sno; /编号 int age; int birthday,Adate; double salary; string sex; string name; /姓名;struct SList int count; /职工人数 bool flag; /记录修改标志,false-没改变,true-已改变 Staff sm100; /记录数组;void StaffClear(SList &
5、slist); /清空职工记录void StaffInsert(SList &slist); /插入职工记录void StaffDelete(SList &slist); /删除职工记录void StaffFind(SList &slist); /查找某编号的职工记录void StaffView(SList &slist); /显示所有职工的记录void StaffInit(SList &slist); /初始化职工数据void StaffXG(SList &slist); /修改职工数据void StaffSave(SList &slist); /将数据保存到文件int Search(SLi
6、st &slist,int sno); /查找编号为sno的职工,返回记录元素的下标void Exit(SList &slist); /退出程序(3)通过类的调用实现功能设计case 1: StaffInsert(slist); break; case 2: StaffView(slist); break; case 3: StaffFind(slist); break; 5 case 4: StaffXG(slist); break; case 5: StaffDelete(slist); break; case 6: StaffSave(slist); break; case 7: Sta
7、ffClear(slist); break; case 0: Exit(slist); break; default: cout输入错误!;四、设 计 总 结经过了几周的摸索与探讨,终于在老师和同学的帮助下完成了这次的课程设计,又完成了一次挑战,从中学到了很多。知道了只要坚持就会有收获,只要付出就会成功。对我而言,这次课程设计并不是那么容易完成的,不过我还是努力的去做,遇到不懂的就问同学、查资料等等,终于有了这次的成果,虽然不是很完美,但却还是很欣慰的。 此次课程设计使我更好的理解了所学过的知识,进一步学习和了解了对程序的设计和编写,从中体会到了面向对象程序设计的便利。懂得了在进行编写程序之前
8、,要有明确的目标和整体的设计思想,对整个程序的框架结构的思考是十分重要和关键的。另外还需注意细节,往往被我们所忽视的细节部分成了是否成功的关键。从中我也发现了自己还有许多的不足之处,比如说书本上的知识6都不是很熟悉,也没有仔细的去看,很多细节部分也没注意,导致在编程过程中出现了许多的差错。虽然这次编程中还有参考程序,使编程难度下降了很多,但我依然花费了不少时间,这让我感到很不满意。同时也感到自己在这门课程上下的功夫还不足。下定决心以后要好好学习,尽努力自己最大的把该门课程学好。 五、参 考 文 献1)谭浩强 C+程序设计清华出版社 2007,5六、源 代 码人事信息管理系统程序staff.h#
9、ifndef STAFF_H_INCLUDED#define STAFF_H_INCLUDEDusing namespace std;struct Staff int sno; /编号 int age; int birthday,Adate; double salary; string sex; string name; /姓名;7 int count; /职工人数 bool flag; /记录修改标志,false-没改变,true-已改变 Staff sm100; /记录数组;void StaffClear(SList &slist); /清空职工记录void StaffInsert(SLi
10、st &slist); /插入职工记录void StaffDelete(SList &slist); /删除职工记录void StaffFind(SList &slist); /查找某编号的职工记录void StaffView(SList &slist); /显示所有职工的记录void StaffInit(SList &slist); /初始化职工数据void StaffXG(SList &slist); /修改职工数据void StaffSave(SList &slist); /将数据保存到文件int Search(SList &slist,int sno); /查找编号为sno的职工,返回
11、记录元素的下标void Exit(SList &slist); /退出程序#endif / STAFF_H_INCLUDEDMenu.h#ifndef MENU_H_INCLUDED#define MENU_H_INCLUDED#includestaff.hvoid ShowMenu();void ShowTip();8void DoMenu(char n,SList &slist);#endif / MENU_H_INCLUDEDStaff.cpp#include #include #include #include staff.hvoid StaffInit(SList &slist) /
12、初始化职工数据 ifstream infile(data.txt); slist.count=0; /职工改变标志置false if (!infile) cerrslist.count; /读入职工人数 for (int i=0;islist.smi.snoslist.smi.nameslist.smi.sexslist.smi.salaryslist.smi.birthdayslist.smi.Adateslist.smi.age; infile.close(); /关闭文件void StaffClear(SList &slist) /清空职工记录9 slist.count=0; /职工人数
13、清0 slist.flag=true; /数据已修改void StaffInsert(SList &slist) /插入职工记录 int sno=0,n=-1,birthday=0,Adate=0; double salary=0; string name,sex; cin.sync(); /清空输入缓冲区 coutsno; coutname; coutsex; coutsalary; coutbirthday; coutAdate; if (sno0) cout输入的编号有误,插入记录失败!endl; return; /结束函数 else10 n=Search(slist,sno); /查找
14、编号为sno的职工 if (n!=-1) / 已有该编号 cout该编号已存在,插入记录失败!endl; return; else /该编号不存在,执行数据插入操作 slist.smslist.count.sno=sno; slist.smslist.count.name=name; slist.smslist.count.sex=sex; slist.smslist.count.salary=salary; slist.smslist.count.birthday=birthday; slist.smslist.count.Adate=Adate; slist.smslist.count.a
15、ge=Adate/10000-birthday/10000; slist.count+; slist.flag=true; /数据已修改 cout成功插入一个职工信息!endl; int Search(SList &slist,int sno) /查找编号为sno的职工,返回记录元素的下标 for (int i=0;islist.count;i+) if (slist.smi.sno=sno) return i; return -1;11void StaffDelete(SList &slist) /删除职工记录 int sno=-1,n=-1; coutsno; n=Search(slist
16、,sno); if (n!=-1) /找到该编号的记录,执行删除操作 for (int i=n;islist.count-1;i+) slist.smi=slist.smi+1; slist.flag=true; /数据已修改 slist.count-; /职工人数减1 cout已成功删除该职工信息!endl; else cout没有找到该职工的编号!endl;void StaffFind(SList &slist) /查找某编号的职工记录 int sno=-1,n=-1; if (slist.count=0) cout没有职工记录!endl; else 12 coutsno; n=Searc
17、h(slist,sno); /找该编号的记录元素的下标 if (n!=-1) /找到,输出职工信息 coutsetw(6)编号setw(12)姓名setw(12)性别setw(12)工资setw(12)出生时间setw(12)参工时间setw(12)年龄endl; coutsetw(6)slist.smn.snosetw(12)slist.smn.namesetw(12)slist.smn.sexsetw(12)slist.smn.salarysetw(12)slist.smn.birthdaysetw(12)slist.smn.Adatesetw(12)slist.smn.ageendl;
18、else cout没有找到编号为sno的职工记录!endl; void StaffView(SList &slist) /显示所有职工的记录 Staff temp; if (slist.count!=0) /职工数不为0则执行排序操作 for (int i=0;islist.count-1;i+) /冒泡排序 for (int j=i;jslist.smj+1.sno) 13 temp=slist.smj; slist.smj=slist.smj+1; slist.smj+1=temp; cout共有职工slist.count人endl; coutsetw(6)编号setw(12)姓名setw
19、(12)性别setw(12)工资setw(12)出生时间setw(12)参工时间setw(12)年龄endl; for (int i=0;islist.count;i+) coutsetw(6)slist.smi.snosetw(12)slist.smi.namesetw(12)slist.smi.sexsetw(12)slist.smi.salarysetw(12)slist.smi.birthdaysetw(12)slist.smi.Adatesetw(12)slist.smi.ageendl;void StaffSave(SList &slist) /将数据保存到文件 ofstream
20、outfile(data.txt); /创建文件输出流 if (!outfile) cerr错误:数据文件不能打开!n; else outfileslist.countendl; /写入职工人数 for (int i=0;islist.count;i+) /写入职工信息 outfileslist.smi.sno slist.smi.name slist.smi.sex slist.smi.salary slist.smi.birthday slist.smi.Adate slist.smi.ageendl;14 slist.flag=false; /数据修改标志置false cout保存成功!
21、endl; void StaffXG(SList &slist) int sno=0,n=-1,birthday=0,Adate=0; double salary=0; string name,sex; cin.sync(); /清空输入缓冲区 coutsno; if (sno0) cout输入的编号有误,插入记录失败!endl; return; /结束函数 n=Search(slist,sno); /查找编号为sno的职工 if (n!=-1) / 已有该编号 coutname; coutsex; coutsalary; coutbirthday;15 coutAdate; slist.sm
22、n.name=name; slist.smn.sex=sex; slist.smn.salary=salary; slist.smn.birthday=birthday; slist.smn.Adate=Adate; slist.smn.age=Adate/10000-birthday/10000; slist.flag=true; /数据已修改 cout成功修改一个职工信息!endl; void Exit(SList &slist)/退出程序 char ch=Y; if (slist.flag) /判断数据是否修改 coutch; if (ch=y|ch=Y) StaffSave(slist
23、); cout已安全退出,;system(pause); /程序暂停,按任一键继续16 exit(0); /退出程序Menu.cpp#include #include menu.husing namespace std;void ShowMenu() cout|-|endl; cout| 职工信息管理系统 |endl; cout|-|endl; cout| 1.数据录入 |endl; cout| 2.数据浏览 |endl; cout| 3.数据查询 |endl; cout| 4.数据修改 |endl; cout| 5.数据删除 |endl; cout| 6.数据保存 |endl; cout|
24、7.数据初始化 |endl; cout| 0.安全地退出本系统 |endl; cout|-|endlendl;void ShowTip()coutendl;17cout-操作完成-endl; cout-选择07继续-endl; cout请选择:;void DoMenu(char n,SList &slist) switch (n) case 1: StaffInsert(slist); break; case 2: StaffView(slist); break; case 3: StaffFind(slist); break; case 4: StaffXG(slist); break; case 5: StaffD
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1