此项目为BJFU2020级课程设计 供学弟学妹们参考
项目总体介绍:
一、总体介绍
1. 项目名称:高校教师工资管理系统2. 项目简介:
完成高等院校教师工资管理软件开发。教师的基本信息包括:工号、姓名、学院、职称,职称分为:教授、副教授、讲师、助教。教师的工资信息包括:工号、月份、基本工资、业绩津贴、扣除费用、应发工资、实发工资,不同职称教师的基本工资、业绩津贴、扣除费用不同。
二、具体要求
1. 系统功能要求
以菜单的方式完成以下功能。
高校教师工资管理系统
1
录入数据并保存
录入教师的基本信息
录入教师的工资信息
2
修改数据并保存
(难点)
根据工号修改某位教师的基本信息和工资信息
根据姓名修改某位教师的基本信息和工资信息
删除某一工号的教师的所有信息
3
查询显示
显示所有教师的基本信息(以工号为序)
根据月份显示所有教师当月工资信息(以工号为序)
根据工号查询某位教师某一月份的基本信息和工资信息
根据姓名查询某位教师某一月份的基本信息和工资信息
4
统计分析
根据月份,统计不同学院教师的平均应发工资和平均实发工资(以实发工资为序显示)
根据月份,统计不同职称教师的平均应发工资和平均实发工资(以应发工资为序显示)
5
退出
提示退出
2. 各项功能要求
(1)录入数据并保存
进入二级菜单:
- 录入教师基本信息:提示用户输入基本信息,并保存。注意要有查重,同一工号的教师不能出现两次。(查重是难点)
- 录入教师工资信息:显示所有教师基本信息。提示用户输入已有教师工号,然后提示输入月份等工资信息,并计算应发工资和实发工资后保存。注意要有查重,同一工号的教师不能出现两次。(判断是否为已有教师信息,查重是难点。)
- 修改数据并保存
进入二级菜单:
- 提示输入工号:显示该工号教师的所有信息。提示输入要修改的月份和信息,输入新数据后,保存数据,并替换掉旧数据。
- 提示输入姓名:显示所有该同名教师的所有信息。提示输入要修改的教师工号和月份,提示输入要修改的信息,输入新数据后,保存数据,并替换掉旧数据。
- 提示输入要删除的工号,两次确认后删除该工号教师的基本信息和工资数据,并更新数据文件。
(3)查询显示
进入二级菜单:
- 显示所有教师的基本信息,按照工号从小到大列表显示。
- 提示输入月份,显示当月所有教师的工资信息,按照工号从小到大列表显示。
- 提示输入工号和月份,显示该工号教师的基本信息和当月工资信息。
- 提示输入姓名和月份,显示所有同名教师的基本信息和当月工资信息。
(4)统计分析
进入二级菜单:
- 提示输入月份,根据月份,统计不同学院教师的平均应发工资和平均实发工资(以实发工资为序显示)。
- 提示输入月份,根据月份,统计不同职称教师的平均应发工资和平均实发工资(以应发工资为序显示)。
(5)退出
提示用户确实要退出?y/n
用户输入y后退出。
2. 程序设计要求
(1)要合理使用枚举(选)、结构体、结构体数组、结构体指针访问数组。
(2)逻辑独立的功能定义在函数中。
(3)要有合理提示,例如修改、删除需提示确认。
(4)考虑程序鲁棒性,对不合法数据要有错误处理机制。
(5)所有数据保存在文件中。
教师的相应结构体:
struct teacher
{
int number;//工号
char xy[10];//学院
char zc[10];//职称
int month;//月份
char name[10];
float salary;//基本工资
float allowance;//业绩津贴
float should;//应发工资
float due;//扣除费用
float total;
float actual;//实发工资
}tea[100],test[1];
typedef struct teacher1
{
int number;//工号
char xy[10];//学院
char zc[10];//职称
char name[10];
}tt1;
typedef struct teacher2
{
int month;//月份
float salary;//基本工资
float allowance;//业绩津贴
float should;//应发工资
float due;//扣除费用
float total;
float actual;//实发工资
}tt2;
相应函数:
void mainmenu();
void read_from_file();
void write_to_file();
void tea_new();
void searchmenu();
void show_all();
void search_id();
void search_name();
void deletemenu();
void delete_all();
void delete_single();
void delete_id();
void delete_name();
void change_id();
void analyze_menu();//统计分析
void analyze1();//xy统计分析
void analyze2();//zc统计分析
void search1();//按月份查询
void search2();//按工号和月份
void search3();//按姓名和月份查询
void change_menu();
void change_name();
void menu1();//添加菜单
void new1();
void new2();
void writeto();//将基本信息写到文件
void readto();//将基本信息读到文件
主菜单
void menu1()
{
char choic;
system("cls");
readto();
while (1)
{
printf("\n\t------录入菜单-------");
printf("\n\t------[1]录入基本信息--------");
printf("\n\t------[2]录入工资信息------");
printf("\n\t------[3]返回主菜单------");
printf("\n\t*****************************");
printf("\n\t请选择:\n");
int k;
scanf("%d", &k);
if (k==3)
{
break;
}
switch (k)
{
case 1:new1(); break;
case 2:new2(); break;
default:break;
}
}
}
分析菜单
void analyze_menu()
{
char choic;
system("cls");
printf("\n\t------统计分析菜单-------");
printf("\n\t------[1]按学院统计--------");
printf("\n\t------[2]按职称查询------");
printf("\n\t*****************************");
printf("\n\t请选择:\n");
choic = getch();
switch (choic)
{
case'1':analyze1(); break;
case'2':analyze2(); break;
default:break;
}
}
等有时间的再补充