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