1.学生管理系统的基本功能
本系统为一个基于C语言而设计的学生管理系统,接下来是详细介绍:
1.本系统有三个等级菜单:主菜单,二级菜单,三级菜单
2.本系统的基本功能 主菜单功能:实现显示基本信息、基本信息管理、学生成绩管理、考试成绩统计(每个学生5门课程)、根据条件查询、打印结果。
第一个二级菜单:实现对文件内容中的学生信息显示,对于学生信息文件的后续追加输入、删除、修改;
第二个二级菜单:实现对学生成绩的和,求出学生各科成绩的总和,根据总分进行排名;
第三个二级菜单:实现对各科成绩求出相应的最高分、最低分、平均分;
第四个二级菜单:实现通过学号/姓名/名次来进行查找;
第五个二级菜单:实现对整体学生总的数据的打印。实现读取其他文本文件的内容并进行上述已说明的功能(第五个二级菜单功能较特殊,若要读取其他文件内容,需要将主菜单中创建一个txt文件的Studetfile函数给注释掉,然后将函数Display取消注释,然后将所有菜单中的文件路径(也就大概几个函数)改为要读取的文件路径即可对文件内容进行操作)。 3.本系统的代码文件为根据主菜单中的功能进行函数分装设计,相互之间不受太大影响,通过头文件将各个功能联系起来
2.使用前文件的介绍
1.头文件.h和具体实现文件.c的联系与使用妙处
1.将多个函数分装,便于后续代码的维护与修改
2.在.c文件中写好具体函数是如何实现的,.h文件中声明好在.c文件中写好的函数,可增加变量,仅需添加少量变量即可实现对系统功能的添加。
//Basemessage.h文件
//Basemessage.c文件
2.结构体,全局变量的定义
在Threefile.h文件中定义了结构体类型Student,并创建结构体数组stu[100];
全局变量:结构体数组stu[100]、Number(记录输入的人数)
typedef struct Student
{
char ID[10];//学号
char name[10];//姓名
char sex[10];//性别
int age;//年龄
double gaoshu;//高数
double daying;//大英
double malie;//马列
double shumo;//数模
double jiwang;//计网
double allgrade;//总分
}Student;
extern int Number;//全局变量,具体在Threefile.c文件中
extern Student stu[100];//全局变量,结构体数组,具体在Threefile.c文件中
3.文件信息的写入
在Threefile.c文件中创建函数Studentfile,创建文件并写入信息
#define _CRT_SECURE_NO_WARNINGS
#include "Display.h"
#include "Threefile.h"
#include "Testgraderank.h"
#include "Basemessage.h"
#include "Studentgrademanager.h"
#include "Find.h"
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
int Number = 0;//来存放有几个学生
Student stu[100] = {0}; //创建一个结构体数组来存放学生数据
void Studentfile()//学生信息文件的创建
{
char str[80] = { 0 };
char ch = 'y';//判断是否继续输入yes/no
int i = 0;
while (ch == 'y')
{
system("cls");
printf("输入学号:");
gets(stu[i].ID);
printf("输入姓名:");
gets(stu[i].name);
printf("输入性别:");
gets(stu[i].sex);
printf("输入年龄:");
gets(str); stu[i].age = atoi(str);
printf("输入高数成绩:");
gets(str); stu[i].gaoshu = atof(str);
printf("输入大英成绩:");
gets(str); stu[i].daying = atof(str);
printf("输入马列成绩:");
gets(str); stu[i].malie = atof(str);
printf("输入数模成绩:");
gets(str); stu[i].shumo = atof(str);
printf("输入计网成绩:");
gets(str); stu[i].jiwang = atof(str);
do {
printf("是否继续y/n? ");
gets_s(str, sizeof(str)); ch = str[0];
} while (!(ch == 'y' || ch == 'n'));
stu[i].allgrade = stu[i].gaoshu + stu[i].daying + stu[i].malie + stu[i].shumo + stu[i].jiwang;
i++;
Number++; //输入的时候加了一遍
}
//Ranking();//根据总分排序
FILE* fp1 = fopen("D:\\学生管理系统存放文件\\学生信息总表.txt", "w");//将结构体数组的内容存放在文本文件中
if (fp1 == NULL)
{
printf("无法创建文件");
exit(0);
}
fprintf(fp1, "学号\t姓名\t性别\t年龄\t高数\t大英\t马列\t数模\t计网\t总分\n");//第一行表头
for (int j = 0; j < Number; j++)
{
fprintf(fp1, "%s\t%s\t%s\t%d\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", stu[j].ID, stu[j].name, stu[j].sex, stu[j].age, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].allgrade);
}
fclose(fp1);
}
3.菜单的介绍
1.一级菜单
即主菜单,主要使用使用switch——case来指向下一级菜单,主要由五个函数组成,五个函数再指向其下一级菜单
#define _CRT_SECURE_NO_WARNINGS
#include "Threefile.h"
#include "Testgraderank.h"
#include "Basemessage.h"
#include "Studentgrademanager.h"
#include "Find.h"
#include "Display.h"
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
int main(){
Studentfile();//创建txt文件
//Display();
int i = 0;
while (1)
{
//这里是主菜单
system("cls");
printf("学生管理系统\t\t\n");
printf("____________________\t\t\n");
printf("0.退出系统\t\t\n");
printf("1.基本信息管理\t\t\n");
printf("2.学生成绩管理\t\t\n");
printf("3.考试成绩统计\t\t\n");
printf("4.查询学生信息\t\t\n");
printf("5.打印成绩报表\t\t\n");
printf("____________________\t\t\n");
loop:
printf("请选择菜单功能:请输入(0--5)\t\t\n");
scanf("%d", &i);
if (i < 0 || i > 5)
{
printf("输入错误,重新输入\t\t\n");
goto loop;
}
switch (i)
{
case 0:
printf("退出系统……\t\t\n");
exit(0);
case 1:
Basemessage();//这些是子菜单
break;
case 2:
Studentgrademanager();
break;
case 3:
Testgraderank();
break;
case 4:
Find();
break;
case 5:
Display();
break;
}
}
return 0;
}
2.二级菜单
1.第一个二级菜单:学生信息管理Basemessage
使用函数将菜单功能分为四部分,划出三级菜单,
分别为
1.显示学生信息Print
2.记录输入与追加Write
3.删除学生信息Delete
4.修改学生信息Change
#define _CRT_SECURE_NO_WARNINGS
#include "Display.h"
#include "Threefile.h"
#include "Testgraderank.h"
#include "Basemessage.h"
#include "Studentgrademanager.h"
#include "Find.h"
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
void Basemessage()
{
int i = 0;
while (1)
{
system("cls");
printf("基本信息管理\t\t\n");
printf("____________________\t\t\n");
printf("0.退出系统\t\t\n");
printf("1.显示学生信息\t\t\n");//二级子菜单
printf("2.记录输入与追加\t\t\n");
printf("3.删除学生记录\t\t\n");
printf("4.修改学生记录\t\t\n");
printf("____________________\t\t\n");
loop:
printf("请选择菜单功能:请输入(0--4)\t\t\n");
scanf("%d", &i);
if (i < 0 || i > 4)
{
printf("输入错误,重新输入:\t\t\n");
goto loop;
}
switch (i)
{
case 0:
printf("退出系统……\t\t\n");
return;
case 1:
printf("进入Print……\t\t\n");
Print();
break;
case 2:
printf("进入Write……\t\t\n");
Write();
break;
case 3:
printf("进入Delete……\t\t\n");
Delete();
break;
case 4:
printf("进入Change……\t\t\n");
Change();
break;
}
}
}
2.第二个二级菜单:学生成绩管理Studentgrademanager
使用函数划出两个功能,成为三级菜单
1.统计学生各科的总分Addall
2.排序Ranking(根据学生的总分对结构体数组排序)
#define _CRT_SECURE_NO_WARNINGS
#include "Display.h"
#include "Threefile.h"
#include "Testgraderank.h"
#include "Basemessage.h"
#include "Studentgrademanager.h"
#include "Find.h"
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
void Studentgrademanager()
{
while (1)
{
int i = 0;
system("cls");
printf("学生成绩管理\t\t\n");
printf("____________________\t\t\n");
printf("0.退出系统\t\t\n");
printf("1.统计学生总分\t\t\n");
printf("2.根据总分排名\t\t\n");
printf("____________________\t\t\n");
loop:
printf("请选择菜单功能:请输入(0--2)\t\t\n");
scanf("%d", &i);
if (i < 0 || i > 2)
{
printf("输入错误\t\t\n");
goto loop;
}
switch (i)
{
case 0:
printf("退出系统……\t\t\n");
return;
case 1:
Addall();
break;
case 2:
Ranking();
break;
}
}
}
3.第三个二级菜单:考试成绩统计Testgraderank
通过switch -case来指向三个功能
1.求课程最高分Topgrade();
2.求课程最低分Bottlegrade();
3.求课程平均分Averagegrade();
#define _CRT_SECURE_NO_WARNINGS
#include "Display.h"
#include "Threefile.h"
#include "Testgraderank.h"
#include "Basemessage.h"
#include "Studentgrademanager.h"
#include "Find.h"
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
double Testgraderank()
{
while (1)
{
int i = 0;
system("cls");
printf("考试成绩统计\t\t\n");
printf("____________________\t\t\n");
printf("0.退出系统\t\t\n");
printf("1.求课程最高分\t\t\n");
printf("2.求课程最低分\t\t\n");
printf("3.求课程平均分\t\t\n");
printf("____________________\t\t\n");
puts("");
loop:
printf("请选择菜单功能:请输入(0--3)\t\t\n");
scanf("%d", &i);
if (i < 0 || i > 3)
{
printf("输入错误,重新输入:\t\t\n");
goto loop;
}
switch (i)
{
case 0:
printf("退出系统……\t\t\n");
return;
case 1:
Topgrade();
break;
case 2:
Bottlegrade();
break;
case 3:
Averagegrade();
break;
}
}
}
4.第四个二级菜单:查找学生信息Find
根据相应的查找方法来查询学生的信息,
1.FindID通过学号查找学生信息
1.Findname通过名字查找学生信息
1.Findplace通过名次查找学生信息
可以后续在添加打印出的信息,增强代码的健壮性
#define _CRT_SECURE_NO_WARNINGS
#include "Display.h"
#include "Threefile.h"
#include "Testgraderank.h"
#include "Basemessage.h"
#include "Studentgrademanager.h"
#include "Find.h"
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
void Find()
{
while (1)
{
int i = 0;
system("cls");
printf("查找\t\t\n");
printf("____________________\t\t\n");
printf("0.退出系统\t\t\n");
printf("1.按学号查找\t\t\n");
printf("2.按姓名查找\t\t\n");
printf("3.按名次查找\t\t\n");
printf("____________________\t\t\n");
puts("");
loop:
printf("请选择菜单功能:请输入(0--3)\t\t\n");
scanf("%d", &i);
if (i < 0 || i > 3)
{
printf("输入错误,重新输入:\t\t\n");
goto loop;
}
switch (i)
{
case 0:
printf("退出系统……\t\t\n");
return;
case 1:
FindID();
system("pause");
break;//按学号查找
case 2:
Findname();
system("pause");
break; //按姓名查找
case 3:
Findplace();
system("pause");
break;//按名次查找
}
}
}
5.第五个二级菜单:打印信息Display
Display用于读取文件的内容,并打印出文件的内容
#define _CRT_SECURE_NO_WARNINGS
#include "Display.h"
#include "Threefile.h"
#include "Testgraderank.h"
#include "Basemessage.h"
#include "Studentgrademanager.h"
#include "Find.h"
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
void Display()
{
char arr[10][100] = { 0 };
char ch;
FILE* fp = fopen("D:\\学生管理系统存放文件\\学生信息总表.txt", "r");//读取其他的文件
if (fp == NULL) {
printf("无法打开文件\n");
exit(1);
}
int n = 0;
while ((ch = fgetc(fp)) != EOF)
{
arr[0][n++] = ch;
if (ch == '\n')
break;//消去文件的第一行,即表头的学号、姓名、年龄……等中文字符
}
int flag = 0;
if (Number == 0)//判断自己是否主动输入数据,若没有,则Number为0,若输入,则不为0;用于读入其他文件
{
flag = 1;
}
int j = 0;
while (fscanf(fp, "%s\t%s\t%s\t%d\t%lf\t%lf\t%lf\t%lf\t%lf\t%lf\n", stu[j].ID, stu[j].name, stu[j].sex, &stu[j].age, &stu[j].gaoshu, &stu[j].daying, &stu[j].malie, &stu[j].shumo, &stu[j].jiwang, &stu[j].allgrade) != EOF)
{
if (flag == 1)
{
++Number; //若是自己没有主动输入数据而是通过读取其他文件内容,则每读入一个数据,Number++
}
j++;
}
printf("学号\t姓名\t性别\t年龄\t高数\t大英\t马列\t数模\t计网\t总分\t\t\n");
//Ranking();
for (int i = 0; i < j; i++)
{
printf("%s\t%s\t%s\t%d\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t\t\n", stu[i].ID, stu[i].name, stu[i].sex, stu[i].age, stu[i].gaoshu, stu[i].daying, stu[i].malie, stu[i].shumo, stu[i].jiwang, stu[i].allgrade);
}
system("pause");
}
3.三级菜单
1.第一个三级菜单
void Print()//打印学生基本信息
{
system("cls");
int flag = 1;
char num[10] = { 0 };
printf("输入要查询信息的学生学号:\t\t\n");
scanf("%s", num);
for (int i = 0;i<Number;i++) //你在读取的时候没有个Number联动 当然查不出来了呀
{
//printf("%s", PS[i].ID);
if (strcmp(stu[i].ID, num) == 0)
{
printf("成功找到!\n");
printf("学号:%s\t\n姓名:%s\t\n性别:%s\t\n年龄:%d\t\n高数:%lf\t\n大英:%lf\t\n马列:%lf\t\n数模:%lf\t\n计网:%lf\t\n总分:%f\t\t\n", stu[i].ID, stu[i].name, stu[i].sex, stu[i].age, stu[i].gaoshu, stu[i].daying, stu[i].malie, stu[i].shumo, stu[i].jiwang, stu[i].allgrade);
flag = 0;
break;
}
}
if (flag) {
printf("不好意思,未找到!\t\t\n");
}
system("pause");
}
void Write()//这个函数,对于后续学生信息的追加
{
system("cls");
int count = 0;
printf("要输入多少个学生\t\t\n");
scanf("%d", &count);//多少个学生
getchar();
system("cls");
while (count > 0)
{
int i = 1 + Number;
printf("请输入第%d位学生的信息:\t\t\n", i--);
printf("学号:\n");
scanf("%s",stu[i].ID);
getchar();
printf("姓名:\n");
scanf("%s", stu[i].name);
getchar();
printf("性别:\n");
scanf("%s",stu[i].sex);
getchar();
printf("年龄:\n");
scanf("%d",&stu[i].age);
getchar();
printf("输入高数成绩:\n");
scanf("%lf",&stu[i].gaoshu);
getchar();
printf("输入大英成绩:\n");
scanf("%lf",&stu[i].daying);
getchar();
printf("输入马列成绩:\n");
scanf("%lf",&stu[i].malie);
getchar();
printf("输入数模成绩:\n");
scanf("%lf",&stu[i].shumo);
getchar();
printf("输入计网成绩:\n");
scanf("%lf",&stu[i].jiwang);
getchar();
stu[i].allgrade = stu[i].gaoshu + stu[i].daying + stu[i].malie + stu[i].shumo + stu[i].jiwang;
count--;
Number++;
i++;
FILE* fp1 = fopen("D:\\学生管理系统存放文件\\学生信息总表.txt", "wt");
if (fp1 == NULL)
{
printf("无法创建文件");
exit(0);
}
fprintf(fp1, "学号\t姓名\t性别\t年龄\t高数\t大英\t马列\t数模\t计网\t总分\t\t\n");
for (int j = 0; j < Number; j++)
{
fprintf(fp1, "%s\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\t\n", stu[j].ID, stu[j].name, stu[j].sex, stu[j].age, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].allgrade);
}
fclose(fp1);
printf("该生添加成功\t\t\n");
system("pause");
system("cls");
}
printf("\n");
printf("全部添加成功\t\t\n");
system("cls");
}
void Delete()//删除学生信息
{
system("cls");
int flag = 1;
char id[10] = { 0 };
while (flag)
{
int i = 0;
printf("请输入要删除的学生的学号:\t\t\n");
scanf("%s", id);
getchar();
for (i = 0;i< Number;i++)
{
if (strcmp(stu[i].ID, id) == 0)
{
for(int j = i;j < Number;j++)
stu[j] = stu[j + 1];
flag = 0;
}
}
if (flag)
{
printf("未找到该生\t\t\n");
system("pause");
}
Number--;
FILE* fp1 = fopen("D:\\学生管理系统存放文件\\学生信息总表.txt", "wt");
if (fp1 == NULL)
{
printf("无法创建文件");
exit(0);
}
fprintf(fp1, "学号\t姓名\t性别\t年龄\t高数\t大英\t马列\t数模\t计网\t总分\t\t\n");
for (int j = 0; j < Number; j++)
{
fprintf(fp1, "%s\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\t\n", stu[j].ID, stu[j].name, stu[j].sex, stu[j].age, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].allgrade);
}
fclose(fp1);
printf("该生删除成功\t\t\n");
system("pause");
system("cls");
}
}
void Change()//更改学生信息
{
system("cls");
char num[10] = { 0 };
int flag = 1;
printf("输入要修改成绩学生的学号:\t\t\n");
scanf("%s", num);
getchar();
for (int i = 0; i < Number;i++) {
if (strcmp(stu[i].ID, num) == 0) {
printf("成功找到该学生\t\t\n");
printf("学号:%s\t\n姓名:%s\t\n性别:%s\t\n年龄:%d\t\n高数:%lf\t\n大英:%lf\t\n马列:%lf\t\n数模:%lf\t\n计网:%lf\t\n总分:%lf\n\n", stu[i].ID, stu[i].name, stu[i].sex,stu[i].age, stu[i].gaoshu, stu[i].daying, stu[i].malie, stu[i].shumo, stu[i].jiwang,stu[i].allgrade);
flag = 0;
printf("要修改的内容:\n");
printf("学号:\n");
scanf("%s", stu[i].ID);
getchar();
printf("姓名:\n");
scanf("%s", stu[i].name);
getchar();
printf("性别:\n");
scanf("%s", stu[i].sex);
getchar();
printf("年龄:\n");
scanf("%d", &stu[i].age);
getchar();
printf("输入高数成绩:\n");
scanf("%lf", &stu[i].gaoshu);
getchar();
printf("输入大英成绩:\n");
scanf("%lf", &stu[i].daying);
getchar();
printf("输入马列成绩:\n");
scanf("%lf", &stu[i].malie);
getchar();
printf("输入数模成绩:\n");
scanf("%lf", &stu[i].shumo);
getchar();
printf("输入计网成绩:\n");
scanf("%lf", &stu[i].jiwang);
getchar();
stu[i].allgrade = stu[i].gaoshu + stu[i].daying + stu[i].malie + stu[i].shumo + stu[i].jiwang;
FILE* fp1 = fopen("D:\\学生管理系统存放文件\\学生信息总表.txt", "wt");
if (fp1 == NULL)
{
printf("无法创建文件");
exit(0);
}
fprintf(fp1, "学号\t姓名\t性别\t年龄\t高数\t大英\t马列\t数模\t计网\t总分\t\t\n");
for (int j = 0; j < Number; j++)
{
fprintf(fp1, "%s\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t\t\n", stu[j].ID, stu[j].name, stu[j].sex, stu[j].age, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].gaoshu, stu[j].allgrade);
}
fclose(fp1);
printf("该生修改成功\t\t\n");
system("pause");
system("cls");
printf("修改成功");
system("pause");
}
}
if (flag) {
printf("输入信息有误,未查询到\t\t\n");
system("pause");
}
}
2.第二个三级菜单
double Addall()//求学生各科成绩总和
{
float all = 0;
system("cls");
printf("输入学生学号:\t\t\n");
char num[10] = { 0 };//存储学号
int flag = 1;
scanf("%s", num);/*放学号作为参数*/
getchar();
for (int i = 0; i < Number;i++) {
if (strcmp(stu[i].ID, num) == 0) {
printf("成功找到!\t\t\n");
all = stu[i].gaoshu + stu[i].daying + stu[i].malie + stu[i].shumo + stu[i].jiwang ;
printf("总分:%f分\t\t\n", all);
flag = 0;
}
}
if (flag)
printf("不好意思,未找到!\t\t\n");
system("pause");
return all;
}
void Ranking()//降序
{
Student t;
int i = 0;
int k = 0;
int n = 0;
for (int j = 0; j < Number-1; j++)
{
for (k = 0; k <Number - 1 - j; k++)
{
stu[k].allgrade = stu[k].gaoshu + stu[k].daying + stu[k].malie + stu[k].shumo + stu[k].jiwang;//求总分
if (stu[k + 1].allgrade > stu[k].allgrade)
{
t = stu[k+1];
stu[k+1] = stu[k];
stu[k] = t;
}
}
}
printf("学号\t姓名\t性别\t年龄\t高数\t大英\t马列\t数模\t计网\t总分\t排名\t\t\n");
for (n = 0; n < Number; n++)
{
printf("%s\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\t%d\t\t\n", stu[n].ID, stu[n].name, stu[n].sex, stu[n].age, stu[n].gaoshu, stu[n].gaoshu, stu[n].gaoshu, stu[n].gaoshu, stu[n].gaoshu, stu[n].allgrade,n+1);
}
system("pause");
}
3.第三个三级菜单
double Topgrade()//求一门中的所有学生成绩的最高
{
int i = 0;
int j = 0;//来存放科目
double max = 0;
printf("选择科目:\t\t\n");
printf("1.高数\t\t\n");
printf("2.大英\t\t\n");
printf("3.马列\t\t\n");
printf("4.数模\t\t\n");
printf("5.计网\t\t\n");
scanf_s("%d", &j);
switch (j)
{
case 1:
for (i = 0; i < Number;i++)
{
if (stu[i].gaoshu > max)
max = stu[i].gaoshu;
}
printf("高数最高分:%f", max);
system("pause");
break;
case 2:
for (i = 0; i < Number; i++)
{
if (stu[i].daying > max)
max = stu[i].daying;
}
printf("大英最高分:%f", max);
system("pause");
break;
case 3:
for (i = 0; i < Number; i++)
{
if (stu[i].malie > max)
max = stu[i].malie;
}
printf("马列最高分:%f", max);
system("pause");
break;
case 4:
for (i = 0; i < Number; i++)
{
if (stu[i].shumo > max)
max = stu[i].shumo;
}
printf("数模最高分:%f", max);
system("pause");
break;
case 5:
for (i = 0; i < Number; i++)
{
if (stu[i].jiwang > max)
max = stu[i].jiwang;
}
printf("计网最高分:%f", max);
system("pause");
break;
}
printf("\n");
return max;
}
double Bottlegrade()//求一门科目的最低分
{
int i = 0;
int j = 0;//来存放科目
double min = 1000;
printf("选择科目:\t\t\n");
printf("1.高数\t\t\n");
printf("2.大英\t\t\n");
printf("3.马列\t\t\n");
printf("4.数模\t\t\n");
printf("5.计网\t\t\n");
scanf("%d", &j);
switch (j)
{
case 1:
for (i = 0; i < Number; i++)
{
if (stu[i].gaoshu < min)
min = stu[i].gaoshu;
}
printf("高数最低分:%f", min);
system("pause");
break;
case 2:
for (i = 0; i < Number; i++)
{
if (stu[i].daying < min)
min = stu[i].daying;
}
printf("大英最低分:%f", min);
system("pause");
break;
case 3:
for (i = 0; i < Number; i++)
{
if (stu[i].malie < min)
min = stu[i].malie;
}
printf("马列最低分:%f", min);
system("pause");
break;
case 4:
for (i = 0; i < Number; i++)
{
if (stu[i].shumo < min)
min = stu[i].shumo;
}
printf("数模最低分:%f", min);
system("pause");
break;
case 5:
for (i = 0; i < Number; i++)
{
if (stu[i].jiwang < min)
min = stu[i].jiwang;
}
printf("计网最低分:%f", min);
system("pause");
break;
}
printf("\n");
return min;
system("pause");
}
double Averagegrade()//求一门科目的平均分
{
int j = 0;
int i = 0;
double sum = 0;
double average = 0;
printf("选择科目:\t\t\n");
printf("1.高数\t\t\n");
printf("2.大英\t\t\n");
printf("3.马列\t\t\n");
printf("4.数模\t\t\n");
printf("5.计网\t\t\n");
scanf("%d", &j);
switch (j)
{
case 1:
for (i = 0; i < Number; i++)
{
sum += stu[i].gaoshu;
}
average = sum / i;
printf("高数平均分:%f", average);
system("pause");
break;
case 2:
for (i = 0; i < Number; i++)
{
sum += stu[i].daying;
}
average = sum / i;
printf("大英平均分:%f", average);
system("pause");
break;
case 3:
for (i = 0; i < Number; i++)
{
sum += stu[i].malie;
}
average = sum / i;
printf("马列平均分:%f", average);
system("pause");
break;
case 4:
for (i = 0; i < Number; i++)
{
sum += stu[i].shumo;
}
average = sum / i;
printf("数模平均分:%f", average);
system("pause");
break;
case 5:
for (i = 0; i < Number; i++)
{
sum += stu[i].jiwang;
}
average = sum / i;
printf("计网平均分:%f", average);
system("pause");
break;
}
printf("\n");
return average;
system("pause");
}
4.第四个三级菜单
注:使用完函数Ranking(第二个三级菜单里面)之后才能使用用名次查询
void FindID()
{
int i = 0;
char id[10] = { 0 };//来存放输入的学号
printf("请输入学号:\t\t\n");
scanf("%s", id);
for (i = 0; i < Number;i++)
{
if (strcmp(stu[i].ID, id) == 0)
{
printf("学号\t姓名\t性别\t年龄\t\t\n");
printf("%s\t%s\t%s\t%d\t\t\n", stu[i].ID, stu[i].name, stu[i].sex, stu[i].age);
return;
}
}
printf("未找到该生\t\n");
}
void Findname()
{
int i = 0;
char name[10] = { 0 };//来存放名字
printf("请输入名字:\t\t\n");
scanf("%s", name);
for (i = 0; i < Number; i++)
{
if (strcmp(stu[i].name, name) == 0)
{
printf("学号\t姓名\t性别\t年龄\t\t\n");
printf("%s\t%s\t%s\t%d\t\t\n", stu[i].ID, stu[i].name, stu[i].sex, stu[i].age);
return;
}
}
printf("未找到该生\t\n");
}
void Findplace()
{
int i = 0;
int n = 0;//来存放名次
printf("请输入名次:\t\t\n");
scanf("%d", &n);
n--;
if (n >= 0 || n< Number)
{
printf("学号\t姓名\t性别\t年龄\t\t\n");
printf("%s\t%s\t%s\t%d\t\t\n", stu[n].ID, stu[n].name, stu[n].sex, stu[n].age);
return;
}
else
printf("未找到该生");
}
4.完整代码
见资源包
https://download.csdn.net/download/2302_80961600/89550258