编写c语言代码,向系统输入要求,并且有输出部分。实现插入修改删除,输出学生数据,
3条回答 默认 最新
- 数据分析不是个事儿 2022-12-25 13:04关注
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> /*I/O函数*/ #include<stdlib.h> /*其它说明*/ #include<string.h> /*字符串函数*/ #define LEN 15 /* 学号和姓名最大字符数,实际请更改*/ #define N 50 /* 最大学生人数,实际请更改*/ int k = 1, n = 0, m = 0;/* n代表当前记录的学生人数*/ //函数声明 void readfile(); void seek(); void modify(); void insert(); void del(); void display(); void save(); void menu(); //结构体保存学生信息 struct student{ char StudentId[LEN+1]; char StudentName[LEN+1]; int StudentAge; char StudentSex; float score[3]; }stu[N]; //主函数 int main() { while (k) { menu(); } system("pause"); return 0; } //系统帮助函数 void help() { printf("\n0.欢迎使用系统帮助!\n"); printf("\n1.初次进入系统后,请先选择增加学生信息;\n"); printf("\n2.按照菜单提示键入数字代号;\n"); printf("\n3.增加学生信息后,切记保存;\n"); printf("\n4.谢谢您的使用!\n"); } //刷新文件 int flush(){ char filename[LEN + 1]; int i = 0; printf("请输入要刷新学生信息的文件名:\n"); scanf("%s", filename); int j = 0; FILE * fp; if ((fp = fopen(filename, "r")) == NULL) return 0; //从文件读取信息 while (fscanf(fp, "%s %s %s %d %d %d %d ", &stu[j].StudentId, &stu[j].StudentName, &stu[j].StudentAge, &stu[j].StudentSex, &stu[j].score[0], &stu[j].score[1], &stu[j].score[2]) == 7) { j++; } n = j; printf("刷新成功!!!"); return n; } //查找学生信息 void seek() /*查找*/ { int i, item, flag; char s1[21]; /* 以姓名和学号最长长度+1为准*/ 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].StudentId) == 0) { flag = 1; printf("学生学号\t学生姓名\t年龄\t性别\tC语言成绩\t高等数学\t大学英语成绩\n"); printf("--------------------------------------------------------------------\n"); printf("%s\t%s\t%d\t%6\t%.1f\t%.1f\t%.1f\n", stu[i].StudentId,stu[i].StudentName,stu[i].StudentAge,stu[i].StudentSex,stu[i].score[0],stu[i].score[1],stu[i].score[2]); } if (0 == flag) printf("该学号不存在!\n"); break; case 2: printf("请输入要查询的学生的姓名:\n"); scanf("%s", s1); for (i = 0; i<n; i++) if (strcmp(stu[i].StudentName, s1) == 0) { flag = 1; printf("学生学号\t学生姓名\t年龄\t性别\tC语言成绩\t高等数学\t大学英语成绩\n"); printf("--------------------------------------------------------------------\n"); printf("%s\t%s\t%d\t%c\t%.1f\t%.1f\t%.1f\n", stu[i].StudentId, stu[i].StudentName, stu[i].StudentAge, stu[i].StudentSex, stu[i].score[0], stu[i].score[1], stu[i].score[2]); } if (0 == flag) printf("该姓名不存在!\n"); break; case 3:return; default:printf("请在1-3之间选择\n"); } } } //修改学生信息 void modify() /*修改信息*/ { int i, item, num = -1; char sex1, s1[LEN + 1], s2[LEN + 1]; /* 以姓名和学号最长长度+1为准*/ float score1; printf("请输入要要修改的学生的学号:\n"); scanf("%s", s1); for (i = 0; i < n; i++){ if (strcmp(stu[i].StudentId, 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("------------------\n"); while (1) { printf("请选择子菜单编号:"); scanf("%d", &item); switch (item) { case 1: printf("请输入新的姓名:\n"); scanf("%s", s2); strcpy(stu[num].StudentName, s2); break; case 2: printf("请输入新的年龄:\n"); scanf("%d", stu[num].StudentAge); break; case 3: printf("请输入新的性别:\n"); scanf("%s", &sex1); stu[i].StudentSex = 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: return; default:printf("请在1-7之间选择\n"); } } printf("修改完毕!请及时保存!\n"); } else{ printf("没有该学生学号!!!"); } } } void sort()//按学号排序 { 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].StudentId, stu[j].StudentId)>0) { strcpy(temp, stu[j - 1].StudentId); strcpy(stu[j - 1].StudentId, stu[j].StudentId); strcpy(stu[j].StudentId, temp); strcpy(temp, stu[j - 1].StudentName); strcpy(stu[j - 1].StudentName, stu[j].StudentName); strcpy(stu[j].StudentName, temp); ctemp = stu[j - 1].StudentSex; stu[j - 1].StudentSex = stu[j].StudentSex; stu[j].StudentSex = ctemp; p = &stu[j - 1].StudentAge; q = &stu[j].StudentAge; s = *q; *q = *p; *p = s; for (k = 0; k<3; k++) { ftemp = stu[j - 1].score[k]; stu[j - 1].score[k] = stu[j].score[k]; stu[j].score[k] = ftemp; } } } } //添加学生信息函数 void insert() /*插入函数*/ { int i = n, j, flag; printf("请输入待增加的学生数:\n"); scanf("%d", &m); if (m > 0){ do { flag = 1; while (flag) {
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动
- ¥20 对于工程问题的非线性数学模型进行线性化
- ¥15 Mirare PLUS 进行密钥认证?(详解)
- ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
- ¥20 想用ollama做一个自己的AI数据库
- ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
- ¥15 请问怎么才能复现这样的图呀