学生信息管理系统管理一个班级的学生信息,包含如下功能:创建一个班级,班级有5名同学,输入5名同学的:学号、姓名、年龄、成绩信息。有新同学转入班级,将新同学的信息插入到班级信息中。输入新同学信息以及插入的位置。有同学转出班级,通过学生的学号删除相应信息。有同学的信息错误,由用户输入信息错误的同学学号或者姓名,然后输入错误信息的属性名,输入正确信息,实现数据的修正。查询某个同学的信息,实现可以根据姓名查询,也可以根据学号查询,查询后输出该同学的全部信息。对学生信息实现排序功能,可以根据学号排序,也可以根据成绩排序,可以升序也可以降序。查询所有不及格学生的信息并输出。输出所有同学的信息。主函数实现菜单选择的功能,程序启动后由用户选择所需要的功能,用户选择后实现相应功能,然后返回主菜单。主菜单信息:A 创建班级B 转入新同学C 有同学转出D 修正同学信息E 查询同学信息F 对同学信息进行排序G 查询不及格学生信息H 输出所有同学信息z 退出系统
2条回答 默认 最新
- 往事如风,闲云野鹤 2021-06-03 11:12关注
#include <stdio.h> #include <stdlib.h> #include <string.h> #define LEN 15 #define N 70 struct tagStudent { char chName[LEN+1]; int nAge; char chSex; char chNum[LEN+1]; float score[6]; } stu[N]; int k = 1, n = 0, m = 0; void Instruction(); void InputStudent(); void OrderStudent(); void SaveStudent(); void DisplayStudent(); int ReadStudent(); void SearchStudent(); void ModifyStudent(); void DeleteStudent(); int main() { printf("欢迎使用学生档案管理系统\n"); while (k) { int num; printf("\t请选择功能列表\n"); printf("\t\t0.系统说明\n"); printf("\t\t1.录入学生信息\n"); printf("\t\t2.将学生进行排序\n"); printf("\t\t3.保存学生信息\n"); printf("\t\t4.读取学生信息\n"); printf("\t\t5.显示全部学生信息\n"); printf("\t\t6.查找学生信息\n"); printf("\t\t7.修改学生信息\n"); printf("\t\t8.删除学生信息\n"); printf("\t\t9.退出系统\n"); scanf("%d", &num); printf("%d",num); switch (num) { case 0: Instruction(); break; case 1: InputStudent(); break; case 2: OrderStudent(); break; case 3: SaveStudent(); break; case 4: ReadStudent(); break; case 5: DisplayStudent(); break; case 6: SearchStudent(); break; case 7: ModifyStudent(); break; case 8: DeleteStudent(); break; case 9: k = 0; printf("即将退出系统!\n"); break; default: printf("请在0-9之间进行选择!\n"); } } system("pause"); return 0; } void Instruction() { printf("\n0.欢迎使用系统说明\n"); printf("\n1.请选择菜单上的数字\n"); printf("\n2.修改学生信息后请保存\n"); printf("\n3.谢谢使用\n"); } void InputStudent() { int i = n, j, flag; printf("请输入待增加的学生数:\n"); scanf("%d", &m); if (m > 0) { do { flag = 1; while (flag) { flag = 0; printf("请输入第%d位学生的学号:\n", i + 1); scanf("%s", stu[i].chNum); for (j = 0; j < i; j++) { if (strcmp(stu[i].chNum, stu[j].chNum) == 0) { printf("该学号已存在,请重新输入!\n"); flag = 1; break; } } } printf("请输入第%d 个学生的姓名:\n", i + 1); scanf("%s", &stu[i].chName); printf("请输入第%d 个学生的年龄:\n", i + 1); scanf("%d", &stu[i].nAge); printf("请输入第%d 个学生的性别:\n", i + 1); scanf(" %c", &stu[i].chSex); printf("请输入第%d 个学生的C语言成绩\n", i + 1); scanf("%f", &stu[i].score[0]); printf("请输入第%d 个学生的高数成绩:\n", i + 1); scanf("%f", &stu[i].score[1]); printf("请输入第%d 个学生的英语成绩:\n", i + 1); scanf("%f", &stu[i].score[2]); printf("请输入第%d 个学生的现代成绩:\n", i + 1); scanf("%f", &stu[i].score[3]); printf("请输入第%d 个学生的大物成绩:\n", i + 1); scanf("%f", &stu[i].score[4]); printf("请输入第%d 个学生的电路成绩:\n", i + 1); scanf("%f", &stu[i].score[5]); if (0 == flag) { i++; } } while (i < n + m); } n += m; printf("学生信息录入完毕!!!\n"); system("pause"); } void OrderStudent() { int i, j, k, * p, * q, s; char temp[LEN + 1], ctemp; float ftemp; for (i = 0; i < n - 1; i++) { for (j = n - 1; j > i; j--) if (strcmp(stu[j - 1].chNum, stu[j].chNum) > 0) { strcpy(temp, stu[j - 1].chNum); strcpy(stu[j - 1].chNum, stu[j].chNum); strcpy(stu[j].chNum, temp); strcpy(temp, stu[j - 1].chName); strcpy(stu[j - 1].chName, stu[j].chName); strcpy(stu[j].chName, temp); ctemp = stu[j - 1].chSex; stu[j - 1].chSex = stu[j].chSex; stu[j].chSex = ctemp; p = &stu[j - 1].nAge; q = &stu[j].nAge; s = *q; *q = *p; *p = s; for (k = 0; k < 6; k++) { ftemp = stu[j - 1].score[k]; stu[j - 1].score[k] = stu[j].score[k]; stu[j].score[k] = ftemp; } } } } void SaveStudent() { int i; FILE* fp; char filename[LEN + 1]; printf("请输入要保存的文件名:\n"); scanf("%s", filename); fp = fopen(filename, "w"); for (i = 0; i < n; i++) { fprintf(fp, "%s%s%d%c%.lf%.lf%.lf\n", stu[i].chNum, stu[i].chName, stu[i].nAge, stu[i].chSex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].score[5]); } printf("保存成功!!!\n"); fclose(fp); system("pause"); } int ReadStudent() { char filename[LEN + 1]; int i = 0; int j = 0; FILE* fp; printf("请输入要读取学生信息的文件名:\n"); scanf("%s", filename); if ((fp = fopen(filename, "r")) == NULL) return 0; while (fscanf(fp, "%s %s %d %s %d %d %d %d %d %d ", &stu[j].chNum, &stu[j].chName, &stu[j].nAge, &stu[j].chSex, &stu[j].score[0], &stu[j].score[1], &stu[j].score[2], &stu[j].score[3], &stu[j].score[4], &stu[j].score[5]) == 10) { j++; } n = j; return n; } void DisplayStudent() { int i; printf("共有%d位学生的信息:\n", n); if (0 != n) { printf("学生学号 \t学生姓名 \t年龄 \t性别 \tC语言\t高数\t英语\t线代\t大物\t电路\n"); printf("--------------------------------------------------------------------\n"); for (i = 0; i < n; i++) { printf("%s \t%s \t%d \t%c \t%.1f \t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].chNum, stu[i].chName, stu[i].nAge, stu[i].chSex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].score[5]); } } system("pause"); } void SearchStudent() { int i, item, flag; char s1[21]; printf("------------------\n"); printf("-----1.按学号查询-----\n"); printf("-----2.按姓名查询-----\n"); printf("-----3.退出本菜单-----\n"); printf("------------------\n"); while (1) { printf("请选择子菜单编号:"); scanf("%d", &item); flag = 0; switch (item) { case 1: printf("请输入要查询的学生的学号:\n"); scanf("%s", s1); for (i = 0; i < n; i++) if (strcmp(s1, stu[i].chNum) == 0) { flag = 1; printf("学生学号\t学生姓名\t年龄\t性别\tC语言\t高数\t英语\t现代\t大物\t电路\n"); printf("--------------------------------------------------------------------\n"); printf("%s\t%s\t%d\t%6c\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].chNum, stu[i].chName, stu[i].nAge, stu[i].chSex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].score[5]); } if (0 == flag) printf("该学号不存在!\n"); break; case 2: printf("请输入要查询的学生的姓名:\n"); scanf("%s", s1); for (i = 0; i < n; i++) if (strcmp(stu[i].chName, s1) == 0) { flag = 1; printf("学生学号\t学生姓名\t年龄\t性别\tC语言\t高数\t英语\t现代\t大物\t电路\n"); printf("--------------------------------------------------------------------\n"); printf("%s\t%s\t%d\t%c\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].chNum, stu[i].chName, stu[i].nAge, stu[i].chSex, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].score[3], stu[i].score[4], stu[i].score[5]); } if (0 == flag) printf("该姓名不存在!\n"); break; case 3: return; default: printf("请在1-3之间选择\n"); } } } void ModifyStudent() { int i, item, num = -1; char sex1, s1[LEN + 1], s2[LEN + 1]; float score1; printf("请输入要要修改的学生的学号:\n"); scanf("%s", s1); for (i = 0; i < n; i++) { if (strcmp(stu[i].chNum, s1) == 0) { num = i; printf("------------------\n"); printf("1.修改姓名\n"); printf("2.修改年龄\n"); printf("3.修改性别\n"); printf("4.修改C语言成绩\n"); printf("5.修改高数成绩\n"); printf("6.修改英语成绩\n"); printf("7.修改现代成绩\n"); printf("8.修改大物成绩\n"); printf("9.修改电路成绩\n"); printf("10.退出本菜单\n"); printf("------------------\n"); while (1) { printf("请选择子菜单编号:"); scanf("%d", &item); switch (item) { case 1: printf("请输入新的姓名:\n"); scanf("%s", s2); strcpy(stu[num].chName, s2); break; case 2: printf("请输入新的年龄:\n"); scanf("%d", stu[num].nAge); break; case 3: printf("请输入新的性别:\n"); scanf("%s", &sex1); stu[i].chSex = sex1; break; case 4: printf("请输入新的C语言成绩:\n"); scanf("%f", &score1); stu[num].score[0] = score1; break; case 5: printf("请输入新的高数成绩:\n"); scanf("%f", &score1); stu[num].score[1] = score1; break; case 6: printf("请输入新的英语成绩:\n"); scanf("%f", &score1); stu[num].score[2] = score1; break; case 7: printf("请输入新的现代成绩:\n"); scanf("%f", &score1); stu[num].score[3] = score1; break; case 8: printf("请输入新的大物成绩:\n"); scanf("%f", &score1); stu[num].score[4] = score1; break; case 9: printf("请输入新的电路成绩:\n"); scanf("%f", &score1); stu[num].score[5] = score1; break; case 10: return; default: printf("请在1-10之间选择\n"); } } printf("修改完毕!请及时保存!\n"); } else { printf("没有该学生学号!!!"); } } } void DeleteStudent() { int i, j, flag = 0; char s1[LEN + 1]; printf("请输入要删除学生的学号:\n"); scanf("%s", s1); for (i = 0; i < n; i++) { if (strcmp(stu[i].chNum, s1) == 0) { flag = 1; for (j = i; j < n - 1; j++) { stu[j] = stu[j + 1]; } } } if (0 == flag) { printf("该学号不存在!!!\n"); } if (1 == flag) { printf("删除成功!!!"); n--; } system("pause"); }
大致代码如上,你可以参考一下,如果我的回答对你有帮助,麻烦点一下我的回答右上角的采纳,谢谢。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 3无用
悬赏问题
- ¥15 微信会员卡接入微信支付商户号收款
- ¥15 如何获取烟草零售终端数据
- ¥15 数学建模招标中位数问题
- ¥15 phython路径名过长报错 不知道什么问题
- ¥15 深度学习中模型转换该怎么实现
- ¥15 HLs设计手写数字识别程序编译通不过
- ¥15 Stata外部命令安装问题求帮助!
- ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
- ¥15 TYPCE母转母,插入认方向
- ¥15 如何用python向钉钉机器人发送可以放大的图片?