用C语言写学生信息管理系统其功能包括,学生信息的录入,显示,删除(按学号删除),查找,增加(插入),统计功能(平均分的统计,成绩的统计,成绩排序)保存和文件读写,学生信息包括学生的学号,姓名,三科成绩(math,English,program),菜单的人机交互设计(选择的功能完成后清屏并回到功能选择菜单)
时间: 2023-08-15 17:07:51 浏览: 41
好的,下面是一个简单的学生信息管理系统的 C 代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_STU_NUM 100
typedef struct student{
int id;
char name[MAX_NAME_LEN];
float math;
float english;
float program;
} Student;
int num = 0;
Student students[MAX_STU_NUM];
void clear_input_buffer()
{
char c;
while((c = getchar()) != '\n' && c != EOF);
}
void add_student()
{
if(num >= MAX_STU_NUM){
printf("The number of students exceeds the maximum limit.\n");
return;
}
Student s;
printf("Please enter student's ID, name and three grades (math, english, program):\n");
scanf("%d%s%f%f%f", &s.id, s.name, &s.math, &s.english, &s.program);
students[num++] = s;
printf("Student added successfully.\n");
}
void display_students()
{
if(num == 0){
printf("No student information.\n");
return;
}
printf("ID\tName\t\tMath\tEnglish\tProgram\tTotal\n");
for(int i = 0; i < num; i++){
printf("%d\t%-10s\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].math, students[i].english, students[i].program, students[i].math + students[i].english + students[i].program);
}
}
void search_student()
{
if(num == 0){
printf("No student information.\n");
return;
}
int id;
printf("Please enter the ID of the student to be searched:\n");
scanf("%d", &id);
for(int i = 0; i < num; i++){
if(students[i].id == id){
printf("ID\tName\t\tMath\tEnglish\tProgram\tTotal\n");
printf("%d\t%-10s\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].math, students[i].english, students[i].program, students[i].math + students[i].english + students[i].program);
return;
}
}
printf("Student not found.\n");
}
void delete_student()
{
if(num == 0){
printf("No student information.\n");
return;
}
int id;
printf("Please enter the ID of the student to be deleted:\n");
scanf("%d", &id);
for(int i = 0; i < num; i++){
if(students[i].id == id){
for(int j = i; j < num - 1; j++){
students[j] = students[j + 1];
}
num--;
printf("Student deleted successfully.\n");
return;
}
}
printf("Student not found.\n");
}
void insert_student()
{
if(num >= MAX_STU_NUM){
printf("The number of students exceeds the maximum limit.\n");
return;
}
int pos;
printf("Please enter the position to insert the student (0 - %d):\n", num);
scanf("%d", &pos);
if(pos < 0 || pos > num){
printf("Invalid position.\n");
return;
}
Student s;
printf("Please enter student's ID, name and three grades (math, english, program):\n");
scanf("%d%s%f%f%f", &s.id, s.name, &s.math, &s.english, &s.program);
for(int i = num; i > pos; i--){
students[i] = students[i - 1];
}
students[pos] = s;
num++;
printf("Student inserted successfully.\n");
}
void sort_students()
{
if(num == 0){
printf("No student information.\n");
return;
}
for(int i = 0; i < num - 1; i++){
for(int j = 0; j < num - i - 1; j++){
if(students[j].math + students[j].english + students[j].program < students[j + 1].math + students[j + 1].english + students[j + 1].program){
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
printf("ID\tName\t\tMath\tEnglish\tProgram\tTotal\n");
for(int i = 0; i < num; i++){
printf("%d\t%-10s\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].math, students[i].english, students[i].program, students[i].math + students[i].english + students[i].program);
}
}
void calculate_average()
{
if(num == 0){
printf("No student information.\n");
return;
}
float math_sum = 0, english_sum = 0, program_sum = 0;
for(int i = 0; i < num; i++){
math_sum += students[i].math;
english_sum += students[i].english;
program_sum += students[i].program;
}
printf("Average Math: %.2f\n", math_sum / num);
printf("Average English: %.2f\n", english_sum / num);
printf("Average Program: %.2f\n", program_sum / num);
}
void calculate_total()
{
if(num == 0){
printf("No student information.\n");
return;
}
float total_sum = 0;
for(int i = 0; i < num; i++){
total_sum += students[i].math + students[i].english + students[i].program;
}
printf("Total Score: %.2f\n", total_sum);
}
void save_students()
{
if(num == 0){
printf("No student information.\n");
return;
}
FILE *fp;
fp = fopen("students.txt", "w");
fprintf(fp, "ID\tName\tMath\tEnglish\tProgram\n");
for(int i = 0; i < num; i++){
fprintf(fp, "%d\t%s\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].math, students[i].english, students[i].program);
}
fclose(fp);
printf("Student information saved successfully.\n");
}
void read_students()
{
FILE *fp;
fp = fopen("students.txt", "r");
if(fp == NULL){
printf("Student information file does not exist.\n");
return;
}
fscanf(fp, "%*[^\n]\n"); // skip the first line
while(!feof(fp) && num < MAX_STU_NUM){
Student s;
fscanf(fp, "%d%s%f%f%f\n", &s.id, s.name, &s.math, &s.english, &s.program);
students[num++] = s;
}
fclose(fp);
printf("Student information loaded successfully.\n");
}
void show_menu()
{
printf("*********************\n");
printf("* 1. Add student *\n");
printf("* 2. Display students*\n");
printf("* 3. Search student *\n");
printf("* 4. Delete student *\n");
printf("* 5. Insert student *\n");
printf("* 6. Sort students *\n");
printf("* 7. Calculate average*\n");
printf("* 8. Calculate total *\n");
printf("* 9. Save students *\n");
printf("* 10. Read students *\n");
printf("* 0. Exit *\n");
printf("*********************\n");
}
int main()
{
int choice;
while(1){
show_menu();
printf("Please enter your choice:\n");
scanf("%d", &choice);
clear_input_buffer();
switch(choice){
case 0:
printf("Goodbye!\n");
exit(0);
case 1:
add_student();
break;
case 2:
display_students();
break;
case 3:
search_student();
break;
case 4:
delete_student();
break;
case 5:
insert_student();
break;
case 6:
sort_students();
break;
case 7:
calculate_average();
break;
case 8:
calculate_total();
break;
case 9:
save_students();
break;
case 10:
read_students();
break;
default:
printf("Invalid choice.\n");
}
printf("Press Enter to continue.\n");
getchar();
system("clear");
}
return 0;
}
```
这个程序的功能包括:学生信息的录入、显示、删除、查找、插入、排序、平均分的统计、成绩的统计、保存和文件读写,同时还有一个简单的菜单界面。