#include <stdio.h>
#include<string.h>
#define N 3
struct students
{
/*
成员变量:姓名、性别、学号、三门成绩等...
*/
char name[100];
char sex[100];
char on[100];
double Mark1;
double Mark2;
double Mark3;
};
struct students stu[100]; // 对此结构体进行操作
int k = 0; //全局变量作为累加项
void student_enter();//函数声明:学生入录
void seek();//函数声明:查询所有学生信息
void search_For();//函数声明:通过学号或者姓名查询学生
void delete_stu();//函数声明:删除所有学生
void average();//函数声明:平均分统计
void Total_score();//函数声明:总分统计
void Help();//函数声明:帮助文档
void revise();//函数声明:修改信息
void main()
{
int n = 0, i = 1;
printf("\t\t\t\t\t---------------------------------------\n");
printf("\t\t\t\t\t\t 学生管理系统\n");
printf("\n");
printf("\t\t\t\t\t1、入录学生(输入学生的合法信息)\n");
printf("\n");
printf("\t\t\t\t\t2、查询所有学生(当前所有的信息)\n");
printf("\n");
printf("\t\t\t\t\t3、通过学号或者姓名查询学生(二个都可)\n");
printf("\n");
printf("\t\t\t\t\t4、清空所有学生的数据(只能通过学号)\n");
printf("\n");
printf("\t\t\t\t\t5、当前所有学生的平均分数(没有进行排名)\n");
printf("\n");
printf("\t\t\t\t\t6、总成绩统计(所有的成绩的总和)\n");
printf("\n");
printf("\t\t\t\t\t7、修改学生信息(可通过学号和姓名)\n");
printf("\n");
printf("\t\t\t\t\t8、帮助文档\t\t任意键退出..\n");
printf("\n");
printf("\t\t\t\t\t---------------------------------------\n");
while (i)
{
scanf_s("%d", &n); //读取用户选择第一次选项,取决第一次执行哪一个函数体
getchar(); //读取空格
switch (n)
{
case 1: student_enter(); break; //学生入录
case 2: seek(); break; //所有学生
case 3: search_For(); break; //查找单个学生
case 4: delete_stu(); break; //删除所有学生
case 5:average(); break; //平均分
case 6:Total_score(); break; //总分统计
case 7:revise(); break; //修改信息
case 8:Help(); break; //帮助文档
default: i = 0; break; //输入其他键 i=0 程序结束
}
}
}
void student_enter()
{
int n = 0, i;
char input[100];//字符串数组
printf("请选择入录学生的个数:");
scanf_s("%d",&n);//读取入录人数
getchar(); //读取回车
if (n == 0) { printf("录入个数不能为0,已自动返回主菜单\n"); };
for (i=0;i<n;i++)
{
printf("请输入第%d位同学姓名:", i + 1);
gets_s(input);
strcpy_s(stu[k].name,input);
getchar(); //读取回车
printf("录入成功!\n");
printf("请输入第%d位同学学号:", i + 1);
gets_s(input);
strcpy_s(stu[k].on, input);
getchar(); //读取回车
printf("录入成功!\n");
printf("请输入第%d位同学性别:", i + 1);
gets_s(input);
strcpy_s(stu[k].sex, input);
getchar(); //读取回车
printf("录入成功!\n");
printf("请输入第%d位同学的语文成绩:", i + 1);
scanf_s("%lf",&stu[k].Mark1);
getchar(); //读取回车
printf("录入成功!\n");
printf("请输入第%d位同学的数学成绩:", i + 1);
scanf_s("%lf", &stu[k].Mark2);
getchar(); //读取回车
printf("录入成功!\n");
printf("请输入第%d位同学的英语成绩:", i + 1);
scanf_s("%lf", &stu[k].Mark3);
getchar(); //读取回车
printf("录入成功!\n");
printf("请继续您的操作..");
k++; //全局变量的累加
}
}
void seek()
{
int b;//b作为seek查找所有学生的信息的循环变量
if (k == 0) //初始化无学生
{
printf("当前暂无学生!\n");
printf("显示完毕,请继续执行您的选项\n");
}
else //有学生将全部打印
{
printf("当前全部学生\n");
printf("---------------------------------------------\n");
printf("姓名\t性别\t学号\t语文\t数学\t英语\n");
for (b = 0; b < k; b++)
{
printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\n", stu[b].name, stu[b].sex, stu[b].on, stu[b].Mark1, stu[b].Mark2, stu[b].Mark3);
}
printf("---------------------------------------------\n");
printf("显示完毕,请继续执行您的选项\n");
}
}
void search_For()
{
char n[100];
int index,i,temp=0;
index= -1;//初始值为 -1
printf("请输入您要查找的学生姓名或者学号:");
gets_s(n);
getchar();//读取空格
for (i = 0; i < k; i++)
{
if (strcmp(stu[i].on, n) == 0 || strcmp(stu[i].name,n)==0)//比较结构体中成员是否和用户要查询的姓名或者学号为一致
index = i;//一致index被赋值为i
}
if (index==-1) //假设信息不一致则index值还是为-1
{
printf("对不起!并没有您要查的学生的姓名或者学号!\n");
printf("查询结束继续选择您的操作!\n");
}
else {
printf("存在您要查找的学生!\n"); //存在学生时,有两种选择
printf("1、查看该学生的成绩\n");
printf("任意键返回主菜单..\n");
scanf_s("%d",&temp);
switch (temp)
{
case 1:
printf("------------------------\n");
printf("语文\t数学\t英语\n");
printf("%.1lf\t%.1lf\t%.1lf\n",stu[index].Mark1, stu[index].Mark2, stu[index].Mark3);//打印当前的要查找的同学的三门成绩
printf("------------------------\n");
printf("已自动返回主菜单请继续您的操作:");
break;
default:printf("已返回主菜单请继续选择您的操作!\n");break;
}
}
}
void delete_stu()
{
int i,flag=1,j,number=0;
char n[50];
printf("请输您要删除的学生的学号:");
gets_s(n);
getchar();//读取空格
for (i = 0; i < k; i++)
if (strcmp(stu[i].on, n) != 0) //假如用户要查找的人不存在
flag = -1;//则flag为i
if (k==0)
{
printf("暂无数据,无法删除\n");
printf("已自动返回主菜单,请继续您的操作\n");
number++;
}
if (flag==-1)
{
printf("并没有找到您要删除的学生\n");
printf("已自动返回主菜单,请继续您的操作\n");
}
if(flag!=-1 && number==0)
{
printf("已经成功删除该同学\n");
k = -1;//将全局变量赋值-1
printf("已自动返回主菜单,请继续您的操作\n");
number = 0;
}
k=0;//结束后将全局变量重新赋值
}
void average()
{
int i;
double av[10];//平局分数组
if (k == 0)
{
printf("无学生无法打印平均分\n");
printf("已自动返回主菜单,请继续您的操作\n");
}
else
{
printf("------------------------\n");
printf("姓名\t学号\t平均分\n");
for (i = 0; i < k; i++)
{
av[i] = 0;//平均分数组初始为0,不然会为不定值
av[i] = av[i] + stu[i].Mark1 + stu[i].Mark2 + stu[i].Mark3;
av[i] = av[i] / N;
printf("%s\t%s\t%.1f\n", stu[i].name, stu[i].on, av[i]);
}
printf("------------------------\n");
printf("已打印完平均分!\n");
printf("已自动返回主菜单,请继续您的操作\n");
}
}
void Total_score()
{
int i, j;
double sum[50];
if (k==0)
{
printf("目前暂无学生无法统计!\n");
printf("已自动返回主菜单,请继续您的操作\n");
}
else
{
printf("------------------------------\n");
printf("姓名\t学号\t性别\t总分\n");
for (i = 0; i < k; i++)
sum[i] = 0.0;
for (i = 0; i < k; i++)
{
sum[i] = sum[i] + stu[i].Mark1 + stu[i].Mark2 + stu[i].Mark3; //总和
printf("%s\t%s\t%s\t%.1f\n",stu[i].name,stu[i].on,stu[i].sex,sum[i]);
}
printf("------------------------------\n");
printf("已自动返回主菜单,请继续您的操作\n");
/*
for (i = 0; i < k; i++)
{
sum[i] = sum[i] + stu[i].Mark1 + stu[i].Mark2 + stu[i].Mark3; //总和
}
for (i = 0; i < k; i++) { //控制循环轮数
for ( j = 0; j < k - i - 1; j++)
{
if (sum[j] < sum[j + 1])//小于就互换
{
temp = sum[j];
sum[j] = sum[j + 1];
sum[j + 1] = temp;
max=j;
}
}
}
*/
}
}
void revise()//测试修改
{
char n[100];
char input3[100];
int index, i, temp = 0;
index = -1;//初始值为 -1
printf("请输入您要改的学生姓名或者学号:");
gets_s(n);
getchar();//读取空格
for (i = 0; i < k; i++)
{
if (strcmp(stu[i].on, n) == 0 || strcmp(stu[i].name, n) == 0)//比较结构体中成员是否和用户要查询的姓名或者学号为一致
index = i;//一致index被赋值为i
}
if (index == -1) //假设信息不一致则index值还是为-1
{
printf("对不起!并没有找到该的学生的姓名或者学号!\n");
printf("修改结束继续选择您的操作!\n");
}
else
{
printf("存在这名学生,可以对其进行修改\n");
printf("\n");
printf("1、修改\t2、退出回到主菜单"); //存在时
scanf_s("%d", &temp);
getchar(); //读取空格
switch (temp)
{
case 1:
printf("请输入当前同学姓名:");
gets_s(input3);
strcpy_s(stu[index].name, input3);
getchar(); //读取回车
printf("修改成功!\n");
printf("请输入当前同学学号:");
gets_s(input3);
strcpy_s(stu[index].on, input3);
getchar(); //读取回车
printf("修改成功!\n");
printf("请输入当前同学性别:");
gets_s(input3);
strcpy_s(stu[index].sex, input3);
getchar(); //读取回车
printf("修改成功!\n");
printf("请输入当前同学的语文成绩:");
scanf_s("%lf", &stu[index].Mark1);
getchar(); //读取回车
printf("修改成功!\n");
printf("请输入当前同学的数学成绩:");
scanf_s("%lf", &stu[index].Mark2);
getchar(); //读取回车
printf("修改成功!\n");
printf("请输入当前同学的英语成绩:");
scanf_s("%lf", &stu[index].Mark3);
getchar(); //读取回车
printf("修改成功!\n");
printf("已修改完毕,请继续您的操作...");
break;
case 2:printf("已自动返回主菜单\n"); break;
default:printf("异常自动返回主菜单\n"); break;
}
}
}
void Help() //帮助用户操作文档
{
int i,j=1;
char n[50];
printf("\n");
printf("\t\t\t\t\t\t欢迎来到帮助文档\n");
printf("\n");
printf("\t");
for (i = 0; i < 11; i++)
printf("\t*");
printf("\n");
printf("\t\t\t\t\t hello! 这是一个简单的小程序\n");
printf("\n");
printf("\t\t\t\t\t 作者:初 邮箱:3207950853@qq.com\n");
printf("\n");
printf("\t\t\t\t 没有什么花里胡哨的小东西,好了让我们试试命令吧!\n");
printf("\n");
printf("\t\t\t\t 快使用C -help打开帮助文档吧!exit 返回主菜单哦!\n");
for(i=0;i<1;i++)
printf("\n");
printf("\t");
for (i = 0; i < 11; i++)
printf("\t*");
for (i = 0; i < 16; i++)
printf("\n");
printf("请输入:");
gets_s(n);
getchar();
if (strcmp(n, "C -help") == 0)
{
printf("您已打开帮助文档\n");
printf("查看程序说明:C -Description\n");
printf("查看该程序版本号:C -Version\n");
printf("全局调试: C -Debug\n");
printf("退出帮助文档: C -Exit\n");
printf("查看作者一起交流学习:C -GO\n");
printf("\n");
printf("请输入:");
while (j)
{
gets_s(n);
getchar();
if (strcmp(n, "C -Description") == 0)
{
printf("帮助说明如下\n");
printf("每次输入输出时有可能需要两次Enter\n");
printf("我也不想这样,因为很麻烦但是为了,后期的数据不错乱,我只能做到这样\n");
printf("不好意思O(∩_∩)O\n");
printf("假如您有什么提议,或者该程序有什么BUG都可以联系作者!\n");
printf("作者信息都在 C -GO这个程序下哦!\n");
printf("请输入:");
}
else if (strcmp(n, "C -Version")==0)
{
printf("当前版本:C语言版学生管理系统1.0\n");
printf("请输入:");
}
else if (strcmp(n, "C -Debug")==0)
{
printf("作者还没开发这个功能哦!\n");
printf("请输入:");
}
else if (strcmp(n, "C -Exit")==0)
{
printf("已回到主菜单,请继续您的操作!\n");
j = 0;
printf("请输入:");
}
else if (strcmp(n, "C -GO") == 0)
{
printf("作者名:初\tQQ:3207950853\n");
printf("学习交流群:710023821\n");
printf("欢迎大家一起进群交流学习哦!\n");
printf("让我们一起为自己的青春奋斗吧!\n");
printf("请输入:");
}
else
{
printf("改命令无法找到!\n请输入:");
}
}
}
else if (strcmp(n, "exit") == 0)
{
printf("已手动返回主菜单,请继续您的选择:\n");
}
else
{
printf("未找到该命令,已自动返回主菜单,请继续您的选择:\n");
}
}
作者:初
QQ:3207950853
QQ邮箱:3207950853@qq.com
来源:https://www.cnblogs.com/yjhjys/p/12322137.html