教师工资管理系统.docx

上传人:b****4 文档编号:24074577 上传时间:2023-05-24 格式:DOCX 页数:35 大小:784.14KB
下载 相关 举报
教师工资管理系统.docx_第1页
第1页 / 共35页
教师工资管理系统.docx_第2页
第2页 / 共35页
教师工资管理系统.docx_第3页
第3页 / 共35页
教师工资管理系统.docx_第4页
第4页 / 共35页
教师工资管理系统.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

教师工资管理系统.docx

《教师工资管理系统.docx》由会员分享,可在线阅读,更多相关《教师工资管理系统.docx(35页珍藏版)》请在冰豆网上搜索。

教师工资管理系统.docx

教师工资管理系统

 

西安郵電大学

编译原理程序设计报告

题目:

词法分析器

院系名称:

计算机学院

专业名称:

计算机科学与技术

班级:

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();

for(t=0;t

{

printf("请输入要修改的教师的编号:

\n");

scanf("%d",&num);

for(i=0;i

if(PAY[i].num==num)

{

 

printf("\n---老师工资信息---\n");

printf("老师代号--老师姓名--基本工资--其他工资--扣款--出生日期(年-月-日):

\n");

printf("----------------------------------------------------------\n");

printf("%5ld%15s%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");

printf("1.代号\n");

printf("2.姓名\n");

printf("3.基本工资\n");

printf("4.其他工资\n");

printf("5.扣费\n");

printf("6.年\n");

printf("7.月\n");

printf("8.日\n");

scanf("%d",&j);

switch(j)

{

case1:

printf("修改后的代号为:

\n");

scanf("%d",&PAY[i].num);break;

case2:

printf("修改后的姓名为:

\n");

scanf("%s",PAY[i].name);break;

case3:

printf("修改后的基本工资为:

\n");

scanf("%d",&PAY[i].pay);break;

case4:

printf("修改后的其他工资为:

\n");

scanf("%d",&PAY[i].other);break;

case5:

printf("修改后的扣费为:

\n");

scanf("%d",&PAY[i].cost);break;

case6:

printf("修改后的年为:

\n");

scanf("%d",&PAY[i].DATE.year);break;

case7:

printf("修改后的月为:

\n");

scanf("%d",&PAY[i].DATE.month);break;

case8:

printf("修改后的日为:

\n");

scanf("%d",&PAY[i].DATE.day);break;

}

flog=1;

}

if(flog==0)

printf("你输入的老师代号不存在!

");

}

printf("请按任意键返回!

\n");

getch();

}

//添加教师工资信息

intappend(inta)

{

inti,x;

system("cls");

printf("请输入你要添加的老师工资个数");

scanf("%d",&x);

for(i=a;i

{

printf("请输入你要增加的老师代号(五位):

");

flushall();

scanf("%ld",&PAY[i].num);

printf("老师姓名:

");

flushall();

scanf("%s",PAY[i].name);

printf("基本工资:

");

flushall();

scanf("%f",&PAY[i].pay);

printf("其他工资:

");

flushall();

scanf("%f",&PAY[i].other);

printf("扣款:

");

flushall();

scanf("%f",&PAY[i].cost);

printf("出生日期(年-月-日):

");

flushall();

scanf("%d%d%d",&PAY[i].DATE.year,&PAY[i].DATE.month,&PAY[i].DATE.day);

}

printf("--------按任意键返回菜单!

");

getch();

returni;

}

 

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");

pr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1