用c语言编写一个200行以上的学生成绩管理系统
时间: 2023-12-07 08:02:31 浏览: 97
用c语言编写学生成绩管理系统.doc
5星 · 资源好评率100%
好的,这是一个比较大的项目,但是我会尽力回答你的问题。首先,我们需要确定这个学生成绩管理系统需要实现哪些功能。通常来说,一个成绩管理系统应该包括以下功能:
1. 添加学生信息
2. 删除学生信息
3. 修改学生信息
4. 查询学生信息
5. 添加学生成绩
6. 删除学生成绩
7. 修改学生成绩
8. 查询学生成绩
9. 统计学生成绩
10. 导出学生成绩
有了这些功能需求,我们就可以开始编写代码了。以下是一个简单的成绩管理系统的示例代码,共计 290 行左右:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct student {
char name[20];
char id[20];
float grade;
struct student *next;
};
struct student *head = NULL;
void add_student() {
struct student *new_student = (struct student*)malloc(sizeof(struct student));
printf("请输入学生姓名:");
scanf("%s", new_student->name);
printf("请输入学生学号:");
scanf("%s", new_student->id);
printf("请输入学生成绩:");
scanf("%f", &new_student->grade);
new_student->next = head;
head = new_student;
printf("添加成功!\n");
}
void delete_student() {
char id[20];
printf("请输入要删除的学生学号:");
scanf("%s", id);
struct student *p = head, *prev = NULL;
while (p) {
if (strcmp(p->id, id) == 0) {
if (prev) {
prev->next = p->next;
} else {
head = p->next;
}
free(p);
printf("删除成功!\n");
return;
}
prev = p;
p = p->next;
}
printf("未找到该学生!\n");
}
void modify_student() {
char id[20];
printf("请输入要修改的学生学号:");
scanf("%s", id);
struct student *p = head;
while (p) {
if (strcmp(p->id, id) == 0) {
printf("请输入新的学生姓名:");
scanf("%s", p->name);
printf("请输入新的学生成绩:");
scanf("%f", &p->grade);
printf("修改成功!\n");
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
void query_student() {
char id[20];
printf("请输入要查询的学生学号:");
scanf("%s", id);
struct student *p = head;
while (p) {
if (strcmp(p->id, id) == 0) {
printf("姓名:%s 学号:%s 成绩:%.2f\n", p->name, p->id, p->grade);
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
void add_grade() {
char id[20];
printf("请输入要添加成绩的学生学号:");
scanf("%s", id);
struct student *p = head;
while (p) {
if (strcmp(p->id, id) == 0) {
printf("请输入新的学生成绩:");
scanf("%f", &p->grade);
printf("添加成功!\n");
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
void delete_grade() {
char id[20];
printf("请输入要删除成绩的学生学号:");
scanf("%s", id);
struct student *p = head;
while (p) {
if (strcmp(p->id, id) == 0) {
p->grade = 0;
printf("删除成功!\n");
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
void modify_grade() {
char id[20];
printf("请输入要修改成绩的学生学号:");
scanf("%s", id);
struct student *p = head;
while (p) {
if (strcmp(p->id, id) == 0) {
printf("请输入新的学生成绩:");
scanf("%f", &p->grade);
printf("修改成功!\n");
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
void query_grade() {
char id[20];
printf("请输入要查询成绩的学生学号:");
scanf("%s", id);
struct student *p = head;
while (p) {
if (strcmp(p->id, id) == 0) {
printf("学生姓名:%s 学号:%s 成绩:%.2f\n", p->name, p->id, p->grade);
return;
}
p = p->next;
}
printf("未找到该学生!\n");
}
void statistics() {
int count = 0;
float total = 0, avg;
struct student *p = head;
while (p) {
count++;
total += p->grade;
p = p->next;
}
if (count > 0) {
avg = total / count;
printf("总人数:%d 总分数:%.2f 平均分数:%.2f\n", count, total, avg);
} else {
printf("没有学生信息!\n");
}
}
void export() {
FILE *fp = fopen("grades.txt", "w");
if (!fp) {
printf("文件打开失败!\n");
return;
}
struct student *p = head;
while (p) {
fprintf(fp, "%s,%s,%.2f\n", p->name, p->id, p->grade);
p = p->next;
}
fclose(fp);
printf("导出成功!\n");
}
void 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("9. 统计学生成绩\n");
printf("10. 导出学生成绩\n");
printf("0. 退出系统\n");
printf("请输入您的选择:");
}
int main() {
int choice;
while (1) {
menu();
scanf("%d", &choice);
switch (choice) {
case 1:
add_student();
break;
case 2:
delete_student();
break;
case 3:
modify_student();
break;
case 4:
query_student();
break;
case 5:
add_grade();
break;
case 6:
delete_grade();
break;
case 7:
modify_grade();
break;
case 8:
query_grade();
break;
case 9:
statistics();
break;
case 10:
export();
break;
case 0:
printf("感谢使用本系统!\n");
return 0;
default:
printf("输入错误,请重新输入!\n");
break;
}
}
}
```
这个代码中用到了链表来存储学生信息,可以方便地进行添加、删除、修改和查询操作。同时,也实现了添加、删除、修改和查询成绩、统计总分数和平均分数、导出成绩等功能。你可以根据自己的需求对代码进行修改和扩展。
阅读全文