C++课设教师工资管理系统Word格式.doc
- 文档编号:255391
- 上传时间:2023-04-28
- 格式:DOC
- 页数:26
- 大小:156KB
C++课设教师工资管理系统Word格式.doc
《C++课设教师工资管理系统Word格式.doc》由会员分享,可在线阅读,更多相关《C++课设教师工资管理系统Word格式.doc(26页珍藏版)》请在冰点文库上搜索。
每个教师的信息为:
教师号、XX、性别、单位名称、家庭住址、联系、根本工资、津贴、生活补贴、应发工资、费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。
注:
应发工资=根本工资+津贴+生活补贴;
合计扣款=费+水电费+房租+所得税+卫生费+公积金;
实发工资=应发工资-合计扣款。
1、教师信息处理
(1)输入教师信息
(2)插入〔修改〕教师信息:
(3)删除教师信息:
(4)浏览教师信息:
提示:
具体功能及操作参考题1。
2、教师数据处理
(1)按教师号录入教师根本工资、津贴、生活补贴、费、水电费、房租、所得税、卫生费、公积金等根本数据。
(2)教师实发工资、应发工资、合计扣款计算。
计算规那么如题目。
(3)教师数据管理
输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件
(4)教师数据查询:
输入教师号或其他信息,即读出所有数据信息,并显示出来。
(5)教师综合信息输出
提示:
输出教师信息到屏幕。
三.概要设计
1.功能模块图
主界面
选择操作
1——输入教师信息
2——插入教师信息
3——修改教师信息
教师工资管理系统
4——删除教师信息
5——浏览教师信息
6——系统信息
结束
7——退出系统
图1教师工资系统功能模块图
(1)输入教师信息模块
在主菜单中运用构造体teacher,输入教师信息,首先建立链表,将用户输入的学生信息存储到链表中,输入完成后提示用户时候继续输入,如果用户输入“Y〞或“y〞,那么再次调用,实现继续输入学生信息的操作。
如果用户输入“N〞或“n〞,那么返回主菜单界面。
(2)插入教师信息模块
在主菜单中调用teacher*insert(),然后按照提示依次输入教师信息,然后再调用voidprint〔〕函数讲所有的教师信息记录打印出来。
然后再返回主菜单界面。
(3)修改教师信息模块
在主菜单中调用voidedit()函数。
按教师号查找教师信息,如果找到教师信息,调用voidedit()函数提示用户输入新的教师信息,完成修改的操作。
操作完毕后提示用户修改成功。
然后返回主菜单界面。
(4)删除教师信息模块
在主菜单中调用del()函数,以删除教师信息,首先按学号查询教师信息,如果没有找到教师信息,给出提示信息。
如果查找到该教师信息,给出改教师的全部信息,如果查找到,那么删除该教师信息,给出删除成功的提示信息。
(5)浏览教师信息模块
在主菜单中调用voidprint()函数来显示教师信息,先判断链表是否为空。
如果链表不为空时,逐条显示链表中教师的信息,显示调用teacher*next()函数按照教师号的大小来显示教师的信息。
(6)系统信息模块
在主菜单中输入6,可知系统信息、版本。
(7)退出系统模块
将链表中的数据全部释放掉,防止存泄露。
退出系统。
四.详细设计
1、输入记录模块
输入教师信息的流程图如以下图。
首先要开辟一个新节点,并使p1,p2指向它。
读入一个教师数据给p1所指的节点。
此时要使head=NULL,n=0,并且p1->
num!
=0。
开辟一个新节点,并使P1,p2指向它
读入一个教师数据给P1所指的结点
Head=NULL&
&
n=0
<
当读入的p1->
=o>
N=n+1
N=1
真假
Head=p1p2->
next=p1
把p1所指的结点把p1所指的结点
作为第一结点连接到表尾
P2=p1
再开辟一个新结点,使p1指向它
读入一个教师数据给p1所指结点
具体流程图如图:
2、插入记录模块
插入记录模块具体流程图如以下图所示:
P1=head,p0=teacher
原来的链表是空表
是否
当p0->
num>
p1->
num以及p1所指的不是表尾结点
P2指向p1位置
P1向后移一个结点
P0->
num<
=p1->
num
将p0所真假
指的结p1指向头结点
点作为是否p1->
next=p0
唯一的head=p0p2->
结点p0->
next=p1p0->
next=p1p0->
next=NULL
f
链表是一个空链表
真假
P1=head
输当num!
num以及p1所指的结点不是表尾结点
P2=p1
出P1=p1->
next
P1是要删除的结点
是否
空p1所指的头结点
是否输出找不到
表head=p2->
next=教师信息
P1->
nextp1->
3、删除记录模块〔具体流程图如以下图〕
4、函数功能描述
〔1〕保存数据函数save()
函数原型:
voidsave()
功能描述:
将链表teacher中的N个数据写入到磁盘文件teacher_list中,如果保存成功,那么给出提示保存成功,否那么返回“cannotofenfile〞表示无法翻开文件,返回“filewriteerror〞表示文件输入错误。
〔2〕浏览教师信息函数query()
voidquery(structteacher*p)
将链表teacher中的head指向p,然后让用户输入教师号no,依次在链表中需找p,如果教师号不对,那么指针往后面拨动一下,使p=p->
next;
知道找到相对应的正确的教师号。
然后打印出教师的根本信息。
函数流程图如图5.2所示
p=head
p->
num=nop->
=no
p=p->
打印教师信息
图5.2
〔3〕修改教师信息函数edit()
voidedit(structteacher*p)
首先让用户输入希望修改的教师的教师号a,然后在链表中一条一条查找看p->
num是否等于a,如果找到,那么让用户再次输入教师的具体信息,输入完毕跳出,转向主菜单界面。
如果没有找到,那么令p=p->
next。
直到查询完所有的教师记录。
函数流程图如图5.3所示
输入想修改教师信息的教师号a
num==a
Yesno
再次输入教师信息
五.测试数据及运行结果
1.系统主界面
用户刚进入系统时,如图1、2所示。
主菜单界面:
图1
图2
2.输入界面
用户在主菜单界面的时候输入1,显示如图
图2
依次给出需要输入的信息的,教师号、XX、性别、单位名称、家庭住址、联系、根本工资、津贴、生活补贴、费、水电费、房租、所得税、卫生费、公积金等。
当公积金输入完成,系统将给出提示是否想继续输入教师信息,显示如图
如果输入Y或者y,那么继续输入教师信息;
如果输入N或者n,那么返回到主菜单界面。
显示如以下图:
3.输出教师信息界面
如果已经输入教师信息,再在主菜单项选择择4——浏览教师信息,结果如图:
4.插入教师信息界面
在主菜单中进入2——插入教师信息,然后依次插入教师的所有信息,最后打印链表里的记录,如图:
六.调试情况,设计技巧及体会
持续一个学期的课程设计给了我太多的感触,开场从题目上看,感觉题目很大,设计量很大,也很复杂,感觉不是简单的就能解决的。
这样只用重新拾起书继续来看,获得新的知识和稳固以前的C方面的知识。
提升自己的能力。
整个程序的设计是分模块实现具体的功能,每个模块分别由不同的函数构成。
链表的建立实现输入信息的功能,相比较于数组更加方便,更能够节省存空间等。
通过使用文件fread和fwrite函数方便的将数据信息写入文件以及将文件中的信息载入显示段。
通过这个学期的课程设计的练习与设计我学会了很多,也更加熟悉C语言程序设计,从中得到了很多乐趣,很快乐,感觉C语言的世界里面奇妙无比。
虽然在途中也遇到很多的苦难,但是还是通过问同学和学长解决了。
最后看到自己设计的程序能够运行起来特别的开心。
这次的程序设计很有意义,也很锻炼人的能力,特别是C语言方面的能力,为自己在C++语言方面打下根底。
附录源代码
#include<
iostream>
fstream>
stdlib.h>
string>
iomanip>
usingnamespacestd;
inti;
classPerson{
public:
voiddisplay()
{
cout<
<
"
XX:
"
;
cin>
>
name;
工号:
num;
while(num<
=0)
{
cout<
请重新输入工号大于0的数:
endl;
cin>
num;
}
}
stringname;
//名字
intnum;
};
//工号
classTeacher:
publicPerson//教师
{
Teacher()
{ints=1000;
wage=s;
butie1=0;
voiddisplay1();
intwage;
//根本工资
inttime;
intbutie1;
intjintie1;
//课时
voidTeacher:
:
display1()
cout<
请输入"
Person:
display();
请输入教师的课时〔小时〕:
"
cin>
time;
while(time<
请重新输入课时大于0的数:
time;
}
//补贴
Teachert[100];
Leaderx[100];
Jianzhij[100];
voidshow()
\t请输入你要录入的对象:
<
endl;
\t\t1:
教师"
\t\t2:
领导"
\t\t3:
教师兼职领导"
\t\t4:
退出录入"
请选择:
"
voidjiaoshiluru()//教师录入
ofstreamoutfile("
教师.txt"
ios:
app);
if(!
outfile){
cerr<
openerror!
exit(0);
intb;
请选择你要录入教师的个数:
b;
for(i=0;
i<
i++){
t[i].display1();
是否保存信息(y(Y)/n(N))"
charc;
c;
if(c=='
Y'
||c=='
y'
)
outfile<
t[i].num<
"
t[i].name<
t[i].wage
<
t[i].time<
outfile.close();
voidwenjianluru()//文件录入
intc;
i++)
{
show();
c;
if(c==4)
cout<
退出录入成功。
system("
cls"
);
break;
}else
switch(c)
case1:
jiaoshiluru();
break;
case2:
Leaderluru();
case3:
jianzhiluru();
default:
{
cout<
上一次输入错误。
}
voidjiaoshishuchu()//教师输出显示
ifstreaminfile("
in);
intm;
100;
{ t[i].num=0;
infile>
t[i].num>
t[i].name>
t[i].wage>
t[i].time;
if(t[i].num==0)
intjintie1;
jintie1=t[i].time*30;
m=t[i].wage+jintie1;
cout<
\t教师:
setw(8)<
setfill('
'
)<
setw(10)<
t[i].wage
<
setw(14)<
jintie1<
setw(12)<
t[i].butie1<
m<
}
infile.close();
voidleadershuchu()//领导输出
领导.txt"
{x[i].num=0;
x[i].num>
x[i].name>
x[i].wage>
x[i].butie;
if(x[i].num==0)
m=x[i].wage+x[i].butie;
\t领导:
x[i].num<
x[i].name<
x[i].wage<
x[i].jintie<
x[i].butie<
voidshuchu()//输出显示
\t\t工号名字根本工资课时津贴补贴总工资"
jiaoshishuchu();
leadershuchu();
jianzhishuchu();
voidshow3()
\t请输入你要查询的对象:
教师查询"
退出查询"
请选择一个操作:
voidjiaoshichaxun()
stringnam;
intm,n,x;
cout<
\t\t1.按教师的XX查找\n\t\t2.按教师的工号查找"
\n\t\t请选择"
cin>
x;
switch(x)
{
case1:
{cout<
\t\t请输入要查找的教师的XX:
cin>
nam;
for(i=0,n=0;
if(t[i].num==0)
if(t[i].name==nam){
n++;
m=t[i].wage+(t[i].time-24)*30;
cout<
\t\t工号XX工资"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 教师工资 管理 系统