文章目录

  • 一、作业要求
    • 1. 问题描述
    • 2. 功能要求
  • 二、问题分析
    • 1.数据结构
      • (1)学生信息
      • (2)数据存放
        • ① 结构体数组
        • ② 链表
      • (3)储存结构设计
    • 2.模块划分
    • 3.模块功能分析
      • (1)主控模块——用户操作逻辑分析
      • (2)学生基本信息维护模块
        • ①学生基本信息录入
        • ②学生基本信息删除
        • ③学生基本信息修改(先输入密码)
        • ④学生基本信息保存
      • (3)学生基本信息浏览模块
        • ①学生基本信息显示
        • ②学生基本信息查询
    • 4.系统总体业务流程
  • 三、命令编码
  • 四、模块功能与函数说明
    • 1.主控模块
    • 2.学生信息维护模块
    • 3.学生信息浏览模块
    • 4.文件结构设计
  • 五、总结
  • 六、源码

一、作业要求

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 学生基本信息浏览函数实现

五、总结

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

六、源码

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

注:

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

C语言课设--班级档案管理系统(设计文档+源码)相关推荐

  1. c语言程序设计班档案管理系统报告,C语言程序设计班级档案管理系统报告文档.doc...

    C语言程序设计班级档案管理系统报告文档 课 程 设 计 报 告 课程名称 <C语言程序设计> 课题名称 班级档案管理系统 专 业 计算机科学与技术专业 班 级 计算机1103班 学 号 姓 ...

  2. 新闻管理系统源码java_基于SSM开发的新闻管理系统 附带文档 源码下载

    功能概述 后端springMVC. MyBatis框架.前端使用bootstrap.angularJs ,前后端交互为纯Ajax(angularJs) + ui-router,编辑器为百度UEdito ...

  3. C语言课设物资管理系统,C语言课设之物资管理系统.doc

    C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...

  4. java计算机毕业设计高校排课管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计高校排课管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计高校排课管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

  5. java计算机毕业设计web企业档案管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计web企业档案管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计web企业档案管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...

  6. java计算机毕业设计vue图书档案管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计vue图书档案管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计vue图书档案管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...

  7. java计算机毕业设计web智慧医疗平台设计与实现MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计web智慧医疗平台设计与实现MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计web智慧医疗平台设计与实现MyBatis+系统+LW文档+源码+调试部署 本源 ...

  8. java计算机毕业设计个人图集管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计个人图集管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计个人图集管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

  9. java计算机毕业设计健身房管理系统演示录像2021MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计健身房管理系统演示录像2021MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计健身房管理系统演示录像2021MyBatis+系统+LW文档+源码+调试部署 ...

最新文章

  1. 爱奇艺视频千万级生产 Kubernetes 集群优化实践!
  2. 线性回归和逻辑回归的区别_线性回归
  3. 启用邮箱提示访问特权不够
  4. 大学物理规范作业25稳恒磁场_山东一地出台规定:严禁家长代批作业,违反规定将被一票否决...
  5. hdu 1301 Jungle Roads 最小生成树
  6. 【华为云技术分享】云小课 | SAP HANA高可用之实战演练
  7. Loading动画加载素材模板,UI设计师好帮手
  8. Linux内核深入理解中断和异常(5):外部中断
  9. Python如何上传文件?
  10. 为什么20的阶乘是负的Java_为什么 n 为20 阶乘为负数
  11. 二元函数的洛必达法则
  12. R语言绘制列线图nomogram分步骤从头到尾实战
  13. 科技论文之Introduction部分写作
  14. Python实战:导出QQ聊天记录生成词云看看你和你的女友聊了什么
  15. 助教日志_沈航软件工程评分1.2班第三周作业及总评成绩
  16. [php]-Tp5.1反序列化学习
  17. java实现微信服务(公众)号用户关注时,获取openid,安全模式下的加密解密实现
  18. 自动写稿机器人下载,写稿机器人有哪些,写稿机器人软件下载
  19. 笔记本联想拯救者英伟达win11调节不了亮度
  20. python——正则表达式(re模块)详解

热门文章

  1. KEPServerEX软件安装
  2. 名创优品在海外还能“嚣张”吗?
  3. selenium 不弹出浏览器
  4. dreamweaver:WPD800-52430-29332-35254
  5. jPlayer使用指南
  6. 基于Arduino的消防机器人
  7. [Reprint] 常用素数
  8. 未来网络发展方向之一:5G时代
  9. 比较实用的微信小程序开发框架和工具
  10. 小米快传不好用,手机端搜索不到情况