学生信息管理系统(c语言简版)——章节试验作业
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#define MaxSize 50typedef struct { char number[20]; char name[20]; int math; int computer; int ad_math; int average;}Student;typedef struct{ Student student[MaxSize]; int length;}SqList;void Show() //菜单{ printf("**********************************\n"); printf(" WELCOME!\n"); printf("\n"); printf(" 新科院学生信息管理系统\n\n"); printf(" \t 1.查问\t 2.插入\n\n"); printf(" \t 3.删除\t 4.打印\n\n"); printf(" \t 5.排序\t 6.退出\n\n"); printf(".............7.录入.............\n"); printf("\n"); printf(" 输出相干序号实现相干性能!\n"); printf("**********************************\n");}void InitList(SqList*& L) //初始化{ L = (SqList*)malloc(sizeof(SqList)); L->length = 0;}void CreateList(SqList*&L) //录入信息{ int i = 0, n; printf("请输出录入学生人数:"); scanf("%d", &n); for (i = 0; i < n; i++) { printf("姓名:"); scanf("%s", &L->student[i].name); getchar(); //排汇换行符 printf("学号:"); scanf("%s", &L->student[i].number); getchar(); printf("数学问题,计算机问题,高数问题:\n"); scanf("%d%d%d", &L->student[i].math, &L->student[i].computer, &L->student[i].ad_math); L->student[i].average = (L->student[i].ad_math + L->student[i].computer + L->student[i].math) / 3; //均匀问题 getchar(); //排汇换行符 if (i == n - 1) //强制跳出循环 break; } L->length = n; printf("录入胜利!"); Sleep(3000);}void DispList(SqList*&L) //打印{ int i, flag; if (L->length==0) //判空 { printf("道歉!无数据,请录入!"); Sleep(3000); return; } while (1) { for (i = 0; i < L->length; i++) { printf("姓名:%s\t", L->student[i].name); printf("学号:%s\n", L->student[i].number); printf("数学问题:%d\t", L->student[i].math); printf("计算机问题:%d\t", L->student[i].computer); printf("高数问题:%d\t", L->student[i].ad_math); printf("均匀问题:%d\n", L->student[i].average); printf("............................\n"); } printf("输出0退出打印!\n"); scanf("%d", &flag); if (flag == 0) //跳出打印结果显示 break; }}void SeekElem(SqList* L) //查问{ int i = 0, flag; char num[MaxSize]; printf("请输出要查找学生信息的学号:\n"); scanf("%s", num); while (1) { while (i < L->length && strcmp(num, L->student[i].number) != 0) { i++; } if (strcmp(num, L->student[i].number) == 0) { printf("姓名:%s\t", L->student[i].name); printf("学号:%s\n", L->student[i].number); printf("数学问题:%d\t", L->student[i].math); printf("计算机问题:%d\t", L->student[i].computer); printf("高数问题:%d\t", L->student[i].ad_math); printf("均匀问题:%d\n", L->student[i].average); } else printf("查无此人!\n"); printf("输出0退出打印!\n"); scanf("%d", &flag); if (flag == 0) //跳出打印结果显示 break; }}void ListInsert(SqList*& L) //插入{ int n, i, flag; printf("请输出插入学生信息个数:"); scanf("%d", &n); printf("请输出插入学生信息:\n"); for (i = 0; i < n; i++) { printf("姓名:"); scanf("%s", &L->student[L->length + i].name); getchar(); //排汇换行符 printf("学号:"); scanf("%s", &L->student[L->length + i].number); getchar(); printf("数学问题,计算机问题,高数问题:\n"); scanf("%d%d%d", &L->student[L->length + i].math, &L->student[L->length + i].computer, &L->student[L->length + i].ad_math); getchar(); //排汇换行符 L->student[i].average = (L->student[L->length + i].ad_math + L->student[L->length + i].computer + L->student[L->length + i].math) / 3; //均匀问题 } L->length = L->length + n; printf("\a"); printf("插入胜利!"); Sleep(2000); //显示插入胜利提醒}void ListDelete(SqList*& L) //删除{ int i, j; char num[MaxSize]; printf("请输出要删除学生信息的学号:\n"); scanf("%s", num); for (i = 0; i < L->length; i++) { if (strcmp(num, L->student[i].number) == 0) { for (j = i; j < L->length - 1; j++) L->student[j] = L->student[j + 1]; L->length--; printf("删除胜利!"); Sleep(3000); return; //删除胜利,强制退出函数 } } printf("输出谬误!\a"); Sleep(3000);}void Sort(SqList*&L) //排序{ int i, j; Student temp; printf("依照均匀问题降序输入学生的信息如下:\n"); for (i=0; i<L->length-1; i++) for (j = 0; j < L->length - i - 1; j++) //冒泡排序(降序排列) { if (L->student[j].average < L->student[j + 1].average) { temp = L->student[j]; L->student[j] = L->student[j+1]; L->student[j+1] = temp; } } DispList(L);}int main(){ int n; SqList* L; InitList(L); while (1) { system("cls"); //清屏函数 Show(); printf("请输出1-7的数:"); scanf("%d", &n); switch (n) { case 1: SeekElem(L); break; case 2: ListInsert(L); break; case 3: ListDelete(L); break; case 4: DispList(L); break; case 5: Sort(L); break; case 6: printf("........正在退出中........"); Sleep(3000); system("cls"); printf("\a退出胜利!"), exit(0); break; case 7: CreateList(L); break; default: printf("\a输出谬误!请从新输出(1—7)!"), Sleep(2000); break; } }}