C程序设计实验+工资管理系统_第1页
C程序设计实验+工资管理系统_第2页
C程序设计实验+工资管理系统_第3页
C程序设计实验+工资管理系统_第4页
C程序设计实验+工资管理系统_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C/C+程序设计实验综合设计说明书0_电子工程_系_2014_级_汽车服务工程_专业 姓名_匡翔_ 学号_2014137065_(密)(封)(线)四川工商学院课程考查(论文/作业)专用封面作业(论文)题目: 学校工资管理系统设计 所修课程名称: C/C+程序设计实验 修课程时间: 2015 年 9 月至 2016 年 1 月完成论文(作业)日期: 2015 年 12 月评阅成绩: 评阅意见:平时成绩考勤、卫生(总分100分)实验报告实验报告书写情况(总分100分)实践操作编程能力、操作能力(总分100分)总成绩平时20%+实验报告30%+实践操作50% 评阅教师签名: 年 月 日C/C+程序设计实验综合设计说明书17一、设计目的:学校工资管理系统,为教师提供工资查询服务,为学校提供工资管理,工资统计等服务。二、设计任务和要求:每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 合计扣款。设计一个程序对相关信息进行管理。教师信息处理(1) 输入教师信息(2) 插入(修改)教师信息:(3) 删除教师信息:(4) 浏览教师信息:教师数据处理:(1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。(2) 教师实发工资、应发工资、合计扣款计算。提示:计算规则如题目。(3) 教师数据管理提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4) 教师数据查询:提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。(5) 教师综合信息输出提示:输出教师信息到屏幕。三、系统框图和原理分析:(1)输入教师信息模块 在主菜单中运用结构体teacher,输入教师信息,首先建立链表,将用户输 教 师 工资管理系统 1输入教师信息 2插入教师信息 3修改教师信息 4删除教师信息 5浏览教师信息 6系统信息 7退出系统 主界面 选择操作 结 束 输入的教师信息存储到链表中,输入完成后提示用户时候继续输入,如果用户输入“Y”或“y”,则再次调用,实现继续输入教师信息的操作。如果用户输入“N”或“n”,则返回主菜单界面。 (2)插入教师信息模块 在主菜单中调用teacher *insert(),然后按照提示依次输入教师信息,然后再调用void print()函数讲所有的教师信息记录打印出来。然后再返回主菜单界面。 (3)修改教师信息模块 在主菜单中调用void edit()函数。按教师号查找教师信息,如果找到教师 信息,调用void edit()函数提示用户输入新的教师信息,完成修改的操作。操作结束后提示用户修改成功。然后返回主菜单界面。 (4)删除教师信息模块 在主菜单中调用del()函数,以删除教师信息,首先按教师编号查询教师信息, 如果没有找到教师信息,给出提示信息。如果查找到该教师信息,给出改教师的全部信息,如果查找到,则删除该教师信息,给出删除成功的提示信息。然后返回主菜单界面。 (5)浏览教师信息模块 在主菜单中调用void print()函数来显示教师信息,先判断链表是否为空。 如果链表不为空时,逐条显示链表中教师的信息,显示调用teacher *next()函数按照教师号的大小来显示教师的信息。然后返回主菜单界面。 (6)系统信息模块 在主菜单中输入6,可知系统信息、版本。 (7)退出系统模块 将链表中的数据全部释放掉,防止内存泄露。退出系统。四、程序流程图五、关键代码分析(1)保存数据函数save()函数原型:voidsave()功能描述:将链表teacher中的N个数据写入到磁盘文件teacher_list中,如果保存成功,则给出提示保存成功,否则返回“cannotofenfile”表示无法打开文件,返回“filewriteerror”表示文件输入错误。(2)浏览教师信息函数query()函数原型:voidquery(structteacher*p)功能描述:将链表teacher中的head指向p,然后让用户输入教师号no,依次在链表中需找p,如果教师号不对,则指针往后面拨动一下,使p=p-next;知道找到相对应的正确的教师号。然后打印出教师的基本信息。(3)修改教师信息函数edit()函数原型:voidedit(structteacher*p)功能描述:首先让用户输入希望修改的教师的教师号a,然后在链表中一条一条查找看p-num是否等于a,如果找到,则让用户再次输入教师的具体信息,输入完毕跳出,转向主菜单界面。如果没有找到,则令p=p-next。直到查询完所有的教师记录。六、设计总结持续一个学期的课程设计给了我太多的感触,开始从题目上看,感觉题目很大,设计量很大,也很复杂,感觉不是简单的就能解决的。这样只用重新拾起书继续来看,获得新的知识和巩固以前的C方面的知识。提升自己的能力。通过这个学期的课程设计的练习与设计我学会了很多,也更加熟悉C语言程 序设计,从中得到了很多乐趣,很快乐,感觉C语言的世界里面奇妙无比。虽然在途中也遇到很多的苦难,但是还是通过问同学和学长解决了。最后看到自己设计的程序能够运行起来特别的开心。 这次的程序设计很有意义,也很锻炼人的能力,特别是C语言方面的能力, 为自己在C+语言方面打下基础附录参考文献1.黄梯云,管理信息系统(修订版),北京:高等教育出版社,20002.薛华成,管理信息系统(第三版),北京:清华大学出版社,19993.陈晓红,管理信息系统教程,北京:清华大学出版社,20034.陈国青等,信息系统的组织管理建模,北京:清华大学出版社,20025.高阳,计算机网络原理与实用技术,长沙:中南工业大学出版社,19986.左美云等,信息系统的开发与管理教程,北京:清华大学出版社,2001附录1 -源程序#include #include #include #include #include using namespace std; int i; class Person public: void display() cout name; cout num; while(num=0) cout请重新输入工号大于0的数:num; string name;/名字 int num; ;/工号 class Teacher: public Person/教师 public: Teacher() int s=1000; wage = s; butie1=0; void display1(); int wage;/基本工资 int time; int butie1; int jintie1; ;/课时 void Teacher:display1() cout 请输入;Person:display();couttime;while(time=0)cout请重新输入课时大于0的数:time;/补贴Teachert100;Leaderx100;Jianzhij100;voidshow()coutt请输入你要录入的对象:endl;couttt1:教师endl;couttt2:领导endl;couttt3:教师兼职领导endl;couttt4:退出录入endl;cout请选择:;voidjiaoshiluru()/教师录入ofstreamoutfile(教师.txt,ios:app);if(!outfile)cerropenerror!endl;exit(0);intb;coutb;for(i=0;ib;i+)ti.display1();cout是否保存信息(y(Y)/n(N)c;if(c=Y|c=y)ti.wageti.timec;if(c=4)cout退出录入成功。endl;system(cls);break;elseswitch(c)case1:jiaoshiluru();break;case2:Leaderluru();break;case3:jianzhiluru();break;default:cout上一次输入错误。endl;break;voidjiaoshishuchu()/教师输出显示ifstreaminfile(教师.txt,ios:in);intm;for(i=0;i ti.num ti.wage ti.time; if (ti.num = 0) break; int jintie1; jintie1=ti.time*30; m = ti.wage + jintie1; cout t教师: setw(8) ti.num setfill( )setw(10) setfill( )setw(10)ti.wage setfill( )setw(14)jintie1setfill( )setw(12)ti.butie1setfill( )setw(10) m endl; infile.close(); void leadershuchu()/领导输出 ifstream infile(领导.txt, ios:in); int m; for (i = 0; i xi.num xi.wage xi.butie; if (xi.num = 0) break; m = xi.wage + xi.butie; cout t领导: setfill( )setw(8)xi.num setfill( )setw(10) setfill( )setw(10)xi.wagesetfill( )setw(14)xi.jintiesetfill( )setw(12)xi.butiesetfill( ) setw(10) m endl; infile.close(); void shuchu()/输出显示 cout tt 工号 名字 基本工资 课时津贴 补贴 总工资 endl; jiaoshishuchu(); leadershuchu(); jianzhishuchu(); void show3() cout t请输入你要查询的对象: endl; cout tt 1:教师查询 endl; cout tt 4:退出查询 endl; cout 请选择一个操作:; void jiaoshichaxun() ifstream infile(教师.txt, ios:in); string nam; int num; int m, n,x; couttt1.按教师的姓名查找ntt2.按教师的工号查找; coutx; switch(x) case 1:coutnam; for (i = 0, n = 0; i ti.num ti.wage ti.time; if (ti.num = 0) break; if (=nam) n+; m = ti.wage + (ti.time - 24) * 30; couttt工号 姓名 工资endl; cout t教师: ti.num m endl; if (n =0) cout 没有你要查询的教师。 endl; infile.close(); break; case 2: coutnum; for (i = 0, n = 0; i ti.num ti.wage ti.time; if (ti.num = 0) break; if (ti.num=num) n+; m = ti.wage + (ti.time - 24) * 30; couttt工号 姓名 工资endl; cout t教师: ti.num m endl; if (n =0) cout 没有你要查询的教师。 endl; infile.close(); break; default:cout操作选择错误! c; if (c = 4) cout 退出查询成功。 endl; system(cls); break; else switch (c) case 1: jiaoshichaxun(); break; case 2: leaderxhaxun(); break; case 3: jianzhichaxun(); break; default: cout 上一次输入错误。 endl; break; void show5() cout t请输入你要修改的对象: endl; cout tt 1:教师修改 endl; cout tt 2:教师兼职领导修改 endl; cout tt 3:退出修改 endl; cout 请选择一个操作:; void jiaoshixiugai()/教师修改 ifstream infile(教师.txt, ios:in); string nam; int n, n1, m1 = 0; cout nam; cout n; for (i = 0; i ti.num ti.wage ti.time; if (ti.num = 0) break; m1+; if ( =nam) n1 = ti.time; ti.time = n; n = n1; infile.close(); ofstream outfile(教师.txt, ios:out); for (i = 0; i m1; i+) outfile ti.num ti.wage ti.time c; if (c = 3) cout ttt退出修改成功。 endl; system(cls); break; else switch (c) case 1: jiaoshixiugai(); break; case 2: janzhi2xiugai(); break; default: cout 上一次输入错误。 endl; break; void show6() cout t请选择如下操作: endl; cout t1:教师删除 endl; cout t2:领导删除 endl; cout t3:教师兼职领导删除 endl; cout t4:退出删除 endl; cout 请选择你的一个操作: ; void jiaoshidel()/教师删除 ifstream infile(教师.txt, ios:in); string nam; int num; int n,x; couttt1.按教师的姓名删除ntt2.按教师的工号删除; coutx; switch(x) case 1:coutnam; for (i = 0, n = 0; i ti.num ti.wage ti.time; if (ti.num = 0) break; if (=nam) n+; ti.num=0;break; if (n =0) cout 没有你要删除的教师。 endl; else cout删除成功!endl; infile.close(); break; case 2: coutnum; for (i = 0, n = 0; i ti.num ti.wage ti.time; if (ti.num = 0) break; if (ti.num=num) n+; ti.num=0;break; if (n =0) cout 没有你要删除的教师。 endl; else cout删除成功endl; infile.close(); break; default:cout操作选择错误!endl;break; infile.close(); ofstream outfile(教师.txt, ios:out); for (i = 0; i 100; i+) if (ti.num != 0) outfile ti.num ti.wage ti.time endl; outfile.close(); void show_sort() cout 请选择如下操作: endl; cout tt 1:教师排序 endl; cout tt 2:教师兼职领导排序 endl; cout tt 3:退出排序 endl; cout 请选择你的一个操作: ; void jiaoshi_sort() /教师排序 ifstream infile(教师.txt, ios:in); int m100; for (i = 0; i ti.num ti.wage ti.time; if (ti.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 = tx; tx = ty; ty = tea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论