教师工资管理系统

  • 格式: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; //*出生年月*//