diff --git a/README.md b/README.md index b565371..b16c8c7 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,446 @@ # StudentManagementSystem -##基础 -实现一个简易的学生信息管理系统,其中学生信息包括:学号、姓名、性别、年龄、专业等。要求系统能提供建立、查询、删除、增加和排序等功能。 +# **分组实验报告** +**小组成员:**何童(组长)、张健、张逸儒、吴涛、黄宇豪、江昱升、谭勇、梅开明 +1. ### **题目** + 实现一个简易的学生信息管理系统,其中学生信息包括:学号、姓名、性别、年龄、专业等。要求系统能提供建立、查询、删除、增加和排序等功能。(可以自行增加完善系统功能,比如:可以增加其他学生信息用于学生的评优评奖等) +1. ### **需求分析** + 需求分析: -##结构 +1. 系统功能: + \* 建立:能够在系统中新建学生信息,包括学号、姓名、性别、年龄、专业等内容。 + \* 查询:能够根据学号、姓名、专业等查找学生信息,并以列表方式展示搜索结果。 + \* 删除:能够删除指定学生的信息,包括学号、姓名、性别、年龄、专业等内容。 + \* 增加:能够添加新的学生信息,包括学号、姓名、性别、年龄、专业等内容。 -##实现 -###定义学生存储结构 +2. 用户界面: + \* 界面设计简洁明了,易于操作。 + \* 用户可在操作界面直观地查看、编辑、删除和增加学生信息。 + \* 用户可根据选择的排序方式对学生信息进行排序。 + \* 系统提供各种适用的提示信息,方便用户操作。 + +3. 数据存储: + \* 学生信息应以记录形式存储,可以使用结构体数组等方式进行存储。 + \* 学号是学生信息的唯一标识,因此要确保学号具有唯一性,避免出现重复的学生信息。 + +1. ### **概要设计** +1. 数据结构: + +\* 结构体 `Date`:用于存储日期,包括年、月、日。 +\* 结构体 `Student`:用于存储一个学生的信息,包括学号、姓名、性别、年龄、专业和生日,其中生日是另一个结构体 `Date`。 + +1. 实现过程: + +1. 定义结构体 `Date` 和 结构体 `Student`。 +2. 定义一个结构体 `Student` 的数组 `student`。 +3. 实现菜单界面函数 `menu()`,通过 `printf` 函数对菜单文字进行输出。 +4. 实现添加学生信息函数 `addStudent()`,通过 `scanf` 函数对学生的各项信息进行输入保存。 +5. 实现查询学生信息函数 `searchStudent()`,通过 `scanf` 函数读入 1 或 2,根据是要求根据学号查询还是根据姓名查询来选择执行相应的代码。 +6. 实现删除学生信息函数 `deleteStudent()`,通过 `scanf` 函数读入 1 或 2,根据是要求根据学号删除还是根据姓名删除来选择执行相应的代码。 +7. 实现列出所有学生信息函数 `listStudent()`,通过 `printf` 函数对所有学生的信息进行列出输出。 +8. 实现退出系统函数 `shutdown()`,将变量 `run` 的值赋为 0,从而退出系统。 +9. 主函数按照菜单选项进行函数的调用,直至退出系统。 + +### **4.详细设计** + +1. **数据结构** + +` +`struct Date { + int year; + int month; + int day; +}; + +struct Student { + int ID; + char name[20]; + char sex[2]; // 男/女 + int age; + char major[20]; + struct Date birthday; +}; +``` + +**2.函数声明**: + +void menu(); +void addStudent(); +void listStudent(); +void searchStudent(); +void deleteStudent(); +void shutdown(); + + +**3.函数实现:** + +#include +#include +#include +#define N 99 + +static int run; +static int num; +static struct Student student[N]; + +void menu() { + printf("\n\n"); + printf("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\n"); + printf("\*-----------------数据结构第十一组-------------------\n"); + printf("\* 学生信息管理系统 \*\n"); + printf("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\n"); + printf("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*系统功能菜单\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\n"); + printf("---------------------- --------------------------\n"); + printf("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\n"); + printf("\*\* 1、增加学生信息 2、查询学生信息 \*\*\n"); + printf("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\n"); + printf("\*\* 3、删除学生信息 4、列出所有学生信息 \*\*\n"); + printf("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\n"); + printf("\*\* 5、退出系统 \*\*\n"); + printf("\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\n"); + printf("---------------------- --------------------------\n"); +} + +void addSTudent(){ //增加学生信息 + +` `int i = 0; + +` `while(1){ + +` `if(student[i].ID == 0&&i!=N){//找一个空位置存放该学生信息 + +` `scanf: + +` `printf("请输入学生学号:"); + +` `scanf("%d",&student[i].ID); + +` `for(int j=0;j