教师工资管理系统课程设计报告(共17页).doc
精选优质文档-倾情为你奉上东莞理工学院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语句,分别实现其它各个函数的调用功能。其它各个函数的功能分别如下: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 name20,sex10,dw20,add20; 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 a4,b4,c4,i,j,k; /*定义ab两个数组存放数*/ char ch4; /*定义c存放运算符*/ FILE *fp1,*fp2; fp1=fopen("expres.txt","r"); /*打开expres文件*/ if(fp1=NULL)/*判断打开成功*/ printf("Can not open file expresn"); exit(1); for(i=0;i<=3;i+) fscanf(fp1,"%d%c%d",&ai,&chi,&bi);/*循环读入四道题*/ for(j=0;j<=3;j+) switch(chj)/*判断运算符*/ case '+':cj=aj+bj; break; case '-':cj=aj-bj; break; case '*':cj=aj*bj; break; case '/':cj=aj/bj; break; fp2=fopen("result.txt","w");/*打开文件result*/ if(fp2=NULL)/*判断打开文件是否成功*/ printf("Can not open file expresn"); exit(2); for(k=0;k<=3;k+)/*循环向文件中输入结果*/ fprintf(fp2,"%d%c%d=%dn",ak,chk,bk,ck); printf("succeed!n");专心-专注-专业