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

article/2025/9/12 7:49:30

文章目录

  • 一、作业要求
    • 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.文件结构设计

序号文件说明
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. 文件写入读出函数的位置,数据存储的文件位置需要根据自己的需要进行更改

http://chatgpt.dhexx.cn/article/rekMqq9V.shtml

相关文章

基于Python班级管理系统毕业设计-附源码171809

目 录 摘要 1 绪论 1.1研究背景 1.2研究的目的与意义 1.3系统开发技术的特色 1.4论文结构与章节安排 2 基于Python班级管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 2.3 系统功能分析 2.3.1 功能性…

Python+班级管理系统 毕业设计-附源码171809

目 录 摘要 1 绪论 1.1研究背景 1.2研究的目的与意义 1.3系统开发技术的特色 1.4论文结构与章节安排 2 基于Python班级管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 2.3 系统功能分析 2.3.1 功能性…

C语言课设班级档案管理系统(大作业)

一、设计功能(文章仅供参考) 1、本系统采用一个包含N个数据的结构体数组,每个数据的结构应当包括:学号、姓名、性别、年龄、备注。 2、本系统显示这样的菜单: 请选择系统功能项: a. 学生基本信息录入 b. 学生基本信息显示 c. 学生…

C语言:班级成绩管理系统

文章目录 前言:程序要求说明代码main.cdef.cmyIO.cfile.cmenu.cfunction.c 前言: 有朋友最近在做c语言课设,要求写一个班级成绩管理系统,便写份简单的代码来玩。代码原创,未参考任何其他人的代码 程序要求 说明 本程序…

班级档案管理系统(C语言)

这是本人基本学完C语言时做的一个课程设计,希望能够帮到大家(设计要求如上图片)。 怎么说呢?这个也是我第一次写课程设计,准确来说,对于第一次确实时有难度的。 现在我要分享我写这个课程设计的一些心得分…

学生信息管理系统----班级信息管理

嵌入班级信息到System页面 这一部分要实现班级信息的相关操作。   还是在名为servlet的package下创建一个显示班级列表的Servlet——ClazzServlet。这样取名字是避免与系统关键字class起冲突,以免出现不必要的麻烦。 public class ClazzServlet extends HttpServ…

数据库系统及应用——班级管理系统

我的GitHub网址 数据库技术 在本次设计中,用SQL Server建了六个表用来存储基本信息,分别为Tb_Student (学生信息表)、Tb_Course(课程信息表)、Tb_Course2(选修课程表)、Tb_ScoreSt…

班级管理系统的设计与实现/java/SSM

SSM班级管理系统 摘 要 随着社会的发展,计算机的优势和普及使得SSM班级管理系统的开发成为必需。SSM班级管理系统主要是借助计算机,通过对首页、商铺信息、班级综合评测数据、综合评测数据商品、新闻资讯、我的、跳转到后台、购物车等信息进行管理。减…

学生管理系统

学生信息管理系统设计 一、需求分析 1、开发背景: 信息化已经渗透到我们生活的方方面面,学校信息化的发展也是一种不可避免的趋势。伴随着高等院校招生规模的不断扩大,传统人工管理信息的方法不但不能满足这种管理上的需求,而且…

基于Java的班级管理系统的设计与实现(论文+源码)_kaic

摘 要 伴随着信息技术不断的飞速发展,信息技术给现在的生活也在带来翻天覆地的变化。信息时代的到来已经成为一种趋势,人类的发展历史正在进入到一个新的时代。信息技术已经在生活中的各个领域得到普及以及被应用。班级管理在信息技术发展之前一直都是…

班级管理系统(SSM+LayUI)

项目预览 1.项目预览 获取项目q 2300852495(有偿) 项目预览地址 项目源码 角色分类账号密码管理员1705145123老师170507111123学生170507106123 2.系统功能介绍 3.开发环境 系统开发及运行环境 班级管理系统开发环境如下: 操作系统&…

C++课程设计班级管理系统

整体代码展示&#xff1a;借鉴作业的同学可以直接复制粘贴ctrlACV一气呵成&#xff0c;代码可以直接运行。如果怕和同学的重复了再改下参数名就可以&#xff0c;不过记得先备份一份哦。 如果觉得对你们有用还请不要忘记一键三连哟。ヾ(≧▽≦*)o #include <iostream> #i…

c语言编译器好玩的代码,读懂这4个函数,528行代码,你也可以实现一个C语言编译器...

引言 自从华为方舟编译器横空出世,一举成为全民网红之后,一下子点燃了大家对编译器的热情。不过,对于大多数人来说,编译器依旧是遥不可及的神秘存在。 今天,介绍一个国外大牛写的C语言编译器 - C4,揭开编译器的神秘面纱。原来实现一个具备基本功能的编译器,竟是如此简单…

c语言编译器 dev,1.1开篇一:C语言编译器的选择---Dev C++

目录&#xff1a; 1.Dev C的下载&安装&#xff1a; 2.Dev C的使用&#xff1a; 前言&#xff1a; 那么多编译器&#xff0c;为什么选择Dev C&#xff1f;理由有下 理由一&#xff1a;Dev C 体积比较小&#xff0c;不占用太多的内存。 理由二&#xff1a;Dev C 打开速度快&a…

C语言推荐编译器

前言&#xff1a;vs虽然好,但是2015往后的版本相对使用起来比较复杂,对小白不太友好 既然是第一次打C语言,就要使用一个简洁明了,通俗易懂的编译器,这里 推荐 小熊猫devC,这非常的简洁,没有过多的插件,点击下方链接就可以下载&#xff01; DevC官方下载-DevC中文最新版下载(…

C语言编译器Visual Studio官方正版下载安装

首先打开微软官网。 微软官网https://www.microsoft.com/zh-cn/进入Visual Studio的产品介绍页。 一般我们用的是win系统。 点击下载。 选择社区版&#xff0c;因为其他版本要花钱&#xff0c;专业版和企业版。 打开安装包。 选择c&#xff0c;确定没选错&#xff0c;接下来进行…

【Linux03-基本工具之GCC】Linux下的C语言编译器

前言 接上篇&#xff0c;继续学习基本工具。 三、gcc 是什么 Linux下的C语言编译器&#xff08;C的编译器是g&#xff0c;用法选项基本一样&#xff09;。 既然是编译器&#xff0c;我们就再来加点餐…… 链接其实分为两种类型&#xff1a;静态链接和动态链接&#xff0…

初学者-C语言基础练习(二)——C语言编译器的使用方法

安装完之后我们就可以开始我们的程序编写了&#xff0c;但是这里还是有必要讲一下初学者该注意的事项。 1.拒绝堆排多个文件 2.切记不能使用中文输入&#xff0c;编写程序一定要在英文状态下编写&#xff0c;注释内容除外 3.每个语句结束不要忘记分号 说完这三个注意了&am…

c语言编译器苹果下载,c语言编译器ios下载

c语言编译器ios介绍 c语言编译器ios是一款非常实用的编程语言学习类手机软件&#xff0c;软件可以给我们带来许多的功能可以让我们使用&#xff0c;通过软件我们就能够进行代码的编译而且在这里就能够验证许多的小程序&#xff0c;还支持我们文件代码的打开可以在这里进行浏览非…

手机c语言编译器ide文件位置,C语言编译器IDE

C语言编译器IDE是一个手机上的C语言编辑软件&#xff0c;支持在线编译各种代码&#xff0c;创建代码文件或管理不同的代码项目等&#xff1b;里面设置了C语言工程管理中心&#xff0c;其中的工程项目内容一目了然&#xff0c;所有工程项目名称都清晰展示&#xff0c;还显示自己…