C语言课设--班级档案管理系统设计文档

一、作业要求

1. 问题描述

对一个有N个学生的班级,通过该系统实现对该班级学生的基本信息进行录入、显示、修改、删除、保存等操作的管理。

2. 功能要求

本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。

本系统显示这样的菜单:

  1. 学生基本信息录入

  2. 学生基本信息显示

  3. 学生基本信息保存

  4. 学生基本信息删除

  5. 学生基本信息修改(要求先输入密码)

  6. 学生基本信息查询

  7. 退出系统


二、问题分析

1.数据结构

(1)学生信息

学生信息包括以下几个数据:学号(char) 、姓名(char) 、性别(char) 、年龄(int) 、备注(char) 。所有数据均不能为空。为了能够把学生信息永久保存下来,需要把数据存放在文件中,采用纯文本文件,扩展名为txt。

(2)数据存放

由于学生的学号、姓名、年龄、性别等数据是有内在联系,同属于一个学生,我们希望把这些数据组成一个组合数据,故考虑使用结构体变量将同一个学生的数据封装。

一个结构体变量可以存放一个学生的一组信息,由于我们需要存放多组学生的基本信息,所以考虑使用结构体数组或者链表。

① 结构体数组

A. 随机访问性强

B. 查找速度快

C. 增删的效率低

D. 空间大小固定,不能动态扩展

② 链表

A. 增删效率高

B. 空间大小不固定,可以动态扩展

C. 访问效率低

综上,考虑到单个班级的档案数据量并不会很大,而需很强的访问能力,故选择使用结构体数组。

(3)储存结构设计

学生信息统一存放在结构体Student_type

所有学生存放在数组Student[SIZE]

(学号、姓名、性别、年龄、备注)

\#define SIZE 200  //数组长度

\#define SID_SIZE 15  //学号

\#define NAME_SIZE 20  //姓名

\#define SEX_SIZE 10  //性别

\#define AGE_SIZE 10  //年龄

\#define DESC_SIZE 50  //描述

struct Student_type

{
    
    

  char sid[SID_SIZE];   //学号

  char name[NAME_SIZE];  //姓名

  char sex[SEX_SIZE];   //性别

  char age[AGE_SIZE];     //年龄

  char desc[DESC_SIZE];  //备注

}Student[SIZE];

以上数据均声明为全局变量。

2.模块划分

系统在总体上分为三个模块:主控模块、学生基本信息维护模块、学生基本信息浏览模块。

(1) 主控模块:主要负责打印菜单、指令执行状态的显示以及实现返回机制等用户操作逻辑的维护。

(2) 学生基本信息维护模块:主要实现录入、删除、修改、保存四个功能。

(3) 学生基本信息浏览模块:主要实现显示和查询这两个功能。

3.模块功能分析

(1)主控模块——用户操作逻辑分析

① 为便于用户操作,当指令选项有多种时,提供菜单,并对指令选项进行编码。

② 提供返回机制。当用户选择某一指令、错选非法指令或指令执行失败时,系统返回相应信息,并提供下一步执行方案:

a. 用户选择某一指令后,系统返回执行状态信息;

b. 用户错选非法指令时,系统返回警告信息,并提供重试指令;

c. 指令执行失败时,系统返回执行失败信息,并提供再次执行和返回菜单两种指令。

③ 在主菜单中提供清屏指令,用户选择执行清屏指令后,系统再次打印主菜单。

④ 在删除、退出等指令之后提示是否确认指令,可取消执行此类指令。

⑤ 在每一项输入前提示用户需要输入的信息,以及输入限制。

(2)学生基本信息维护模块

①学生基本信息录入

A. 要求用户先输入学生数量n,再输入学生信息。学生信息存在限制:

a. 学生学号长度为10,只能为数字;

b. 学生姓名长度限制在20以内;

c. 学生性别只能为“男”或“女”;

d. 学生年龄限制在1~100之间;

e. 备注长度限制在20以内。

B. 所接收的数据先与原有数据对比,规定学号唯一,学号重复的学生信 息提示已存在,学号不重复则接收,全部n个学生录入完毕后自动 保存。

C. 建立录入异常处理机制。

②学生基本信息删除

A. 考虑到实际班级档案的数据量不会过于庞大,删除功能使用不多,此 处只提供单个删除功能。

B. 要求用户先输入所删除学生的学号,然后系统在原有数据中搜索是否 存在学号:

a. 存在,则系统打印出该学生基本信息,提供是否确认删除指令;

b. 不存在,系统提示该学生不存在,提供继续删除和返回菜单两项 指令。

C. 删除完成后自动保存。

③学生基本信息修改(先输入密码)

A. 用户选择该功能后,提供输入密码和修改密码两项指令。

B. 考虑到密码设置问题,提供修改密码功能,初始密码为“123456”。

选择输入密码(密码不回显),正确后方可进入修改功能页面,否则 提示密码错误,请重试,错误3次后系统自动关闭。

C. 要求用户先输入学生的学号,查找是否存在该学生。存在则打印出该 学生的基本信息,不存在则给出提示,并提供继续修改和返回菜单 两项指令。

D. 按学号查找后,提供修改学号、姓名、性别、年龄、备注五项选择。

E. 修改完成后自动保存。

④学生基本信息保存

A. 操作过程中数据更新保存在内存,在系统退出或者用户要求保存时将 内存中的数据保存到文件中。

(3)学生基本信息浏览模块

①学生基本信息显示

A. 将所有学生信息按照添加的先后顺序全部显示出来。

B. 显示完毕后返回主菜单。

②学生基本信息查询

A. 提供按学号、姓名、性别、年龄、备注五项查找指令。

B. 要求用户先输入所查询学生的学号,系统根据学号搜索是否存在相应 数据,存在则显示出该学生的所有基本信息,不存在则给出提示,并提供继续搜索和返回菜单两项指令。

4.系统总体业务流程

在这里插入图片描述


三、命令编码

功能 命令编码
学生基本信息录入 1
学生基本信息删除 2
学生基本信息修改 3
班级档案管理系统 学生基本信息查询 4
学生基本信息显示 5
学生基本信息保存 6
清理屏幕 7
退出系统 8

四、模块功能与函数说明

1.主控模块

序号 功能 函数
1 打印菜单 void print_menu();
2 读入命令 void get_command();
3 回车键返回菜单 void carriage_back();
4 将文件中的数据读到结构体数组中 int load_out();
5 判断是否存在所查找的学生 int is_found(char id[SID_SIZE]);

2.学生信息维护模块

序号 功能 函数
1 学生基本信息录入 void input_information();
2 学生基本信息删除 void delete_information();
3 学生基本信息修改(需密码) void change_information();
4 学生基本信息保存 void save_information();

3.学生信息浏览模块

序号 功能 函数
1 学生基本信息查询 void invest_information();
2 学生基本信息显示 void output_information();

4.文件结构设计

序号 文件 说明
1 main.c 主函数
2 headers.h 声明函数
3 data.h 全局变量
4 master_control.c 主控模块函数实现
5 information_maintenance.c 学生基本信息维护函数实现
6 information_browse.c 学生基本信息浏览函数实现

五、总结

通过此次课程设计,使我真正地明白了设计的重要性,没有设计空谈实现无异于空中建楼。做好设计是做出一个好的程序的核心。在设计过程中,要学会运用“先总后分再总”的思想,从整体上入手,搭建程序整体架构,而后再逐渐细化,逐步实现功能。


以上。

猜你喜欢

转载自blog.csdn.net/CH_whale/article/details/118670503