教师工资管理系统.docx
- 文档编号:24074577
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:35
- 大小:784.14KB
教师工资管理系统.docx
《教师工资管理系统.docx》由会员分享,可在线阅读,更多相关《教师工资管理系统.docx(35页珍藏版)》请在冰豆网上搜索。
教师工资管理系统
西安郵電大学
编译原理程序设计报告
题目:
词法分析器
院系名称:
计算机学院
专业名称:
计算机科学与技术
班级:
1006
学生姓名:
*****
学号(8位):
************
一.设计目的
1.强化上机动手能力,在理论和实践的基础上进一步巩固课程学习的内容,掌握工程化软件设计的基本方法
2.学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力
3.为后续各门计算机课程的学习打下坚实基础
二.设计内容
1.编写程序并进行调试运行。
2.对于输入的字符串,按规定的的要求,输出
3.字母:
为1;数字:
为2;分隔符:
为3;运算符:
为4;关键字:
为5
三.概要设计
1.功能模块图;
主函数
字母为1
分隔符为3
数字为2
运算符为4
关键字为5
显示
判断哪类
2.各个模块详细的功能描述。
intzimu(charin);//字母为1
intshuzi(charin);//数字为2
intfengefu(charin);//分隔符为3
intyunsuanfu(charin);//运算符为4
intguanjianzi(charin[]);//关键字为5
voidshow(chara[],inti);//显示
voidpanduan(chara[]);//判断属于哪类
voidoutput();//为了显示好看
四.详细设计
1.功能函数的调用关系图
是
2.各功能函数的数据流程图
1.
请输入基本工资
2.
3.
4.
5.
6.
3.重点设计及编码
voidmain(void)
{
intchoice,t;
t=read_file();
if(t==0)
{
printf("无教师信息,请按任意键返回主菜单输入:
\n");
getch();
}
do
{
system("cls");
printf("\n\n\n********教师工资信息管理系统********\n\n");
printf("1.输入教师工资信息\n\n");
printf("2.输出教师工资信息\n\n");
printf("3.查询教师工资信息\n\n");
printf("4.排序教师工资信息\n\n");
printf("5.删除教师工资信息\n\n");
printf("6.修改教师工资信息\n\n");
printf("7.添加教师工资信息\n\n");
printf("0.退出系统\n\n");
printf("请选择(0-7)_\n\n");
scanf("%d",&choice);//*选择代码可执行相应的程序,否则退出*//
if(choice==1)
{
t=input(t);
}
switch(choice)
{
case2:
output(t);break;
case3:
search(t);break;
case4:
sort(t);break;
case5:
t=del(t);break;
case6:
modify(t);break;
case7:
t=append(t);break;
case0:
break;
}
}while(choice!
=0);
save_file(t);
printf("\n以上教师工资信息已保存!
-(文件名:
school.txt)\n");
getch();
}
}
五.测试数据及运行结果
1.正常测试数据和运行结果
2.异常测试数据及运行结果
六.调试情况,设计技巧及体会
1.改进方案
本程序基本符合本次实验的基本要求,实现了数据的录入、存储、读写、修改、删除、查询、添加、排序及输出等功能。
本程序的主程序中设有主菜单,主菜单中包括输入信息模块、输出信息模块、修改信息模块、添加信息模块、删除信息模块、信息查询模块及按基本收入从小到大排序模块,其中查询选项之中可按教师编号查询,输出模块能准确快速的将学生信息打印出来本程序运行时简洁明了,恰当的提示语句给程序应运带来了许多便利。
不足之处:
使用结构体数组进行编程,不能实现按编号大小进行插入教师工资信息,这一点会在今后的编写程序过程中加以注意,这一点可以使用链表方法进行插入,不能很好的使用指针和文件,在以后的编程中要学会熟练使用文件和指针变量,链表。
2.体会
通过此次实验,我基本掌握了如何对一个大的实际程序进行整体的安排
布局,以及如何将各个函数模块之间联系起来从而实现函数的调用,在此同时也熟悉了C语言的运行环境及程序编辑,编译,链接和运行过程,掌握了C语言的程序书写格式和C语言程序结构语句的使用,特别是if,switch,do-while和for语句,掌握了C语言数据类型,运算符,表达式等的使用方法,掌握了数组,结构体,指针,等的简单应用,培养了独立完成某个大程序的能力以及独立思考解决问题的能力,收获颇丰,还有在刚开始的总体构思完成后,对各个功能实现的过程中可以用小模块进行操作,比如,输入数据,输出数据,保存数据等..在一个个小模块中调试,最后各个小模块都完成后,在将所有的模块都放到一起进行调试,这样可以避免一些错误和弯路,且能快速的完成系统对各功能的要求。
七.参考文献
《C语言程序设计》作者:
王曙燕
八.附录:
源代码(电子版)
#include
#include
#include
#defineMAX30
//*老师出生年月结构体类型*//
structb_type
{
intyear;
intmonth;
intday;
};
//*教师工资结构体类型*//
structm_type
{
charname[80];//*老师姓名*//
longnum;//*老师代号*//
structb_typeDATE;//*出生年月*//
floatpay;//*基本工资*//
floatother;//*其他工资*//
floatcost;//*扣款*//
}PAY[MAX];
intinput(intt);
voidoutput(intsum);
voidsearch(inta);
voidsort(inta);
intdel(inta);
voidmodify(inta);
intappend(inta);
voidcount(int);
intread_file();
voidsave_sum);
//*文件读到数组*//
intread_file()
{
FILE*fp;
inti=0;
fp=fopen("school.txt","rt");
if((fp=fopen("school.txt","rt"))==NULL)//*打开school.txt下的文件,只读打开一个文件,只允许写数据*//
{
printf("\n\n*****老师工资信息不存在!
请创建");
return0;
}
while(fread(&PAY[i],sizeof(structm_type),1,fp)!
=0)//*从fp文件中,每次读sizeof(PAY)送入数组pay[i]中,连续读一次*//
{
i++;
}
fclose(fp);
returni;//*统计有多少数量,即有多少名*//
}
//*数组放到文件中*//
voidsave_sum)
{
FILE*fp;
inti;
if((fp=fopen("school.txt","wb"))==NULL)//*追加打开一个二进制文件,并在文件末尾写数据*//
{
printf("读文件错误\n");
exit(0);
}
for(i=0;i fwrite(&PAY[i],sizeof(structm_type),1,fp);//*从pay[i]数组中,每次读sizeof(pay)个字节写入fp所指的文件中,连续读写1次*// fclose(fp); } //输入教师信息 intinput(intt) { inti,m; system("cls"); printf("输入教师人数: \n"); scanf("%d",&m); for(i=t;i { printf("\n第%d个老师",i+1); printf("\n老师代号(5位): "); flushall(); scanf("%ld",&PAY[i].num); if(PAY[i].num==0)break; printf("\n老师姓名: "); flushall(); scanf("%s",PAY[i].name); printf("\n基本工资: "); flushall(); scanf("%f",&PAY[i].pay); printf("\n其他工资: "); flushall(); scanf("%f",&PAY[i].other); printf("\n扣款: "); flushall(); scanf("%f",&PAY[i].cost); printf("\n出生日期: "); flushall(); scanf("%d%d%d",&PAY[i].DATE.year,&PAY[i].DATE.month,&PAY[i].DATE.day); } printf("\n--%d个教师工资信息输入完毕! --\n",i); printf("\n按任意键返回主菜单! "); getch();//*从控制台取字符(无回显)*// returni; } //输出教师信息 voidoutput(intsum) { inti; system("cls"); if(sum==0) { printf("无教师信息,请按任意键返回菜单选择输入! \n"); } else for(i=0;i { printf("老师代号--老师姓名--基本工资--其他工资--扣款--出生日期(年-月-日)\n"); printf("----------------------------------------------------------------\n"); printf("%5ld%8s%8f%8f%8f%15d-%2d-%2d\n",PAY[i].num,PAY[i].name, PAY[i].pay,PAY[i].other,PAY[i].cost,PAY[i].DATE.year, PAY[i].DATE.month,PAY[i].DATE.day); printf("----------------------------------------------------\n"); } getch(); } //*查询教师工资信息*// voidsearch(inta) { inti,x,num,j,flag=0; printf("请输入你想查询老师工资个数\n"); scanf("%d",&x); for(i=1;i<=x;i++) { printf("这是你要查询的第%d位老师的工资信息\n",i); printf("请输入要查询的老师代码\n"); flushall(); scanf("%d",&num); for(j=0;j if(PAY[j].num==num) { printf("查找的老师工资信息\n"); printf("\n老师代号--老师姓名--基本工资--其他工资--扣款--出生日期(年-月-日)\n\n"); printf("--------------------------------------------------------\n"); printf("%5ld%8s%8f%8f%8f%15d-%2d-%2d\n",PAY[j].num, PAY[j].name,PAY[j].pay,PAY[j].other,PAY[j].cost, PAY[j].DATE.year,PAY[j].DATE.month, PAY[j].DATE.day); flag=1; } if(flag==0) printf("你输入的老师代号不存在! \n"); } printf("\n按任意键返回主菜单! "); getch(); } //排序教师工资信息 voidsort(inta) { structm_typet; inti,j; system("cls"); printf("\n老师工资信息\n"); printf("---------------------------------------------\n"); printf("\n排名老师代号老师名字基本工资\n"); for(i=0;i { for(j=i+1;j if(PAY[i].pay>PAY[j].pay) { t=PAY[i]; PAY[i]=PAY[j]; PAY[j]=t; } } output(a); getchar(); } //删除教师工资信息 intdel(inta) { inti,j,y,num,flag=0,k; charchoice; system("cls"); printf("请输入你要删除的老师个数\n"); scanf("%d",&y); for(j=1;j<=y;j++) { printf("请输入你要删除的老师代码"); flushall(); scanf("%ld",&num); for(i=0;i { if(PAY[i].num==num) { printf("老师代号--老师名字--基本工资--其他工资--扣款--出生日期(年-月-日)\n"); printf("-------------------------------------------------------------\n"); printf("%5ld%20s%8f%10f%10f%10d-%2d-%2\n",PAY[i].num,PAY[i].name,PAY[i].pay,PAY[i].other, PAY[i].cost,PAY[i].DATE.year,PAY[i].DATE.month,PAY[i].DATE.day); printf("你要删除的是以上老师的工资信息不区分大小写(Y/N)? \n"); flushall(); choice=getchar();//*随意输入Y或N赋给choice*// if(choice=='Y'||choice=='y') { for(k=i;k PAY[k]=PAY[k+1]; printf("信息已经删除\n"); } flag=1; } } if(flag=0) printf("你输入的老师代号不存在! "); } getch(); returna-y; } //修改教师工资信息 voidmodify(inta) { inti,flog=0,m,num,j,t; system("cls"); printf("请输入需要修改的教师人数: \n"); scanf("%d",&m); flushall();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教师工资 管理 系统