# StudentManagementSystem # **分组实验报告** **小组成员:**何童(组长)、张健、张逸儒、吴涛、黄宇豪、江昱升、谭勇、梅开明 1### **1.题目** 实现一个简易的学生信息管理系统,其中学生信息包括:学号、姓名、性别、年龄、专业等。要求系统能提供建立、查询、删除、增加和排序等功能。(可以自行增加完善系统功能,比如:可以增加其他学生信息用于学生的评优评奖等) ### **2.需求分析** 需求分析: 1. 系统功能: \* 建立:能够在系统中新建学生信息,包括学号、姓名、性别、年龄、专业等内容。 \* 查询:能够根据学号、姓名、专业等查找学生信息,并以列表方式展示搜索结果。 \* 删除:能够删除指定学生的信息,包括学号、姓名、性别、年龄、专业等内容。 \* 增加:能够添加新的学生信息,包括学号、姓名、性别、年龄、专业等内容。 2. 用户界面: \* 界面设计简洁明了,易于操作。 \* 用户可在操作界面直观地查看、编辑、删除和增加学生信息。 \* 用户可根据选择的排序方式对学生信息进行排序。 \* 系统提供各种适用的提示信息,方便用户操作。 3. 数据存储: \* 学生信息应以记录形式存储,可以使用结构体数组等方式进行存储。 \* 学号是学生信息的唯一标识,因此要确保学号具有唯一性,避免出现重复的学生信息。 ### **3.概要设计** 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