C语言教师工资管理系统实验报告_第1页
C语言教师工资管理系统实验报告_第2页
C语言教师工资管理系统实验报告_第3页
C语言教师工资管理系统实验报告_第4页
C语言教师工资管理系统实验报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、安徽工业大学C程序设计课题名称:教师工资管理系统姓 名:汤忠道学 号:109074370班 级:网络工程103班学 院:计算机学院指导老师:郑啸实习成员:姓名学号贡献率(%)e-mail组长汤忠道109074370501018402700成员梁智睿10907436450510622709课程题目:教师工资管理系统每个教师的信息为:教师号、姓名、性别、单位名称、家庭住址、联系电话、基本工资、津贴、生活补贴、应发工资、电话费、水电费、房租、所得税、卫生费、公积金、合计扣款、实发工资。注:应发工资=基本工资+津贴+生活补贴;合计扣款=电话费+水电费+房租+所得税+卫生费+公积金;实发工资=应发工资

2、合计扣款。A、教师信息处理(1) 输入教师信息(2) 插入(修改)教师信息:(3) 删除教师信息:(4) 浏览教师信息:B、教师数据处理:(1) 按教师号录入教师基本工资、津贴、生活补贴、电话费、水电费、房租、所得税、卫生费、公积金等基本数据。(2) 教师实发工资、应发工资、合计扣款计算。(3) 教师数据管理:输入教师号,读出并显示该教师信息,输入新数据,将改后信息写入文件(4) 教师数据查询:输入教师号或其他信息,即读出所有数据信息,并显示出来。(5) 教师综合信息输出:输出教师信息到屏幕。一、程序设计组成框图:教师信息教师信息输入输出教师名教师号计算教师实发工资存入修改教师信息删除教师信息

3、输入教师号存入文件删除二、详细设计:各人负责模块:汤忠道:一、定义相关函数:(1) main():主函数,控制整个程序的运行。(2) menu():选单函数,显示菜单并接受选择。(3) browse():浏览函数,将链表中各结点的数据一次输出。(4) insert():插入函数,向链表中插入新结点,并使链表的各结点按教师号升序排列。(5) search():查找函数,在链表中按姓名或按教师号进行查找。(6) deletel():删除函数,在链表按教师号、姓名或序号删除结点。(7) scorein():工资录入函数,一次给链表中各结点的数据录入工资。(8) change():修改函数,对链表中指

4、定结点的数据进行修改。(9) load():读入函数,从文件中将工资情况导入到链表。(10) save():保存函数,将链表中工资情况导入到文件。二、main():主函数,控制整个程序的运行。三、menu():选单函数,显示菜单并接受选择。四、browse():浏览函数,将链表中各结点的数据一次输出。开始p=headp=p->nextP!=NULL输出教师信息结束五、insert():插入函数,向链表中插入新结点,并使链表的各结点按教师号升序排列。开始p=headp=p->next输入教师信息继续输入?结束NY六、search():查找函数,在链表中按姓名或按教师号进行查找。开始输

5、入xz继续输入?输入教师号01输入教师名输出教师信息梁智睿:一、deletel():删除函数,在链表按教师号、姓名或序号删除结点。二、scorein():工资录入函数,一次给链表中各结点的数据录入工资。三、change():修改函数,对链表中指定结点的数据进行修改。四、load():读入函数,从文件中将工资情况导入到链表。五、save():保存函数,将链表中工资情况导入到文件。三、调试与测试:对自己设计的程序进行调试:测试数据:教师名:汤忠道 教师号:109074370 性别:男工作单位:安工大 家庭住址:安工大 联系电话本工资:4000 津贴:200 生活补贴:20

6、0 电话费:200 水电费:200 房租:700 所得税:10 卫生费:20 公积金:20设置节点对函数进行调试MenuBrowseInsertSearch四、用户手册:使用说明:运行程序,根据提示进行选择和输入:1. 浏览教师工资信息2. 插入教师信息3. 查询教师信息4. 删除教师记录5. 教师工资信息录入6. 修改教师信息7. 从文件中将工资情况导入到链表8. 将链表中工资情况保存到文件9. 系统初始化0. 退出教师工资管理系统在退出时需保存数据:8. 将链表中工资情况保存到文件(可定义任意文件名进行储存)文件中的信息在下次打开时需手动调用:7. 从文件中将工资情况导入到链表五、附录:源

7、程序:#include<stdio.h>#include<string.h>#include<stdlib.h>typedef struct st char num10,name9,sex10,bclass20,address20,phono11; / 教师号、姓名、性别、单位名称、家庭住址、联系电话 float score1,score2,score3,score4,score5; / 基本工资、津贴、生活补贴、应发工资、电话费、 float score6,score7,score8,score9,score10,score11,score; / 水电费、

8、房租、所得税、卫生费、公积金、合计扣款、实发工资 struct st*next;stud;char menu(); /选单stud*load(); /导入 stud*search(stud*,int*); /查询void save(stud*); /导出void scorein(stud*); /工资录入void insert(stud*); /插入void deletel(stud*); /删除void change(stud*); /修改void browse(stud*); /浏览/*void main () char choice,c;int i;stud*head,*p;head=(

9、stud*)malloc(sizeof(stud); /准备好表头head->next=NULL; while(1) choice=menu();switch(choice) case'1':printf("浏览教师工资信息。n"); browse(head);getchar();break; case'2':printf("插入教师信息。n"); insert(head);break; case'3':printf("查询教师信息。n"); p=search(head,&

10、i); if(p!=NULL) printf("%2d,%10s %10s %10s %10s %10s %10sn",i,p->num,p->name,p->sex,p->bclass,p->address,p->phono); printf("应发工资:%5.1f 合计扣款:%5.1f 实发工资:%5.1fn",p->score4,p->score11,p->score); else printf("未找到!");break;case'4':printf(&qu

11、ot;删除教师记录n"); deletel(head);break; case'5':printf("教师工资信息录入n"); scorein(head);break; case'6':printf("修改教师信息n"); change(head);break; case'7':printf("从文件中将工资情况导入到链表n"); head=load();break; case'8':printf("将链表中工资情况保存到文件n"); sav

12、e(head);break; case'9':printf("系统初始化n"); head=(stud*)malloc(sizeof(stud); head->next=NULL; printf("%d %dn",head,head->next); break; case'0':printf("退出教师工资管理系统n"); printf("是否保存当前数据到文件?(Y/N):"); c=toupper(getchar();getchar(); if(c='Y

13、9;)save(head); break; default:printf("输入错误!"); if(choice='0')break; printf("n按任意键继续.!nnnnnnnn");getchar(); printf("nnnnnnnnn");/* char menu() char c; printf("=教师工资管理系统=n"); printf ("-n"); printf(" 1.浏览教师信息n"); printf(" 2.插入教师信息

14、n"); printf(" 3.查询教师信息n"); printf(" 4.删除教师信息n"); printf(" 5.教师工资信息录入n"); printf(" 6.修改教师信息n"); printf(" 7.从文件中将教师信息导入到链表n"); printf(" 8.将链表中教师信息导出到文件n"); printf(" 9.系统初始化n"); printf(" 0.退出系统"); printf("nn .请选择

15、.nn"); c=getchar();getchar(); return c;/* void browse(stud*head) int i=0; stud*p; /工作指针 p=head->next; /指向首接点 printf(" 教师号 姓名 性别 单位名称 家庭住址 联系电话n");while(p!=NULL) /指针不空printf("%-1d,%-12s%-10s%-8s%-12s%-10s%-10sn 应发工资:%5.1f 合计扣款:%5.1f 实发工资:%5.1fn",+i,p->num,p->name,p-&

16、gt;sex,p->bclass,p->address,p->phono,p->score4,p->score11,p->score); p=p->next; /工作指针P移动 /*void insert(stud*head) /插入新结点,并使链表各结点按教师号升序排列 char an,xh10,xm9,xs10,bc20,ad20,xp11;stud*p,*q;dop=head; printf("请依次输入教师的教师号、姓名、性别、单位名称、家庭住址、联系电话:n"); gets(xh);gets(xm);gets(xs);ge

17、ts(bc);gets(ad);gets(xp); /输入数据 if(!strcmp(xh,"0000")return; /以“0000”作为结束标记 while(p->next!=NULL)&&(strcmp(xh,p->next->num)>=0) p=p->next; /查找新结点的插入位置 q=(stud*)malloc(sizeof(stud); /生成新结点由q指向 strcpy(q->num,xh); /把数据送入新结点 strcpy(q->name,xm); strcpy(q->sex,xs);

18、 strcpy(q->bclass,bc); strcpy(q->address,ad); strcpy(q->phono,xp); q->next=p->next;p->next=q; /把新结点插入链表 printf("继续吗?(Y/N)"); an=toupper(getchar();getchar(); while(an='Y');/*stud*search(stud*head,int*i)/在链表中按姓名或按教师号进行查找int xz;char xh10,xm6;stud*p; /工作指针p=head->n

19、ext;*i=1; /指向首结点printf("1.按姓名查找 0.按教师号查找n");scanf("%d",&xz);getchar();if(xz)printf("输入教师姓名n"); gets(xm); /输入姓名 while(p!=NULL&&strcmp(xm,p->name)!=0)/按姓名查找 p=p->next;(*i)+; else printf("请输入教师号:n"); gets(xh); /输入学号 while(p!=NULL&&strcmp

20、(xh,p->num)!=0)p=p->next;(*i)+;return p;/*void deletel(struct st*head)/删除结点int i,xz,n;char c,xm6,xh10;struct st*p,*q; /工作指针p=head; /指针p指向头结点if(p->next!=NULL)printf("1.按教师号删除 2.按姓名删除 3.按序号删除n");scanf("%d",&xz);switch(xz)case 1:printf("请输入教师号:n"); getchar();

21、gets(xh); /输入教师号 while(p->next!=NULL&&strcmp(xh,p->next->num)!=0) /按教师号查找 p=p->next; break; case 2:printf("请输入教师姓名:n");getchar(); gets(xm); /输入姓名 while(p->next!=NULL&&strcmp(xm,p->next->name)!=0) /按姓名查找 p=p->next; break; case 3:printf("请输入序号:n&q

22、uot;); i=1; scanf("%d",&n); getchar(); /输入序号 while(p->next!=NULL&&i<n) p=p->next;i+; break; default:printf("选择错误!n");return; q=p->next; /指针q指向p的直接后继 if(q=NULL) printf("未找到指定结点,没有执行删除!n");return; printf(" %-10s %-10s 请确认!(Y/N)",q->num

23、,q->name); c=getchar();getchar(); if(tolower(c)='y') p->next=q->next; free(q); return; /释放q所指的结点 printf("无结点可删除!n");/*void scorein(stud*head)/依次给链表中各结点的数据录入工资int i=0;stud*p; /工作指针p=head->next; /指向首结点while(p!=NULL) /指针不空printf(" 教师号 姓名 性别 单位名称 家庭住址 联系电话:n");pri

24、ntf("%d,%10s %8s %5s %10s %10s %15sn ",+i,p->num,p->name,p->sex,p->bclass,p->address,p->phono); printf("基本工资:"); scanf("%f",&p->score1); printf("津贴:"); scanf("%f",&p->score2); printf("生活补贴:"); scanf("%f&

25、quot;,&p->score3); printf("电话费:"); scanf("%f",&p->score5); printf("水电费:"); scanf("%f",&p->score6); printf("房租:"); scanf("%f",&p->score7); printf("所得税:"); scanf("%f",&p->score8); printf(

26、"卫生费:"); scanf("%f",&p->score9); printf("公积金:"); scanf("%f",&p->score10); p->score4=p->score1+p->score2+p->score3+p->score5; p->score11=p->score6+p->score7+p->score8+p->score9+p->score10;p->score=p->score4-p

27、->score11; printf("应发工资:%5.1f 合计扣款:%5.1f 实发工资:%5.1fn",p->score4,p->score11,p->score); p=p->next; /工作指针p移动 getchar();/*void change(stud*head)/对链表中指定结点的数据进行修改 int i=0,xz; stud*p; /工作指针dop=search(head,&i); /查找要修改的结点 if(p) /输出数据 printf("%2d,教师号:%10s 教师名称:%10s 性别:%8s 单位名

28、称:%10s 家庭住址:%10s 电话号码:%10sn",i,p->num,p->name,p->sex,p->bclass,p->address,p->phono); printf(" 基本工资=%5.1f、津贴=%5.1f、生活补贴=%5.1f、电话费=%5.1fn 水电费=%5.1f、房租=%5.1f、所得税=%5.1f、卫生费=%5.1f、公积金=%5.1fn 应发工资=%5.1f、合计扣款=%5.1f、实发工资=%5.1fn",p->score1,p->score2,p->score3,p->s

29、core5,p->score6,p->score7,p->score8,p->score9,p->score10,p->score4,p->score11,p->score); else printf("未找到!n"); while(!p); printf("修改哪部分信息?n"); printf("1.修改教师号n"); printf("2.修改教师姓名n"); printf("3.修改性别n"); printf("4.修改单位名称n&

30、quot;); printf("5.修改家庭住址n"); printf("6.修改联系电话n"); printf("7.修改基本工资n"); printf("8.修改津贴n"); printf("9.修改生活补贴n"); printf("10.修改电话费n"); printf("11.修改水电费n"); printf("12.修改房租n"); printf("13.修改所得税n"); printf("14.

31、修改生活费n"); printf("15.修改公积金n"); printf("0.不修改n");scanf("%d",&xz); getchar();switch(xz)case 1:printf("请重新输入教师号:"); gets(p->num); break; case 2:printf("请重新输入教师姓名:"); gets(p->name); break; case 3:printf("请重新输入性别:"); gets(p->se

32、x); break; case 4:printf("请重新输入单位名称:"); gets(p->bclass); break; case 5:printf("请重新输入家庭住址:"); gets(p->address); break; case 6:printf("请重新输入联系电话:"); gets(p->phono); break; case 7:printf("请重新输入基本工资:"); scanf("%f",&p->score1); p->score

33、4=p->score1+p->score2+p->score3+p->score5; p->score=p->score4+p->score11; break; case 8:printf("请重新输入津贴:"); scanf("%f",&p->score2); p->score4=p->score1+p->score2+p->score3+p->score5; p->score=p->score4+p->score11; break; case 9:

34、printf("请重新输入生活补贴:"); scanf("%f",&p->score3); p->score4=p->score1+p->score2+p->score3+p->score5; p->score=p->score4+p->score11; break; case 10:printf("请重新输入电话费:"); scanf("%f",&p->score5); p->score4=p->score1+p->sc

35、ore2+p->score3+p->score5; p->score=p->score4+p->score11; break; case 11:printf("请重新输入水电费:"); scanf("%f",&p->score6); p->score11=p->score6+p->score7+p->score8+p->score9+p->score10; p->score=p->score4+p->score11; break; case 12:print

36、f("请重新输入房租:"); scanf("%f",&p->score7);p->score11=p->score6+p->score7+p->score8+p->score9+p->score10;p->score=p->score4+p->score11; break; case 13:printf("请重新输入所得税:"); scanf("%f",&p->score8); p->score11=p->score6+p

37、->score7+p->score8+p->score9+p->score10; p->score=p->score4+p->score11; break; case 14:printf("请重新输入生活费:"); scanf("%f",&p->score9); p->score11=p->score6+p->score7+p->score8+p->score9+p->score10; p->score=p->score4+p->score11; break; case 15:printf("请重新输入公积金:"); scanf("%f",&p->score10); p-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论