输入n,进入添加学生信息界面
输入m,进入查找学生界面(通过名字查找)
输入x,进入查找学生界面(通过学号查找)
输入b,进入查找学生界面(通过班级查找)
输入q,退出程序
一.添加学生信息界面下:
依次输入学生姓名、学号、班级等信息
输入完成后返回功能选择界面
二.
查找学生界面(通过名字查找)下:输入学生姓名,显示对应的学号、班级等信息,如果查不到,显示对应的提示信息,查找完成后返回功能选择界面
查找学生界面(通过学号查找)下:输入学生学号,显示对应的姓名、班级等信息,如果查不到,显示对应的提示信息,查找完成后返回功能选择界面
查找学生界面(通过班级查找)下:输入学生班级,显示该班级中所有学生的姓名、学号等信息,如果查不到,显示对应的提示信息,查找完成后返回功能选择界面
关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率

已结题
c语言学生管理系统(输入信息,查找学生)
- ¥10
- c语言
收起
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
微信扫一扫
点击复制链接分享
- 邀请回答
- 编辑 收藏 删除
- 收藏 举报
追加酬金 (90%的用户在追加酬金后获得了解决方案)
当前问题酬金
¥ 10 (您已提供 ¥ 20, 还可追加 ¥ 490)
支付方式
扫码支付
加载中...
5条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
.魚肉 2022-08-26 15:17关注本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
fuill 2022-08-26 16:28关注采纳后私信帮你改好
#include<stdio.h> #include<windows.h> #define Max 25 #define obj_num 5 struct Stu { char Name[25]; //姓名 int Number; //学号 int Language_score;//语文成绩 int Math_score; //数学成绩 int English_score; //英语成绩 int PE_score; //体育成绩 int C_score; //C语言成绩 int Sum_score; //总成绩 }; void input(struct Stu Class[],int j) { printf("输入第%d位同学姓名:",j+1); scanf("%s",Class[j].Name); getchar(); printf("输入第%d位同学学号:",j+1); scanf("%d",&Class[j].Number); printf("输入第%d位同学语文成绩:",j+1); scanf("%d",&Class[j].Language_score); printf("输入第%d位同学数学成绩:",j+1); scanf("%d",&Class[j].Math_score); printf("输入第%d位同学英语成绩:",j+1); scanf("%d",&Class[j].English_score); printf("输入第%d位同学体育成绩:",j+1); scanf("%d",&Class[j].PE_score); printf("输入第%d位同学C语言成绩:",j+1); scanf("%d",&Class[j].C_score); Class[j].Sum_score=Class[j].Language_score+Class[j].Math_score+Class[j].English_score+Class[j].PE_score+Class[j].C_score; } void output(struct Stu Class[],int n) { printf("---------------------------------------------\n"); printf("姓名 学号 语文 数学 英语 体育 C语言 总分"); printf("\n"); int j; for(j=0; j<n; j++) { printf("%5s",Class[j].Name); printf("%5d",Class[j].Number); printf("%6d",Class[j].Language_score); printf("%6d",Class[j].Math_score); printf("%6d",Class[j].English_score); printf("%6d",Class[j].PE_score); printf("%6d",Class[j].C_score); printf("%7d",Class[j].Sum_score); printf("\n"); } printf("---------------------------------------------\n"); } void outputOne(struct Stu Class[],int j) { printf("姓名 学号 语文 数学 英语 体育 C语言 总分"); printf("\n"); printf("%5s",Class[j].Name); printf("%5d",Class[j].Number); printf("%6d",Class[j].Language_score); printf("%6d",Class[j].Math_score); printf("%6d",Class[j].English_score); printf("%6d",Class[j].PE_score); printf("%6d",Class[j].C_score); printf("%7d",Class[j].Sum_score); printf("\n"); } void Sort(struct Stu Class[],int n) { int j,k; struct Stu t; for(j=0; j<n-1; j++) { for(k=0; k<n-j-1; k++) { if(Class[k].Sum_score<Class[k+1].Sum_score) { t=Class[k]; Class[k]=Class[k+1]; Class[k+1]=t; } } } } int search(int number,int n,struct Stu Class[]) { int i,p=0; for(i=0; i<n; i++) { if(Class[i].Number==number) { p=i; return p; } } return -1; } void modify(int number,int n,struct Stu Class[]) { int index=search(number,n,Class); if(index==-1) { printf("找不到该学号\n"); } else { printf("学号%d的学生是第%d位\n",number,index+1); input(Class,index); printf("修改成功\n"); output(Class,n); } } void del(int number,int n,struct Stu Class[]) { int index=search(number,n,Class); if(index==-1) { printf("找不到该学号\n"); } else { printf("学号%d的学生是第%d位\n",number,index); int i; for(i=index; i<n-1; i++) { Class[i]= Class[i+1]; } printf("删除成功\n"); output(Class,n-1); } } double calave(int n,struct Stu Class[],double ave[]) { int Language_score_sum=0; int Math_score_sum=0; int English_score_sum=0; int PE_score_sum=0; int C_score_sum=0; for(int i=0; i<n; i++) { Language_score_sum+=Class[i].Language_score; Math_score_sum+=Class[i].Math_score; English_score_sum+=Class[i].English_score; PE_score_sum+=Class[i].PE_score; C_score_sum+=Class[i].C_score; } ave[0]=(double)Language_score_sum/n; ave[1]=(double)Math_score_sum/n; ave[2]=(double)English_score_sum/n; ave[3]=(double)PE_score_sum/n; ave[4]=(double)C_score_sum/n; } void save(int n,struct Stu Class[]) { FILE *fp; fp = fopen("score_data.txt","w"); if(fp == NULL) { printf("error!"); return; } else { for(int j=0; j<n; j++) { fprintf(fp,"%s %d %d %d %d %d %d %d\n",Class[j].Name,Class[j].Number,Class[j].Language_score,Class[j].Math_score,Class[j].English_score,Class[j].PE_score,Class[j].C_score,Class[j].Sum_score); } printf("文件写入成功\n"); } fclose(fp); } int read(int n,struct Stu Class[]) { FILE *fp; fp = fopen("score_data.txt","r"); int count=0; if(fp == NULL) { printf("error!"); return 0; } else { for(int j=0; j<n; j++) { int flag=fscanf(fp,"%s %d %d %d %d %d %d %d\n",Class[j].Name,&Class[j].Number,&Class[j].Language_score,&Class[j].Math_score,&Class[j].English_score,&Class[j].PE_score,&Class[j].C_score,&Class[j].Sum_score); if(flag!=-1) count++; } printf("文件读取成功\n"); } fclose(fp); return count; } void menu(struct Stu Class[]) { int n=0,count; int option=1; while(option<=9&&option>=1) { printf("------------------------\n"); 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("------other.退出 ------\n"); printf("------------------------\n"); printf("输入选项:"); scanf("%d",&option); switch(option) { case 1: { system("cls"); printf("输入学生的个数(不大于%d):",Max-n); scanf("%d",&count); while(count--) { input(Class,n++); } output(Class,n); break; } case 2: { system("cls"); output(Class,n); break; } case 3: { system("cls"); Sort(Class,n); output(Class,n); break; } case 4: { system("cls"); int number; printf("输入要查找的学号:"); scanf("%d",&number); int index=search(number,n,Class); if(index==-1) { printf("查找失败\n"); } else { printf("查找成功\n"); outputOne(Class,index); } break; } case 5: { system("cls"); output(Class,n); int number; printf("输入要修改成绩的学生对应的学号:"); scanf("%d",&number); modify(number,n,Class); output(Class,n); break; } case 6: { system("cls"); output(Class,n); int number; printf("输入要删除的学号:"); scanf("%d",&number); del(number,n,Class); n--; system("cls"); output(Class,n); break; } case 7: { system("cls"); output(Class,n); double ave[obj_num]; calave(n,Class,ave); char str[]="平均分"; printf("\n"); printf("%5s",str); printf(" "); printf("%5.2lf",ave[0]); printf("%6.2lf",ave[1]); printf("%6.2lf",ave[2]); printf("%6.2lf",ave[3]); printf("%6.2lf",ave[4]); printf("\n"); break; } case 8: { system("cls"); n-=n; n+=read(Max,Class); break; } case 9: { system("cls"); save(n,Class); break; } default : { break; } } } } int main() { struct Stu Class [Max]; menu(Class); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 1无用举报 编辑记录微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
rucoding 2022-08-26 17:29关注图示效果:
代码示例:
#include <stdlib.h> #include <stdio.h> #include <string.h> //宏定义变量 #define N 1024 #define MAXSIZE 32 #define WIDESIZE 65 typedef struct Student { /*学生基本信息*/ int code; //学号 char name[MAXSIZE]; //姓名,采用字符数组 int age; //年龄 char sex[MAXSIZE]; //性别 /*学生成绩信息*/ int math; //数学成绩 int chinese; //语文成绩 int english; //英语成绩 struct Student *next; //指向下一个学生的指针 } Student; /* *创建学生链表 */ Student * createList() { //申请一个Student【学生结构体】大小的控件 Student * studentList = (Student*)malloc(sizeof(Student)); return studentList; } /* *创建学生节点 */ Student * createNode() { Student * newStu = (Student*)malloc(sizeof(Student)); printf("学号:"); scanf("%d",&newStu->code); printf("姓名:"); scanf("%s",newStu->name); printf("年龄:"); scanf("%d",&newStu->age); printf("性别:"); scanf("%s",newStu->sex); printf("数学:"); scanf("%d",&newStu->math); printf("语文:"); scanf("%d",&newStu->chinese); printf("英语:"); scanf("%d",&newStu->english); newStu->next=NULL; return newStu; } //显示学生信息 void showMsg(Student *stu) { printf("%d\t%s\t%d\t%s\t%d\t%d\t%d\t\n",stu->code,stu->name,stu->age,stu->sex, stu->math,stu->chinese,stu->english); } /* *添加学生信息 */ Student * insertStudent(Student * head) { int i,count; printf("请输入录入的学生人数\n"); scanf("%d",&count); //获得学生链表的头节点 Student *tail= head; //初始批量录入学生信息 if(head) { for (i = 0;i<count;i++) { printf("==============输入第%d个学生信息==============》\n",i+1); Student * newNode = createNode(); tail->next = newNode; //tail永远指向最后一位学生,即尾节点 tail = tail->next; } } else { //批量添加学生信息 while(tail) { tail = tail->next; } for (i = 0;i<count;i++) { printf("==============输入第%d个学生信息==============》\n",i+1); Student * newNode = createNode(); //创建存储学生信息的节点 tail->next = newNode; //添加学生 tail = tail->next; //尾节点后移 } } return head; //返回头节点 } /* *删除学生信息 */ void deleteStudent(Student *studentList) { printf("请输入学号:"); int ditCode; scanf("%d",&ditCode); //获取链表头节点 Student *preStudent = studentList; //获取链表第一个节点 Student *afterStudent = studentList->next; if(afterStudent) { while(afterStudent) { if(afterStudent->code==ditCode)//学号相等,则说明已找到要删除的学生 { preStudent->next=afterStudent->next; //进行删除操作 free(afterStudent); //释放节点控件 break; } //学生编号不相等,则继续向后移动,进行遍历 preStudent = afterStudent; afterStudent = afterStudent->next; } else { printf("没有这名学生的信息!"); } } /* *根据学号修改学生信息 */ //1.修改姓名 void changeName(Student *stu) { char newName[MAXSIZE]; printf("请输入新的名字:"); scanf("%s",newName); strcpy(stu->name,newName); showMsg(stu); } //2.修改年龄 void changeAge(Student *stu) { int newAge; printf("请输入新的年龄:"); scanf("%d",&newAge); stu->age=newAge; showMsg(stu); } //3.修改数学成绩 void changeMathScore(Student *stu) { int newSocre; printf("请输入新的数学成绩:"); scanf("%d",&newSocre); stu->math=newSocre; showMsg(stu); } //4.修改语文成绩 void changeChineseScore(Student *stu) { int newSocre; printf("请输入新的语文成绩:"); scanf("%d",&newSocre); stu->chinese=newSocre; showMsg(stu); } //5.修改英语成绩 void changeEnglishScore(Student *stu) { int newSocre; printf("请输入新的英语成绩:"); scanf("%d",&newSocre); stu->chinese=newSocre; showMsg(stu); } /* * *1、采用多分支选择结构,实现学生信息的修改 *2、编辑学生信息输入对应的编号,进行对应的修改,例:1,则进行姓名修改 */ void editStudent(Student *studentList) { printf("请输入学号:"); int ditCode; scanf("%d",&ditCode); Student *ditStu = studentList->next; if(ditStu!=NULL) { while(ditStu!=NULL) { if(ditStu->code==ditCode) { printf("请输入修改信息编号:\n1.姓名\n2.年龄\n3.数学\n4.语文\n5.英语\n"); int number; scanf("%d",&number); switch(number) { case 1: changeName(ditStu); break; case 2: changeAge(ditStu); break; case 3: changeMathScore(ditStu); break; case 4: changeChineseScore(ditStu); break; case 5: changeEnglishScore(ditStu); break; default: printf("输入内容无效!"); } } ditStu = ditStu->next; } } else { printf("抱歉,你还未录入学生信息,请先录入学生信息!\n"); } } //根据学生编号查找学生信息 void findStudent(Student *studentList) { printf("请输入学号:"); int code; scanf("%d",&code); //指向第一个学生节点 Student *ditStu = studentList->next; //如果学生链表不为空,则进行查询 if(ditStu!=NULL) { while(ditStu!=NULL) { if(ditStu->code!=code) //学生学号不相等,则继续下一个比对查找 { ditStu=ditStu->next; //找到后则进行学生信息的输出 showMsg(ditStu); printf("这里:"); break; } } else { printf("没有这名学生的信息!"); } } /* *显示学生列表 */ void showStudent(Student * studentList) { Student *temp = studentList->next; printf("学号\t姓名\t年龄\t性别\t数学\t语文\t英语\n"); //如果学生链表不为空,则进行输出 while(temp != NULL) { showMsg(temp); temp=temp->next; } printf("\n"); } /* *保存学生信息到文件中 */ void saveStudent(Student *studentList) { //创建文件指针 FILE *fp = NULL; //存放在D【C盘需要事先创建文件夹】盘根目录下,自动【有就不创建。否则创建文件】 //创建studentMsg.txt fp = fopen("D:\\studentMsg.txt","a+"); //fp = fopen("C:\\Users\\SherryHan\\Desktop\\学习文件\\political\\studentMsg.txt","a+"); //“a+”采用追加的形式保存到文件中 Student *stu = studentList->next; //指针指向第一个学生 char title[N] = "学号\t姓名\t年龄\t性别\t数学\t语文\t英语\n"; //将标题【学生属性列】写入文件中 fprintf(fp,"%s",title); //遍历学生链表,并将学生信息写入文件,直到最后一个学生的下一个节点为空 while(stu!=NULL) { fprintf(fp,"%d\t%s\t%d\t%s\t%d\t%d\t%d\n",stu->code,stu->name,stu->age,stu->sex ,stu->math,stu->chinese,stu->english); stu=stu->next; } fclose(fp); } void showHelp() { printf("1、此系统可以对学生信息进行管理。\n"); printf("2、输入对应功能项的编号即可进行不同功能的系统操作。\n"); } /* *显示菜单 */ void showMenu() { int i; printf("------------------------"); printf("\t欢迎使用学生管理系统\t"); printf("------------------------\n"); printf("\t"); for (i=0;i<WIDESIZE;i++) { printf("*"); } printf("\n"); printf("\t*\t0.系统帮助及说明\t**"); printf("\t1.刷新学生信息\t\t*\n"); printf("\t*\t2.查询学生信息\t\t"); printf("**\t3.修改学生信息\t\t*\n"); printf("\t*\t4.增加学生信息\t\t**"); printf("\t5.按学号删除信息\t*\n"); printf("\t*\t6.显示所有学生信息\t**"); printf("\t7.保存当前信息\t\t*\n"); printf("\t*\t8.退出学生管理系统\t**"); for (i=0;i<4;i++) { printf("\t"); } printf("*\n"); printf("\t"); for (i=0;i<WIDESIZE;i++) { printf("*"); } printf("\n"); printf("------------------------"); printf("\t2022计算机科学与技术\t"); printf("------------------------\n"); printf("请按所需输入菜单编号:"); } /* * *采用带头结点的链表来存储学生信息 * */ int main(int argc, char const *argv[]) { int choice; Student * studentList = createList(); do { showMenu(); scanf("%d",&choice); switch(choice) { case 0: showHelp(); break; case 1: printf("刷新完成!\n"); break; case 2: findStudent(studentList); break; case 3: editStudent(studentList); break; case 4: insertStudent(studentList); break; case 5: deleteStudent(studentList); break; case 6: showStudent(studentList); break; case 7: saveStudent(studentList); break; default: exit(1); } } while(1); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
一个普通の学生 2022-08-28 11:29关注本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容 - 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
m0_72938729 2022-08-26 14:32关注本回答被题主选为最佳回答 , 对您是否有帮助呢? 本回答被专家选为最佳回答 , 对您是否有帮助呢? 本回答被题主和专家选为最佳回答 , 对您是否有帮助呢?解决评论 打赏无用 1举报微信扫一扫
点击复制链接分享
评论按下Enter换行,Ctrl+Enter发表内容
报告相同问题?
提交
- 2022-08-26 14:16回答 5 已采纳 可以参考我这个稍加改动就行https://blog.csdn.net/weixin_64811333/article/details/125333242
- 2021-12-30 15:30回答 1 已采纳 参考如下,要的功能基本都有了。 学生成绩管理系统_qfl_sdu的博客-CSDN博客 功能1.从文件中读取数据2.按照平均分排名,并写入文
- 2022-06-08 09:25回答 2 已采纳 #include<stdio.h> #include<string.h> //比较字符串头文件// #include<stdlib.h>//实时检测总数头文
- 2019-02-20 10:19通过设计一个简单的学生成绩管理程序,实现C语言访问Sql server数据库,主要实现对数据表中的记录进行增、删、改、查四种操作。在运用本课程主要知识点的同时,探索与其它课程的衔接,提高学生的资料查找能力、软件...
- 2022-01-13 16:15回答 2 已采纳 文件读写 C 文件读写 | 菜鸟教程 C 文件读写 上一章我们讲解了 C 语言处理的标准输入和输出设备。本章我们将介绍 C 程序员如何创
- 2022-12-24 20:11回答 3 已采纳 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> /*I/O函数*/ #include<stdlib.h> /
- 2022-12-20 15:07回答 5 已采纳 void increase() //增加学生信息 { int m, flag, i = n, j; printf("请输入待添加的学生人数:\n"); scanf("%
- 2021-05-23 10:13麒麟瑜的博客 (3) 删除功能中可以将删除相关信息后得到的文件生成新文件存储,也可以在原文件的基础上作删除(4) 可以用面向过程方法或是面向对象的方法实现。(5) 主界面提供菜单选择的方法选择实现某一功能,一次运行程序能进行多...
- 2019-11-04 11:36回答 1 已采纳 https://wenku.baidu.com/view/ab1ef21ac281e53a5802ff53.html
- 2021-12-18 23:12回答 2 已采纳 你的姓名输入不了 有可能是数组越界导致的 就是程序把你输入的字符串 错误的占用了第二次输入的数据结构建议debug调试一下看问题出在哪里
- 2021-05-24 03:06贰叁伍叁的博客 学生信息管理系统 C 语言编程【问题描述】学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方 面的管理。该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种...
- 2023-03-16 20:29请使用结构体数组、排序查找算法以及模块化程序设计方法编程实现如下菜单驱动的学生成绩管理系统: (1) 输入每个学生的学号、姓名和各科考试成绩; (2) 计算每门课程的总分和平均分; (3) 计算每个学生的总分和平...
- 2021-05-20 04:20XU美伢的博客 c语言学生信息管理系统实训报告 题 目: 学生...训 报 告学生信息管理系统 本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉 C 语言的文件和单链表的各种基本操作。本程序中涉及结构体...
- 2021-05-21 01:58深河先生的博客 C语言课程设计学生信息管理系统姓 名 洪伟生院 系 计 算 机 学 院日 期 2015 年 7 月 5 日目 录设计要求 ………………………………………………算法分析理论依据…………………………………………………主要实现方法...
- 没有解决我的问题, 去提问
问题事件
悬赏问题
- ¥15 Qt 不小心删除了自带的类,该怎么办
- ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
- ¥15 有没有哪位厉害的人可以用C#可视化呀
- ¥15 可以帮我看看代码哪里错了吗
- ¥15 设计一个成绩管理系统
- ¥15 PCL注册的选点等函数如何取消注册
- ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
- ¥15 Python爬虫程序
- ¥15 crypto 这种的应该怎么找flag?
- ¥15 代码已写好,求帮我指出错误,有偿!