题目:
1.简答题
模拟开发一一个学生成绩管理系统,此系统具有以下功能:
1. 添加学生信息,包括学号、姓名、C语言成绩、数据结构成绩;
2.显示学生信息,将所有学生信息打印输出;
3.查找学生信息,根据学生姓名,将其信息打印输出;
4.修改学生信息,可以根据姓名查找到学生,然后可以修改学生姓名、成绩项;
5.删除学生信息,根据学号查找到学生,将其信息删除;
6.按学生总成绩进行从高到低排序;7.按科目输出不及格的学生信息。
自己独立完成。
输入答案
源码:
io.h> #include<stdlib.h> #include<string.h> #include<malloc.h> #define MAXSIZE 100 typedef struct { char name[10]; //姓名 char no[8]; //学号 int priceC, priceJG;//两科成绩 int priceSUM;//个人总分 }Student; typedef struct { Student elem[100]; //指向数据元素的基地址 int length; //线性表的当前长度 int listsize;//表长 }Sqlist, * Seqlist; void initlist(Seqlist L)//建立一个空的顺序线性表 { L->length = 0; L->listsize = MAXSIZE; } void displist(Seqlist L)//打印学生信息 { int i; for (i = 1; i <= L->length; i++) { printf("姓名:%s\n", L->elem[i - 1].name); printf("学号:%s\n", L->elem[i - 1].no); printf("C语言成绩:%d\n", L->elem[i - 1].priceC); printf("数据结构成绩:%d\n", L->elem[i - 1].priceJG); } printf("\n"); } void inputlist(Seqlist L)//学生信息的输入 { int i, n; printf("请输入学生的个数:"); scanf("%d", &n); for (i = 0; i < n; i++) { printf("请输入学生的信息:\n"); printf("姓名:"); scanf("%s", &L->elem[i].name); printf("学号:"); scanf("%s", &L->elem[i].no); printf("C语言成绩:"); scanf("%d", &L->elem[i].priceC); printf("数据结构成绩:"); scanf("%d", &L->elem[i].priceJG); L->length++; } printf("\n"); } void seeklist(Seqlist L)//根据学生节点位置查找学生信息 { int i; printf("请输入查找学生的学号:"); scanf("%d", &i); while (i<1 || i>L->length) { printf("输入超出学生的总数,请重新输入查找学生的学号:"); scanf("%d", &i); } printf("该学生的信息:\n"); printf("姓名:%s\n学号:%s\nC语言成绩:%d\n数据结构成绩:%d\n", L->elem[i - 1].name, L->elem[i - 1].no, L->elem[i - 1].priceC, L->elem[i - 1].priceJG); } void show(Seqlist L, int i) { printf("%d\n", &L->elem[i].no); printf("%s\n", L->elem[i].name); printf("%d\n", &L->elem[i].priceC); printf("%d\n", &L->elem[i].priceJG); printf("%d\n", &L->elem[i].priceSUM); } void nameseeklist(Seqlist L)//根据学生姓名查找学生信息 { int i; char name[20]; printf("请输入查找学生姓名:"); scanf("%s", &name); for (i = 0; i < L->length; i++) { if (strcmp(L->elem[i].name, name) == 0) { break; } } if (strcmp(L->elem[i].name, name) == 0) { printf("该学生的信息:\n"); printf("学号:%s\nC语言成绩:%d\n数据结构成绩:%d\n", L->elem[i].no, L->elem[i].priceC, L->elem[i].priceJG); } else printf("该表中没有该学生!\n"); } void deletelist(Seqlist L)//学生信息的删除 { int i; int j; printf("请输入删除学生的学号:"); scanf("%d", &i); while (i<1 || i>L->length) { printf("输入超出学生的总数,请重新输入删除学生的学号:"); scanf("%d", &i); } for (j = i; j <= L->length - 1; j++) { L->elem[j - 1] = L->elem[j]; } L->length--; } void insertlist(Seqlist L)//学生信息的插入 { int i, j, x; printf("请输入要插入学生的学号位置:"); scanf("%d", &i); if (L->length == MAXSIZE) printf("存储已满,无法插入\n"); while (i<1 || i>(L->length + 1)) { printf("无法插入,请重新输入插入学生的学号位置:"); scanf("%d", &i); } for (j = L->length - 1; j >= i - 1; j--) { L->elem[j + 1] = L->elem[j]; } printf("请输入学生的信息:\n"); printf("姓名:"); scanf("%s", &L->elem[i].name); printf("学号:"); scanf("%s", &L->elem[i].no); printf("C语言成绩:"); scanf("%d", &L->elem[i].priceC); printf("数据结构成绩:"); scanf("%d", &L->elem[i].priceJG); L->length++; printf("\n"); } int lengthlist(Seqlist L)//求表中学生的总数 { return L->length; } void Modifylist(Seqlist L)//修改学生信息 { int i, ch; char name[20]; printf("请输入查找学生姓名:"); scanf("%s", &name); for (i = 0; i < L->length; i++) { if (strcmp(L->elem[i].name, name) == 0) { break; } } if (strcmp(L->elem[i].name, name) == 0) { printf("该学生的信息:\n"); printf("学号:%s\nC语言成绩:%d\n数据结构成绩:%d\n", L->elem[i].no, L->elem[i].priceC, L->elem[i].priceJG); printf("请修改数据\n"); printf("姓名:\n"); scanf("%s", &L->elem[i].name); printf("C语言成绩:\n"); scanf("%d", &L->elem[i].priceC); printf("数据结构成绩:\n"); scanf("%d", &L->elem[i].priceJG); printf("修改完毕。\n"); } else printf("该表中没有该学生!\n"); } void Sortlist(Seqlist L)//总分排序 { int i, j,min; printf("按总成绩进行排序\n"); for (i = 1; i < L->length; i++) { L->elem[i - 1].priceSUM = L->elem[i - 1].priceC + L->elem[i-1].priceJG; for (j = i + 1; j <= L->length; j++) { L->elem[j - 1].priceSUM = L->elem[j - 1].priceC + L->elem[j - 1].priceJG; if (L->elem[i - 1].priceSUM < L->elem[j - 1].priceSUM) { min = L->elem[i - 1].priceSUM; L->elem[i - 1].priceSUM = L->elem[j - 1].priceSUM; L->elem[j - 1].priceSUM = min; } } printf("%s\n", L->elem[j].name); } printf("排序结果如下:\n"); } int main()//主函数 { Sqlist L1; Seqlist L = &L1; int k; initlist(L);//建立一个空的顺序线性表 inputlist(L);//输入学生的信息。 printf("\n"); displist(L);//打印学生的信息。 printf("学生信息输入成功!\n"); printf("\n"); printf("学生信息管理系统的操作目录:\n"); printf("__________________________\n"); printf("__________________________\n"); printf("1、根据学生的姓名查找学生信息;2、插入学生的信息;3、删除学生的信息;4、求表中学生的总数;5、修改学生信息;6、总分排序;0、结束使用。\n"); printf("__________________________\n"); while (1) { printf("请选择操作:"); scanf("%d", &k); switch (k) { case 0:printf("谢谢使用!"); exit(0); case 1:nameseeklist(L); break; case 2:insertlist(L); displist(L); break; case 3:deletelist(L); displist(L); break; case 4:printf("该表中学生总数:%d\n", lengthlist(L)); break; case 5:Modifylist(L); displist(L); break; case 6:Sortlist(L); displist(L); break; } } }