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.文件结构设计

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

五、总结

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

六、源码

链接:https://pan.baidu.com/s/1WN_LB2tzLki2YLorXpuCpg?pwd=6666
提取码:6666

注:

  1. 代码基本功能齐全,部分辅助功能未完善(录入异常未检查)
  2. 文件写入读出函数的位置,数据存储的文件位置需要根据自己的需要进行更改
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值