搜索
您的当前位置:首页正文

教师工资管理系统课程设计报告

来源:知库网
东莞理工学院

《C语言程序设计》课程设计报告

题 目: 教师工资管理系统 专 业: 工业工程1班(本) 年 级: 2013级 1 班 小组成员: 129李惠敏113郭雁华 指导教师: 彭义春老师 时 间: 2014年6月22日~6月26日 地 点: 图书馆 、E机房

东莞理工学院计算机学院制

2014年 6 月

目 录

1. 课程设计目的 ................................................................................ 2 2. 课程设计内容 ................................................................................ 2 3. 总体设计 ........................................................................................ 2 4. 详细设计 ........................................................................................ 4 5. 调试与测试 .................................................................................... 8 6. 设计体会 ...................................................................................... 15 参考文献 ............................................................................................... 16 附件:程序清单 ................................................................................... 16

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语句,分别实现其它各个函数的调用功能。

其它各个函数的功能分别如下: Void menu():用于打印出主菜单选项;

PAY *input():用于对教师个人信息中数据的输入; PAY *insert():用于新增教师个人信息; PAY *revise():用于对教师个人信息的修改。 PAY *del():用于对教师个人信息的删除; Void search():用于对教师个人信息的查找; PAY *open():用于打开教师个人信息中的所有信息; Void output():用于对教师个人信息中数据的输出;

Void save(PAY *head):用于对教师个人信息中数据以文件的形式保存起来; (3) 模块接口设计

本程序中,大量地运用了链表,这样就使对教师个人信息的插入、删除和修改变得更为简便些。

本程序执行的入口是main函数,然后在main函数中首先调用了menu函数,这就实现了对教师信息中的数据的读入。接下来在do-while语句中再套用switch语句实现对各个函数的调用。最后,再从main函数中结束整个程序的运行。

4. 详细设计

(1) 数据结构设计

本程序中,运用了多种数据结构。首先对于教师个人信息中各项详细信息的记录用了结构数组的形式,然后又运用链表动态地分配内存单元,在Input函数中,把保存在数组中的值再赋值给其中的一个结点,通过指针的后移,把多个数据连成一个链,形成一个链表。在这过程当中,还运用了数据文件的方式,每一次从终端输入的数据都以数据文件的形式保存到了磁盘。

对于主要数据结构的举例如下: 结构数组:

typedef struct pay{ long num,tel;

char name[20],sex[10],dw[20],add[20]; float should_pay,jbgz,jt,shbt; float koukuan,rent,gj,sd,tel_fee,sds;

float actual_pay; struct pay *next; };

(2) 流程图

主函数流程图:

开始 显示一系列功能选项 否 输入sel,判断sel是否不等于0? 是 根据sel的值调用各功能模块函数 结束 图2. 主函数流程图

PAY *input()函数流程图:

通过主函数调用 是 判断链表是否为空? 否 逐一输入教师个人信息 通过n来累加输入的教师人数 结束

图3.教师信息输入函数流程图

PAY *Insert()函数流程图:

通过主函数调用 是 判断原链表是否为空? 否 逐一输入教师个人信息 新插入结点成为头结点 新插入结点成为尾结点 结束

图4.教师信息插入函数流程图

Void Search()函数流程图:

通过主函数调用 是 判断链表是否为空? 否 输入要查询的教师号 否 判断是否存在所输入的教师个人信息? 是 显示出所要查询的教师个人信息 结束

图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月.

附件:程序清单

说明:将代码贴在下表中,文字大小小五,英文采用Time New Roman,行间距1倍,段前段后0行,代码必须有足够的注释。

Calculator() /*简单计算器*/ { int a[4],b[4],c[4],i,j,k; /*定义ab两个数组存放数*/ char ch[4]; /*定义c存放运算符*/ FILE *fp1,*fp2; fp1=fopen(\"expres.txt\ /*打开expres文件*/ if(fp1==NULL) /*判断打开成功*/ { printf(\"Can not open file expres\\n\"); exit(1); } for(i=0;i<=3;i++) fscanf(fp1,\"%d%c%d\/*循环读入四道题*/ 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\ /*打开文件result*/ if(fp2==NULL) /*判断打开文件是否成功*/ { printf(\"Can not open file expres\\n\"); exit(2); } for(k=0;k<=3;k++) /*循环向文件中输入结果*/ fprintf(fp2,\"%d%c%d=%d\\n\ printf(\"succeed!\\n\"); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top