高校工资管理系统.docx
《高校工资管理系统.docx》由会员分享,可在线阅读,更多相关《高校工资管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
高校工资管理系统
高校工资管理系统
1.系统化需求分析
学校有对职工具体信息操作,对职工信息的查询,修改,增加和删除,工资的计算和发放需求
这个系统可以保存员工信息,根据输入的数据自动实现工资发放功能,也可以查询该职工所有信息,也可以按职工在编号或姓名来实现职工在修改,增加和删除功能,实现了任意职工的工资查询。
职工信息保存在文件里,实现文件保存功能
2.总体设计
3.详细设计
GUANLI
-name:
string
-sex:
string
-address:
string
-id:
string
-job:
string
-number:
int
-classhour:
int
-newclsshour:
int
-pay:
int
-year:
int
-month:
int
-day:
int
<>-laoshiji:
int
<>-shiyanji:
int
<>-xingzhengji:
int
<>-shiyanbu:
int
<>-xingzhengbu:
int
<>-classpay:
int
+GUANLI()
+outname():
string
+outsex():
string
+outaddress():
string
+outid():
string
+outjob():
string
+outnumber():
int
+outclasshour():
int
+outnewclasshour():
int
+outpay():
int
+outyear():
int
+outmonth():
int
+outday():
int
+changejob():
void
+pay():
void
+display():
void
+newpay():
void
+shanpay():
void
4.系统调试
1.图1.1:
进入主菜单:
2.图1.2:
选1,输入职工信息:
3.图1.3:
输入”y”,继续输入
4.图1.4:
输入”n”,结束职工信息输入,图1.5:
再输入”y”,返回主菜单
5..图1.6:
选项2,
(1)新学期工资计算
(2)职工工资发放,选个别发放
图1.8:
选择1,按编号发放,输入1号
选择”n”,不继续发放,再输入“y“返回主菜单进行查询
6.图1.9:
键入3选项,输入相应的数字选项进行工资查询
7.图2.0:
返回主菜单,键入4选项,执行职工信息查询,查询方法为按编号查询
图2.1:
4选项的分功能,修改功能,键入1号,图2.2:
进行资料修改输入
8.图2.3:
职工信息已经修改,查询确认:
9.图2.4:
返回主菜单后,键入5选项,增加和删除职工
选增加职工:
图2.5:
选删除职工:
10.返回主菜单,退出程序
5.结果分析
这个设计的独到指出就是,操作简单,实现方便,基本实现了员工基本资料的查询和修改,对工资的操作也很简洁方便。
不足之处是挺多的功能都未实现,比如整个系统,职工资料对外都是全部开放的,任何人都可对系统进行操作,员工的资料还没进行保密和封锁工作,系统还有很多需要完善的地方,系统的实用性和灵活性都还很缺乏,不完善之处还需继续努力的修改……
6.总结
这次的课程设计总体感觉就是比去年的困难了好多,也终于了解到当初老师讲的c++比上学期学的c要难要深奥很多,的确,因为c++的知识面和深度都比c大很多,学起来相对也比较吃力。
而这次的课设,把我在学这门课程存在的弊端全部暴露出来了,原来对于这门课,我学到的仅仅是一些皮毛而已,在做程序的过程中,发现好多功能我都无法用我脑中的知识去实现它,必须翻开课本依葫芦画瓢才能把程序写出来,还有遇到的一些要求根本没遇到过,比如用文件保存的方式保存,这就得用到c++里的文件流来输入输出,并保存到指定的文件里,这些知识点老实虽然没讲,但是作为一个大学生,并不是老师不讲就不看的,应该自己去看,因为后边的只是点反而是最重要的,在我们班,有了好几个同学都已经把后边的知识看了几遍了,所以他们用起来就得心应手了,而我,也来不及去好好看书了,只能厚着脸皮去问他们,让他们列个模版给我,然后再由自己去想程序的具体实行部分,这直接导致的结果就是浪费了好多时间,要是自己早把那知识学了,还会那么被动么?
就是呢,这学期太懒了,上学期还时不时的编下程序,而这学期,都是偶尔才来一次的。
下学期就要学数据结构了,如果还是这样子的话,肯定不行,所以我必须改变,改变自己的惰性……
7.源程序
//Means.h
#ifndefMEANS_H
#defineMEANS_H
#include"iostream"
#include"string"
usingnamespacestd;
classPay;
classGUANLI
{
private:
intnumber;
intclasshour;//课时//
intnewclasshour;//新课时//
intpay;
stringname;
stringsex;
stringaddress;
stringid;
stringjob;
intyear;
intmonth;
intday;
staticintlaoshiji;
staticintshiyanji;
staticintxingzhengji;//基本工资//
staticintshiyanbu;//实验补助//
staticintxingzhengbu;//行政补助//
staticintclasspay;//课时费//
public:
GUANLI();
stringoutname(){returnname;}
stringoutjob(){returnjob;}
stringoutsex(){returnsex;}
stringoutaddress(){returnaddress;}
stringoutid(){returnid;}
intoutnumber(){returnnumber;}
intoutclasshour(){returnclasshour;}
intoutnewclasshour(){returnnewclasshour;}
intoutpay(){returnpay;}
intoutyear(){returnyear;}
intoutmonth(){returnmonth;}
intoutday(){returnday;}
voidchangejob();//工作改变//
voidPay();
voiddisplay();
voidshanpay();
voidnewpay();
};
#endif
//Means.cpp
#include"Means.h"
#include"iostream"
#include"fstream"
#include"string"
usingnamespacestd;
stringa="teacher";
stringb="laboratory";
stringc="adminofficer";
stringL="teacherandlaboratory";
stringe="adminofficerandlaboratory";
GUANLI:
:
GUANLI()
{
intkl;
cout<<"编号:
";cin>>number;
cout<<"姓名:
";cin>>name;
cout<<"性别:
";cin>>sex;
cout<<"出生日期:
";
cout<<"年:
";cin>>year;
cout<<"月:
";cin>>month;
cout<<"日:
";cin>>day;
cout<<"地址:
";cin>>address;
cout<<"身份证号:
";cin>>id;
do
{
cout<<"职称:
(职称:
teacher/laboratory/adminofficer/teacherandlaboratory/adminofficerandlaboratory)";cin>>job;
if(job!
=a&&job!
=b&&job!
=c&&job!
=L&&job!
=e)
{
kl=0;
cout<<"输入错误,请重新输入:
"<kl=1;
}
else
kl=0;
}while(kl==1);
cout<<"上学期课时:
";cin>>classhour;
cout<<"本学期课时:
";cin>>newclasshour;
}
voidGUANLI:
:
shanpay()
{
pay=0;newclasshour=0;classhour=newclasshour;
}
voidGUANLI:
:
display()
{
cout<<"\n"<<"号码:
"<"<cout<<"性别:
"<"<cout<<"地址:
"<
"<"<cout<<"上学期课时:
"<"<"<}
voidGUANLI:
:
changejob()
{
intz,x,v,d,f,y;
stringg;
stringh;
stringk;
stringn;
stringE;
intkv;
cout<<"该职工信息为:
";
display();
cout<<"请输入职工的新资料:
"<cout<<"新编号:
";cin>>z;number=z;
cout<<"新姓名:
";cin>>g;name=g;
cout<<"新性别:
";cin>>h;sex=h;
cout<<"新出生日期:
";
cout<<"年:
";cin>>x;year=x;
cout<<"月:
";cin>>v;month=v;
cout<<"日:
";cin>>d;day=d;
cout<<"新地址:
";cin>>k;address=k;
cout<<"新身份证号:
";cin>>E;id=E;
do
{
cout<<"新职称:
(职称:
teacher/laboratory/adminofficer/teacherandlaboratory/adminofficerandlaboratory)"<cin>>n;
if(n!
=a&&n!
=b&&n!
=c&&n!
=L&&n!
=e)
{
kv=0;
cout<<"输入错误,请重新输入:
"<kv=1;
}
else
kv=0;
}while(kv==1);
job=n;
cout<<"上学期课时:
";cin>>f;classhour=f;
cout<<"本学期课时:
";cin>>y;newclasshour=y;
cout<<"\n"<<"该职工新信息为";
display();
}
intGUANLI:
:
laoshiji=800;
intGUANLI:
:
shiyanji=650;
intGUANLI:
:
xingzhengji=750;
intGUANLI:
:
shiyanbu=150;
intGUANLI:
:
xingzhengbu=250;
intGUANLI:
:
classpay=20;
voidGUANLI:
:
Pay()
{
if(newclasshour==0)
pay=0;
else
{
if(job==a)
pay=laoshiji+classpay*(newclasshour-classhour);
elseif(job==b)
pay=shiyanji+shiyanbu+(newclasshour-classhour)*classpay;
elseif(job==c)
pay=xingzhengji+xingzhengbu;
elseif(job==L)
pay=laoshiji+classpay*(newclasshour-classhour)+shiyanji+shiyanbu+(newclasshour-classhour)*classpay;
elseif(job==e)
pay=xingzhengji+xingzhengbu+shiyanji+shiyanbu+(newclasshour-classhour)*classpay;
}
}
voidGUANLI:
:
newpay()
{
inthb;
classhour=newclasshour;
cout<<"编号:
"<"<"<cin>>hb;
newclasshour=hb;
}
//main.cpp
#include"string"
#include"iostream"
#include"Means.h"
#include"fstream"
#include"windows.h"
#include"vector"
usingnamespacestd;
vectorarr;
voidsave(GUANLI*p)//保存到文件
{
fstreamfs;
fs.open("资料.txt",ios:
:
out|ios:
:
app);
fs<<"\n"<<"编号:
"<outnumber()<<"\n"<<"姓名:
"<outname()<<"\n"<<"性别:
"<outsex()<<"\n";
fs<<"出生日期"<<"年:
"<outyear()<<""<<"月:
"<outmonth()<<""<<"日:
"<outday()<<""<<"\n"<<"地址:
"<outaddress()<<"\n";
fs<<"身份证号:
"<outid()<<"\n"<<"职称:
"<outjob()<<"\n"<<"上学期课时:
"<outclasshour()<<"\n"<<"本学期课时:
"<outnewclasshour()<<"\n";
fs<<"工资:
"<outpay()<fs.close();
}
voidqingchu()//原数据清除
{
ofstreamfout;
stringstr="";
fout.open("资料.txt");
fout<fout.close();
}
voidread(GUANLI*P)//文件读取
{
fstreamfc;
fc.open("资料.txt",ios:
:
in);
P->display();
fc.close();
}
intmain()
{
inti,n,c,g,a,e,j;
charcmd,cm,cn,cnd,ch,ck,hn;
do
{//菜单
system("cls");
cout<<"-----------欢迎进入本校工资管理系统----------"<<"\n"<cout<<"-----------1.职工信息录入----------"<cout<<"-----------2.职工工资统计和发放----------"<cout<<"-----------3.职工工资查询----------"<cout<<"-----------4.职工信息查询和修改----------"<cout<<"-----------5.增加/删除职工信息----------"<cout<<"-----------6.退出----------"<cout<<"请输入对应的数字"<cin>>n;
switch(n)
{
case1:
do//信息录入
{system("cls");//刷屏
GUANLI*p;
p=newGUANLI();
arr.push_back(p);
cout<<"是否继续输入?
(y/n)"<cin>>cm;
}while(cm=='y');
for(i=0;i{
arr[i]->Pay();//工资计算
save(arr[i]);//文件保存
}
system("cls");
cout<<"职工资料如下:
"<for(i=0;iread(arr[i]);//资料读取
break;
case2:
system("cls");
inthg;
cout<<"1.新学期工资计算(工资统计)2.工资发放"<cin>>hg;
if(hg==1)//新学期工资计算
for(i=0;i{
arr[i]->newpay();
arr[i]->Pay();
}
else
{
charok;//工资发放
cout<<"全部发放?
(y/n)"<cin>>ok;
if(ok=='y')
for(i=0;iarr[i]->shanpay();//工资清零
else
{
stringju;
intd,v;
cout<<"\n"<<"1.按编号个别发放2.按姓名个别发放"<cin>>d;
if(d==1)
{
chart;
do
{system("cls");
cout<<"请输入职工编号:
"<cin>>v;
for(i=0;iif(arr[i]->outnumber()==v)
arr[i]->shanpay();//工资清零
cout<<"工资已发放"<cout<<"是否继续发放?
(y/n)"<cin>>t;
}while(t=='y');
}
else
{
chart;
do
{system("cls");
cout<<"请输入职工名字:
"<cin>>ju;
for(i=0;iif(arr[i]->outname()==ju)
arr[i]->shanpay();
cout<<"工资已发放"<cout<<"是否继续发放?
(y/n)"<cin>>t;
}while(t=='y');
}
}
}
qingchu();//清除文件中之前的数据
for(i=0;i{
arr[i]->Pay();
save(arr[i]);//文件保存
}
break;
case3:
//工资查询
do
{system("cls");
cout<<"\n"<<"1.按编号查询2.按姓名查询"<cin>>a;
if(a==1)
{
cout<<"请输入职工的编号"<cin>>j;
for(i=0;iif(arr[i]->outnumber()==j)
read(arr[i]);
}
else
{
stringk;
cout<<"请输入职工的姓名:
"<cin>>k;
for(i=0;iif(arr[i]->outname()==k)
read(arr[i]);
}
cout<<"是否继续查询?
(y/n)"<cin>>cn;
}while(cn=='y');
break;
case4:
//职工信息查询和修改
into;
cout<<"1.查询2.修改"<cin>>o;
if(o==1)
do
{system("cls");
intR;
cout<<"1.全部查询2.按编号查询3.按姓名查询"<cin>>R;
if(R==1)
for(i=0;iread(arr[i]);
elseif(R==2)
{
intV;
cout<<"请输入该职工的编号:
"<