C语言程序设计课程设计报告设计题目:教师工资管理系统班级学号姓名指导教师起止时间 2010-10-26 至 2010-12-26设计任务该系统包含教师的基本信息,供读者查询。
建立一个文件,包括老师的信息,包括:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金等。
读者可以输入教师信息、插入教师信息、删除教师信息、浏览教师信息、查询教师信息和修改教师信息。
同时读者可以将之前录入的教师信息保存下来,然后关闭程序后,再次打开后只需加载教师信息就可以了。
更加方便以后程序。
评语(教师填写)目录设计任务 (2)评语(教师填写) (2)1.课程设计目的 (4)2.课程设计题目 (5)3.功能描述 (6)4.数据结构设计 (8)5.功能模块设计 (10)5.1主控模块设计 (10)5.2 输入记录模块 (11)5.3 插入记录模块 (11)5.4 删除记录模块 (12)6.函数功能描述 (13)6.1 保存数据函数save() (13)6.2 查询数据函数query() (13)6.1修改数据函数edit() (14)6.1 加载数据函数load() (15)7.运行结果 (15)7.1系统主界面 (15)7.2 输入教师信息界面 (16)7.3 输出教师信息界面 (18)7.4 插入教师信息界面 (19)7.5 保存和加载教师信息界面 (20)8.个人设计小结与心得体会 (21)参考文献 (22)1.课程设计目的本程序旨在训练基本编程能力,了解管理信息系统的开发流程,熟悉C 语言的文件和结构数组的各种基本操作。
本程序涉及结构体、数组、指针、文件等方面的知识。
通过本程序的训练,使读者能对C语言的文件操作有一个更深刻的了解,掌握利用数组存储结构实现教师工资管理系统,为进一步开发出高质量信息管理系统打下坚实的基础。
(1)巩固和加强《C语言程序设计》课程的理论知识。
(2)掌握C语言的基本概念、语法、语义和数据类型的使用特点。
(3)掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。
(4)进一步理解和运用结构化程设计的思想和方法;学会利用流程图表示算法。
(5)掌握调试程序的基本方法及上机操作方法。
(6)掌握书写程设计开发文档的能力,学会撰写课程设计总结报告。
课程设计的思想和方法还可以作为毕业论文时的参考资料。
(7)通过查阅手册和文献资料,培养自己独立分析问题和解决问题的能力。
为自己做毕业设计打好基础。
(8)初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使课程设计既覆盖知识点,又接近工程实际需要。
通过激发学习兴趣,调动自己主动学习的积极性,并根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。
(9)培养自己的创新能力和创新思维。
可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。
(10)培养自己良好的程序设计风格。
在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。
自己在课程设计书写代码时,应该严格按要求处理,以便建立良好的程序设计风格。
2.课程设计题目教师工资管理系统每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。
注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资-合计扣款。
A、教师信息处理(1) 输入教师信息(2) 插入(修改)教师信息:(3) 删除教师信息:(4) 浏览教师信息:提示:具体功能及操作参考题1。
B、教师数据处理:(1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。
(2) 教师实发工资、应发工资、合计扣款计算。
提示:计算规则如题目。
(3) 教师数据管理提示:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4) 教师数据查询:提示:输入教师号或其他信息,即读出所有数据信息,并显示出来。
(5) 教师综合信息输出提示:输出教师信息到屏幕。
3.功能描述根据需求描述,本人按照结构化程序设计的原则将整个系统划分若干个功能模块。
系统各子模块的设计如下:图1教师工资系统功能模块图(1)输入教师信息模块在主菜单中运用结构体teacher,输入教师信息,首先建立链表,将用户输入的学生信息存储到链表中,输入完成后提示用户时候继续输入,如果用户输入“Y”或“y”,则再次调用,实现继续输入学生信息的操作。
如果用户输入“N”或“n”,则返回主菜单界面。
(2)插入教师信息模块在主菜单中调用teacher *insert(),然后按照提示依次输入教师信息,然后再调用void print()函数讲所有的教师信息记录打印出来。
然后再返回主菜单界面。
(3)删除教师信息模块在主菜单中调用del()函数,以删除教师信息,首先按学号查询教师信息,如果没有找到教师信息,给出提示信息。
如果查找到该教师信息,给出改教师的全部信息,如果查找到,则删除该教师信息,给出删除成功的提示信息。
然后返回主菜单界面。
(4)浏览教师信息模块在主菜单中调用void print()函数来显示教师信息,先判断链表是否为空。
如果链表不为空时,逐条显示链表中教师的信息,显示调用teacher *next()函数按照教师号的大小来显示教师的信息。
然后返回主菜单界面。
(5)保存教师信息模块在主菜单中调用void save()函数来保存教师信息到teacher_list这个文件中。
并给出“保存成功”的提示信息。
然后返回主菜单界面。
(6)查询教师信息模块在主菜单中选择6的时候进行教师信息的查询,调用void query()函数,按教师号查询信息。
提示用户输入要查找的教师号,然后调用void query()函数,查找成功,最后打印出教师的信息。
然后返回主菜单界面。
(7)修改教师信息模块在主菜单中调用void edit()函数。
按教师号查找教师信息,如果找到教师信息,调用void edit()函数提示用户输入新的教师信息,完成修改的操作。
操作结束后提示用户修改成功。
然后返回主菜单界面。
(8)加载教师信息模块在主菜单中调用void load()函数。
如果存在teacher_list文件并不为空,打开文件,找到教师信息。
如果存在teacher_list文件并为空,给出提示,“cannot open file”。
然后返回主菜单界面。
(9)退出系统模块将链表中的数据全部释放掉,防止内存泄露。
退出系统。
4.数据结构设计本程序定义了结构体 teacher,主要用于存放图书的基本信息,如下所示:struct teacher{int num;char name[10];char sex[10];char unit[10];char address[10];long telnum;float salary_1;float allowance;float life_allow;float salary_2;float tel_fee;float water_fee;float rent;float tax;float health_fee;float grant;float total_fee;float actual_salary;struct teacher *next;};其中,各字段含义如下int num :教师号char name[10] :教师姓名char sex[10] :教师性别char unit[10] :教师单位char address[10] :教师住址long telnum :教师电话号码float salary_1 :基本工资float allowance :津贴float life_allow :生活补贴float salary_2 :应发工资float tel_fee :电话费float water_fee :水电费float rent :房租float tax :个人所得税float health_fee :卫生费float grant :公积金float total_fee :合计扣款float actual_salary :实发工资struct teacher *next :指向下一个节点的指针5.功能模块设计5.1主控模块设计主控函数的流程图如图1所示。
首先,调用void welcome()子函数和char mainmenu ()子函数显示欢迎界面和初始界面;再次,调用main() 函数并令ch=mainmenu(),在main()函数中,用switch语句实现该系统各功能,若ch=1,系统实现输入教师信息功能;若ch=2,系统实现插入教师信息功能;若ch=3,系统实现删除教师信息功能;若ch=4,系统实现浏览教师信息功能;若ch=5,系统实现保存教师信息功能;若ch=6,系统实现查询教师信息功能;若ch=7,系统实现修改教师信息功能;若ch=8,系统实现加载教师信息功能;若 ch=0,退出系统。
(对主控函数进行文字描述)5.2 输入记录模块他输入教师信息的流程图如下图。
首先要开辟一个新节点,并使p1,p2指向它。
读入一个教师数据给p1所指的节点。
此时要使head=NULL,n=0,并且p1->num!=0。
5.3 插入记录模块插入记录模块具体流程图如下图所示:5.4 删除记录模块(具体流程图如图所示)6.函数功能描述6.1 保存数据函数save()函数原型:void save()功能描述:将链表teacher中的N个数据写入到磁盘文件teacher_list中,如果保存成功,则给出提示保存成功,否则返回“cannot ofen file”表示无法打开文件,返回“file write error”表示文件输入错误。
6.2 查询教师信息函数query()函数原型:void query(struct teacher *p)功能描述:将链表teacher中的head指向p,然后让用户输入教师号no,依次在链表中需找p,如果教师号不对,则指针往后面拨动一下,使p=p->next;知道找到相对应的正确的教师号。
然后打印出教师的基本信息。
函数流程图如图5.2 所示图5.26.3 修改教师信息函数edit()函数原型:void edit(struct teacher *p)功能描述:首先让用户输入希望修改的教师的教师号a,然后在链表中一条一条查找看p->num是否等于a,如果找到,则让用户再次输入教师的具体信息,输入完毕跳出,转向主菜单界面。