学生信息管理系统,有5个功能,大致框架:用switch语句写出功能的选择,每个功能写出一个函数。代码在这,如有需要自行查看
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define M 20
#define G 20
#define F 20
struct stu
{
int number;
char name[M];
char sex[F];
int age;
float math;
float Chinese;
float English;
float total_score;
}student[G];
//函数的声明
void menu();
void input_message();
void delete_message();
void search_message();
void modify_message();
void show_message();
int sum = 0; //表示录入信息的人数
int main()
{
while (1)
{
system("cls");
menu();
char ch = _getch();
{
switch (ch)
{
case '1':
input_message();
break;
case '2':
delete_message();
break;
case '3':
modify_message();
break;
case '4':
search_message();
break;
case '5':
show_message();
break;
case '0':
return 0;
break;
default:
printf("请在0—5中选择\n");
break;
}
}
system("pause");
}
return 0;
}
void menu()
{
printf("***********************欢迎使用学生管理系统(当前共有%d名学生)***********************\n", sum);
printf("* *\n");
printf("* ----------------------------------- *\n");
printf("* | | *\n");
printf("* | | *\n");
printf("* | | *\n");
printf("* | | *\n");
printf("* ----------------------------------- *\n");
printf("* *\n");
printf("* 1.添加学生信息 *\n");
printf("* 2.删除学生信息(根据学号) *\n");
printf("* 3.修改学生信息(根据学号) *\n");
printf("* 4.查询学生信息 *\n");
printf("* 5.显示所有学生信息以及统计信息 *\n");
printf("* 0.退出软件 *\n");
printf("* *\n");
printf("************************************************************************************\n");
}
void input_message()
{
int i;
int n;
i = sum; // 结束循环后,能够再次进入
while (i < sum + 1)
{
n = 1;
while (n)
{
n = 0;
printf("输入学号:");
scanf_s("%d", &student[i].number);
printf("输入姓名:");
scanf_s("%s", student[i].name, M);
printf("输入性别:");
scanf_s("%s", &student[i].sex, F);
printf("输入年龄:");
scanf_s("%d", &student[i].age);
printf("数学成绩:");
scanf_s("%f", &student[i].math);
printf("语文成绩:");
scanf_s("%f", &student[i].Chinese);
printf("英语成绩:");
scanf_s("%f", &student[i].English);
for (int j = 0; j < i; j++)
{
if (student[i].number == student[j].number) //判断是否重复
{
printf("错误:该学生信息已存在,无需重复添加!");
return; //退出函数
n = 1;
break;
}
}
}
if (n == 0)
{
printf("提示:添加成功\n");
i++;
}
}
++sum;
}
void delete_message()
{
int i = 0;
int arr1;
printf("输入学号:");
scanf_s("%d", &arr1);
for (i = 0; i < sum; i++)
{
if (student[i].number == arr1)
{
if (i == sum - 1) //判断是不是数组最后一个元素
{
printf("提示:删除成功,");
sum--;
return;
}
else
{
for (int j = i; j < sum - 1; j++)
{
student[j] = student[j + 1]; // 赋值删除
}
printf("提示:删除成功,");
sum--;
return; // 退出函数
}
}
}
printf("错误:该学生信息不存在,删除失败!");
}
void modify_message()
{
int ID;
printf("输入学号:");
scanf_s("%d", &ID);
for (int i = 0; i < sum; ++i)
{
if (ID == student[i].number)
{
printf("输入姓名:");
scanf_s("%s", student[i].name, M);
printf("输入性别:");
scanf_s("%s", &student[i].sex, F);
printf("输入年龄:");
scanf_s("%d", &student[i].age);
printf("数学成绩:");
scanf_s("%f", &student[i].math);
printf("语文成绩:");
scanf_s("%f", &student[i].Chinese);
printf("英语成绩:");
scanf_s("%f", &student[i].English);
printf("提示:修改成功。");
system("pause");
}
else if (i + 1 == sum)
{
printf("错误:该学生信息不存在,修改失败!");
}
}
}
void search_message()
{
system("cls");
printf("************查询学生成绩(当前共有%d名学生)************************\n", sum);
printf("* *\n");
printf("* 1.根据学号查询 *\n");
printf("* 2.根据姓名查询 *\n");
printf("* 3.根据数学成绩查询 *\n");
printf("* 4.根据语文成绩查询 *\n");
printf("* 5.根据英语成绩查询 *\n");
printf("* 6.根据总成绩查询 *\n");
printf("* 0.返回主菜单 *\n");
printf("* *\n");
printf("*******************************************************************\n");
char p = _getch();
switch (p)
{
case '1':
{
printf("输入学号:");
int arr2;
scanf_s("%d", &arr2);
int count = 0;
for (int i = 0; i < sum; i++)
{
if (student[i].number == arr2)
{
student[i].total_score = (student[i].math + student[i].English + student[i].Chinese);
printf("----------------------------------------------------------------------\n");
printf(" 学号\t|姓名\t|性别\t|年龄\t|数学\t|语文\t|英语\t|总成绩\t\n");
printf("----------------------------------------------------------------------\n");
printf(" %d\t|%s\t|%s\t|%d\t|%.2f\t|%.2f\t|%.2f\t|%.2f\t\n",
student[i].number, student[i].name, student[i].sex, student[i].age, student[i].math,
student[i].Chinese, student[i].English, student[i].total_score);
printf("----------------------------------------------------------------------\n");
++count;
system("pause");
system("cls");
return search_message();
}
else if (i + 1 == sum)
{
printf("查无此人");
system("pause");
system("cls");
return search_message();
}
}
printf("共查询%d条记录\n", count);
break;
}
case '2':
{
printf("输入姓名:");
char arr3[20];
scanf_s("%s", arr3, 20);
int count = 0;
for (int i = 0; i < sum; i++)
{
if (strcmp(student[i].name, arr3) == 0)
{
student[i].total_score = (student[i].math + student[i].English + student[i].Chinese);
printf("----------------------------------------------------------------------\n");
printf(" 学号\t|姓名\t|性别\t|年龄\t|数学\t|语文\t|英语\t|总成绩\t\n");
printf("----------------------------------------------------------------------\n");
printf(" %d\t|%s\t|%s\t|%d\t|%.2f\t|%.2f\t|%.2f\t|%.2f\t\n",
student[i].number, student[i].name, student[i].sex, student[i].age, student[i].math,
student[i].Chinese, student[i].English, student[i].total_score);
printf("----------------------------------------------------------------------\n");
++count;
system("pause");
system("cls");
return search_message();
}
else if (i + 1 == sum)
{
printf("查无此人");
system("pause");
system("cls");
return search_message();
}
}
printf("共查询%d条记录\n", count);
break;
}
case '3':
{
int count = 0; //查询的条数
float a, b;
printf("要查询的数学成绩的范围:");
scanf_s("%f%f", &a, &b);
for (int i = 0; i < sum; i++)
{
if (student[i].math >= a && student[i].math <= b)
{
printf("----------------------------------------------------------------------\n");
printf(" 学号\t|姓名\t|性别\t|年龄\t|数学\t|语文\t|英语\t|总成绩\t\n");
printf("----------------------------------------------------------------------\n");
break;
}
else if (i + 1 == sum)
{
printf("查无此人");
system("pause");
system("cls");
return search_message();
}
}
for (int i = 0; i < sum; i++)
{
if (student[i].math >= a && student[i].math <= b)
{
student[i].total_score = (student[i].math + student[i].English + student[i].Chinese);
printf(" %d\t|%s\t|%s\t|%d\t|%.2f\t|%.2f\t|%.2f\t|%.2f\t\n",
student[i].number, student[i].name, student[i].sex, student[i].age, student[i].math,
student[i].Chinese, student[i].English, student[i].total_score);
++count;
}
}
printf("----------------------------------------------------------------------\n");
printf("共查询%d条记录\n", count);
system("pause");
system("cls");
return search_message();
break;
}
case '4':
{
int count = 0;
float c, d;
printf("要查询的语文成绩的范围:");
scanf_s("%f%f", &c, &d);
for (int i = 0; i < sum; i++)
{
if (student[i].Chinese >= c && student[i].Chinese <= d)
{
printf("----------------------------------------------------------------------\n");
printf(" 学号\t|姓名\t|性别\t|年龄\t|数学\t|语文\t|英语\t|总成绩\t\n");
printf("----------------------------------------------------------------------\n");
break;
}
else if (i + 1 == sum)
{
printf("查无此人");
system("pause");
system("cls");
return search_message();
}
}
for (int i = 0; i < sum; i++)
{
if (student[i].Chinese >= c && student[i].Chinese <= d)
{
student[i].total_score = (student[i].math + student[i].English + student[i].Chinese);
printf(" %d\t|%s\t|%s\t|%d\t|%.2f\t|%.2f\t|%.2f\t|%.2f\t\n",
student[i].number, student[i].name, student[i].sex, student[i].age, student[i].math,
student[i].Chinese, student[i].English, student[i].total_score);
++count;
}
}
printf("----------------------------------------------------------------------\n");
printf("共查询%d条记录\n", count);
system("pause");
system("cls");
return search_message();
break;
}
case '5':
{
int count = 0;
float e, f;
printf("要查询的英语成绩的范围:");
scanf_s("%f%f", &e, &f);
for (int i = 0; i < sum; i++)
{
if (student[i].English >= e && student[i].English <= f)
{
printf("----------------------------------------------------------------------\n");
printf(" 学号\t|姓名\t|性别\t|年龄\t|数学\t|语文\t|英语\t|总成绩\t\n");
printf("----------------------------------------------------------------------\n");
break;
}
else if (i + 1 == sum)
{
printf("查无此人");
system("pause");
system("cls");
return search_message();
}
}
for (int i = 0; i < sum; i++)
{
if (student[i].English >= e && student[i].English <= f)
{
student[i].total_score = (student[i].math + student[i].English + student[i].Chinese);
printf(" %d\t|%s\t|%s\t|%d\t|%.2f\t|%.2f\t|%.2f\t|%.2f\t\n",
student[i].number, student[i].name, student[i].sex, student[i].age, student[i].math,
student[i].Chinese, student[i].English, student[i].total_score);
++count;
}
}
printf("----------------------------------------------------------------------\n");
printf("共查询%d条记录\n", count);
system("pause");
system("cls");
return search_message();
break;
}
case '6':
{
float g, h;
int count = 0;
printf("要查询的总成绩的范围:");
scanf_s("%f%f", &g, &h);
for (int i = 0; i < sum; i++)
{
student[i].total_score = (student[i].math + student[i].English + student[i].Chinese);
if (student[i].total_score >= g && student[i].total_score <= h)
{
printf("----------------------------------------------------------------------\n");
printf(" 学号\t|姓名\t|性别\t|年龄\t|数学\t|语文\t|英语\t|总成绩\t\n");
printf("----------------------------------------------------------------------\n");
break;
}
else if (i + 1 == sum)
{
printf("查无此人");
system("pause");
system("cls");
return search_message();
}
}
for (int i = 0; i < sum; i++)
{
student[i].total_score = (student[i].math + student[i].English + student[i].Chinese);
if (student[i].total_score >= g && student[i].total_score <= h)
{
printf(" %d\t|%s\t|%s\t|%d\t|%.2f\t|%.2f\t|%.2f\t|%.2f\t\n",
student[i].number, student[i].name, student[i].sex, student[i].age, student[i].math,
student[i].Chinese, student[i].English, student[i].total_score);
++count;
}
}
printf("----------------------------------------------------------------------\n");
printf("共查询%d条记录\n", count);
system("pause");
system("cls");
return search_message();
break;
}
case '0':
system("cls");
return menu();
break;
default:
printf("请在0—6中选择\n");
system("pause");
system("cls");
return search_message();
break;
}
}
void show_message()
{
system("cls");
float m_score = 0, C_score = 0, E_score = 0; // 数学,语文,英语 各自的平均成绩
float t_score = 0; // 总成绩的平均成绩
float t_age = 0;
const char arr4[3] = "男";
int boy = 0; //统计男生总人数
int girl = 0; //统计女生总人数
int count = 0;// 统计信息条数
for (int i = 0; i < sum; i++)
{
if (strcmp(arr4, student[i].sex) == 0)
{
++boy;
}
else
{
++girl;
}
m_score += student[i].math; //数学总成绩
C_score += student[i].Chinese; // 语文总成绩
E_score += student[i].English; // 英语总成绩
t_age += student[i].age; // 总年龄
student[i].total_score = (student[i].math + student[i].English + student[i].Chinese);
t_score += student[i].total_score; // 总成绩之和
}
m_score = m_score / sum;
C_score = C_score / sum;
E_score = E_score / sum;
t_age = t_age / sum;
t_score = t_score / sum;
if (sum == 0)
{
printf("----------------------------------------------------------------------\n");
printf(" 学号\t|姓名\t|性别\t|年龄\t|数学\t|语文\t|英语\t|总成绩\t\n");
printf("----------------------------------------------------------------------\n");
printf(" --\t|--\t|0/0\t|无\t|无\t|无\t|无\t|无\t\n");
printf("----------------------------------------------------------------------\n");
printf("共查询0条记录\n");
printf("请输入学生信息\n");
}
if (sum != 0)
{
printf("----------------------------------------------------------------------\n");
printf(" 学号\t|姓名\t|性别\t|年龄\t|数学\t|语文\t|英语\t|总成绩\t\n");
printf("----------------------------------------------------------------------\n");
for (int i = 0; i < sum; i++)
{
printf(" %d\t|%s\t|%s\t|%d\t|%.2f\t|%.2f\t|%.2f\t|%.2f\t\n",
student[i].number, student[i].name, student[i].sex, student[i].age, student[i].math,
student[i].Chinese, student[i].English, student[i].total_score);
++count;
}
printf("----------------------------------------------------------------------\n");
printf(" --\t|--\t|%d/%d\t|%.2f\t|%.2f\t|%.2f\t|%.2f\t|%.2f\t\n",
boy, girl, t_age, m_score, C_score, E_score, t_score);
printf("----------------------------------------------------------------------\n");
printf("共查询%d条记录\n", count);
}
}