请运用c语言编写出来这套系统
时间: 2024-03-16 17:44:58 浏览: 60
好的,下面是一个简单的学生成绩管理系统的C语言代码,包含菜单驱动和上述功能的实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STUDENTS 100
#define MAX_COURSES 10
#define MAX_NAME_LEN 20
#define MAX_ID_LEN 10
struct Student {
char id[MAX_ID_LEN];
char name[MAX_NAME_LEN];
float scores[MAX_COURSES];
float total_score;
float avg_score;
};
struct Student students[MAX_STUDENTS];
int num_students = 0;
int num_courses = 0;
void add_student() {
if (num_students >= MAX_STUDENTS) {
printf("Maximum number of students reached.\n");
return;
}
struct Student s;
printf("Enter student id: ");
scanf("%s", s.id);
printf("Enter student name: ");
scanf("%s", s.name);
for (int i = 0; i < num_courses; i++) {
printf("Enter score for course %d: ", i+1);
scanf("%f", &s.scores[i]);
s.total_score += s.scores[i];
}
s.avg_score = s.total_score / num_courses;
students[num_students++] = s;
printf("Student added successfully.\n");
}
void modify_student() {
char id[MAX_ID_LEN];
printf("Enter student id to modify: ");
scanf("%s", id);
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("Enter new student id: ");
scanf("%s", students[i].id);
printf("Enter new student name: ");
scanf("%s", students[i].name);
for (int j = 0; j < num_courses; j++) {
printf("Enter new score for course %d: ", j+1);
scanf("%f", &students[i].scores[j]);
students[i].total_score += students[i].scores[j];
}
students[i].avg_score = students[i].total_score / num_courses;
printf("Student modified successfully.\n");
return;
}
}
printf("Student not found.\n");
}
void delete_student() {
char id[MAX_ID_LEN];
printf("Enter student id to delete: ");
scanf("%s", id);
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].id, id) == 0) {
for (int j = i; j < num_students-1; j++) {
students[j] = students[j+1];
}
num_students--;
printf("Student deleted successfully.\n");
return;
}
}
printf("Student not found.\n");
}
void output_students() {
printf("id\tname");
for (int i = 0; i < num_courses; i++) {
printf("\tcourse %d", i+1);
}
printf("\ttotal score\tavg score\n");
for (int i = 0; i < num_students; i++) {
printf("%s\t%s", students[i].id, students[i].name);
for (int j = 0; j < num_courses; j++) {
printf("\t%.2f", students[i].scores[j]);
}
printf("\t%.2f\t%.2f\n", students[i].total_score, students[i].avg_score);
}
}
void insert_student() {
int pos;
if (num_students >= MAX_STUDENTS) {
printf("Maximum number of students reached.\n");
return;
}
printf("Enter position to insert (0-%d): ", num_students);
scanf("%d", &pos);
if (pos < 0 || pos > num_students) {
printf("Invalid position.\n");
return;
}
struct Student s;
printf("Enter student id: ");
scanf("%s", s.id);
printf("Enter student name: ");
scanf("%s", s.name);
for (int i = 0; i < num_courses; i++) {
printf("Enter score for course %d: ", i+1);
scanf("%f", &s.scores[i]);
s.total_score += s.scores[i];
}
s.avg_score = s.total_score / num_courses;
for (int i = num_students; i > pos; i--) {
students[i] = students[i-1];
}
students[pos] = s;
num_students++;
printf("Student inserted successfully.\n");
}
void search_student() {
char id[MAX_ID_LEN];
printf("Enter student id to search: ");
scanf("%s", id);
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].id, id) == 0) {
printf("id\tname");
for (int j = 0; j < num_courses; j++) {
printf("\tcourse %d", j+1);
}
printf("\ttotal score\tavg score\n");
printf("%s\t%s", students[i].id, students[i].name);
for (int j = 0; j < num_courses; j++) {
printf("\t%.2f", students[i].scores[j]);
}
printf("\t%.2f\t%.2f\n", students[i].total_score, students[i].avg_score);
return;
}
}
printf("Student not found.\n");
}
void sort_students() {
int choice;
printf("Sort by:\n");
printf("1. Total Score\n");
printf("2. Average Score\n");
printf("Enter choice: ");
scanf("%d", &choice);
for (int i = 0; i < num_students; i++) {
for (int j = i+1; j < num_students; j++) {
if (choice == 1 && students[i].total_score < students[j].total_score) {
struct Student temp = students[i];
students[i] = students[j];
students[j] = temp;
} else if (choice == 2 && students[i].avg_score < students[j].avg_score) {
struct Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
printf("Students sorted successfully.\n");
}
int main() {
int choice;
printf("Enter number of students: ");
scanf("%d", &num_students);
printf("Enter number of courses: ");
scanf("%d", &num_courses);
while (1) {
printf("\n1. Add Student\n");
printf("2. Modify Student\n");
printf("3. Delete Student\n");
printf("4. Output Students\n");
printf("5. Insert Student\n");
printf("6. Search Student\n");
printf("7. Sort Students\n");
printf("8. Quit\n");
printf("Enter choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
modify_student();
break;
case 3:
delete_student();
break;
case 4:
output_students();
break;
case 5:
insert_student();
break;
case 6:
search_student();
break;
case 7:
sort_students();
break;
case 8:
exit(0);
default:
printf("Invalid choice.\n");
}
}
return 0;
}
```
这个代码实现了一个简单的学生成绩管理系统,包含录入、修改、删除、输出、插入、查询和排序等功能。运行程序后,会提示输入班级总人数和课程数,然后进入菜单界面,用户可以根据需要选择相应的功能。