c语言课程设计学生信息管理系统
毕业设计c语言课程设计

毕业设计c语言课程设计一、课程目标知识目标:1. 理解C语言在毕业设计中的应用场景,掌握C语言的基本语法和编程技巧。
2. 学会使用C语言进行数据结构的设计与实现,如链表、树、图等。
3. 掌握C语言在嵌入式系统、算法竞赛等领域的实际应用。
技能目标:1. 能够运用C语言编写具有实际意义的程序,解决实际问题。
2. 能够分析并优化C语言程序的运行效率,提高编程质量。
3. 培养良好的编程习惯,编写规范、易读、高质量的C语言代码。
情感态度价值观目标:1. 培养学生积极主动探索新知识的精神,提高学生的自主学习能力。
2. 增强学生的团队协作意识,培养良好的沟通与协作能力。
3. 使学生认识到C语言在计算机科学领域的重要地位,激发学生对编程的兴趣。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为毕业设计前的预备课程,旨在帮助学生掌握C语言编程技能,为毕业设计奠定基础。
2. 学生特点:学生已具备一定的计算机基础,了解编程基本概念,但实际编程能力较弱,需要加强实践操作。
3. 教学要求:注重理论与实践相结合,强调实际编程能力的培养,以项目驱动教学,提高学生的实践操作能力。
1. 独立完成C语言基础语法的学习,并能运用所学知识编写简单程序。
2. 掌握常见数据结构在C语言中的实现与应用,能够解决实际问题。
3. 编写具有一定规模的C语言项目,具备初步的软件设计能力。
4. 养成良好的编程习惯,具备团队协作能力和沟通能力。
二、教学内容1. C语言基础语法:变量定义、数据类型、运算符、表达式、控制语句(顺序、选择、循环)、函数、数组、指针。
2. 常见数据结构:链表、栈、队列、树(二叉树、查找树)、图(邻接矩阵、邻接表)。
3. 编程技巧与优化:算法复杂度分析、递归与迭代、内存管理、程序调试与优化。
4. C语言项目实践:学生信息管理系统、简易计算器、文件压缩与解压缩、小型游戏等。
5. 教学内容安排与进度:- 第一周:C语言概述、基础语法、数据类型与运算符。
C语言课程设计--学生成绩管理系统

*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Student{int cls;char nam[10];char num[10];int chinese;int english;int computer;int math;}stud1[100],stud2[100];{char a;while(a>'7'||a<'0'){system("cls");printf(" 欢迎使用学生成绩管理系统\n");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(" 0.储存学生资料并退出系统\n");printf("********************************************************************* *\n");printf("请选择(0-7)\n");a=getchar();}return(a-'0');}/******************************************************************************int Input(Student stud[],int n) //输入数据(第一学期)。
C语言课程设计报告学生成绩管理系统(广工)

一、课程设计题目:学生成绩管理二、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。
对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
三、概要设计程序要有的功能:1。
输入记录2。
用指定格式显示全部记录3。
根据姓名查找记录4。
根据姓名删除记录5. 保存记录到文件6。
按序号显示记录7。
按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。
对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。
再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。
在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。
最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。
与及格成绩作比较,输出及格人数等相关信息。
流程图:四、详细设计源程序:#include ”stdio。
h”#include "stdlib.h”#include "string。
h”int shoudsave=0;/* */struct student{char num[10];/*学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;char neartime[10];/*最近更新时间*/};typedef struct node{struct student data;struct node *next;}Node,*Link;void menu(){printf(”*********************************主菜单*****************************************”);printf(”\t1登记学生资料\t\t\t\t\t2删除学生资料\n”);printf(”\t3查询学生资料\t\t\t\t\t4修改学生资料\n”);printf(”\t5保存学生资料\t\t\t\t\t0退出系统\n”);printf(”********************************************************************************\n");}void printstart(){printf(”-————---—-——————--——----———-—-—-————--————--—--—--—-————---—-—————--———\n”);}void Wrong(){printf(”\n=====>提示:输入错误!\n”);}void Nofind(){printf("\n=====〉提示:没有找到该学生!\n");}void printc()/*本函数用于输出中文*/printf(”学号\t 姓名性别英语成绩数学成绩C语言成绩总分平均分\n”); }void printe(Node *p)/* 本函数用于输出英文*/{printf("%—12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p—〉data。
学生成绩管理系统c语言课程设计报告

学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
C语言课程设计—学生成绩管理系统

#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。
h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。
C语言学生成绩管理系统课程设计

课程设计说明书设计名称: C语言课程设计题目:学生成绩管理系统学生姓名:专业:网络工程班级: 12级1班学号: 2012394108指导教师:日期:年月日课程设计任务书网络工程专业 12 年级 1 班孙璐一、设计题目学生成绩管理系统二、主要内容数据库的数据项主要数据包括:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。
要求具有以下功能:(1)系统以菜单方式工作。
(2)显示、保存记录;添加、删除、修改任意个记录。
(3)排序功能:打开学生数据库,计算每个学生的平均成绩和总成绩,用冒泡法或选择排序法将平均成绩和总成绩排序后生成两个新文件(从大到小),存盘并显示这两个文件的全部记录。
(4)查询功能:打开总成绩排序文件,用折半查找法统计出给定分数的人数并显示。
并能按学号或姓名查找并显示某个学生的各科成绩。
(5)统计功能:对各科成绩统计分析(平均分、最高分、最低分、及格率等);统计各科各分数段人数。
三、具体要求围绕课程设计的目的和意义,基本要求如下:1、认真阅读《C语言课程设计》指导书,明确课程设计的目的、意义和要求;2、快速总结C程序设计语言的精髓,如:函数的概念、函数的设计和函数的调用;3、快速熟悉Tuber C 或C++的上机环境。
能熟练进行高级编辑操作(特别是字块操作);熟悉步进式、断点跟踪的程序调试方法,提高工作效率。
4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确"定时间进度。
如果是多人共一题,则要首先完成小组内的人员分工及安排,不允许重题现象。
5.学习并了解良好的程序设计风格。
按质、按量、并按时间完成课程设计的任务。
6.提供可运行的课程设计系统,参加上机面试答辩。
本次课程设计的重点是:学会设计并编写函数,掌握好各函数之间的调用关系;利用文件操作函数,建立数据库并完成对数据库的各种操作;掌握几种典型算法的应用(如:冒泡法、选择排序法和折半查找法)。
学生成绩管理系统c语言课程设计报告

《学生成绩管理系统》课程设计报告专业:信息科学与工程学院班级:电气信息类0916班姓名:曹坤指导教师:汤哲学号: 02课程设计报告一、课程设计题目学生成绩管理系统1、需要处理的基础数据学生基本信息:如班级、学号、姓名、性别、年龄等。
学生选修课程的基本信息:课程编号、课程名称、学分、考试成绩、平时成绩、综合成绩(考试成绩*+平时成绩*)等。
主菜单2、系统的基本功能数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息;数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息;数据的插入:插入某个学生信息;数据的查询:如按学号查询、按姓名查询等;数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息;平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息;列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
考虑用文件把数据保存起来(可选)。
3、链表struct stu /*定义学生基本信息结构体*/{int i; /*以输入的顺序来确定的学生序号*/char num[11];char classnum[5];char name[128];char sex[32];int age;float ave;struct stu *next;};int n=0; /*学生人数*/struct stu *head=0;struct stu1 /*定义学生选修课信息结构体*/{char lessonnum[11];char lessonname[256];float score;float testgrade;float commongrade;float grade;struct stu1 *next;};int m;struct stu1 *a[max_num] ;/*定义一个指针数组来记住课程链表地址*/ /*---------------------- 数据的录入程序-----------------------*/void create(void) /*建立学生基本信息链表*/{n=0;struct stu *p1,*p2;char ch,ch1;struct stu1 *create1(void);do{n=n+1;a[n]=0;system("cls");p1=(struct stu *)malloc(LEN);printf("\n学号:");scanf("%s",p1->num);printf("\n班级:");scanf("%s",p1->classnum);printf("\n姓名:");scanf("%s",p1->name) ;printf("\n性别:");scanf("%s",p1->sex);printf("\n年龄:");scanf("%d",&p1->age);if(n==1)head=p1;else p2->next=p1;p2=p1;printf("\n是否输入选修课信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch1=getchar();if(ch1=='y'||ch1=='Y')a[n]=create1(); /*根据序号来记忆课程链表地址*/ p1->i=n;system("cls");printf("\n是否继续输入另一学生信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');p2->next=0;}struct stu1 *create1(void) /*建立课程链表*/{m=0;struct stu1 *p1,*p2;char ch;struct stu1 *head=0;do{m=m+1;system("cls");p1=(struct stu1 *)malloc(LEM);printf("\n课程编号:");scanf("%s",p1->lessonnum);printf("\n课程名称:");scanf("%s",p1->lessonname);printf("\n学分:");scanf("%f",&p1->score);printf("\n考试成绩:");scanf("%f",&p1->testgrade);printf("\n平时成绩:");scanf("%f",&p1->commongrade);p1->grade=p1->testgrade*+p1->commongrade*;printf("\n综合成绩:%-6.1f",p1->grade);if(m==1)head=p1;else p2->next=p1;p2=p1;printf("\n是否继续输入另一课程信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');p2->next=0;return(head);}二、设计思路界面:界面的显示由循环语句和switch语句来控制完成。
c语言课程设计优秀案例

c语言课程设计优秀案例C语言是一门广泛应用于计算机科学领域的编程语言,它具有高效、简洁、可移植等特点,因此在计算机科学领域中得到了广泛的应用。
在C语言课程设计中,学生需要通过实践来掌握C语言的基本语法和编程思想,同时也需要通过设计优秀的案例来提高自己的编程能力。
下面是10个优秀的C语言课程设计案例。
1. 学生成绩管理系统这个案例要求学生设计一个学生成绩管理系统,可以实现学生信息的录入、查询、修改和删除,同时还可以计算学生的平均成绩、最高成绩和最低成绩等统计信息。
2. 简单计算器这个案例要求学生设计一个简单的计算器,可以实现加、减、乘、除等基本运算,同时还可以实现括号、小数点和负数等高级运算。
3. 迷宫游戏这个案例要求学生设计一个迷宫游戏,可以实现玩家在迷宫中寻找出口的过程,同时还可以实现随机生成迷宫、计时和计分等功能。
4. 图书管理系统这个案例要求学生设计一个图书管理系统,可以实现图书信息的录入、查询、修改和删除,同时还可以实现借书和还书等功能。
5. 简单的文件管理器这个案例要求学生设计一个简单的文件管理器,可以实现文件的创建、删除、复制和移动等基本操作,同时还可以实现文件夹的创建和删除等高级操作。
6. 简单的网络聊天程序这个案例要求学生设计一个简单的网络聊天程序,可以实现用户之间的文字聊天和文件传输等功能,同时还可以实现用户登录和注册等操作。
7. 简单的音乐播放器这个案例要求学生设计一个简单的音乐播放器,可以实现音乐的播放、暂停、停止和跳转等基本操作,同时还可以实现音乐列表的管理和歌词显示等高级功能。
8. 简单的游戏开发这个案例要求学生设计一个简单的游戏,可以实现玩家的移动、攻击和防御等基本操作,同时还可以实现关卡设计和游戏难度调整等高级功能。
9. 简单的人工智能程序这个案例要求学生设计一个简单的人工智能程序,可以实现基本的语音识别、图像识别和自然语言处理等功能,同时还可以实现机器学习和深度学习等高级功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目名称:学生信息管理系统算法分析:1用结构体标出信息系统的成员:学生学号,学生姓名,班级,成绩,排名2 利用c语言的文件知识将系统的信息存放在c盘下的“”的文件夹下3 定义各个子函数(1)定义输入信息函数,将学生信息按一定格式用scanf函数输入(统计M个学生的信息);(2)定义输出函数,每两个表一页直到最后一个;(3)定义信息查询函数。
a,定义按学号查询函数,如果输入的学号等于学生学号则输出要查询的信息;b,定义按姓名查询函数,如果输入的姓名字符串等于其中一个学生的姓名字符串则输出信息;c,定义按班级查找函数,如果输入的数字等于其中学生的班级数,则输出该信息;d,定义按成绩查找函数,如果输入的数字等于其中学生的成绩数,则输出该信息;e,定义查找总函数,输入一个数选择查找方式,1-4分别对应调用abcd四个函数。
(4)定义删除信息函数。
输入的数字作为要删除的学生学号,输出要删除的学生信息后选择是否删除,删除后将第g+1个的信息赋给第g个,输出删除后的信息表。
(5)定义信息修改函数。
输入的数字等于要修改的学生学号,输出要修改的学生信息后选择是否修改,用switch,case语句选择要修改的项目,输入n,y决定是否继续直到不继续修改,输出学生信息。
(6)定义信息统计函数。
输入一个数字作为成绩,比较M个学生成绩是否等于输入的数字,统计相等的个数n输出。
(7)定义成绩排序函数。
用冒泡排序法将M个学生的成绩按从大到小的顺序排列后输出。
4 定义主函数。
调用读取文件函数,输入数字1-5分别对应调用修改学生信息函数,删除学生信息函数,查找学生信息函数,统计学生信息函数,学生成绩排行信息函数,0表示退出系统。
最后调用保存文件函数。
结束程序。
流程设计:代码设计:#include<>#include<>#include<>#define M 2#define PAGE 2/*学生信息结构体类型*/typedef struct{int num; /*学号*/char name[20]; /*姓名*/int banji; /*班级*/int chengji; /*成绩*/int paiming; /*排名*/}STUDENTS;int read_file(STUDENTS students[])/*文件的读取*/{ FILE *fp;/*定义一个文件指针变量*/int i=0;if((fp=fopen("","r"))==NULL)/*文件空判断,fopen打开一个文件*/ { printf("\n\n*****库存文件不存在!请创建");return 0;}while(feof(fp)!=1)/*文件是否结束*/{ fread(&students[i],sizeof(STUDENTS),1,fp);/*读取文件*/if(students[i].num==0)/*学号是否为零*/break;elsei++;}fclose(fp);/*关闭文件*/return i;}void save_file(STUDENTS students[],int sum)/*保存文件*/{ FILE *fp;int i;if((fp=fopen("","wb"))==NULL)/*判断文件是否为空*/{ printf("读文件错误!\n");return;}for(i=0;i<sum;i++)if(fwrite(&students[i],sizeof(STUDENTS),1,fp)!=1)/*向文件写入的数据块不等于1*/printf("写文件错误!\n");fclose(fp);}/*输入模块*/int input(STUDENTS students[]){ int i=0;printf("\n\n 录入学生信息(最多%d 人)\n",M);printf("----------------------------------------------------\n");do{ printf("\n 第%d人",i+1);printf("\n 学生学号:");scanf("%d",&students[i].num);if(students[i].num==0) break;printf("\n 学生姓名:");scanf("%s",students[i].name);printf("\n 班级:");scanf("%d",&students[i].banji);printf("\n 成绩:");scanf("%d",&students[i].chengji);printf("\n 排名:");scanf("%d",&students[i].paiming);i++;}while(i<M);printf("\n --%d个学生信息输入完毕!--\n",i);printf("\n 按任意键返回主菜单!");getchar();return i;}/*输出模块*/void output(STUDENTS students[]){int i=0,j=0,page=1;printf("\n\n --学生信息表-- 第%d页\n\n",page);/*每两个一页*/printf("学生学号----姓名-----班级----- 成绩-----排名\n");printf("-------------------------------------------------------\n"); do{ if(students[i].num!=0){ j++;if(j%PAGE!=0){ printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("------------------------------------------------------\n");}}else{ printf("按任意键继续!");getchar();printf("\n\n --学生信息表-- 第%d页\n\n",++page);printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n");{ printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("---------------------------------------------\n");}}i++;}while(students[i].num<M);printf("按任意键返回主菜单!");getchar( );}/*学生信息查询*/void find_by_num(STUDENTS students[],int sum) /*按学号查找*/{ int i,find_num;printf("\n 请输入要查找的学生学号:");scanf("%d",&find_num);for(i=0;i<sum;i++)if(students[i].num==find_num){printf("这是您所查找到的学生信息:\n");printf("学生学号----姓名-----班级----- 成绩-----排名\n"); printf("------------------------------------------\n");printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("---------------------------------------------\n");break;}else{printf("\n 未找到要查找的学生信息,按任意键返回!"); getchar();}}void find_by_name(STUDENTS students[],int sum)/*按姓名查找*/ {int i;char find_name[20];printf("\n 请输入要查找的学生姓名:");scanf("%s",find_name);for(i=0;i<sum;i++);if(strcmp(students[i].name,find_name)==0) /*字符串比较相等返回0*/{printf("这是您所查找到属于该学生的信息:");printf("学生学号----姓名-----班级----- 成绩-----排名\n");printf("------------------------------------------\n");printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("---------------------------------------------\n");}else{printf("\n 未找到要查找的学生信息,按任意键返回!");getchar();}}void find_by_banji(STUDENTS students[],int sum)/*按班级查找*/{int i;int find_banji;printf("\n 请输入要查找的学生班级:");scanf("%d",&find_banji);for(i=0;i<sum;i++)if(students[i].banji==find_banji){printf("这是您所查找到属于该班级的学生:");printf("学生学号----姓名-----班级----- 成绩-----排名\n");printf("------------------------------------------\n");printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("---------------------------------------------\n");}else{printf("\n 未找到要查找的班级信息,按任意键返回!");getchar();}}void find_by_chengji(STUDENTS students[],int sum)/*按成级查找*/{int i;int find_chengji;printf("\n 请输入要查找的学生成绩:");scanf("%d",&find_chengji);for(i=0;i<sum;i++){if(students[i].chengji==find_chengji){printf("这是您所查找到有该成绩的学生:");printf("学生学号----姓名-----班级----- 成绩-----排名\n");printf("------------------------------------------\n");printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("---------------------------------------------\n");}else{printf("\n 未找到要查找的学生信息,按任意键返回!");getchar();}}}void find(STUDENTS students[],int sum)/*定义查找总函数*/{ int choice;printf("\n 您要按照哪种方式查找 \n");/*用switch语句*/printf("\n 1.按学生学号查找 \n");printf("\n 2.按学生姓名查找 \n");printf("\n 3.按学生班级查找 \n");printf("\n 4.按学生成绩查找 \n");printf("\n 0. 退出\n");printf("\n 请选择(0-4): \n");scanf("%d",&choice);switch(choice){ case 1: find_by_num(students,sum); break;case 2: find_by_name(students,sum); break;case 3: find_by_banji(students,sum); break;case 4: find_by_chengji(students,sum); break;case 0: break;}}/*删除信息模块*/void del(STUDENTS students[]){ int i,g,sum;int del_num;printf("\n 请输入要删除的学生学号:");scanf("%d",&del_num);for(i=0;i<sum;i++)if(students[i].num==del_num)/*通过学号判断*/{printf("这是您所要删除学生信息:\n");printf("学生学号----姓名-----班级----- 成绩-----排名\n");printf("------------------------------------------\n");printf("%12d %10s %2d %3d %4d\n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("---------------------------------------------\n");printf("您确认要删除吗");printf("按任意键继续!");getchar();printf("已成功删除学生信息!");}for(g=i;g<sum;g++){ students[g]=students[g+1];printf("删除后的信息表:\n");printf("学生学号----姓名-----班级----- 成绩-----排名\n");printf("------------------------------------------\n");printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("---------------------------------------------\n");}}/*信息修改模块*/void modify(STUDENTS students[],int sum){int i=0,choice,modify_num,flag;do{printf("请输入要修改的学生学号:");scanf("%d",&modify_num);for(i=0;i<sum;i++)if(students[i].num==modify_num){ printf("\n\n --学生信息-- \n\n"); printf("学生学号----姓名-----班级----- 成绩-----排名\n");printf("------------------------------------------\n");printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("---------------------------------------------\n"); printf("\n 您要修改哪一项\n");printf("\n 1.学生姓名\n");printf("\n 2.学生班级\n");printf("\n 3.成绩\n");printf("\n 4.排名\n");printf("\n 请选择(1-4):\n");scanf("%d",&choice);switch(choice){ case 1: printf("\n 请输入修改后的学生姓名:");scanf("%s",students[i].name); break;case 2: printf("\n 请输入修改后的学生班级:");scanf("%s",students[i].banji); break;case 3: printf("\n 请输入修改后的成绩:");scanf("%s",students[i].chengji); break;case 4: printf("\n 请输入修改后的排名:");scanf("%d",&students[i].paiming); break;}printf("\n\n --学生信息-- \n\n"); printf("学生学号----姓名-----班级----- 成绩-----排名\n");printf("------------------------------------------\n");printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("---------------------------------------------\n");break;}else{printf("\n 该学生不存在!");}printf("\n 修改成功!\n");printf("您要继续修改吗(Y/N)");if (choice=='Y'||choice=='y'){ flag=1;printf("\n 继续!\n");}else flag=0;}while( flag==1); /*直到不修改结束循环*/printf("\n 按任意键返回主菜单!");getchar();}/*学生信息统计模块*/void count(STUDENTS students[],int sum) /*统计某个成绩的学生个数*/ {int i;int count_chengji;int n=0;printf("请输入一个成绩:\n");scanf("%d",&count_chengji);for(i=0;i<sum;i++){if(students[i].chengji==count_chengji)/*计数*/n++;break;}printf("统计出属于该成绩的一共有%d个人\n",n);}/*成绩排序模块*/void sort(STUDENTS students[],int sum){STUDENTS t;int i,j;printf("\n\n --学生信息-- \n\n");printf("学生学号----姓名-----班级----- 成绩-----排名\n");printf("------------------------------------------\n");for(i=1;i<sum;i++){ for(j=i+1;j<sum;j++)if(students[j].chengji>students[i].chengji)/*冒泡排序法*/ {t=students[j];students[j]=students[i];students[i]=t;}}for(i=0;i<sum;i++){ printf("%12d %10s %2d %3d %4d \n",students[i].num,students[i].name,students[i].banji,students[i].chengji,students[i].paiming);printf("---------------------------------------------\n");}}void main(){STUDENTS students[M];int choice,sum;sum=read_file(students);/*文件读取*/if (sum==0){printf("请录入学生信息!*******\n");sum=input(students);/*输入信息*/}do{printf("\n\n\n *******学生信息管理系统******* \n\n");printf(" 1.修改学生信息 \n\n");printf(" 2.删除学生信息\n\n");printf(" 3.查找学生信息\n\n");printf(" 4.统计学生信息\n\n");printf(" 5.学生成绩排行信息\n\n");printf(" 0.退出系统\n\n");printf(" 请选择\n\n");scanf("%d",&choice);switch(choice){ case 1 : modify(students,sum); break;case 2 : del(students); break;case 3 : find(students,sum); break;case 4 : count(students,sum); break;case 5 : sort(students,sum); break;case 0 : break;}}while(choice!=0); /*直到选择退出系统*/ save_file(students,sum);}运行结果:。