版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、文档供参考,可复制、编制,期待您的好评与关注! 目 录目 录1一、设计目的1二. 设计内容2三概要设计31.功能模块图32各个模块详细的功能描述。4四详细设计51、输入记录模块52、插入记录模块63、删除记录模块(具体流程图如图所示)64、函数功能描述7五 测试数据及运行结果81.系统主界面82.输入界面93.输出教师信息界面114. 插入教师信息界面12六调试情况,设计技巧及体会12附录 源代码13一、设计目的本程序旨在训练基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。本程序涉及结构体、数组、指针、文件等方面的知识。通过本程序的训练,使读者能对C语言的文
2、件操作有一个更深刻的了解,掌握利用数组存储结构实现教师工资管理系统,为进一步开发出高质量信息管理系统打下坚实的基础。(1)巩固和加强C+语言程序设计课程的理论知识。(2)掌握+语言的基本概念、语法、语义和数据类型的使用特点。(3)掌握+语言程序设计的方法及编程技巧,能正确使用+语言编写程序。(4)进一步理解和运用结构化程设计的思想和方法;学会利用流程图表示算法。(5)掌握调试程序的基本方法及上机操作方法。(6)掌握书写程设计开发文档的能力,学会撰写课程设计总结报告。课程设计的思想和方法还可以作为毕业论文时的参考资料。(7)通过查阅手册和文献资料,培养自己独立分析问题和解决问题的能力。为自己做毕
3、业设计打好基础。(8)初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。通过激发学习兴趣,调动自己主动学习的积极性,并根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。(9)培养自己的创新能力和创新思维。可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。(10)培养自己良好的程序设计风格。在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。自己在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。二. 设计内容每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话
4、、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资 合计扣款。1、教师信息处理(1) 输入教师信息(2) 插入(修改)教师信息:(3) 删除教师信息:(4) 浏览教师信息:提示:具体功能及操作参考题1。2、教师数据处理(1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。(2) 教师实发工资、应发工资、合计扣款计算。提示:计算规则如题目。(3) 教师数据管理提示:输入教师号,读
5、出并显示该教师信息,输入新数据,将改后信息写入文件(4) 教师数据查询:提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。(5) 教师综合信息输出提示:输出教师信息到屏幕。三概要设计1.功能模块图主界面选择操作1输入教师信息2插入教师信息3修改教师信息教师工资管理系统4删除教师信息5浏览教师信息6系统信息结 束7退出系统图1教师工资系统功能模块图2各个模块详细的功能描述。(1)输入教师信息模块在主菜单中运用结构体teacher,输入教师信息,首先建立链表,将用户输入的学生信息存储到链表中,输入完成后提示用户时候继续输入,如果用户输入“Y”或“y”,则再次调用,实现继续输入学生信息的操
6、作。如果用户输入“N”或“n”,则返回主菜单界面。(2)插入教师信息模块在主菜单中调用teacher *insert(),然后按照提示依次输入教师信息,然后再调用void print()函数讲所有的教师信息记录打印出来。然后再返回主菜单界面。(3)修改教师信息模块在主菜单中调用void edit()函数。按教师号查找教师信息,如果找到教师信息,调用void edit()函数提示用户输入新的教师信息,完成修改的操作。操作结束后提示用户修改成功。然后返回主菜单界面。(4)删除教师信息模块在主菜单中调用del()函数,以删除教师信息,首先按学号查询教师信息,如果没有找到教师信息,给出提示信息。如果查
7、找到该教师信息,给出改教师的全部信息,如果查找到,则删除该教师信息,给出删除成功的提示信息。然后返回主菜单界面。(5)浏览教师信息模块在主菜单中调用void print()函数来显示教师信息,先判断链表是否为空。如果链表不为空时,逐条显示链表中教师的信息,显示调用teacher *next()函数按照教师号的大小来显示教师的信息。然后返回主菜单界面。(6)系统信息模块 在主菜单中输入6,可知系统信息、版本。(7)退出系统模块将链表中的数据全部释放掉,防止内存泄露。退出系统。四详细设计1、输入记录模块输入教师信息的流程图如下图。首先要开辟一个新节点,并使p1,p2指向它。读入一个教师数据给p1所
8、指的节点。此时要使head=NULL,n=0,并且p1->num!=0。开辟一个新节点,并使P1,p2指向它读入一个教师数据给P1所指的结点 Head=NULL && n=0 <当读入的p1->num!=o> N=n+1 N=1 真 假Head=p1 p2->next=p1把p1所指的结点 把p1所指的结点作为第一结点 连接到表尾 P2=p1再开辟一个新结点,使p1指向它读入一个教师数据给p1所指结点具体流程图如图:2、插入记录模块插入记录模块具体流程图如下图所示: P1=head , p0=teacher 原来的链表是空表是 否 当p0->
9、num>p1->num以及p1所指的不是表尾结点 P2指向p1位置 P1向后移一个结点 P0->num<=p1->num将p0所 真 假指的结 p1指向头结点 点作为 是 否 p1->next=p0唯一的 head=p0 p2->next=p0结点 p0->next=p1 p0->next=p1 p0->next=NULLf 链表是一个空链表真 假 P1=head输 当num!=p1->num以及p1所指的结点不是表尾结点 P2=p1出 P1=p1->next P1是要删除的结点 是 否空 p1所指的头结点 是 否 输出找
10、不到表 head= p2->next= 教师信息 P1->next p1->next3、删除记录模块(具体流程图如图所示)4、函数功能描述(1) 保存数据函数save()函数原型:void save()功能描述:将链表teacher中的N个数据写入到磁盘文件teacher_list中,如果保存成功,则给出提示保存成功,否则返回“cannot ofen file”表示无法打开文件,返回“file write error”表示文件输入错误。(2)浏览教师信息函数query()函数原型:void query(struct teacher *p)功能描述:将链表teacher中的he
11、ad指向p,然后让用户输入教师号no,依次在链表中需找p,如果教师号不对,则指针往后面拨动一下,使p=p->next;知道找到相对应的正确的教师号。然后打印出教师的基本信息。函数流程图如图5.2 所示p=head p->num=no p->num!=no p=p->next 打印教师信息 图5.2(3) 修改教师信息函数edit()函数原型:void edit(struct teacher *p)功能描述:首先让用户输入希望修改的教师的教师号a, 然后在链表中一条一条查找看p->num是否等于a,如果找到,则让用户再次输入教师的具体信息,输入完毕跳出,转向主菜单界
12、面。如果没有找到,则令p=p->next。直到查询完所有的教师记录。函数流程图如图5.3 所示输入想修改教师信息的教师号ap->num=a Yes no p=p->next再次输入教师信息5 测试数据及运行结果1.系统主界面 用户刚进入系统时,如图1、2所示。主菜单界面: 图1 图 22.输入界面用户在主菜单界面的时候输入1,显示如图 图2依次给出需要输入的信息的,教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等。当公积金输入完成,系统将给出提示是否想继续输入教师信息,显示如图如果输入Y或者y,则继续输
13、入教师信息;如果输入N或者n,则返回到主菜单界面。显示如下图:3.输出教师信息界面 如果已经输入教师信息,再在主菜单选择4浏览教师信息,结果如图:4. 插入教师信息界面 在主菜单中进入2插入教师信息,然后依次插入教师的所有信息,最后打印链表里的记录,如图:六调试情况,设计技巧及体会 持续一个学期的课程设计给了我太多的感触,开始从题目上看,感觉题目很大,设计量很大,也很复杂,感觉不是简单的就能解决的。这样只用重新拾起书继续来看,获得新的知识和巩固以前的C方面的知识。提升自己的能力。整个程序的设计是分模块实现具体的功能,每个模块分别由不同的函数构成。链表的建立实现输入信息的功能,相比较于数组更加方
14、便,更能够节省内存空间等。通过使用文件fread和fwrite函数方便的将数据信息写入文件以及将文件中的信息载入显示段。通过这个学期的课程设计的练习与设计我学会了很多,也更加熟悉C语言程序设计,从中得到了很多乐趣,很快乐,感觉C语言的世界里面奇妙无比。虽然在途中也遇到很多的苦难,但是还是通过问同学和学长解决了。最后看到自己设计的程序能够运行起来特别的开心。这次的程序设计很有意义,也很锻炼人的能力,特别是C语言方面的能力,为自己在C+语言方面打下基础。附录 源代码#include<iostream>#include<fstream>#include<stdlib.h
15、>#include<string>#include<iomanip>using namespace std;int i;class Person public: void display() cout << "姓名:" cin >> name; cout << "工号:" cin >> num;while(num<=0)cout<<"请重新输入工号大于0的数:"<<endl;cin>>num; string name
16、;/名字 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(); cout << "请输入教师的课时(小时): " cin >> time;while(
17、time<=0)cout<<"请重新输入课时大于0的数:"<<endl;cin>>time;/补贴Teacher t100;Leader x100;Jianzhi j100;void show() cout << "t请输入你要录入的对象 :" << endl; cout << "tt 1:教师" << endl; cout << "tt 2:领导" << endl; cout << &qu
18、ot;tt 3:教师兼职领导" << endl; cout << "tt 4:退出录入" << endl; cout << "请选择: "void jiaoshiluru()/教师录入 ofstream outfile("教师.txt", ios:app); if (!outfile) cerr << "open error!" << endl; exit(0); int b; cout << "请选择你要录入教
19、师的个数:" cin >> b; for (i = 0; i < b; i+) ti.display1();cout<<"是否保存信息(y(Y)/n(N)"<<endl;char c;cin>>c;if(c='Y'|c='y') outfile << ti.num << " " << << " " << ti.wage << " "
20、<< ti.time << endl; outfile.close();void wenjianluru()/文件录入 int c; for (i = 0; i+) show(); cin >> c; if (c = 4) cout << "退出录入成功。" << endl; system("cls"); break; else switch (c) case 1: jiaoshiluru(); break; case 2: Leaderluru(); break; case 3: jianzh
21、iluru(); break; default: cout << "上一次输入错误。" << endl; break; void jiaoshishuchu()/教师输出显示 ifstream infile("教师.txt", ios:in); int m; for (i = 0; i < 100; i+) ti.num=0; infile >> ti.num >> >> ti.wage >> ti.time;if (ti.num = 0) break; int
22、 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)<<jintie1<&l
23、t;setfill(' ')<<setw(12)<<ti.butie1<<setfill(' ')<<setw(10)<< m<< endl; infile.close();void leadershuchu()/领导输出 ifstream infile("领导.txt", ios:in); int m; for (i = 0; i < 100; i+) xi.num =0; infile >> xi.num >> >&
24、gt; 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.wage<<setfi
25、ll(' ')<<setw(14)<<xi.jintie<<setfill(' ')<<setw(12)<<xi.butie<<setfill(' ')<<setw(10)<< m<< endl; infile.close();void shuchu()/输出显示 cout <<"tt 工号 名字 基本工资 课时津贴 补贴 总工资 " << endl; jiaoshishuchu(); leade
26、rshuchu(); jianzhishuchu();void show3() cout << "t请输入你要查询的对象:" << endl; cout << "tt 1:教师查询" << endl; cout << "tt 4:退出查询" << endl; cout << " 请选择一个操作:" void jiaoshichaxun() ifstream infile("教师.txt", ios:in); st
27、ring nam; int num; int m, n,x; cout<<"tt1.按教师的姓名查找ntt2.按教师的工号查找" cout<<"ntt 请选择" cin>>x; switch(x) case 1:cout<<"tt请输入要查找的教师的姓名:" cin>>nam; for (i = 0, n = 0; i < 100; i+) infile >> ti.num >> >> ti.wage >>
28、 ti.time; if (ti.num = 0) break; if (=nam) n+; m = ti.wage + (ti.time - 24) * 30;cout<<"tt工号 姓名 工资"<<endl; cout << "t教师: " <<" "<<ti.num << " " << << " " <<m << endl; if (n =0)
29、 cout << "没有你要查询的教师。" << endl; infile.close();break;case 2: cout<<"tt请输入要查找的教师的工号:" cin>>num; for (i = 0, n = 0; i < 100; i+) infile >> ti.num >> >> ti.wage >> ti.time; if (ti.num = 0) break; if (ti.num=num) n+; m = ti.wa
30、ge + (ti.time - 24) * 30;cout<<"tt工号 姓名 工资"<<endl; cout << "t教师: " <<" "<<ti.num << " " << << " " <<m << endl; if (n =0) cout << "没有你要查询的教师。" << endl; infile.clo
31、se();break;default:cout<<"操作选择错误!"<<endl;break; void wenjianchaxun()/文件查询 int c; for (i = 0; i+) show3(); cin >> c; if (c = 4) cout << "退出查询成功。" << endl; system("cls"); break; ; else switch (c) case 1: jiaoshichaxun(); break; case 2: leader
32、xhaxun(); break; case 3: jianzhichaxun(); break; default: cout << "上一次输入错误。" << endl; break; void show5() cout << "t请输入你要修改的对象:" << endl; cout << "tt 1:教师修改" << endl; cout << "tt 2:教师兼职领导修改" << endl; cout <<
33、; "tt 3:退出修改" << endl; cout << " 请选择一个操作:"void jiaoshixiugai()/教师修改 ifstream infile("教师.txt", ios:in); string nam; int n, n1, m1 = 0; cout << "请输入你要修改教师的名字: " cin >> nam; cout << "请输入你要修改的课时:" cin >> n; for (i = 0;
34、 i < 100; i+) infile >> 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 << &quo
35、t; " << << " " << ti.wage << " " << ti.time << endl; outfile.close();void xiugai()/修改 int c; for (i = 0; i+) show5(); cin >> c; if (c = 3) cout << "ttt退出修改成功。" << endl; system("cls"); break; el
36、se switch (c) case 1: jiaoshixiugai(); break; case 2: janzhi2xiugai(); break; default: cout << "上一次输入错误。" << endl; break; void show6() cout << "t请选择如下操作:" << endl; cout << "t1:教师删除" << endl; cout << "t2:领导删除" <<
37、endl; cout << "t3:教师兼职领导删除" << endl; cout << "t4:退出删除" << endl; cout << "请选择你的一个操作: "void jiaoshidel()/教师删除 ifstream infile("教师.txt", ios:in); string nam;int num; int n,x; cout<<"tt1.按教师的姓名删除ntt2.按教师的工号删除" cout<
38、<"ntt 请选择" cin>>x; switch(x) case 1:cout<<"tt请输入要删除的教师的姓名:"cin>>nam; for (i = 0, n = 0; i < 100; i+) infile >> ti.num >> >> ti.wage >> ti.time; if (ti.num = 0) break; if (=nam) n+;ti.num=0;break; if (n =0)cout <<
39、; "没有你要删除的教师。" << endl;elsecout<<"删除成功!"<<endl; infile.close();break;case 2: cout<<"tt请输入要删除的教师的工号:"cin>>num; for (i = 0, n = 0; i < 100; i+) infile >> ti.num >> >> ti.wage >> ti.time; if (ti.num = 0) brea
40、k; if (ti.num=num) n+; ti.num=0;break; if (n =0) cout << "没有你要删除的教师。" << endl;elsecout<<"删除成功"<<endl; infile.close();break;default:cout<<"操作选择错误!"<<endl;break; infile.close(); ofstream outfile("教师.txt", ios:out); for (i = 0;
41、 i < 100; i+) if (ti.num != 0) outfile << ti.num << " " << << " " << ti.wage << " " << ti.time << endl; outfile.close(); void show_sort() cout << "请选择如下操作:" << endl; cout << "tt
42、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 < 100; i+) infile >> ti.n
43、um >> >> 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 = teacher; tmp = mx; mx = my; my = tmp; cout <<"tt 工号 名字 总工资
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年高中英语 Unit 3 Life in the future Section Ⅲ Grammar(教师用书)教案 新人教版必修5
- 探索2024年教学模式:《经济法基础》教案新探索
- 2024《山居秋暝》情境再现
- 《理想的翅膀》:2024年助力新型城镇化建设
- 提升学习效率:《千人糕》课件设计思路
- 2024年DRGs在医疗质量改进中的作用与价值
- 第47届世界技能大赛制造团队挑战赛项目江苏省选拔赛样题(综合制造专业方向)
- 《消费行为学》教案:2024年生物心理学视角
- 土建实验室一天工作计划书
- 2024教育展望:《在柏林》教案新编
- 【幼儿园语言文字教学的规范化分析3000字(论文)】
- 瓶口分液器校准规范
- (完整版)医疗器械网络交易服务第三方平台质量管理文件
- 信息管理监理实施细则水利水电工程
- (医学课件)DIC患者的护理
- 跨境数据流动的全球治理进展、趋势与中国路径
- 【多旋翼无人机的组装与调试5600字(论文)】
- 2023年辽阳市宏伟区事业单位考试真题
- 环境工程专业英语 课件
- 继电保护动作分析报告课件
- 五年级数学上册8解方程课件
评论
0/150
提交评论