1、 -
课程设计 教师工资管理系统
运行平台:VC6.0〔其他平台未经测试,不一定保证有效〕
制 弓箭 中南大学 信息科学与工程学院
源代码如下:
#include
2、er) struct teacher { int num; char name[20]; char sex[20]; char workplace[50]; char address[50]; long phone; double de_salary; double de_jintie; double de_shenghuobutie; double yingfa_salary; double cost_phone; double cost_water_elec; double cost_rent; double cost_ta
3、x; double cost_weisheng; double cost_gongjijin; double cost_all; double shifa_salary; struct teacher *next; }; /***********************************读取函数************************************/ struct teacher *load() { struct teacher *p1,*p2,*head; FILE *fp; int i=1; if((fp=fo
4、pen("save","rb"))==NULL) { printf(" 文件不存在!按下任意键返回主菜单...");getch(); return (NULL); } else { head=NULL; p1=(struct teacher *)malloc(LEN); while (fread(p1,LEN-4,1,fp)==1) { if(i==1) { head=p1; p2=p1; i=2; } else { p2->next=p
5、1; p2=p2->next; } p1=(struct teacher *)malloc(LEN); } p2->next=NULL; free(p1); fclose(fp); return(head); } } /**********************************欢送菜单函数*************************************/ void wele() { printf("\n\n\n >>>>>欢送使用教师工资管理系统Beta1.2<
6、<<<<\n"); printf(" *******************************************************\n"); printf(" * C语言课程设计 教师工资管理系统 *\n"); printf(" * 班级: 电气信息类1001班 学号:0909100119 *\n"); printf(" * XX:弓箭
7、 *\n"); printf(" *******************************************************\n"); printf("\n\n 按下任意键进入系统..."); getch(); system("cls"); } /**********************************制作人员*************************************/ void list() { system("cls")
8、 printf("\n\n\n >>>>>所有 侵权必究<<<<<\n"); printf("*******************************************************************************\n"); printf("* 学校(College): 中南大学 Central South University *\n"); printf("* 软件名称(Software): 教师工资管理系统 Teacher'
9、s Salary Managing System *\n"); printf("* 版本号(Edition): Beta1.2 *\n"); printf("* 制作人(Producer): 弓箭 James *\n"); printf("* 所在班级(Class): 电气信息类1001班 Electric Information 1001 *\n");
10、 printf("* 所在学院(Institute):信息科学与工程学院 Information Engineering Institute*\n"); printf("*******************************************************************************\n"); printf(" >>>>>ILLEGAL COPY BANNED<<<<<\n"); printf("\n\n 按下任意键返回主菜
11、单..."); getch(); } /***********************************菜单函数*****************************************/ int menu() { int i; printf("\n\n\n >>>>>欢送使用教师工资管理系统Beta1.2<<<<<\n"); printf(" *******************************************************\n"); printf("
12、 * 1.输入教师信息 *\n"); printf(" * 2.插入教师信息 *\n"); printf(" * 3.修改教师信息 *\n"); printf(" * 4.删除教师信息 *\n"); p
13、rintf(" * 5.浏览教师信息 *\n"); printf(" * 6.显示制作人员 *\n"); printf(" * 7.退出系统 *\n"); printf(" ************************************************
14、\n"); printf(" 请输入你想要的操作:"); scanf("%d",&i);getchar(); return i; } /***********************************插入函数*****************************************/ void input() { struct teacher *head,*p1,*p2,*p3,*px; int i,t; FILE *fp; char k,n='n',num[30],name[20]; p1=p2=p3
15、px=(struct teacher *)malloc(LEN); if((head=load())!=NULL) { do { n='n'; printf(" 请输入要插入的教师信息:\n"); printf(" ------------------------------\n"); printf(" 请输入教工号:");gets(num);px->num=atoi(num); printf(" 请输入XX:");gets(px->na
16、me); printf(" 请输入性别:");gets(px->sex); printf(" 请输入单位名称:");gets(px->workplace); printf(" 请输入家庭住址:");gets(px->address); printf(" 请输入联系:");gets(num);px->phone=atoi(num); printf(" 请输入根本工资:");gets(num);px->de_salary=atof(num)
17、 printf(" 请输入津贴:");gets(num);px->de_jintie=atof(num); printf(" 请输入生活补贴:");gets(num);px->de_shenghuobutie=atof(num); printf(" 请输入费:");gets(num);px->cost_phone=atof(num); printf(" 请输入水电费:");gets(num);px->cost_water_elec=atof(num); pr
18、intf(" 请输入房租:");gets(num);px->cost_rent=atof(num); printf(" 请输入个人所得税:");gets(num);px->cost_tax=atof(num); printf(" 请输入卫生费:");gets(num);px->cost_weisheng=atof(num); printf(" 请输入公积金:");gets(num);px->cost_gongjijin=atof(num); px->yingfa_sa
19、lary=px->de_salary+px->de_jintie+px->de_shenghuobutie; px->cost_all=px->cost_phone+px->cost_water_elec+px->cost_rent+px->cost_tax+px->cost_weisheng+px->cost_gongjijin; px->shifa_salary=px->yingfa_salary-px->cost_all; printf(" 数据输入完毕,按下任意键继续...");getch(); system("cls");
20、 printf("\n\n\n >>>>>>>>>>> 插入教师信息 <<<<<<<<<<<\n"); printf(" *******************************************************\n"); printf(" * 1.输入教师号 *\n"); printf(" * 2.输入XX
21、 *\n"); printf(" * 3.返回上级菜单 *\n"); printf(" *******************************************************\n"); printf(" 请选择插入式:"); scanf("%d",&i);getchar(); while (i<1||i>3) { printf("
22、 输入有误!请重新输入:"); scanf("%d",&i);getchar(); } switch(i) { case 1:printf(" 请输入要插入在哪条数据后面:"); scanf("%d",&t);getchar(); p1=head; while (p1->num!=t) { if (p1->next!=NULL) { p1=p1->next; } else { printf("
23、 查找不到相关数据!\n"); break; } } if (p1->num==t) { printf("-----------------------------要插入的信息如下:--------------------------------\n"); printf("教工号 XX 性别 单位名称 家庭住址 联系\n"); printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",px-
24、>num,px->name,px->sex,px->workplace,px->address,px->phone); printf("费 水电费 房租 个人所得税 卫生费 公积金 合计扣款\n"); printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",px->cost_phone,px->cost_water_elec,px->cost_rent,px->cost_tax,px->cost_weisheng,px->co
25、st_gongjijin,px->cost_all); printf("根本工资 津贴 生活补贴 应发工资 实发工资\n"); printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",px->de_salary,px->de_jintie,px->de_shenghuobutie,px->yingfa_salary,px->shifa_salary); printf("----------------------------------------
26、\n"); printf(" 确定插入吗?〔y或n〕:"); scanf("%c",&k);getchar(); } if (k=='y'||k=='Y') { if (p1->num==t) { if(p1==head)/*如果插入点为头指针*/ { p3=p1->next; p1->next=px; px->next=p3; p2=hea
27、d; } else if(p1->next==NULL)/*如果插入点为末尾指针*/ { p3=p1;p1=head;p2=head; while(p1->next!=p3) {p1=p1->next;} p1=p1->next; p1->next=px; px->next=NULL; } else{/*如果插入点为中间指针*/ p3=p1;p1=head;p2=head; whil
28、e(p1->next!=p3) {p1=p1->next;} p1=p1->next; p3=p1->next; px->next=p3; p1->next=px; } if((fp=fopen("save","wb"))==NULL) { printf(" 文件不存在!按下任意键返回主菜单...");getch(); } else { do { f
29、write(p2,LEN-4,1,fp); if(p2->next!=NULL) p2=p2->next; }while(p2->next!=NULL); if(p2!=head) fwrite(p2,LEN-4,1,fp); }fclose(fp); printf(" 插入成功!按下任意键继续...");getch(); } } else {printf(" 插入已被取消!按下任意键继续...");getch();}
30、 break; case 2:printf(" 请输入要插入的教师XX:"); gets(name); p1=head; while (strcmp((p1->name),name)!=0) { if (p1->next!=NULL) p1=p1->next; else { printf(" 查找不到相关数据!\n"); break; } } if (strcmp((p1->name),
31、name)==0) { printf("-----------------------------要插入的信息如下:--------------------------------\n"); printf("教工号 XX 性别 单位名称 家庭住址 联系\n"); printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone);
32、 printf("费 水电费 房租 个人所得税 卫生费 公积金 合计扣款\n"); printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf \n",p1->cost_phone,p1->cost_water_elec,p1->cost_rent,p1->cost_tax,p1->cost_weisheng,p1->cost_gongjijin,p1->cost_all); printf("根本工资 津贴
33、 生活补贴 应发工资 实发工资\n"); printf(" %-13.1lf %-13.1lf %-13.1lf %-13.1lf %-13.1lf\n",p1->de_salary,p1->de_jintie,p1->de_shenghuobutie,p1->yingfa_salary,p1->shifa_salary); printf("-------------------------------------------------------------------------------\n"); printf("
34、 确定插入吗?〔y或n〕:"); scanf("%c",&k);getchar(); } if (k=='y'||k=='Y') { if (strcmp((p1->name),name)==0) { if(p1==head)/*如果插入点为头指针*/ { p1->next=px; p2=head; } else if(p1->next==NULL)/*如果插入点为末尾指针*/ { p3=p1;p1=hea
35、d;p2=head; while(p1->next!=p3) {p1=p1->next;} p1=p1->next; p1->next=px; px->next=NULL; } else{/*如果插入点为中间指针*/ p3=p1;p1=head;p2=head; while(p1->next!=p3) {p1=p1->next;} p1=p1->next; p1->next=px;
36、 p3=p3->next; px->next=p3; } if((fp=fopen("save","wb"))==NULL) { printf(" 文件不存在!按下任意键返回主菜单...");getch(); } else { do { fwrite(p2,LEN-4,1,fp); if(p2->next!=NULL) p2=p2->next; }while(p2->n
37、ext!=NULL); if(p2!=head) fwrite(p2,LEN-4,1,fp); }fclose(fp); printf(" 插入成功!按下任意键继续...");getch(); } } else {printf(" 插入已被取消!按下任意键继续...");getch();} break; case 3:break; default :break; } if (i!=3) { printf("\n
38、 继续插入其他教师的信息吗?〔y或n〕"); scanf("%c",&n);getchar(); } }while((n=='y'||n=='Y')&&i!=3); } printf(" 数据插入成功!按下任意键返回主菜单...");getch(); getchar(); } /***********************************输入函数*****************************************/ void insert() { FILE *
39、fp; char m,num[30]; struct teacher *p1; p1=(struct teacher *)malloc(LEN); if((fp=fopen("save","ab"))==NULL) { printf(" 文件不存在!按下任意键返回主菜单...");getch(); } else { printf(" 请输入教师信息:\n"); do { printf(" ------------------------------\n");
40、 printf(" 请输入教工号:");gets(num);p1->num=atoi(num); printf(" 请输入XX:");gets(p1->name); printf(" 请输入性别:");gets(p1->sex); printf(" 请输入单位名称:");gets(p1->workplace); printf(" 请输入家庭住址:");gets(p1->address); printf("
41、 请输入联系:");gets(num);p1->phone=atoi(num); printf(" 请输入根本工资:");gets(num);p1->de_salary=atof(num); printf(" 请输入津贴:");gets(num);p1->de_jintie=atof(num); printf(" 请输入生活补贴:");gets(num);p1->de_shenghuobutie=atof(num); printf(" 请输入费:");gets(num
42、);p1->cost_phone=atof(num); printf(" 请输入水电费:");gets(num);p1->cost_water_elec=atof(num); printf(" 请输入房租:");gets(num);p1->cost_rent=atof(num); printf(" 请输入个人所得税:");gets(num);p1->cost_tax=atof(num); printf(" 请输入卫生费:");gets(num);p1->cost_we
43、isheng=atof(num); printf(" 请输入公积金:");gets(num);p1->cost_gongjijin=atof(num); p1->yingfa_salary=p1->de_salary+p1->de_jintie+p1->de_shenghuobutie; p1->cost_all=p1->cost_phone+p1->cost_water_elec+p1->cost_rent+p1->cost_tax+p1->cost_weisheng+p1->cost_gongjijin; p1->shifa_sala
44、ry=p1->yingfa_salary-p1->cost_all; fwrite(p1,LEN-4,1,fp); printf(" 输入下一个?〔y或n〕"); m=getchar(); if(m!='y'&&m!='Y') {printf(" 数据保存成功!按下任意键返回主菜单...");getch();} getchar(); }while (m=='y'||m=='Y'); } fclose(fp); } /****************************
45、修改函数*****************************************/ void modify() { struct teacher *head,*p1,*p2; int i; FILE *fp; char m='n',n='n',num2[30]; p1=head=(struct teacher *)malloc(LEN); if((head=load())!=NULL) { do { int num=0; char name[20]; p1=head; system("cls")
46、 printf("\n\n\n >>>>>>>>>>> 修改教师信息 <<<<<<<<<<<\n"); printf(" *******************************************************\n"); printf(" * 1.输入教师号 *\n"); printf(" * 2.输入XX
47、 *\n"); printf(" * 3.返回上级菜单 *\n"); printf(" *******************************************************\n"); printf(" 请选择修改式:"); scanf("%d",&i);getchar(); while (i<1||i>3) { printf("
48、 输入有误!请重新输入:"); scanf("%d",&i);getchar(); } switch(i) { case 1:printf(" 请输入要修改的教师号:"); scanf("%d",&num);getchar(); while (p1->num!=num) { if (p1->next!=NULL) p1=p1->next; else { printf(" 查找不到相关数据
49、\n"); break; } } if (p1->num==num) { system("cls"); printf("\n\n\n >>>>>欢送使用教师工资管理系统Beta1.2<<<<<\n"); printf("----------------------------------原信息如下:---------------------------------\n"); printf("教工号 XX 性别 单位名称
50、 家庭住址 联系\n"); printf(" %-4d %-13s %s %-19s %-19s%-14ld\n",p1->num,p1->name,p1->sex,p1->workplace,p1->address,p1->phone); printf("费 水电费 房租 个人所得税 卫生费 公积金 合计扣款\n"); printf(" %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf %-10.1lf\n",p






