课程设计人事信息管理系统.docx
- 文档编号:3467850
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:18
- 大小:47.71KB
课程设计人事信息管理系统.docx
《课程设计人事信息管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计人事信息管理系统.docx(18页珍藏版)》请在冰豆网上搜索。
课程设计人事信息管理系统
湖南科技学院
课程设计报告
课程名称:
计算机高级语言(C++)课程设计
课程设计题目:
人事信息管理系统
系:
数学系
专业:
信息与计算科学
年级、班:
信计0801
姓名:
XXX
学号:
200805002128
指导教师:
XXX
职称:
讲师
200X年XX月XX日
目录
1.需求分析--------------------------------------------------------------2
2.概要设计--------------------------------------------------------------2
3.程序实现思路--------------------------------------------------------4
4.设计总结--------------------------------------------------------------6
5.参考文献--------------------------------------------------------------7
6.源代码-----------------------------------------------------------------7
1
一、需求分析
本课程设计要求设计一个人事信息管理系统,主要功能有:
①建立职工信息数据,包括职工号、姓名、性别、工资、出生时间、参加工作时间和年龄(必须计算得到)。
②实现数据录入、数据删除、数据修改、数据浏览和数据查询等功能。
③用文件保存数据
二、概要设计
(一)抽象数据类型定义表
序号
成员名
数据类型
含义
1
sno
int
编号
2
name
string
姓名
3
birthday
int
出生时间
4
Adate
int
参工时间
5
salary
double
工资
6
sex
string
性别
7
age
int
参工年龄
8
flag
bool
记录修改标志
9
sm[100]
Staff
记录数组
2
(二)主程序的流程
3
(三)各程序模块的功能
voidStaffClear(SList&slist);//清空职工记录
voidStaffInsert(SList&slist);//插入职工记录
voidStaffDelete(SList&slist);//删除职工记录
voidStaffFind(SList&slist);//查找某编号的职工记录
voidStaffView(SList&slist);//显示所有职工的记录
voidStaffInit(SList&slist);//初始化职工数据
voidStaffXG(SList&slist);//修改职工数据
voidStaffSave(SList&slist);//将数据保存到文件
intSearch(SList&slist,intsno);//查找编号为sno的职工,返回记录元素的下标
voidExit(SList&slist);//退出程序
三、程序实现思路
(1)设计菜单实现功能
①建立职工信息数据,包括职工号、姓名、性别、工资、出生时间、参加工作时间和年龄(必须计算得到)。
②实现数据录入、数据删除、数据修改、数据浏览和数据查询等功能。
③用文件保存数据
4
(2)设计类与对象
structStaff
{
intsno;//编号
intage;
intbirthday,Adate;
doublesalary;
stringsex;
stringname;//姓名
};
structSList
{
intcount;//职工人数
boolflag;//记录修改标志,false-没改变,true-已改变
Staffsm[100];//记录数组
};
voidStaffClear(SList&slist);//清空职工记录
voidStaffInsert(SList&slist);//插入职工记录
voidStaffDelete(SList&slist);//删除职工记录
voidStaffFind(SList&slist);//查找某编号的职工记录
voidStaffView(SList&slist);//显示所有职工的记录
voidStaffInit(SList&slist);//初始化职工数据
voidStaffXG(SList&slist);//修改职工数据
voidStaffSave(SList&slist);//将数据保存到文件
intSearch(SList&slist,intsno);//查找编号为sno的职工,返回记录元素的下标
voidExit(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':
StaffClear(slist);
break;
case'0':
Exit(slist);
break;
default:
cout<<"输入错误!
";
四、设计总结
经过了几周的摸索与探讨,终于在老师和同学的帮助下完成了这次的课程设计,又完成了一次挑战,从中学到了很多。
知道了只要坚持就会有收获,只要付出就会成功。
对我而言,这次课程设计并不是那么容易完成的,不过我还是努力的去做,遇到不懂的就问同学、查资料等等,终于有了这次的成果,虽然不是很完美,但却还是很欣慰的。
此次课程设计使我更好的理解了所学过的知识,进一步学习和了解了对程序的设计和编写,从中体会到了面向对象程序设计的便利。
懂得了在进行编写程序之前,要有明确的目标和整体的设计思想,对整个程序的框架结构的思考是十分重要和关键的。
另外还需注意细节,往往被我们所忽视的细节部分成了是否成功的关键。
从中我也发现了自己还有许多的不足之处,比如说书本上的知识
6
都不是很熟悉,也没有仔细的去看,很多细节部分也没注意,导致在编程过程中出现了许多的差错。
虽然这次编程中还有参考程序,使编程难度下降了很多,但我依然花费了不少时间,这让我感到很不满意。
同时也感到自己在这门课程上下的功夫还不足。
下定决心以后要好好学习,尽努力自己最大的把该门课程学好。
五、参考文献
1)谭浩强《C++程序设计》清华出版社2007,5
六、源代码
人事信息管理系统程序
staff.h
#ifndefSTAFF_H_INCLUDED
#defineSTAFF_H_INCLUDED
usingnamespacestd;
structStaff
{
intsno;//编号
intage;
intbirthday,Adate;
doublesalary;
stringsex;
stringname;//姓名
};
7
{
intcount;//职工人数
boolflag;//记录修改标志,false-没改变,true-已改变
Staffsm[100];//记录数组
};
voidStaffClear(SList&slist);//清空职工记录
voidStaffInsert(SList&slist);//插入职工记录
voidStaffDelete(SList&slist);//删除职工记录
voidStaffFind(SList&slist);//查找某编号的职工记录
voidStaffView(SList&slist);//显示所有职工的记录
voidStaffInit(SList&slist);//初始化职工数据
voidStaffXG(SList&slist);//修改职工数据
voidStaffSave(SList&slist);//将数据保存到文件
intSearch(SList&slist,intsno);//查找编号为sno的职工,返回记录元素的下标
voidExit(SList&slist);//退出程序
#endif//STAFF_H_INCLUDED
Menu.h
#ifndefMENU_H_INCLUDED
#defineMENU_H_INCLUDED
#include"staff.h"
voidShowMenu();
voidShowTip();
8
voidDoMenu(charn,SList&slist);
#endif//MENU_H_INCLUDED
Staff.cpp
#include
#include
#include
#include"staff.h"
voidStaffInit(SList&slist)//初始化职工数据
{
ifstreaminfile("data.txt");
slist.count=0;//职工改变标志置false
if(!
infile)
cerr<<"错误:
数据文件不能打开!
\n";
else
{
infile>>slist.count;//读入职工人数
for(inti=0;i infile>>slist.sm[i].sno>>slist.sm[i].name>>slist.sm[i].sex>>slist.sm[i].salary>>slist.sm[i].birthday>>slist.sm[i].Adate>>slist.sm[i].age; } infile.close();//关闭文件 } voidStaffClear(SList&slist)//清空职工记录 9 { slist.count=0;//职工人数清0 slist.flag=true;//数据已修改 } voidStaffInsert(SList&slist)//插入职工记录 { intsno=0,n=-1,birthday=0,Adate=0; doublesalary=0; stringname,sex; cin.sync();//清空输入缓冲区 cout<<"请输入编号: "; cin>>sno; cout<<"请输入姓名: "; cin>>name; cout<<"请输入性别: "; cin>>sex; cout<<"请输入职工工资: "; cin>>salary; cout<<"请输入出生年龄: "; cin>>birthday; cout<<"请输入参工时间: "; cin>>Adate; if(sno<0) { cout<<"输入的编号有误,插入记录失败! "< return;//结束函数 } else 10 { n=Search(slist,sno);//查找编号为sno的职工 if(n! =-1)//已有该编号 { cout<<"该编号已存在,插入记录失败! "< return; } else//该编号不存在,执行数据插入操作 { slist.sm[slist.count].sno=sno; slist.sm[slist.count].name=name; slist.sm[slist.count].sex=sex; slist.sm[slist.count].salary=salary; slist.sm[slist.count].birthday=birthday; slist.sm[slist.count].Adate=Adate; slist.sm[slist.count].age=Adate/10000-birthday/10000; slist.count++; slist.flag=true;//数据已修改 cout<<"成功插入一个职工信息! "< } } } intSearch(SList&slist,intsno)//查找编号为sno的职工,返回记录元素的下标 { for(inti=0;i if(slist.sm[i].sno==sno) returni; return-1; 11 } voidStaffDelete(SList&slist)//删除职工记录 { intsno=-1,n=-1; cout<<"请输入要删除的职工的编号: "; cin.sync();//清空输入缓冲区 cin>>sno; n=Search(slist,sno); if(n! =-1)//找到该编号的记录,执行删除操作 { for(inti=n;i slist.sm[i]=slist.sm[i+1]; slist.flag=true;//数据已修改 slist.count--;//职工人数减1 cout<<"已成功删除该职工信息! "< } else cout<<"没有找到该职工的编号! "< } voidStaffFind(SList&slist)//查找某编号的职工记录 { intsno=-1,n=-1; if(slist.count==0) cout<<"没有职工记录! "< else { 12 cout<<"请输入要查找的编号: "; cin.sync();//清空输入缓冲区 cin>>sno; n=Search(slist,sno);//找该编号的记录元素的下标 if(n! =-1)//找到,输出职工信息 { cout< cout< } else cout<<"没有找到编号为"< "< } } voidStaffView(SList&slist)//显示所有职工的记录 { Stafftemp; if(slist.count! =0)//职工数不为0则执行排序操作 for(inti=0;i for(intj=i;j { if(slist.sm[j].sno>slist.sm[j+1].sno) { 13 temp=slist.sm[j]; slist.sm[j]=slist.sm[j+1]; slist.sm[j+1]=temp; } } cout<<"共有职工"< cout< for(inti=0;i cout< } voidStaffSave(SList&slist)//将数据保存到文件 { ofstreamoutfile("data.txt");//创建文件输出流 if(! outfile) cerr<<"错误: 数据文件不能打开! \n"; else { outfile< for(inti=0;i outfile< 14 slist.flag=false;//数据修改标志置false cout<<"保存成功! "< } } voidStaffXG(SList&slist) { intsno=0,n=-1,birthday=0,Adate=0; doublesalary=0; stringname,sex; cin.sync();//清空输入缓冲区 cout<<"请输入你要修改的职工编号: "; cin.sync();//清空输入缓冲区 cin>>sno; if(sno<0) { cout<<"输入的编号有误,插入记录失败! "< return;//结束函数 } n=Search(slist,sno);//查找编号为sno的职工 if(n! =-1)//已有该编号 { cout<<"请输入姓名: "; cin>>name; cout<<"请输入性别: "; cin>>sex; cout<<"请输入职工工资: "; cin>>salary; cout<<"请输入出生年龄: "; cin>>birthday; 15 cout<<"请输入参工年龄: "; cin>>Adate; slist.sm[n].name=name; slist.sm[n].sex=sex; slist.sm[n].salary=salary; slist.sm[n].birthday=birthday; slist.sm[n].Adate=Adate; slist.sm[n].age=Adate/10000-birthday/10000; slist.flag=true;//数据已修改 cout<<"成功修改一个职工信息! "< } } voidExit(SList&slist)//退出程序 { charch='Y'; if(slist.flag)//判断数据是否修改 { cout<<"数据已经改变,是否保存? (y/n): "; cin.sync();//清空输入缓冲区 cin>>ch; if(ch=='y'||ch=='Y') StaffSave(slist); } cout<<"已安全退出,"; system("pause");//程序暂停,按任一键继续 16 exit(0);//退出程序 } Menu.cpp #include #include"menu.h" usingnamespacestd; voidShowMenu() { cout<<"|------------------------------------------------|"< cout<<"|职工信息管理系统|"< cout<<"|------------------------------------------------|"< cout<<"|1.数据录入|"< cout<<"|2.数据浏览|"< cout<<"|3.数据查询|"< cout<<"|4.数据修改|"< cout<<"|5.数据删除|"< cout<<"|6.数据保存|"< cout<<"|7.数据初始化|"< cout<<"|0.安全地退出本系统|"< cout<<"|------------------------------------------------|"< } voidShowTip() { cout< 17 cout<<"-------------------操作完成---------------------"< cout<<"-----------------选择0-7继续-------------------"< cout<<"请选择: "; } voidDoMenu(charn,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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 人事 信息管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)