教师信息管理系统

本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作。本程序中涉及结构体、数组、文件等方面的知识。通过本程序的训练,使学生能对C语言的文件操作有一个更深刻的了解,掌握利用数组结构实现对教师信息管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。

1、问题定义

创建一个教师信息管理系统。系统中包括教师的信息录用,每个教师的总工资,教师的性别,出生年月,教师津贴等。程序的运行效果如下图所示,选择任任意菜单后,实现相应功能。

图1.1  教师信息管理系统功能

2、系统设计

2.1 总体设计

采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图(即模块图)来分析其任务的划分,一般从上到下进行,最上面一层是主模块,下面各层是其上一层模块的逐步细化描述。

本教师信息管理系统要求采用单链表实现,如图2.1所示,它由如下五大功能模块组成:

  1. 输入记录模块。完成将数据存入单链表的工作。记录可以从以二进制形式存储的数据文件中读入,也可从键盘逐个输入教师信息记录。教师记录由教师的基本信息构成。当从数据文件中读入记录时,也就是把在以记录为单位存储的数据文件中,将记录逐条复制到单链表中。
  2. 查询记录模块。完成在单链表中查找满足相关条件的教师记录。在此教师信息管理系统中,用户可以按照教师的工号或姓名在单链表中进行查找。若找到该教师的记录,则返回指向该教师的记录的指针。否则返回一个值为NULL的空指针,并打印出未找到该学生记录的提示信息。
  3. 更新记录模块。完成对教师记录的维护。在此教师信息管理系统中,它实现了对教师记录的修改、删除、插入和排序操作,并将修改后的数据存入源数据文件。
  4. 统计记录模块。完成对教师最高工资和最低工资人数的统计。
  5. 输出记录模块。一是实现对教师信息记录的存盘,即将记录写入数据文件中;二是实现将记录信息以表格的形式在屏幕上打印出来。

2.2 详细设计

2.2.1数据结构设计

  1. 教师信息管理结构体

struct data

{

int year;

int month;

int day;

};

struct teacher

{

char num[15];

char name[30];

struct data bir;

char sex;

float jbgz;

float jt;

};  结构体struct teacher将用于存储教师的基本信息,它将作为单链表的数据域。

2.2.2 主控main()函数执行流程

程序总体结构图

2.2.3函数功能描述

  1. input()

函数原型:void input()

void input()此函数功能是输入教师信息。

struct data 函数原型:void struct data stringinput ()函数用于输入字符串,并进行字符串

  1. Conio 函数原型:#include <conio.h>,是函数预处理。
  2. 主函数main()

整个成绩管理系统控制部分,其详细说明可参考图二。

完成在上述系统设计后,即可着手进行系统实现的工作,开始程序代码的编写。

3、系统实现

3.1 编码

3.1.1 部分实训原始代码

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <conio.h>

/*函数声明*/

void input(); // 此函数功能是输入教师信息

int menu();//此函数是一个菜单

//学号:1352100129

struct data

{

int year;

int month;

int day;

};

struct teacher

{

char num[15];

char name[30];

struct data bir;

char sex;

float jbgz;

float jt;

};

int menu()

{

int n;

printf("1. 实现教师信息的录入\n");

printf("2. 求每个教师的总工资,并输出\n");

printf("3. 按总工资从高到低排序,输出教师信息\n");

printf("4. 查找指定姓名的教师信息,若不存在,给出提示信息\n");

printf("5. 查找基本工资最高的教师信息\n");

printf("6. 修改指定职工号的职工信息\n");

printf("7. 程序结束\n");

printf("************************************************\n");

printf("请输入你要执行的操作:\n");

scanf("%d",&n);

while( n<1 || n>7)

{

printf("请重新输入\n");

scanf("%d",&n);

}

return n;

}

//实现教师信息录入

void input(struct teacher a[],int n)

{

int i;

printf("\n");

for(i=0;i<n;i++)

{

printf("请输入教师工作号:");

scanf("%s",a[i].num);

printf("请输入教师姓名:");

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

printf("请输入教师出生日期:");

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

printf("请输入教师性别:");

getchar();

scanf("%c",&a[i].sex);

printf("请输入教师基本工资:");

scanf("%f",&a[i].jbgz);

printf("请输入教师津贴:");

scanf("%f",&a[i].jt);

}

}

//实现教师信息输出

void output(struct teacher a[],int n)

{

int i;

printf("工作号,姓名,出生日期,性别,基本工资,津贴,总工资:\n");

for(i=0;i<n;i++)

printf("%s %s %d %d %d %c %f %f %f\n",a[i].num,a[i].name,a[i].bir.year,a[i].bir.month,a[i].bir

.day,a[i].sex,a[i].jbgz,a[i].jt,a[i].jbgz+a[i].jt);

}

//按工资从高到低排序,输出教师信息

void sortbyzgz (struct teacher a[],int n)

{

int i,j,k;

struct teacher temp;

for(i=0;i<n-1;i++)

{

k=i;

for(j=i+1;j<n;j++)

if((a[j].jbgz+a[j].jt)>(a[i].jbgz+a[i].jt))

k=j;

if(k!=i)

{

temp=a[i];

a[i]=a[k];

a[k]=temp;

}

}

output(a,n);

}

//查找指定姓名的教师信息,若不存在,给出提示信息

void searchbyname(struct teacher a[],int n)

{

char name[20];

int flag=0;

int i;

printf("请输入要查找的教师姓名:\n");

getchar();

gets(name);

for(i=0;i<n;i++)

{

if(strcmp(name,a[i].name)==0)

{

printf("工作号,姓名,出生日期,性别,基本工资,津贴,总工资:\n");

printf("%s%s%d%d%d%c%f %f %f\n",a[i].num,a[i].name,a[i].bir.year,a[i].bir.month,a[i].bir.day,

a[i].sex,a[i].jbgz,a[i].jt,a[i].jbgz+a[i].jt);

flag=1;

}

}

if(flag==0)

printf("查无此人!\n");

}

//查找基本工资最高的教师信息

void searchbyjbgz(struct teacher a[],int n)

{

struct teacher temp;

int i;

temp=a[0];

for(i=1;i<n;i++)

{

if(a[i].jbgz>temp.jbgz)

temp=a[i];

}

printf("工作号,姓名,出生日期,性别,基本工资,津贴,总工资:\n");

printf("%s%s%d%d%d%c%f%f%f\n",temp.num,temp.name,temp.bir.year,temp.bir.month,temp.bir.day,temp.sex,temp.jbgz,temp.jt,temp.jbgz+temp.jt);

}

void main()

{

int num;

struct teacher tea[3];

while(num=menu())

{

switch(num)

{

case 1: input(tea,3); break;

case 2: output(tea,3);break;

case 3: sortbyzgz(tea,3);break;

case 4: searchbyname(tea,3);break;

case 5: searchbyjbgz(tea,3);break;

case 6: repeat(tea,3);break;

case 7: exit(0);

}

getch();  //按任意键继续

system("cls");  //清屏

}

3.2 测试与调试

3.2.1 程序测试

  1. 在主菜单中选择1

图3.1  输入教师的信息

2.在主菜单中选择2

图3.2  查找教师的基本信息

3.在主菜单中选择3

当用户输入3并按回车键后,即可进入记录查找界面。其查找记录过程如图3.3所示,可按工号或姓名进行查找。

图3.3  查找指定的教师信息

4.在主菜单中选择4

当用户输入4并按回车键后,即可进入记录修改界面。其修改记录过程如图3.4所示,查找指定姓名的教师信息,入部存在则退出。

图3.4  查找指定姓名的教师信息

5.在主菜单中选择5

当用户输入5并按回车键后,即可进入记录插入界面。其插入记录过程如图3.5所示,这里是查找教师最高的教师基本信息记录。

图3.5  查找工资最高的教师记录

6.在主菜单中选择6

当用户输入6并按回车键后,即可进入记录统计界面。其统计结果如图3.6所示,查找不到教职工本人信息。

图3.6  修改教师的的信息

7.在主菜单中选择7

当用户输入7并按回车键后,即可执行退出管理程序的操作,返回操作系统。其操作结果提示信息如图3.7所示。

图3.7  按任意键退出

4、系统维护

通过程序调试成功后,结果很快就完成了,这时可以交付软件供用户使用,但是在软件的使用过程中还会面临更加漫长的工作,即软件维护。一般维护的工作有:更改使用中发现的错误;为适应实际环境而对程序进行修改;为满足新的需求而对程序作必要的改进等等。所以我认为程序的编写与调试及其重要,必须要牢固掌握。

5、归纳总结

5.1 开发经验

用C语言编写具有以下功能的程序:

1 录入教师信息,并将信息保存在teachers.txt文件中。

2 教师信息的浏览功能(输出)。

3 教师信息的查询功能,应分别能够按照工资和学历查询。

4 教师信息包括教师号、姓名、性别、年龄、学历、工资、电话等(教师号不重复)。

5.2 实训中遇到的问题及解决方法

在这次的实训中,主要遇到的问题是编译环境的不同对程序也不同。本来我们的程序是不支持在VC++里面编译的,因此一直都处在编译失败,该函数未定义的错误中。后来经过自己反复的程序调试,终于找到了根源,就是把“clrscr()”改为“system("cls")”就可以了。

需要源程序、文档信息可在我的资源里下载,此文章只供参考。

需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传 点击用微信打开即可,过程有点繁琐请见谅

C语言程序设计--教师信息管理系统相关推荐

  1. 职工信息管理程序设计c语言,C语言程序设计职工信息管理系统.docx

    C语言程序设计职工信息管理系统.docx 1 数信学院数信学院 课程设计报告课程设计报告 课程名称课程名称C C 语言程序设计语言程序设计_ _ 题目名称题目名称职工信息管理系统职工信息管理系统 学生 ...

  2. c语言程序设计医院就医,C语言程序设计(医院信息管理系统)附源代码[精品].doc...

    C语言程序设计(医院信息管理系统)附源代码[精品] 专业设计报告 课程名称: C 语 言 程 序 设 计 课题名称: 医院信息管理系统 专业班别: 11本计算机科学与技术二班 姓 名: 学 号: 指导 ...

  3. c语言程序设计 医院,C语言程序设计医院信息管理系统附源代码(47页)-原创力文档...

    专业设计报告 课程名称: C语言程序设计 课题名称:医院信息管理系统 专业班别:12本计算机科学与技术二班 姓名: 学号: 指导教师: 设计日期:2012-5-25 教师评语: 等级 项目 优 良 中 ...

  4. C语言程序设计--图书信息管理系统

    题    目: 图书信息管理系统  图书信息管理系统 本题目设计目的是训练学生的基本编程能力,了解图书管理信息系统的开发流程,熟悉C语言的文件的基本操作.本程序中涉及结构体.文件等方面的知识.通过本程 ...

  5. C语言程序设计--商品信息管理系统

    1.系统分析 1.1课程设计内容 商场商品信息管理系统 1.2系统功能需求分析 1.问题定义 创建一个商品信息管理系统.假设系统中每件商品记录只包括编码.价格.商品名称等信息.程序的运行效果如下图所示 ...

  6. C语言程序设计--二手房信息管理系统

    题    目:   二手房信息管理系统 二手房屋管理系统 本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件和单链表的各种基本操作.本程序中涉及结构体.单链表.文件及 ...

  7. 医院信息管理系统c语言代码大全,C语言程序设计医院信息管理系统附源代码.doc...

    实用文档 PAGE 文案大全 专业设计报告 课程名称: C 语 言 程 序 设 计 课题名称: 医院信息管理系统 专业班别: 11本计算机科学与技术二班 姓 名: 学 号: 指导教师: 设计日期: 2 ...

  8. c语言程序设计 医院,C语言程序设计(医院信息管理系统)附源代码(17页)-原创力文档...

    专 业 设 计 报 告 课程名称: C 语 言 程 序 设 计 课题名称: 医院信息管理系统 专业班别: 12 本计算机科学与技术二班 姓 名: 学 号: 指导教师: 设计日期: 2012-5-25 ...

  9. C语言程序设计--学生信息管理系统

    题目:学生信息管理系统 1  系统设计 1.1设计要求 1.1.1设计任务 创建一个学生信息管理系统,让它来运行和管理学生信息,进行对学生学号.姓名.性别.年龄.出生年月日.住址.电话.E-maill ...

  10. C语言程序设计—学籍信息管理系统

    学籍信息管理系统 . 系统功能:录入.修改.添加.删除.查找.读取.删除数据 系统主要技术:基本就是函数的调用,只用到结构体,与文件的读写 . 所有的数据改动都会及时保存到文件 student.txt ...

最新文章

  1. facebook 分享,遇到的错误
  2. windows下修改mysql密码 10054错误
  3. SVN学习(二)——SVN 提交、更新、解决冲突等操作步骤
  4. 用wamper打开php源码_php源码该怎么设置数据库
  5. docker上传镜像到仓库
  6. Spring组件之一 JDBC Template
  7. IDEA ---- 插件
  8. Element UI的表格table列的宽度自适应设置
  9. 分布式版本控制工具 Git
  10. css 倒三角_【推荐收藏】10 个最佳实践来改良你的 CSS
  11. Differential Privacy差分隐私
  12. 双麦阵列回音消除及降噪模块 A-47
  13. 传承中华美德,关注中老年大健康,育润奶粉敬老情浓
  14. 《三桃演义》第二回:返航,火星人柯里昂
  15. pyecharts 大小_[pyecharts1.7] 图表基础设置:大小、背景色、配色主题等
  16. 云南省2021年计算机二级,云南省2021年上半年计算机报考简章
  17. java 爬数据工具 知乎_知乎爬虫之4:抓取页面数据
  18. leetcode-database-262. Trips and Users
  19. ACwing 基础知识
  20. 智能硬件泡沫: 巨头进场才能彻底催熟产业

热门文章

  1. 无危害有好玩的电脑病毒下载-01期
  2. python自动换壁纸_Python自动更换壁纸爬虫与tkinter结合
  3. CAT扫盲:最常用的CAT翻译软件
  4. 文件上传系统php源码,PHP文件上传下载案例代码
  5. android刷机教程 华为,华为手机刷机教程(华为手机强制刷机步骤图文教程)
  6. 35万推特僵尸账号发现始末:这只是开始?
  7. 硬盘播出系统_昌吉广播电视台中型多功能演播室系统概述
  8. 纯JAVA写的socket局域网斗地主游戏
  9. 长微博生成器 php,【九零天下】长微博生成器的PHP代码部分
  10. python通过selenium模块模拟自动登录(以QQ空间为例)