C++课设教师工资管理系统.docx

上传人:b****8 文档编号:10896410 上传时间:2023-02-23 格式:DOCX 页数:26 大小:261.10KB
下载 相关 举报
C++课设教师工资管理系统.docx_第1页
第1页 / 共26页
C++课设教师工资管理系统.docx_第2页
第2页 / 共26页
C++课设教师工资管理系统.docx_第3页
第3页 / 共26页
C++课设教师工资管理系统.docx_第4页
第4页 / 共26页
C++课设教师工资管理系统.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C++课设教师工资管理系统.docx

《C++课设教师工资管理系统.docx》由会员分享,可在线阅读,更多相关《C++课设教师工资管理系统.docx(26页珍藏版)》请在冰豆网上搜索。

C++课设教师工资管理系统.docx

C++课设教师工资管理系统

 

C++课设教师工资管理系统

 

一、设计目的

本程序旨在训练基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。

本程序涉及结构体、数组、指针、文件等方面的知识。

通过本程序的训练,使读者能对C语言的文件操作有一个更深刻的了解,掌握利用数组存储结构实现教师工资管理系统,为进一步开发出高质量信息管理系统打下坚实的基础。

(1)巩固和加强《C++语言程序设计》课程的理论知识。

(2)掌握C++语言的基本概念、语法、语义和数据类型的使用特点。

(3)掌握C++语言程序设计的方法及编程技巧,能正确使用C++语言编写程序。

(4)进一步理解和运用结构化程设计的思想和方法;学会利用流程图表示算法。

(5)掌握调试程序的基本方法及上机操作方法。

(6)掌握书写程设计开发文档的能力,学会撰写课程设计总结报告。

课程设计的思想和方法还可以作为毕业论文时的参考资料。

(7)通过查阅手册和文献资料,培养自己独立分析问题和解决问题的能力。

为自己做毕业设计打好基础。

(8)初步掌握开发一个小型实用系统的基本方法:

结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。

通过激发学习兴趣,调动自己主动学习的积极性,并根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。

(9)培养自己的创新能力和创新思维。

可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。

(10)培养自己良好的程序设计风格。

在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。

自己在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。

 

二.设计内容

每个教师的信息为:

教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。

注:

应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资-合计扣款。

1、教师信息处理

(1)输入教师信息

(2)插入(修改)教师信息:

(3)删除教师信息:

(4)浏览教师信息:

  提示:

具体功能及操作参考题1。

2、教师数据处理

(1)按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。

(2)教师实发工资、应发工资、合计扣款计算。

  提示:

计算规则如题目。

(3)教师数据管理

  提示:

输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件

(4)教师数据查询:

  提示:

输入教师号或其他信息,即读出所有数据信息,并显示出来。

(5)教师综合信息输出

提示:

输出教师信息到屏幕。

 

三.概要设计

1.功能模块图

 

图1教师工资系统功能模块图

2.各个模块详细的功能描述。

(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。

 

具体流程图如图:

 

2、插入记录模块

插入记录模块具体流程图如下图所示:

f

3、删除记录模块(具体流程图如图所示)

 

4、函数功能描述

(1)保存数据函数save()

函数原型:

voidsave()

功能描述:

将链表teacher中的N个数据写入到磁盘文件teacher_list中,如果保存成功,则给出提示保存成功,否则返回“cannotofenfile”表示无法打开文件,返回“filewriteerror”表示文件输入错误。

(2)浏览教师信息函数query()

函数原型:

voidquery(structteacher*p)

功能描述:

将链表teacher中的head指向p,然后让用户输入教师号no,依次在链表中需找p,如果教师号不对,则指针往后面拨动一下,使p=p->next;知道找到相对应的正确的教师号。

然后打印出教师的基本信息。

函数流程图如图所示

p->num=nop->num!

=no

(3)修改教师信息函数edit()

函数原型:

voidedit(structteacher*p)

功能描述:

首先让用户输入希望修改的教师的教师号a,然后在链表中一条一条查找看p->num是否等于a,如果找到,则让用户再次输入教师的具体信息,输入完毕跳出,转向主菜单界面。

如果没有找到,则令p=p->next。

直到查询完所有的教师记录。

 

函数流程图如图所示

 

Yesno

 

5.测试数据及运行结果

1.系统主界面

用户刚进入系统时,如图1、2所示。

主菜单界面:

图1

图2

2.输入界面

用户在主菜单界面的时候输入1,显示如图

图2

依次给出需要输入的信息的,教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等。

当公积金输入完成,系统将给出提示是否想继续输入教师信息,显示如图

如果输入Y或者y,则继续输入教师信息;如果输入N或者n,则返回到主菜单界面。

显示如下图:

 

3.输出教师信息界面

如果已经输入教师信息,再在主菜单选择4——浏览教师信息,结果如图:

4.插入教师信息界面

在主菜单中进入2——插入教师信息,然后依次插入教师的所有信息,最后打印链表里的记录,如图:

六.调试情况,设计技巧及体会

持续一个学期的课程设计给了我太多的感触,开始从题目上看,感觉题目很大,设计量很大,也很复杂,感觉不是简单的就能解决的。

这样只用重新拾起书继续来看,获得新的知识和巩固以前的C方面的知识。

提升自己的能力。

整个程序的设计是分模块实现具体的功能,每个模块分别由不同的函数构成。

链表的建立实现输入信息的功能,相比较于数组更加方便,更能够节省内存空间等。

通过使用文件fread和fwrite函数方便的将数据信息写入文件以及将文件中的信息载入显示段。

通过这个学期的课程设计的练习与设计我学会了很多,也更加熟悉C语言程序设计,从中得到了很多乐趣,很快乐,感觉C语言的世界里面奇妙无比。

虽然在途中也遇到很多的苦难,但是还是通过问同学和学长解决了。

最后看到自己设计的程序能够运行起来特别的开心。

这次的程序设计很有意义,也很锻炼人的能力,特别是C语言方面的能力,为自己在C++语言方面打下基础。

附录源代码

#include

#include

#include<>

#include

#include

usingnamespacestd;

inti;

classPerson{

public:

voiddisplay()

{

cout<<"姓名:

";

cin>>name;

cout<<"工号:

";

cin>>num;

while(num<=0)

{

cout<<"请重新输入工号大于0的数:

"<

cin>>num;

}

}

stringname;xt",ios:

:

app);

if(!

outfile){

cerr<<"openerror!

"<

exit(0);

}

intb;

cout<<"请选择你要录入教师的个数:

";

cin>>b;

for(i=0;i

t[i].display1();

cout<<"是否保存信息(y(Y)/n(N))"<

charc;

cin>>c;

if(c=='Y'||c=='y')

{

outfile<

<<""<

}

}

();

}

voidwenjianluru()xt",ios:

:

in);

intm;

for(i=0;i<100;i++)

{t[i].num=0;

infile>>t[i].num>>t[i].name>>t[i].wage>>t[i].time;

if(t[i].num==0)

break;

intjintie1;

jintie1=t[i].time*30;

m=t[i].wage+jintie1;

cout<<"\t教师:

"<

<

}

();

}

voidleadershuchu()xt",ios:

:

in);

intm;

for(i=0;i<100;i++)

{x[i].num=0;

infile>>x[i].num>>x[i].name>>x[i].wage>>x[i].butie;

if(x[i].num==0)

break;

m=x[i].wage+x[i].butie;

cout<<"\t领导:

"<

<

}

();

}

voidshuchu()xt",ios:

:

in);

stringnam;

intnum;

intm,n,x;

cout<<"\t\t1.按教师的姓名查找\n\t\t2.按教师的工号查找";

cout<<"\n\t\t请选择";

cin>>x;

switch(x)

{

case1:

{cout<<"\t\t请输入要查找的教师的姓名:

";

cin>>nam;

for(i=0,n=0;i<100;i++){

infile>>t[i].num>>t[i].name>>t[i].wage>>t[i].time;

if(t[i].num==0)

break;

if(t[i].name==nam){

n++;

m=t[i].wage+(t[i].time-24)*30;

cout<<"\t\t工号姓名工资"<

cout<<"\t教师:

"<<""<

<

}

}

if(n==0)

cout<<"没有你要查询的教师。

"<

();

}break;

case2:

{

cout<<"\t\t请输入要查找的教师的工号:

";

cin>>num;

for(i=0,n=0;i<100;i++){

infile>>t[i].num>>t[i].name>>t[i].wage>>t[i].time;

if(t[i].num==0)

break;

if(t[i].num==num){

n++;

m=t[i].wage+(t[i].time-24)*30;

cout<<"\t\t工号姓名工资"<

cout<<"\t教师:

"<<""<

<

}

}

if(n==0)

cout<<"没有你要查询的教师。

"<

();

}break;

default:

{cout<<"操作选择错误!

"<

}

}

voidwenjianchaxun()xt",ios:

:

in);

stringnam;

intn,n1,m1=0;

cout<<"请输入你要修改教师的名字:

";

cin>>nam;

cout<<"请输入你要修改的课时:

";

cin>>n;

for(i=0;i<100;i++){

infile>>t[i].num>>t[i].name>>t[i].wage>>t[i].time;

if(t[i].num==0)

break;

m1++;

if(t[i].name==nam){

n1=t[i].time;

t[i].time=n;

n=n1;

}

}

();

ofstreamoutfile("教师.txt",ios:

:

out);

for(i=0;i

outfile<

<<""<

}

();

}

voidxiugai()xt",ios:

:

in);

stringnam;

intnum;

intn,x;

cout<<"\t\t1.按教师的姓名删除\n\t\t2.按教师的工号删除";

cout<<"\n\t\t请选择";

cin>>x;

switch(x)

{

case1:

{cout<<"\t\t请输入要删除的教师的姓名:

";

cin>>nam;

for(i=0,n=0;i<100;i++){

infile>>t[i].num>>t[i].name>>t[i].wage>>t[i].time;

if(t[i].num==0)

break;

if(t[i].name==nam){

n++;

t[i].num=0;break;

}}

if(n==0)

cout<<"没有你要删除的教师。

"<

else

cout<<"删除成功!

"<

();

}break;

case2:

{

cout<<"\t\t请输入要删除的教师的工号:

";

cin>>num;

for(i=0,n=0;i<100;i++){

infile>>t[i].num>>t[i].name>>t[i].wage>>t[i].time;

if(t[i].num==0)

break;

if(t[i].num==num){

n++;

t[i].num=0;break;

}

}

if(n==0)

cout<<"没有你要删除的教师。

"<

else

cout<<"删除成功"<

();

}break;

default:

{cout<<"操作选择错误!

"<

}

();

ofstreamoutfile("教师.txt",ios:

:

out);

for(i=0;i<100;i++){

if(t[i].num!

=0)

outfile<

<<""<

}

();

}

 

voidshow_sort()

{

cout<<"请选择如下操作:

"<

cout<<"\t\t1:

教师排序"<

cout<<"\t\t2:

教师兼职领导排序"<

cout<<"\t\t3:

退出排序"<

cout<<"请选择你的一个操作:

";

}

voidjiaoshi_sort()xt",ios:

:

in);

intm[100];

for(i=0;i<100;i++){

infile>>t[i].num>>t[i].name>>t[i].wage>>t[i].time;

if(t[i].num==0)

break;

m[i]=t[i].wage+t[i].time*30;

}

();

intcount=i;

Teacherteacher;

inttmp;

for(intx=0;x

for(inty=x+1;y

if(m[x]

teacher=t[x];

t[x]=t[y];

t[y]=teacher;

tmp=m[x];

m[x]=m[y];

m[y]=tmp;

}

}

cout<<"\t\t工号名字总工资"<

for(i=0;i

cout<<"\t教师:

"<

voidsort()

{

intc;

for(i=0;;i++){

show_sort();

cin>>c;

if(c==3){

cout<<"退出排序成功。

"<

system("cls");

break;

}else

switch(c){

case1:

jiaoshi_sort();

break;

case2:

jianzhi_sort();

break;

default:

{

cout<<"上一次输入错误。

"<

}

Break}}}

voidshow7()

{

cout<<"\t\t\t\t高校工资管理系统"<

cout<<"\t\t\t\t1:

职工信息添加"<

cout<<"\t\t\t\t2:

职工信息输出显示"<

cout<<"\t\t\t\t3:

职工信息修改"<

cout<<"\t\t\t\t4:

职工信息删除"<

cout<<"\t\t\t\t5:

职工信息查询"<

cout<<"\t\t\t\t6:

职工工资由高到低排序"<

cout<<"\t\t\t\t7:

退出"<

cout<<"请选择你的一个操作:

";

}

intmain()

{

intc;

for(i=0;;i++){

show7();

cin>>c;

if(c==7){

cout<<"退出成功。

"<

break;

}else

switch(c){

case1:

wenjianluru();

break;

case2:

shuchu();

break;

case3:

xiugai();break;

case4:

del();break;

case5:

wenjianchaxun()break;

case6:

sort();break;

default:

{

cout<<"上一次输入错误。

"<

}

break;

}

}

return0;

}

 

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1