版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录TOC\o"1-2"\u目录 1一、设计目标 1二.设计内容 2三.概要设计 31.功效模块图 32.各个模块具体功效描述。 4四.具体设计 51、输入统计模块 52、插入统计模块 63、删除统计模块(具体步骤图图所表示) 64、函数功效描述 7五.测试数据及运行结果 81.系统主界面 82.输入界面 93.输出老师信息界面 114.插入老师信息界面 12六.调试情况,设计技巧及体会 12附录源代码 13一、设计目标本程序意在训练基础编程能力,了解管理信息系统开发步骤,熟悉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——1——输入老师信息2——插入老师信息2——插入老师信息33——修改老师信息老师工资管理系统老师工资管理系统44——删除老师信息5——浏览老师信息5——浏览老师信息6——系统信息6——系统信息结束7——退出系统结束7——退出系统图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。开辟一个新节点,并使P1,p2指向它读入一个老师数据给P1所指结点开辟一个新节点,并使P1,p2指向它读入一个老师数据给P1所指结点Head=NULL&&n=0<当读入p1->num!=o>N=n+1N=1真假Head=p1p2->next=p1把p1所指结点把p1所指结点作为第一结点连接到表尾P2=p1再开辟一个新结点,使p1指向它读入一个老师数据给p1所指结点2、插入统计模块插入统计模块具体步骤图以下图所表示:PP1=head,p0=teacher原来链表是空表是否当p0->num>p1->num和p1所指不是表尾结点P2指向p1位置P1向后移一个结点P0->num<=p1->num将p0所真假指结p1指向头结点点作为是否p1->next=p0唯一head=p0p2->next=p0结点p0->next=p1p0->next=p1p0->next=NULL链表是一个空链表真假P1=head输当num!=p1->num和p1所指结点不是表尾结点链表是一个空链表真假P1=head输当num!=p1->num和p1所指结点不是表尾结点P2=p1出P1=p1->nextP1是要删除结点是否空p1所指头结点是否输出找不到表head=p2->next=老师信息P1->nextp1->next4、函数功效描述(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=headp=headp->num=nop->num!=nop=p->nextp=p->next打印老师信息打印老师信息图5.2(3)修改老师信息函数edit()函数原型:voidedit(structteacher*p)功效描述:首先让用户输入期望修改老师老师号a,然后在链表中一条一条查找看p->num是否等于a,假如找到,则让用户再次输入老师具体信息,输入完成跳出,转向主菜单界面。假如没有找到,则令p=p->next。直到查询完全部老师统计。函数步骤图图5.3所表示输入想修改老师信息老师号a输入想修改老师信息老师号ap->num==ap->num==aYesnop=p->next再次输入老师信息p=p->next再次输入老师信息测试数据及运行结果1.系统主界面用户刚进入系统时,图1、2所表示。主菜单界面:图1图22.输入界面用户在主菜单界面时候输入1,显示图图2依次给出需要输入信息,老师号、姓名、性别、单位名称、家庭住址、联络电话、基础工资、津贴、生活补助、电话费、水电费、房租、所得税、卫生费、公积金等。当公积金输入完成,系统将给出提醒是否想继续输入老师信息,显示图假如输入Y或y,则继续输入老师信息;假如输入N或n,则返回到主菜单界面。显示以下图:3.输出老师信息界面假如已经输入老师信息,再在主菜单选择4——浏览老师信息,结果图:4.插入老师信息界面在主菜单中进入2——插入老师信息,然后依次插入老师全部信息,最终打印链表里统计,图:六.调试情况,设计技巧及体会连续一个学期课程设计给了我太多感慨,开始从题目上看,感觉题目很大,设计量很大,也很复杂,感觉不是简单就能处理。这么只用重新捡起书继续来看,取得新知识和巩固以前C方面知识。提升自己能力。 整个程序设计是分模块实现具体功效,每个模块分别由不一样函数组成。链表建立实现输入信息功效,相比较于数组愈加方便,更能够节省内存空间等。经过使用文件fread和fwrite函数方便将数据信息写入文件和将文件中信息载入显示段。 经过这个学期课程设计练习和设计我学会了很多,也愈加熟悉C语言程序设计,从中得到了很多乐趣,很愉快,感觉C语言世界里面奇妙无比。即使在途中也碰到很多苦难,不过还是经过问同学和学长处理了。最终看到自己设计程序能够运行起来尤其快乐。 这次程序设计很有意义,也很锻炼人能力,尤其是C语言方面能力,为自己在C++语言方面打下基础。附录源代码#include<iostream>#include<fstream>#include<stdlib.h>#include<string>#include<iomanip>usingnamespacestd;inti;classPerson{public:voiddisplay(){cout<<"姓名:";cin>>name;cout<<"工号:";cin>>num; while(num<=0) { cout<<"请重新输入工号大于0数:"<<endl; cin>>num; }}stringname;//名字intnum;};//工号classTeacher:publicPerson//老师{public:Teacher(){ints=1000;wage=s; butie1=0;}voiddisplay1();intwage;//基础工资inttime; intbutie1; intjintie1; };//课时voidTeacher::display1(){cout<<"请输入";Person::display();cout<<"请输入老师课时(小时):";cin>>time; while(time<=0) { cout<<"请重新输入课时大于0数:"<<endl; cin>>time; }}};//补助Teachert[100];Leaderx[100];Jianzhij[100];voidshow(){cout<<"\t请输入你要录入对象:"<<endl;cout<<"\t\t1:老师"<<endl;cout<<"\t\t2:领导"<<endl;cout<<"\t\t3:老师兼职领导"<<endl;cout<<"\t\t4:退出录入"<<endl;cout<<"请选择:";}voidjiaoshiluru()//老师录入{ofstreamoutfile("老师.txt",ios::app);if(!outfile){cerr<<"openerror!"<<endl;exit(0);}intb;cout<<"请选择你要录入老师个数:";cin>>b;for(i=0;i<b;i++){t[i].display1(); cout<<"是否保留信息(y(Y)/n(N))"<<endl; charc; cin>>c; if(c=='Y'||c=='y') {outfile<<t[i].num<<""<<t[i].name<<""<<t[i].wage<<""<<t[i].time<<endl; }}outfile.close();}voidwenjianluru()//文件录入{intc;for(i=0;;i++) {show();cin>>c;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<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老师:"<<setw(8)<<t[i].num<<setfill('')<<setw(10)<<t[i].name<<setfill('')<<setw(10)<<t[i].wage <<setfill('')<<setw(14)<<jintie1<<setfill('')<<setw(12)<<t[i].butie1<<setfill('')<<setw(10)<<m<<endl; }infile.close();}voidleadershuchu()//领导输出{ifstreaminfile("领导.txt",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领导:"<<setfill('')<<setw(8)<<x[i].num<<setfill('')<<setw(10)<<x[i].name<<setfill('')<<setw(10)<<x[i].wage<<setfill('')<<setw(14)<<x[i].jintie<<setfill('')<<setw(12)<<x[i].butie<<setfill('') <<setw(10)<<m<<endl;}infile.close();}voidshuchu()//输出显示{cout<<"\t\t工号名字基础工资课时津贴补助总工资"<<endl;jiaoshishuchu();leadershuchu();jianzhishuchu();}voidshow3(){cout<<"\t请输入你要查询对象:"<<endl;cout<<"\t\t1:老师查询"<<endl;cout<<"\t\t4:退出查询"<<endl;cout<<"请选择一个操作:";}voidjiaoshichaxun(){ifstreaminfile("老师.txt",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工号姓名工资"<<endl;cout<<"\t老师:"<<""<<t[i].num<<""<<t[i].name<<""<<m<<endl;}}if(n==0) cout<<"没有你要查询老师。"<<endl;infile.close(); }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工号姓名工资"<<endl;cout<<"\t老师:"<<""<<t[i].num<<""<<t[i].name<<""<<m<<endl;}}if(n==0) cout<<"没有你要查询老师。"<<endl;infile.close(); }break;default:{cout<<"操作选择错误!"<<endl;}break;}}voidwenjianchaxun()//文件查询{intc;for(i=0;;i++){show3();cin>>c;if(c==4){cout<<"退出查询成功。"<<endl;system("cls");break;;}elseswitch(c){case1:jiaoshichaxun();break;case2:leaderxhaxun();break;case3:jianzhichaxun();break;default:{cout<<"上一次输入错误。"<<endl;}break;}}}voidshow5(){cout<<"\t请输入你要修改对象:"<<endl;cout<<"\t\t1:老师修改"<<endl;cout<<"\t\t2:老师兼职领导修改"<<endl;cout<<"\t\t3:退出修改"<<endl;cout<<"请选择一个操作:";}voidjiaoshixiugai()//老师修改{ifstreaminfile("老师.txt",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;}}infile.close();ofstreamoutfile("老师.txt",ios::out);for(i=0;i<m1;i++){outfile<<t[i].num<<""<<t[i].name<<""<<t[i].wage<<""<<t[i].time<<endl;}outfile.close();}voidxiugai()//修改{intc;for(i=0;;i++){show5();cin>>c;if(c==3){cout<<"\t\t\t退出修改成功。"<<endl;system("cls");break;}elseswitch(c){case1:jiaoshixiugai();break;case2:janzhi2xiugai();break;default:{cout<<"上一次输入错误。"<<endl;}break;}}}voidshow6(){cout<<"\t请选择以下操作:"<<endl;cout<<"\t1:老师删除"<<endl;cout<<"\t2:领导删除"<<endl;cout<<"\t3:老师兼职领导删除"<<endl;cout<<"\t4:退出删除"<<endl;cout<<"请选择你一个操作:";}voidjiaoshidel()//老师删除{ifstreaminfile("老师.txt",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<<"没有你要删除老师。"<<endl; else cout<<"删除成功!"<<endl;infile.close(); }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<<"没有你要删除老师。"<<endl; else cout<<"删除成功"<<endl;infile.close(); }break;default:{cout<<"操作选择错误!"<<endl;}break;}infile.close();ofstreamoutfile("老师.txt",ios::out);for(i=0;i<100;i++){if(t[i].num!=0)outfile<<t[i].num<<""<<t[i].name<<""<<t[i].wage<<""<<t[i].time<<endl;}outfile.close();}voidshow_sort(){cout<<"请选择以下操作:"<<endl;cout<<"\t\t1:老师排序"<<endl;cout<<"\t\t2:老师兼职领导排序"<<endl;cout<<"\t\t3:退出排序"<<endl;cout<<"请选择你一个操作:";}voidjiaoshi_sort()//老师排序{ifstreaminfile("老师.txt",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;}infile.close();intcount=i;Teacherteacher;inttmp;for(intx=0;x<count-1;++x)for(inty=x+1;y<count;++y){if(m[x]<m[y]){teacher=t[x];t[x]=t[y];t[y]=teacher;tmp=m[x];m[x]=m[y];m[y]=tmp;}}cout<<"\t\t工号名字总工资"<<endl;for(i=0;i<count;++i)cout<<"\t老师:"<<setfill('')<<setw(6)<<t[i].num<<setfill('')<<setw(10)<<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 木制家具生产合同
- 2024聘请常年法律顾问合同协议书
- 土地租赁合同税务问题
- 股权扩股协议书格式
- 建筑设计培训就业协议书
- 3.1.1 勾股定理 同步课件
- 七年级地理上册-4.2-世界的语言和宗教同课异构教案1-新人教版
- 2024版发起人协议书范例
- 《未来的建筑》示范公开课教学课件【小学三年级美术下册】
- 2024年多应用场景童鞋购销合同
- 生物质能发电技术应用中存在的问题及优化方案
- GA 1809-2022城市供水系统反恐怖防范要求
- 幼儿园绘本故事:《老虎拔牙》 课件
- 2021年上半年《系统集成项目管理工程师》真题
- 一个冬天的童话 遇罗锦
- GB/T 706-2008热轧型钢
- 实验六 双子叶植物茎的初生结构和单子叶植物茎的结构
- GB/T 25032-2010生活垃圾焚烧炉渣集料
- GB/T 13610-2020天然气的组成分析气相色谱法
- 《彩虹》教案 省赛一等奖
- 2023年湖南建筑工程初中级职称考试基础知识
评论
0/150
提交评论