


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录目 录 1一、设计目的 2二 . 设计内容 3三概要设计 41. 功能模块图 42各个模块详细的功能描述。 4四详细设计 51、输入记录模块 52、插入记录模块 63、删除记录模块(具体流程图如图所示) 74、函数功能描述 7五 测试数据及运行结果 . 91. 系统主界面 92. 输入界面 103. 输出教师信息界面 124. 插入教师信息界面 . 12六调试情况,设计技巧及体会. 13附录 源代码 13、设计目的本程序旨在训练基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。本程序涉及结构体、数组、指针、文件等方 面的知识。通过本程序的训练,使读者能对
2、C语言的文件操作有一个更深刻的了 解,掌握利用数组存储结构实现教师工资管理系统, 为进一步开发出高质量信息 管理系统打下坚实的基础。(1) 巩固和加强C+语言程序设计课程的理论知识。(2) 掌握C +语言的基本概念、语法、语义和数据类型的使用特点。(3) 掌握C +语言程序设计的方法及编程技巧,能正确使用C +语言编写 程序。(4) 进一步理解和运用结构化程设计的思想和方法;学会利用流程图表示 算法。(5) 掌握调试程序的基本方法及上机操作方法。(6) 掌握书写程设计开发文档的能力,学会撰写课程设计总结报告。课程 设计的思想和方法还可以作为毕业论文时的参考资料。(7) 通过查阅手册和文献资料,
3、 培养自己独立分析问题和解决问题的能力。 为自己做毕业设计打好基础。(8) 初步掌握开发一个小型实用系统的基本方法: 结合实际应用的要求, 使课程设计既覆盖知识点, 又接近工程实际需要。 通过激发学习兴趣, 调动 自己主动学习的积极性, 并根据实际编程要求, 训练自己实际分析问题的能 力及编程能力,并养成良好的编程习惯。(9) 培养自己的创新能力和创新思维。可以根据指导书和相关文献上的参 考算法,自己设计出相应的应用程序。( 1 0 )培养自己良好的程序设计风格。在实际编程中,为了提高编程质量, 对空行、空格和注释均有要求。 自己在课程设计书写代码时, 应该严格按要求处 理,以便建立良好的程序
4、设计风格。二 . 设计内容每个教师的信息为: 教师号、姓名、性别、单位名称、家庭住址、 联系电话、 基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生 费、公积金、合计扣款、实发工资。注:应发工资 =基本工资 +津贴+生活补贴; 合计扣款 =电话费+水电费 +房租+所得税 +卫生费 +公积金;实发工资 =应发工资 合计扣款。1、教师信息处理(1) 输入教师信息(2) 插入(修改)教师信息:(3) 删除教师信息:(4) 浏览教师信息: 提示:具体功能及操作参考题 1。2、教师数据处理(1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、 卫生费、公积
5、金等基本数据。(2) 教师实发工资、应发工资、合计扣款计算。 提示:计算规则如题目。(3) 教师数据管理 提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4) 教师数据查询: 提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。(5) 教师综合信息输出 提示:输出教师信息到屏幕。三概要设计1.功能模块图主界面选择操作1输入教师信息2插入教师信息教师工资管理系统3修改教师信息4删除教师信息5浏览教师信息6系统信息7退出系统图1教师工资系统功能模块图2.各个模块详细的功能描述。(1) 输入教师信息模块在主菜单中运用结构体 teacher ,输入教师信息,首先建立链表
6、,将用户输 入的学生信息存储到链表中, 输入完成后提示用户时候继续输入, 如果用户输入“Y'或“ y”,则再次调用,实现继续输入学生信息的操作。如果用户输入“N或“n”,则返回主菜单界面。(2) 插入教师信息模块在主菜单中调用 teacher *insert() ,然后按照提示依次输入教师信息,然 后再调用 void print ()函数讲所有的教师信息记录打印出来。然后再返回主 菜单界面。(3) 修改教师信息模块在主菜单中调用 void edit() 函数。按教师号查找教师信息,如果找到教师 信息,调用 void edit() 函数提示用户输入新的教师信息,完成修改的操作。操 作结束
7、后提示用户修改成功。然后返回主菜单界面。(4) 删除教师信息模块在主菜单中调用 del() 函数,以删除教师信息,首先按学号查询教师信息, 如果没有找到教师信息, 给出提示信息。 如果查找到该教师信息, 给出改教师的 全部信息,如果查找到,则删除该教师信息,给出删除成功的提示信息。然后返 回主菜单界面。(5) 浏览教师信息模块在主菜单中调用 void print() 函数来显示教师信息,先判断链表是否为空。 如果链表不为空时,逐条显示链表中教师的信息,显示调用 teacher *next() 函 数按照教师号的大小来显示教师的信息。然后返回主菜单界面。(6) 系统信息模块在主菜单中输入 6,可
8、知系统信息、版本。(7) 退出系统模块将链表中的数据全部释放掉,防止内存泄露。退出系统。四详细设计1、输入记录模块输入教师信息的流程图如下图。首先要开辟一个新节点,并使p1,p2指向它c读入一个教师数据给pl所指的节点。此时要使head=NULLn=0,并且p1->num!=O具体流程图如图:2、插入记录模块插入记录模块具体流程图如下图所示:fP仁head , pO=teacher原来的链表是空表_一 一一一否将pO所指的结 点作为.唯一的 结点当p0->num>p1->num以及pl所指的不是表尾结点P2指向pl位置P1向后移一个结点P0-> num<=p
9、1-> num真假指向头结点十head=pOp2->n ext=pOpO->n ext=p1pO->n ext=p1p1- >n ext=pOpO-> next=NULL3、删除记录模块(具体流程图如图所示)4、函数功能描述(1) 保存数据函数save()函数原型:void save()功能描述:将链表teacher中的N个数据写入到磁盘文件teacher_list 中,如 果保存成功,则给出提示保存成功,否则返回“ cannot ofen file ”表示无法打 开文件,返回“ file write error ”表示文件输入错误。(2) 浏览教师信息函数
10、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,如果找到,则让用户再次输入教师的具体信息, 输入完毕跳出
11、,转向主菜单界面。如果没有找到,则令p=p->next。直到查询完所有的教师记录。函数流程图如图5.3所示五测试数据及运行结果1.系统主界面用户刚进入系统时,如图1、2所示。主菜单界面:图1目嘗4息息息 _烂_11亠一匚丄一匚 帅师师斥师息统 入入改际肝盏出12 3 4 5 6 7图22.输入界面用户在主菜单界面的时候输入1,显示如图:i jiaQshiQ3Detug jiaostiiOS, e&e便斥教师工贸管理習4息息S心 言*_£-_11占匚丄一匚 帅师岬师师息统 載敎敎数教佶系 人入改除用究岀 +.iR12 3 4 5 6-7图2依次给出需要输入的信息的,教师号
12、、姓名、性别、单位名称、家庭住址、联系 电话、基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、 公积金等。当公积金输入完成,系统将给出提示是否想继续输入教师信息,显示如图at牛*千*牛丄午丄卞*午+牛丄千牛亠+4-琴-|-下-4-45- 请荫睛土1怡请请请请请士llaleln泪iuanF 话资阳贴:3:2爾得S3;2广 tr:l:rl鑫电 A:1;:1所费金 養性里乘#基WW奮个卫公一CITI&00 2 n bl rn 0 0 - - tlv£2 5 M 0 .、E0 o : Q Q fl QT息息ffl师师橐 毂数信系 窈除易出 3 4 5 6 7蜒蓄WM餐
13、n如果输入丫或者y,则继续输入教师信息;如果输入 N或者n,则返回到主菜单 界面。显示如下图:3. 输出教师信息界面如果已经输入教师信息,再在主菜单选择 4浏览教师信息,结果如图:症黑鍍:*葩返回上级荽单«-h, j Jt 3ME1C JC H H JC BE JCH It JU bC H Jt TT r J j- jf Jt *t ? T*L H J& H HL H J!L It TIHni J*C 汛 Tt UK It TT H H 错输人你想要的操般1保存的信息如下 单柱宅林 河南城建兰尿lincj个人所得税水电费3S9.8203.0 曲占 lHUD.td1903. S
14、房租1500.0G0B.O1000P2SO.0注洁补站500.0家连住址 卑顶lLi勘城区 vinqrdirq-shan 卫主费250.3380.3 应发工资 3泗他 日5翻価公积会300.0222.0实发工资1阪0 1278.0联系电话666E66合计扣款2222.0按丁任意犍返回主菜单-4. 插入教师信息界面在主菜单中进入2插入教师信息,然后依次插入教师的所有信息,最后打印 链表里的记录,如图:息-思忌2恵.崔4H.I 要入 你要 人人 揃输请请h D S 2 6 M 0 兑00妄2 OW a - Q O 0.- 7 ' o B ;0onan肆话资跑贴:1江00得:2;3 一 口
15、灯:rlu 电工-生咫 一聲性里乘WitHH电爪馬个卫公入 一入入人入入入人入入入人人入入人-"KJ j "uH、Hf1J- 4 44 «- 44 F V 44 Ts up 一 i. 六调试情况,设计技巧及体会 持续一个学期的课程设计给了我太多的感触, 开始从题目上看, 感觉题目很 大,设计量很大,也很复杂,感觉不是简单的就能解决的。这样只用重新拾起书 继续来看,获得新的知识和巩固以前的C方面的知识。提升自己的能力。整个程序的设计是分模块实现具体的功能,每个模块分别由不同的函数构 成。链表的建立实现输入信息的功能, 相比较于数组更加方便, 更能够节省内存 空间等。
16、通过使用文件fread和fwrite函数方便的将数据信息写入文件以及将文 件中的信息载入显示段。通过这个学期的课程设计的练习与设计我学会了很多,也更加熟悉C语言程序设计,从中得到了很多乐趣,很快乐,感觉C语言的世界里面奇妙无比。虽然在途中也遇到很多的苦难, 但是还是通过问同学和学长解决了。 最后看到自己设 计的程序能够运行起来特别的开心。这次的程序设计很有意义,也很锻炼人的能力,特别是C语言方面的能力,为自己在C+语言方面打下基础。附录 源代码#include<iostream>#include<fstream>#include<stdlib.h>#incl
17、ude<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;/ int nu
18、m;名字;/ 工号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(time&
19、lt;=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 << &q
20、uot;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 << " 请选择你要录入教师的个数: &q
21、uot;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 << " " <&
22、lt; ti.time << endl; outfile.close();void wenjianluru()/ 文件录入int c;for (i = 0; i+)show();cin >> c;if (c = 4)cout << " 退出录入成功。 " << endl; system("cls");break; elseswitch (c)case 1: jiaoshiluru(); break;case 2:Leaderluru();break;case 3:jianzhiluru(); break;d
23、efault: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 jintie1;jintie1=ti.time
24、*30;m = ti.wage + jintie1;')<<setw(10)<< <<setfill('')<<setw(14)<<jintie1<<setfill('cout << "t 教 师 : " <<setw(8)<< ti.num <<setfill(' ')<<setw(10)<<ti.wage<<setfill('')<
25、<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 >> >> xi.wage >> xi.butie;
26、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<<setfill('')<<setw(14)
27、<<xi.jintie<<setfill('')<<setw(12)<<xi.butie<<setfill(' ')<<setw(10)<< m<< endl;infile.close();void shuchu()/ 输出显示cout <<"tt 工号 名字 基本工资 课时津贴 补贴 总工资 " << endl;jiaoshishuchu();leadershuchu(); jianzhishuchu();void sho
28、w3()cout << "t 请输入你要查询的对象: " << endl;cout << "tt 1 :教师查询 " << endl;cout << "tt 4 :退出查询 " << endl;cout << " 请选择一个操作: "void jiaoshichaxun()ifstream infile(" string nam; int num; int m, n,x;教师.txt", ios:in);cout
29、<<"tt1.按教师的姓名查找 ntt2. 按教师的工号查找 "cout<<"nttcin>>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 (t
30、=nam) n+;m = ti.wage + (ti.time - 24) * 30;coutcout<<"tt 工号 << "t 教师:姓名" <<" "<<ti.num<<m<< endl;工资 "<<endl;<<<< <<if (n =0)cout << " 没有你要查询的教师。 " << endl;infile.close();break
31、;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+;姓名工资 "<<endl;m = ti.wage + (ti.time - 24) * 30; cout<<"tt 工号cout<<
32、 "t 教师:" <<" "<<ti.num<<<< <<<<m<< endl;if (n =0)cout << " 没有你要查询的教师。 " << endl;infile.close();break;default:cout<<" 操作选择错误 !"<<endl;break;void wenjianchaxun()/ 文件查询int c;for (i = 0; i+)
33、show3();cin >> 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()cou
34、t << "t 请输入你要修改的对象: " << endl; cout << "tt 1 :教师修改 " << endl;cout << "tt 2 :教师兼职领导修改 " << endl; cout << "tt 3 :退出修改 " << endl;cout << " 请选择一个操作: "void jiaoshixiugai()/ 教师修改ifstream infile("教师
35、 .txt", ios:in);string nam;int n, n1, m1 = 0;cout << " 请输入你要修改教师的名字: "cin >> nam;cout << " 请输入你要修改的课时: "cin >> n;for (i = 0; i < 100; i+) infile >> ti.num >> >> ti.wage >> ti.time;if (ti.num = 0)break;m1+;if (
36、 =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 << endl; outfile.clo
37、se();void xiugai()/ 修改int c;for (i = 0; i+) show5(); cin >> c;if (c = 3) cout << "ttt 退出修改成功。 " << endl; system("cls");break; elseswitch (c) case 1: jiaoshixiugai(); break;case 2: janzhi2xiugai(); break;default: cout << "上一次输入错误。 " << endl;
38、break;void show6()cout << "t请选择如下操作: " << endl;cout << "t1:教师删除 " << endl;cout << "t2:领导删除 " << endl;cout << "t3:教师兼职领导删除 " << endl;cout << "t4:退出删除 " << endl;cout << "请选择你的一个操作:v
39、oid jiaoshidel()/教师删除ifstream infile(" string nam;教师.txt", ios:in);int num; int n,x;cout<<"tt1.按教师的姓名删除 ntt2. 按教师的工号删除 "cout<<"nttcin>>x;请选择 "switch(x)case 1:cout<<"tt请输入要删除的教师的姓名:cin>>nam;for (i = 0, n = 0; i < 100; i+) infile >
40、> ti.num >> >> ti.wage >> ti.time; if (ti.num = 0)break;if (=nam) n+;ti.num=0;break; if (n =0)cout << " 没有你要删除的教师。 " << endl;elsecout<<" 删除成功 !"<<endl;infile.close();break;case 2:cout<<"tt 请输入要删除的教师的工号: "
41、 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+;ti.num=0;break;if (n =0)cout << " 没有你要删除的教师。 " << endl; elsecout<<" 删除成功 "<<endl; infile.c
42、lose();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 << "
43、 " << ti.time << endl; outfile.close();void show_sort()cout << " 请选择如下操作: " << endl;cout << "tt 1 :教师排序 " << endl;cout << "tt 2 :教师兼职领导排序 " << endl;cout << "tt 3 :退出排序 " << endl;cout << &qu
44、ot; 请选择你的一个操作: "void jiaoshi_sort() / 教师排序ifstream infile("教师 .txt", ios:in);int m100;for (i = 0; i < 100; i+) infile >> 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 =
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大同市中医院介入治疗在肛肠科应用考核
- 保定市人民医院治疗前图像配准kVCBCT操作考核评分表
- 黑河市人民医院护理部新员工培训考核
- 邢台市人民医院鼻内镜检查操作资格认证
- 2025年中国水性聚氨酯项目投资计划书
- 中国芍药苷项目创业计划书
- 汕尾泡沫塑料项目可行性研究报告
- 2025年绍兴钻探钻具项目可行性研究报告
- 中国燃气调压设备行业市场前景预测及投资价值评估分析报告
- 中国甲基丙烯酸甲酯项目创业计划书
- 2025年二手车行业二手车电商平台发展与市场前景研究报告
- 骨盆矫正课件
- 智慧养老APP创新创业项目商业计划书
- 2025至2030中国航空运动行业产业运行态势及投资规划深度研究报告
- (正式版)DB33∕T 1431-2025 《公路固化土路基施工规范》
- 社会科学研究方法 课件 第7-12章 调查研究-撰写研究报告
- 结直肠癌课件
- 消毒技术中级考试题库及答案
- 盆腔包虫CT课件
- 民兵交通运输知识培训课件
- GB/T 46014-2025家具用实木复合板通用技术条件
评论
0/150
提交评论