教师工资管理系统课程设计报告.docx
《教师工资管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《教师工资管理系统课程设计报告.docx(18页珍藏版)》请在冰豆网上搜索。
教师工资管理系统课程设计报告
东莞理工学院
《C语言程序设计》课程设计报告
题目:
教师工资管理系统
专业:
工业工程1班(本)
年级:
2013级1班
小组成员:
129李惠敏113郭雁华
指导教师:
彭义春老师
时间:
2014年6月22日~6月26日
地点:
图书馆、E机房
东莞理工学院计算机学院制
2014年6月
1.课程设计目的
1)通过课程设计,加深对结构化设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2)通过课程设计,学会设计数据结构。
其中,包括对函数、结构数组、指针、链表和数据文件等知识的运用。
3)通过课程设计,训练C程序调试能力,能运用合理的控制流程编写清晰高效的程序。
4)通过课程设计,培养分析问题、思考问题和动手解决实际问题的能力。
2.课程设计内容
第10题:
教师工资管理系统
每个教师的信息为:
教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。
注:
应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资-合计扣款。
A、教师信息处理:
(1)输入教师信息
(2)插入(修改)教师信息:
(3)删除教师信息:
(4)浏览教师信息:
提示:
具体功能及操作参考题1。
B、教师数据处理:
(1)按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。
(2)教师实发工资、应发工资、合计扣款计算。
提示:
计算规则如题目。
(3)教师数据管理
提示:
输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件。
(4)教师数据查询:
提示:
输入教师号或其他信息,即读出所有数据信息,并显示出来。
(5)教师综合信息输出
提示:
输出教师信息到屏幕。
3.总体设计
(1)系统功能模块
图1系统功能模块图
(2)模块化设计
为实现系统功能,本程序主要分为七个模块。
它们分别为:
输入教师信息、新增教师信息、修改教师信息、删除教师信息、查找教师信息、分类教师信息和保存信息。
这七个函数再通过主函数调用分别得以实现。
主函数main,首先提供了程序运行时的友好界面,列出了清单,提供用户做出选择,以便决定使用主菜单的哪种功能。
然后,通过执行多分支选择语句—switch语句,分别实现其它各个函数的调用功能。
其它各个函数的功能分别如下:
Voidmenu():
用于打印出主菜单选项;
PAY*input():
用于对教师个人信息中数据的输入;
PAY*insert():
用于新增教师个人信息;
PAY*revise():
用于对教师个人信息的修改。
PAY*del():
用于对教师个人信息的删除;
Voidsearch():
用于对教师个人信息的查找;
PAY*open():
用于打开教师个人信息中的所有信息;
Voidoutput():
用于对教师个人信息中数据的输出;
Voidsave(PAY*head):
用于对教师个人信息中数据以文件的形式保存起来;
(3)模块接口设计
本程序中,大量地运用了链表,这样就使对教师个人信息的插入、删除和修改变得更为简便些。
本程序执行的入口是main函数,然后在main函数中首先调用了menu函数,这就实现了对教师信息中的数据的读入。
接下来在do-while语句中再套用switch语句实现对各个函数的调用。
最后,再从main函数中结束整个程序的运行。
4.详细设计
(1)数据结构设计
本程序中,运用了多种数据结构。
首先对于教师个人信息中各项详细信息的记录用了结构数组的形式,然后又运用链表动态地分配内存单元,在Input函数中,把保存在数组中的值再赋值给其中的一个结点,通过指针的后移,把多个数据连成一个链,形成一个链表。
在这过程当中,还运用了数据文件的方式,每一次从终端输入的数据都以数据文件的形式保存到了磁盘。
对于主要数据结构的举例如下:
结构数组:
typedefstructpay{
longnum,tel;
charname[20],sex[10],dw[20],add[20];
floatshould_pay,jbgz,jt,shbt;
floatkoukuan,rent,gj,sd,tel_fee,sds;
floatactual_pay;
structpay*next;
};
(2)流程图
主函数流程图:
图2.主函数流程图
PAY*input()函数流程图:
图3.教师信息输入函数流程图
PAY*Insert()函数流程图:
图4.教师信息插入函数流程图
VoidSearch()函数流程图:
图5.教师信息查询函数流程图
PAY*Del()函数流程图:
图6.教师信息删除函数流程图
PAY*Revise()函数流程图:
图7.教师信息修改函数流程图
5.调试与测试
(1)调试过程中的主要问题
由于本程序是分模块设计的,所以运行时选择完任务并且执行完任务后,又会继续回到用户选择界面,供用户继续选择任务并执行任务,整个程序以文件形式读写,所以每次都可对输入的数据进行保存。
但在调试修改、模块等其它的程序中,总是无法正确退出。
所以,总体上来说,在调试过程中还是有比较大的困难。
(2)测试结果的分析与讨论
①登录主界面:
㈠若账号输入正确:
㈡若账号输入不正确:
②创建工资信息:
㈠输入完成后按7存盘:
③新增工资信息:
④修改工资信息:
⑤删除工资信息:
㈠删除后存盘:
㈡再查找删除后的信息:
⑥查找工资信息:
⑦分类信息列表:
⑧保存信息:
⑨退出程序:
6.设计体会
通过为期五天的课程设计,我们对《C语言程序设计》这门课程有了更深一步的了解。
它是计算机程序设计的重要理论技术基础,在我们信息与计算科学专业的学习中占据着十分重要的地位。
同时,也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。
运用C语言中的算法思想作数据结构,结合C语言基本知识,编写一个教师工资管理系统。
通过完成本课题,进一步熟悉C语言的基本知识,并掌握数据结构的一些基本算法思想,掌握C语言的文件操作(包括从磁盘读入和向磁盘写入内容),进一步熟悉指针的用法,数组的建立运用和函数的调用等。
另外,在调试每一个模块中,有些模块是很棘手的。
但,我们经过不断地修改和调试,最终,我们还是克服了这些困难,顿时就觉得很开心,而且还有点小小的成就感。
原来,我们无论面对什么困难,只要不放弃,并且执著当初的目标,那么,我们总会成功的。
当然,对于这次的二人合作,我们觉得还不错。
分工比较明显,而且,我们也会时时刻刻地交流各自的想法。
虽然,我们两个在C语言方面不是最厉害的,但,我们至少很努力和很认真地完成课程设计。
所以,无论结果如何,我们都问心无愧了。
参考文献
3-5篇,格式如下:
[1]何钦铭,颜晖.C语言程序设计(第2版)[M].北京:
高等教育出版社.2012年3月.
[2]肖捷,陈雪芳.C/C语言程序设计实训教程与水平考试指导(第1版)[M].北京:
高等教育出版社.2012年3月.
[3]颜晖,柳俊.C语言程序设计实验与习题指导(第2版)[M].北京:
高等教育出版社.2012年3月.
附件:
程序清单
说明:
将代码贴在下表中,文字大小小五,英文采用TimeNewRoman,行间距1倍,段前段后0行,代码必须有足够的注释。
Calculator()/*简单计算器*/
{
inta[4],b[4],c[4],i,j,k;/*定义ab两个数组存放数*/
charch[4];/*定义c存放运算符*/
FILE*fp1,*fp2;
fp1=fopen("expres.txt","r");/*打开expres文件*/
if(fp1==NULL)/*判断打开成功*/
{
printf("Cannotopenfileexpres\n");
exit
(1);
}
for(i=0;i<=3;i++)
fscanf(fp1,"%d%c%d",&a[i],&ch[i],&b[i]);/*循环读入四道题*/
for(j=0;j<=3;j++)
{
switch(ch[j])/*判断运算符*/
{case'+':
c[j]=a[j]+b[j];break;
case'-':
c[j]=a[j]-b[j];break;
case'*':
c[j]=a[j]*b[j];break;
case'/':
c[j]=a[j]/b[j];break;
}
}
fp2=fopen("result.txt","w");/*打开文件result*/
if(fp2==NULL)/*判断打开文件是否成功*/
{
printf("Cannotopenfileexpres\n");
exit
(2);
}
for(k=0;k<=3;k++)/*循环向文件中输入结果*/
fprintf(fp2,"%d%c%d=%d\n",a[k],ch[k],b[k],c[k]);
printf("succeed!
\n");
}