教师工资管理系统
- 格式:doc
- 大小:499.50 KB
- 文档页数:27
西安郵電大学
编译原理程序设计报告
题 目: 词法分析器
院系名称: 计算机学院
专业名称: 计算机科学与技术
班 级: 1006
学生姓名: *****
学号(8位): ************
一. 设计目的
1. 强化上机动手能力,在理论和实践的基础上进一步巩固课程学习的内容,掌握工程化软件设计的基本方法
2. 学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力
3. 为后续各门计算机课程的学习打下坚实基础
二. 设计内容
1. 编写程序并进行调试运行。
2. 对于输入的字符串,按规定的的要求,输出
3. 字母:为1;数字:为2;分隔符:为3;运算符:为4;关键字:为5
三.概要设计
1.功能模块图;
2.各个模块详细的功能描述。
int zimu(char in); //字母 为1
int shuzi(char in); //数字 为2
int fengefu(char in); //分隔符 为3
int yunsuanfu(char in); //运算符 为4
int guanjianzi(char in[]); // 关键字 为5
void show(char a[],int i); //显示
void panduan(char a[]); //判断属于哪类
void output(); //为了显示好看 主函数
字母
为1 分隔符 为 3
数字 为2
运算符
为4 关键字
为5 显示 判断哪类 四.详细设计
1. 功能函数的调用关系图
是
2.各功能函数的数据流程图
1.
程序开始
选择模块 输入
输入 排序 添加 输出 查询 删除 修改
程序结束 退出程序 主函数
2.
3. 查询模块 显示查询教师的信息 返回主菜单 输入要查询的教师人数 请输入编号: 按编号查找 请输入
编号 请输入出生日期 请输入扣费
返回菜单 输入模块 请输入姓名 请输入其他工资 请输入基本工资
4.
5.
删除模块
输入要删除的教师编号
输出该教师信息
确认删除? 是 PAY[i]=PAY[i+1]
否 返回主菜单 输出要修改的教师人数 排序模块
for(i=0;i
for(j=i+1;j
交换PAY[i],PAY[i+1]
返回主菜单
PAY[i].pay>PAY[i+1].pay
修改模块
6.
3.重点设计及编码
void main(void)
{
int choice,t;
t=read_file();
if(t==0)
{ 输入要修改的教师编号
选 择 要 修 改 的 内 容
1
姓名 5出生年月 4扣费 3其他工资 2
基本工资
选择 输入对应修改内容 返回主菜单
1
编号 输入要修改的人数
添加模块 输入要添加人的编号 输入添加教师的全部信息 返回主菜单 继续?
是 否 输入要添加人数 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)
{
case 2: output(t); break;
case 3: search(t); break;
case 4: sort(t); break;
case 5: t=del(t); break;
case 6: modify(t); break;
case 7: t=append(t ); break;
case 0: 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
#define MAX 30
//*老师出生年月结构体类型*//
struct b_type
{
int year;
int month;
int day;
};
//*教师工资结构体类型*//
struct m_type
{
char name[80]; //*老师姓名*//
long num; //*老师代号*//
struct b_type DATE; //*出生年月*//