c语言教师工资管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言程序设计
课程设计报告设计题目:教师工资管理系统
班级
学号
姓名
指导教师
起止时间2021-10-26 至2021-12-26
设计任务
该系统包含教师的根本信息,供读者查询。

建立一个文件,包括老师的信息,包括:教师号、姓名、性别、单位名称、家庭住址、联系、根本工资、津贴、生活补贴、应发工资、费、水电费、房租、所得税、卫生费、公积金等。

读者可以输入教师信息、插入教师信息、删除教师信息、浏览教师信息、查询教师信息和修改教师信息。

同时读者可以将之前录入的教师信息保存下来,然后关闭程序后,再次翻开后只需加载教师信息就可以了。

更加方便以后程序。

评语(教师填写)
目录
设计任务 (2)
评语(教师填写) (2)
1.课程设计目的 (4)
(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.运行结果 (112)
7.1系统主界面 (112)
7.2 输入教师信息界面 (16)
7.3 输出教师信息界面 (18)
7.4 插入教师信息界面 (19)
7.5 保存和加载教师信息界面 (20)
8.个人设计小结与心得体会 (21)
参考文献 (22)
本程序旨在训练根本编程能力,了解管理信息系统的开发流程,熟悉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 所示
6.3 修改教师信息函数edit()
函数原型:void edit(struct teacher *p)
功能描述:首先让用户输入希望修改的教师的教师号a,然后在链表中一条一条查找看p->num是否等于a,如果找到,那么让用户再次输入教师的具体信息,输入完毕跳出,转向主菜单界面。

如果没有找到,那么令p=p->next。

直到查询完所有的教师记录。

函数流程图如图5.3 所示
6.4 加载教师信息函数load()
函数原型:void load()
功能描述:首先进行判定“"teacher_list〞是否为空,如果为空,给出提示,然后将p1,p2定义为动态的存储教师的记录,并将p1定义为头结点,然后依次一条一条的读出。

局部代码如下:
p1=p2=(struct teacher *)malloc(LEN);
head=p1;
fread(&n,sizeof(n),1,fp);
do
{
if(fread(p1,sizeof(struct teacher),1,fp)!=1)
{
printf("file error\n");
goto end;
}
if(p1->next!=NULL)
{
p2=p1;
p1=(struct teacher *)malloc(LEN);
p2->next=p1;
}
else break;
}while(1);
7.运行结果
7.1系统主界面
用户刚进入系统时,如下图。

主菜单界面:
图6.1 用户根据自己的需求输入自己的选择。

7.2输入界面
用户在主菜单界面的时候输入1,显示:
依次给出需要输入的信息的,教师号、姓名、性别、单位名称、家庭住址、联系、根本工资、津贴、生活补贴、费、水电费、房租、所得税、卫生费、公积金等。

当公积金输入完成,系统将给出提示是否想继续输入教师信息,显示如图6
如果输入Y或者y,那么继续输入教师信息;如果输入N或者n,那么返回到主菜单界面。

显示如下列图:
7.3输出教师信息界面
如果已经输入教师信息,再在主菜单项选择择4——浏览教师信息,结果如图:
7.4插入教师信息界面
在主菜单中进入2——插入教师信息,然后依次插入教师的所有信息,最后打印链表里
的记录,如图:
7.5保存和加载教师信息界面
首先将之前输入进去的教师信息进行保存,然后退出系统,再翻开系统,将之前的教师信息数据全部加载过来。

然后浏览教师数据。

如下图:
然后退出系统,再翻开系统,加载教师数据。

如图:
浏览教师数据,检验是否教师数据加载成功。

如图:
加载成功。

8.个人设计小结与心得体会
持续一个学期的课程设计给了我太多的感触,开始从题目上看,感觉题目很大,设计量很大,也很复杂,感觉不是简单的就能解决的。

这样只用重新拾起书继续来看,获得新的知识和稳固以前的C方面的知识。

提升自己的能力。

整个程序的设计是分模块实现具体的功能,每个模块分别由不同的函数构成。

链表的建立实现输入信息的功能,相比拟于数组更加方便,更能够节省内存空间等。

通过使用文件fread和fwrite函数方便的将数据信息写入文件以及将文件中的信息载入显示段。

通过这个学期的课程设计的练习与设计我学会了很多,也更加熟悉C语言程序设计,从中得到了很多乐趣,很快乐,感觉C语言的世界里面奇妙无比。

虽然在途中也遇到很多的苦难,但是还是通过问同学和学长解决了。

最后看到自己设计的程序能够运行起来特别的开心。

这次的程序设计很有意义,也很锻炼人的能力,特别是C语言方面的能力,为自己在C语言方面打下根底。

参考文献
【1】C语言课程设计〔第2版〕,梁旭、谷晓琳、黄明等,电子工业出版社,2021.
【2】C语言大学实用教程(第2版) ,苏小红、陈惠鹏、孙志岗等,电子工业出版社,2007.
附件1 程序源代码
源代码见电子档。

相关文档
最新文档