学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail,C语言、数学和英语成绩等。试设计一个学生信息管理系统,使之能提供以下功能: 系统以菜单方式工作 学生信息录入功能---输入 学生信息浏览功能——输出 查询、排序功能——算法 1、按学号查询 2、按姓名查询 3、按C语言、数学和英语成绩分别排序 学生信息的插入、删除与修改
时间: 2023-12-22 14:19:07 浏览: 57
好的,以下是一个简单的学生信息管理系统的设计,供你参考:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT_NUM 100
struct student {
int id;
char name[20];
int age;
char sex[5];
char birthdate[20];
char address[100];
char phone[20];
char email[50];
int c_score;
int math_score;
int english_score;
};
struct student students[MAX_STUDENT_NUM];
int current_student_num = 0;
void print_menu();
void add_student();
void view_all_students();
void search_by_id();
void search_by_name();
void sort_by_c_score();
void sort_by_math_score();
void sort_by_english_score();
void update_student();
void delete_student();
int main()
{
int choice;
while (1) {
print_menu();
printf("请输入你要选择的操作:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
view_all_students();
break;
case 3:
search_by_id();
break;
case 4:
search_by_name();
break;
case 5:
sort_by_c_score();
break;
case 6:
sort_by_math_score();
break;
case 7:
sort_by_english_score();
break;
case 8:
update_student();
break;
case 9:
delete_student();
break;
case 0:
exit(0);
break;
default:
printf("输入无效,请重新输入。\n");
break;
}
printf("\n");
}
return 0;
}
void print_menu()
{
printf("**********学生信息管理系统**********\n");
printf("* 1. 录入学生信息 *\n");
printf("* 2. 查看所有学生信息 *\n");
printf("* 3. 按学号查询学生信息 *\n");
printf("* 4. 按姓名查询学生信息 *\n");
printf("* 5. 按C语言成绩排序学生信息 *\n");
printf("* 6. 按数学成绩排序学生信息 *\n");
printf("* 7. 按英语成绩排序学生信息 *\n");
printf("* 8. 修改学生信息 *\n");
printf("* 9. 删除学生信息 *\n");
printf("* 0. 退出程序 *\n");
printf("*************************************\n");
}
void add_student()
{
struct student s;
printf("请输入学生信息:\n");
printf("学号:");
scanf("%d", &s.id);
printf("姓名:");
scanf("%s", s.name);
printf("年龄:");
scanf("%d", &s.age);
printf("性别:");
scanf("%s", s.sex);
printf("出生年月:");
scanf("%s", s.birthdate);
printf("地址:");
scanf("%s", s.address);
printf("电话:");
scanf("%s", s.phone);
printf("E-mail:");
scanf("%s", s.email);
printf("C语言成绩:");
scanf("%d", &s.c_score);
printf("数学成绩:");
scanf("%d", &s.math_score);
printf("英语成绩:");
scanf("%d", &s.english_score);
students[current_student_num++] = s;
printf("学生信息录入成功!\n");
}
void view_all_students()
{
if (current_student_num == 0) {
printf("没有学生信息。\n");
return;
}
printf("学号\t姓名\t年龄\t性别\t出生年月\t地址\t\t电话\t\tE-mail\t\tC语言\t数学\t英语\n");
for (int i = 0; i < current_student_num; i++) {
printf("%d\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%d\t%d\t%d\n",
students[i].id, students[i].name, students[i].age, students[i].sex,
students[i].birthdate, students[i].address, students[i].phone, students[i].email,
students[i].c_score, students[i].math_score, students[i].english_score);
}
}
void search_by_id()
{
int id;
int found = 0;
printf("请输入要查询的学号:");
scanf("%d", &id);
for (int i = 0; i < current_student_num; i++) {
if (students[i].id == id) {
printf("学号\t姓名\t年龄\t性别\t出生年月\t地址\t\t电话\t\tE-mail\t\tC语言\t数学\t英语\n");
printf("%d\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%d\t%d\t%d\n",
students[i].id, students[i].name, students[i].age, students[i].sex,
students[i].birthdate, students[i].address, students[i].phone, students[i].email,
students[i].c_score, students[i].math_score, students[i].english_score);
found = 1;
break;
}
}
if (!found) {
printf("未找到该学生信息。\n");
}
}
void search_by_name()
{
char name[20];
int found = 0;
printf("请输入要查询的姓名:");
scanf("%s", name);
for (int i = 0; i < current_student_num; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("学号\t姓名\t年龄\t性别\t出生年月\t地址\t\t电话\t\tE-mail\t\tC语言\t数学\t英语\n");
printf("%d\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%d\t%d\t%d\n",
students[i].id, students[i].name, students[i].age, students[i].sex,
students[i].birthdate, students[i].address, students[i].phone, students[i].email,
students[i].c_score, students[i].math_score, students[i].english_score);
found = 1;
}
}
if (!found) {
printf("未找到该学生信息。\n");
}
}
void sort_by_c_score()
{
for (int i = 0; i < current_student_num - 1; i++) {
for (int j = 0; j < current_student_num - i - 1; j++) {
if (students[j].c_score < students[j+1].c_score) {
struct student tmp = students[j];
students[j] = students[j+1];
students[j+1] = tmp;
}
}
}
view_all_students();
}
void sort_by_math_score()
{
for (int i = 0; i < current_student_num - 1; i++) {
for (int j = 0; j < current_student_num - i - 1; j++) {
if (students[j].math_score < students[j+1].math_score) {
struct student tmp = students[j];
students[j] = students[j+1];
students[j+1] = tmp;
}
}
}
view_all_students();
}
void sort_by_english_score()
{
for (int i = 0; i < current_student_num - 1; i++) {
for (int j = 0; j < current_student_num - i - 1; j++) {
if (students[j].english_score < students[j+1].english_score) {
struct student tmp = students[j];
students[j] = students[j+1];
students[j+1] = tmp;
}
}
}
view_all_students();
}
void update_student()
{
int id;
int found = 0;
printf("请输入要修改的学生的学号:");
scanf("%d", &id);
for (int i = 0; i < current_student_num; i++) {
if (students[i].id == id) {
found = 1;
printf("请输入修改后的学生信息:\n");
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("年龄:");
scanf("%d", &students[i].age);
printf("性别:");
scanf("%s", students[i].sex);
printf("出生年月:");
scanf("%s", students[i].birthdate);
printf("地址:");
scanf("%s", students[i].address);
printf("电话:");
scanf("%s", students[i].phone);
printf("E-mail:");
scanf("%s", students[i].email);
printf("C语言成绩:");
scanf("%d", &students[i].c_score);
printf("数学成绩:");
scanf("%d", &students[i].math_score);
printf("英语成绩:");
scanf("%d", &students[i].english_score);
printf("学生信息修改成功!\n");
break;
}
}
if (!found) {
printf("未找到该学生信息。\n");
}
}
void delete_student()
{
int id;
int found = 0;
printf("请输入要删除的学生的学号:");
scanf("%d", &id);
for (int i = 0; i < current_student_num; i++) {
if (students[i].id == id) {
found = 1;
for (int j = i; j < current_student_num - 1; j++) {
students[j] = students[j+1];
}
current_student_num--;
printf("学生信息删除成功!\n");
break;
}
}
if (!found) {
printf("未找到该学生信息。\n");
}
}
```
上面代码中,定义了一个 `struct student` 结构体,表示学生信息。然后定义了一个 `students` 数组用于存储所有学生信息,以及一个 `current_student_num` 变量记录当前学生数量。
菜单功能通过 `print_menu()` 函数实现,各功能通过不同的函数实现。其中,学生信息录入功能通过 `add_student()` 函数实现,学生信息浏览功能通过 `view_all_students()` 函数实现,查询功能通过 `search_by_id()` 和 `search_by_name()` 函数实现,排序功能通过 `sort_by_c_score()`、`sort_by_math_score()` 和 `sort_by_english_score()` 函数实现,学生信息的插入、删除与修改通过 `update_student()` 和 `delete_student()` 函数实现。
以上是一个简单的学生信息管理系统的设计,具体实现可以根据需求进行修改和完善。