用C语言写学生信息管理系统其功能包括,学生信息的录入,显示,删除(按学号删除),查找,增加(插入),统计功能(平均分的统计,成绩的统计,成绩排序)保存和文件读写,学生信息包括学生的学号,姓名,三科成绩(math,English,program),菜单的人机交互设计(选择的功能完成完成后回到功能选择菜单)
时间: 2023-08-15 08:07:04 浏览: 71
学生信息管理系统,包括录入学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、统计学生总数和显所有学生信息等功能
好的,我可以为你提供一个简单的学生信息管理系统的C语言代码作为参考。以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENT 100 // 最大学生数
#define NAME_LEN 20 // 学生姓名长度
#define FILENAME "students.txt" // 文件名
struct Student {
int id;
char name[NAME_LEN];
int math_score;
int english_score;
int program_score;
};
struct Student students[MAX_STUDENT]; // 存储学生信息
int num_students = 0; // 学生数目
// 显示菜单
void show_menu() {
printf("请选择操作:\n");
printf("1. 录入学生信息\n");
printf("2. 显示学生信息\n");
printf("3. 删除学生信息\n");
printf("4. 查找学生信息\n");
printf("5. 增加学生信息\n");
printf("6. 统计学生信息\n");
printf("7. 保存学生信息到文件\n");
printf("8. 从文件中读取学生信息\n");
printf("0. 退出程序\n");
printf("请输入选择的操作编号:");
}
// 录入学生信息
void input_student() {
if (num_students >= MAX_STUDENT) {
printf("学生数目已达到上限,无法继续录入!\n");
return;
}
struct Student student;
printf("请输入学生的学号:");
scanf("%d", &student.id);
printf("请输入学生的姓名:");
scanf("%s", student.name);
printf("请输入学生的数学成绩:");
scanf("%d", &student.math_score);
printf("请输入学生的英语成绩:");
scanf("%d", &student.english_score);
printf("请输入学生的程序设计成绩:");
scanf("%d", &student.program_score);
students[num_students++] = student;
printf("学生信息录入成功!\n");
}
// 显示学生信息
void show_students() {
if (num_students == 0) {
printf("当前没有任何学生信息!\n");
return;
}
printf("学号\t姓名\t数学\t英语\t程序设计\n");
for (int i = 0; i < num_students; i++) {
printf("%d\t%s\t%d\t%d\t%d\n",
students[i].id, students[i].name,
students[i].math_score, students[i].english_score, students[i].program_score);
}
}
// 按学号删除学生信息
void delete_student() {
if (num_students == 0) {
printf("当前没有任何学生信息!\n");
return;
}
int id;
printf("请输入要删除的学生的学号:");
scanf("%d", &id);
int index = -1;
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("没有找到该学生信息!\n");
return;
}
for (int i = index; i < num_students - 1; i++) {
students[i] = students[i + 1];
}
num_students--;
printf("学生信息删除成功!\n");
}
// 按学号查找学生信息
void search_student() {
if (num_students == 0) {
printf("当前没有任何学生信息!\n");
return;
}
int id;
printf("请输入要查找的学生的学号:");
scanf("%d", &id);
int index = -1;
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("没有找到该学生信息!\n");
return;
}
printf("学号\t姓名\t数学\t英语\t程序设计\n");
printf("%d\t%s\t%d\t%d\t%d\n",
students[index].id, students[index].name,
students[index].math_score, students[index].english_score, students[index].program_score);
}
// 插入学生信息
void insert_student() {
if (num_students >= MAX_STUDENT) {
printf("学生数目已达到上限,无法继续插入!\n");
return;
}
struct Student student;
int id;
printf("请输入要插入的学生的学号:");
scanf("%d", &id);
int index = -1;
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
index = i;
break;
}
}
if (index == -1) {
printf("没有找到该学生信息!\n");
return;
}
printf("请输入学生的姓名:");
scanf("%s", student.name);
printf("请输入学生的数学成绩:");
scanf("%d", &student.math_score);
printf("请输入学生的英语成绩:");
scanf("%d", &student.english_score);
printf("请输入学生的程序设计成绩:");
scanf("%d", &student.program_score);
for (int i = num_students; i > index; i--) {
students[i] = students[i - 1];
}
student.id = id;
students[index] = student;
num_students++;
printf("学生信息插入成功!\n");
}
// 统计学生信息
void stat_student() {
if (num_students == 0) {
printf("当前没有任何学生信息!\n");
return;
}
int total_math = 0, total_english = 0, total_program = 0;
for (int i = 0; i < num_students; i++) {
total_math += students[i].math_score;
total_english += students[i].english_score;
total_program += students[i].program_score;
}
double avg_math = (double)total_math / num_students;
double avg_english = (double)total_english / num_students;
double avg_program = (double)total_program / num_students;
printf("平均数学成绩:%lf\n", avg_math);
printf("平均英语成绩:%lf\n", avg_english);
printf("平均程序设计成绩:%lf\n", avg_program);
}
// 按成绩排序
void sort_student() {
if (num_students == 0) {
printf("当前没有任何学生信息!\n");
return;
}
for (int i = 0; i < num_students - 1; i++) {
for (int j = i + 1; j < num_students; j++) {
int sum_i = students[i].math_score + students[i].english_score + students[i].program_score;
int sum_j = students[j].math_score + students[j].english_score + students[j].program_score;
if (sum_i < sum_j) {
struct Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("学号\t姓名\t数学\t英语\t程序设计\n");
for (int i = 0; i < num_students; i++) {
printf("%d\t%s\t%d\t%d\t%d\n",
students[i].id, students[i].name,
students[i].math_score, students[i].english_score, students[i].program_score);
}
}
// 保存学生信息到文件
void save_to_file() {
FILE *fp = fopen(FILENAME, "w");
if (!fp) {
printf("文件打开失败!\n");
return;
}
fprintf(fp, "%d\n", num_students);
for (int i = 0; i < num_students; i++) {
fprintf(fp, "%d %s %d %d %d\n",
students[i].id, students[i].name,
students[i].math_score, students[i].english_score, students[i].program_score);
}
fclose(fp);
printf("学生信息已保存到文件!\n");
}
// 从文件中读取学生信息
void read_from_file() {
FILE *fp = fopen(FILENAME, "r");
if (!fp) {
printf("文件打开失败!\n");
return;
}
fscanf(fp, "%d", &num_students);
for (int i = 0; i < num_students; i++) {
struct Student student;
fscanf(fp, "%d %s %d %d %d",
&student.id, student.name,
&student.math_score, &student.english_score, &student.program_score);
students[i] = student;
}
fclose(fp);
printf("学生信息已从文件中读取!\n");
}
int main() {
int choice;
do {
show_menu();
scanf("%d", &choice);
switch (choice) {
case 1:
input_student();
break;
case 2:
show_students();
break;
case 3:
delete_student();
break;
case 4:
search_student();
break;
case 5:
insert_student();
break;
case 6:
stat_student();
break;
case 7:
save_to_file();
break;
case 8:
read_from_file();
break;
case 0:
printf("程序已退出!\n");
break;
default:
printf("无效的操作编号,请重新输入!\n");
break;
}
} while (choice != 0);
return 0;
}
```
这段代码实现了一个简单的学生信息管理系统,包括录入、显示、删除、查找、增加、统计、保存和文件读写等功能。你可以根据自己的需要对代码进行修改和优化。
阅读全文