《C++课设教师工资管理系统.docx》由会员分享,可在线阅读,更多相关《C++课设教师工资管理系统.docx(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、设计目的2二 .设计内容3三 .概要设计41 .功能模块图42 .各个模块详细的功能描述。43 .详细设计51、输入记录模块52、插入记录模块63、删除记录模块(具体流程图如图所示)74、函数功能描述74 .测试数据及运行结果91 .系统主界面92 .输入界面103 .输出教师信息界面1112134 .插入教师信息界面12六.调试情况,设计技巧及体会 附录源代码2 .输入界面用户在主菜单界面的时候输入1,显示如图c、*F:jiaoshi03Debugjiaoshi03. exe欢迎使用教师工资管理系统Beta1.2浏览教师信息3 .返回上缓菜单MMXMMXMMXXMMXMMMMMMMMMM
2、MMMMXMMMMMXXMXXMMXMMMMXMMMMMMXMM教工号1 刘1 liu电话费200.0300.0基本工资2000.02000.0请输入你想要的操西1-前有保存的信息如下:单位名祢河南城灌学院姓名nan水电费300.0200.0津贴1000.01000.0hnc j房租 个人所得税1500.0600.01000.0200.0生活补贴200.0500.0塞庭住址 率顶山期城区 pingdingshan卫生费 200.0 300.0 应发工资 3200.0 3500.0公积金300.0222.0实发工资100.01278.0联系电话666666666666合计扣款3100.02222
3、.0按下任意键返回主菜单.4 .插入教师信息界面.在主菜单中进入2插入教师信息,然后依次插入教师的所有信息,最后打印 链表里的记录,如图:息自心自心信信信W师心统 教教裁信系 退2自心 .信 作师 的的 要入 想插 你要 I1AI1A 请请02j C n honan薨话资00贴:1:100号=g:n名住电工费:1所费金毕 工名别位庭奥贴簿电租人生松兀 饕性盘电壹个卫公入 1 AJAJAlAJAJAJAJAlAJAJAlAJAJAlA 请请请清请莆请请请莆请1请请1数六.调试情况,设计技巧及体会持续一个学期的课程设计给了我太多的感触,开始从题目上看,感觉题目很 大,设计量很大,也很复杂,感觉不是
4、简单的就能解决的。这样只用重新拾起书 继续来看,获得新的知识和巩固以前的C方面的知识。提升自己的能力。整个程序的设计是分模块实现具体的功能,每个模块分别由不同的函数构 成。链表的建立实现输入信息的功能,相比较于数组更加方便,更能够节省内存 空间等。通过使用文件fread和fwrite函数方便的将数据信息写入文件以及将文 件中的信息载入显示段。通过这个学期的课程设计的练习与设计我学会了很多,也更加熟悉C语言程 序设计,从中得到了很多乐趣,很快乐,感觉C语言的世界里面奇妙无比。虽然 在途中也遇到很多的苦难,但是还是通过问同学和学位解决了。最后看到自己设 计的程序能够运行起来特别的开心。这次的程序设
5、计很有意义,也很锻炼人的能力,特别是C语言方面的能力, 为自己在C+语言方面打下基础。附录源代码#include#include#include#include#includeusing namespace std;int i;class Person public:void display ()(cout name;cout num;while(numnum;)string name;名字int num;; 工号class Teacher: public Person教师(public:Teacher () int s=1000;wage = s;butiel=0;void displayl
6、();int wage;基本工资int time;int butiel;int jinticl;; 课时void Teacher:displayl()cout time;while(timetime;); 补贴Teacher t 100;Leader x100;Jianzhi j100;void show()(cout t请输入你要录入的对象:* endl;cout tt 1:教师 endl;cout z,tt 2:领导* endl;cout z/tt 3:教师兼职领导 endl;cout tt 4:退出录入 endl;cout (请选择:;)void jiaoshiluru()教师录入(of
7、 stream outf ile (教师. txt, ios: :app);if (!outfile) cerr open error!z, b;for (i = 0; i c;if (c=,Y | |c二二y )(outfile ti. num ti, name ti. wage ti,time c;if (c = 4)(cout 退出录入成功。 endl;system (cls);break; elseswitch (c)(jiaoshiluruO ;break;Leaderluru ();break;jianzhiluru();break;default:(cout 上一次输入错误。en
8、dl;)break;)void jiaoshishuchu()教师输出显示(ifstream infile(教师. txt,ios: in);int m;for (i = 0; i ti. num ti. name ti. wage ti. time;if num 二二 0) break;int jintiel;jintiel=ti. time*30;m = ti.wage + jintiel;cout t 教师: setw(8) t i. num setfill C 9) setw(10) t i. name setfill (J )setw(10) ti. wagesetfill () s
9、etw(14)jintielsetfillJ )setw(12)ti. butielsetfill (J * )setw(10) m endl; infile, close();)void leadershuchu()领导输出 (ifstream infile(领导.txt”, ios: in);int m;for (i = 0; i xi. num xiL name xi. wage xi.butie;if (xi. num = 0) break;m = xi.wage + xi.butie;cout t 领导: setfill (J J)setw(8)xi. num setfill J)
10、setw(10) xi. namesetfill ( )setw(10)xi. wagesetfill C )setw(14)xi, jintiesetfill C )setw(12) xi. butiesetfill (* ) setw(10) m endl;)infile, close();)void shuchu()输出显示 (cout /ztt 工号 名字 基本工资 课时津贴 补贴 总工资 endl;jiaoshishuchuO ;leadershuchu();jianzhishuchuO ;void show3 ()cout t请输入你要查询的对象:* endl;cout tt 1:
11、教师查询” endl;cout tt 4:退出查询“ endl;cout 请选择一个操作:;)void jiaoshichaxun() (if stream infile(教师.txt”, ios: in);string nam;int num;int m, n, x;cout/zttl.按教师的姓名查找ntt2.按教师的工号查找;coutx;switch(x)(case 1: coutnam;for (i = 0, n = 0; i ti. num ti. name ti. wage ti. time;if (ti.num 二二 0)break;if name=nam) n+;m = ti.
12、wage + time - 24) * 30;号姓名工资 endl;cout t教师: z,t i. num ,z ti. name mnum;for (i = 0, n = 0; i ti. num tiL name ti. wage ti. time;if num =二 0)break;if nuni=num) n+;m = ti. wage + time - 24) * 30;couttt工号姓名工资endl;name coutt教师: ,zti.num ti.m endl;)if (n =0)cout 没有你要查询的教师。 c;if (c = 4) cout 退出查询成功。 endl;
13、 system (cls); break; elseswitch (c) jiaoshichaxun (); break;case 1: leaderxhaxun(); break;jianzhichaxun(); break; default: cout 上一次输入错误。 endl;break;void show5 ()cout t请输入你要修改的对象: endl;cout tt 1:教师修改 endl;cout ,ztt 2:教师兼职领导修改 endl;cout tt 3:退出修改 endl;cout nam;cout 请输入你要修改的课时:;cin n;for (i = 0; i ti.
14、 num ti. name ti. wage ti. time;if num =二 0)break;ml+;if name =nam) nl = ti.time;ti. time = n;n = nl;)infile, close();of stream outfile (“教师. txt”, ios: :out);for (i = 0; i ml; i+) outfile ti. num ti. name ti. wage ti.time c;if (c = 3) cout ttt退出修改成功。 endl;system (cls);break; elseswitch (c) jiaoshix
15、iugai ();break;janzhi2xiugai();break;default: cout 上一次输入错误。 endl;)break;)void show6()(cout t请选择如下操作: endl;cout ,ztl:教师删除 endl;cout t2:领导删除 endl;cout z,t3:教师兼职领导删除 endl;cout ,zt4:退出删除 endl;cout x;switch(x)case l:couttt请输入要删除的教师的姓名:;cinnam;for (i = 0, n = 0; i ti. num ti. name ti. wage ti. time;if (ti
16、. num =二 0)break;if (ti.name=nam) n+;ti.num=0;break; )if (n =0)cout 没有你要删除的教师。的endl;elsecout删除成功!num;for (i = 0, n = 0; i ti. num ti. name ti. wage ti. time;ifnum = 0)break;ifnum=num) n+;ti. num=0;break;)if (n =0)cout 没有你要删除的教师。 endl;elsecout 删除成功 endl;infile, close();break;default: cout操作选择错误!,zcnd
17、l; break;)infile, close();ofstream outfile(教师. txt”, ios: :out);for (i = 0; i 100; i+) if (ti.num != 0)outfile ti. num ti. name tLi. wage ti.time endl;outfile. close();)void show_sort() (cout 请选择如下操作: endl;cout tt 1:教师排序 endl;cout ,ztt 2:教师兼职领导排序 endl;cout tt 3:退出排序 endl; cout 请选择你的一个操作:;)void jiaos
18、hi_sort () 教师排序 (ifstream infile(教师. txt”, ios: in);int m100;for (i = 0; i ti. num ti. name ti.wage ti. time; if num =二 0)break;mi = ti. wage + ti.time * 30; )infile, close();int count = i;Teacher teacher;int tmp;for (int x = 0; x count - 1; +x)for (int y = x + 1; y count; +y) if (mx my) teacher = t
19、x;tx = ty; ty = teacher;tmp = mx;mEx - my;my = tmp; )cout z,tt工号 名字 总工资 “ endl;for (i = 0; i count; +i)cout t教师:,z setfill (J )setw(6) t i. num setfill(, ) setw(10) t i. namesetf ill (, *) setw(10) mi c;if (c = 3) (cout退出排序成功。 endl;systemCcls);break; elseswitch (c) jiaoshi_sort();break;jianzhi sort
20、(); break;default:cout 上一次输入错误。 endl;Breakvoid show?()couttttt高校工资管理系统 endl;coutcoutcoutcoutcoutcoutttttl:tttt2:tttt3:tttt4:tttt5:tttt6:cout职工信息添加 endl;职工信息输出显示 endl;职工信息修改 endl;职工信息删除 c;if (c = 7) cout 退出成功。 endl; break; else switch (c) case 1:wenjianluruO ; break; case 2:shuchu ();break;case 3:xiu
21、gai();break;case 4: del (); break;case 5: wenjianchaxun()break;case 6:sort ();break; default: cout 上一次输入错误。 num!二0。具体流程图如图:开辟一个新节点,并使Pl, p2指向它读入一个教师数据给P1所指的结点Head=NULL & n=O当读入的pbnum!=oN=n+1Head=p 1p2-next=p 1把pl所指的结点把pl所指的结点作为第一结点连接到表尾P2=pl再开辟一个新结点,使pl指向它读入一个教师数据给pl所指结点2、插入记录模块插入记录模块具体流程图如下图所示:将pO所
22、 指的结 点作为 唯一的 结点P2指向pl位置P1向后移一个结点P0-numnumpl-next=pOp2-next=p0 pO-next=plhead=pO pO-next=plpl指向头结曳上pO-next=NULLPl=head ,pO=teacher 原来的链表是空表 当pO-numpl-num以及pl所指的不是表尾结点4、函数功能描述(1)保存数据函数save。函数原型:void save()功能描述:将链表teacher中的N个数据写入到磁盘文件teacher_list中,如 果保存成功,则给出提示保存成功,否则返回“cannot ofen file”表示无法打 开文件,返回“fi
23、le write error表示文件输入错误。(2)浏览教师信息函数query。函数原型:void query (struct teacher *p)功能描述:将链表teacher中的head指向p,然后让用户输入教师号no,依次在 链表中需找P,如果教师号不对,则指针往后面拨动一下,使p=p-next;知道 找到相对应的正确的教师号。然后打印出教师的基本信息。函数流程图如图5. 2所示图5.2(3)修改教师信息函数edit。函数原型:void edit (struct teacher *p)功能描述:首先让用户输入希望修改的教师的教师号a,然后在链表中一条一 条查找看p-num是否等于a,如果找到,则让用户再次输入教师的具体信息, 输入完毕跳出,转向主菜单界面。如果没有找到,则令p=p-next。直到查询完 所有的教师记录。函数流程图如图5. 3所示再次输入教师信息p=p-next五.测试数据及运行结果1.系统主界面用户刚进入系统时,如图1、2所示。主菜单界面:*F:jiaoshi03Debugjiaoshi03. exe欢迎使用教师工资管理系统Beta1.212 3 4 5 6 7师师师师师息统 系入入改出 汴、退信信信信信息自心息自心自心请输入你想要的操作: