使用结构体完成学生(学号、姓名、性别、成绩)管理系统
1> 使用菜单实现
2> 功能1:完成对学生信息的录入,确定人数,完成输入
2> 功能2:完成对学生信息的输出
3> 功能3:输出成绩最高和最低学生的信息
4> 功能4:输出学生的总成绩和平均成绩
5> 功能5:对学生信息按成绩进行排序,根据传入的升降序,确定排序功能、
6> 功能6:提示并输入要查找的学生名字,查找该名字是否存在于该班级
7> 功能0:退出
#include<stdio.h>
#include<string.h>
#define MAX 30
struct Stu
{
int StuNum;
char Name[20];
char Gender[20];
double score;
};
void caidan() {
printf("\t\t\t\t*******************学生管理系统*************************\t\t\t\n");
printf("\t\t\t\t***功能1:输入学生信息***********功能2:输出学生信息******\t\t\t\n");
printf("\t\t\t\t***功能3:最优和最差学生信息**** 功能4:学生成绩总和和平均成绩\t\n");
printf("\t\t\t\t***功能5:学生信息排序***********功能6:查找学生信息******\t\t\t\n");
printf("\t\t\t\t*******************功能0:退出*************************\t\t\t\n");
}
void fun1(struct Stu *arr, int *n) {
printf("请输入录入学生人数:");
scanf("%d", n);
for (int i=0;i<*n;i++)
{
printf("请输入第%d名学生学号",i+1);
scanf("%d", &arr[i].StuNum);
printf("请输入第%d名学生姓名", i + 1);
scanf("%s", arr[i].Name);
printf("请输入第%d名学生性别", i + 1);
scanf("%s", arr[i].Gender);
printf("请输入第%d名学生成绩", i + 1);
scanf("%lf", &arr[i].score);
}
printf("学生信息录入成功!");
printf("\n");
}
void fun2(struct Stu* arr, int n) {
printf("学号\t姓名\t性别\t成绩\t\n");
for (int j = 0; j < n; j++) {
printf("%d\t%s\t%s\t%.1lf\t\n", arr[j].StuNum, arr[j].Name, arr[j].Gender, arr[j].score);
}
}
void fun3(struct Stu* arr, int n) {
int a,b;
for (int i = 0; i < n; i++) {
if (arr[i].score < arr[i+1].score) {
a = i + 1;
}
}
for (int i = 0; i < n; i++) {
if (arr[i].score >arr[i + 1].score) {
b = i + 1;
}
}
printf("班上最牛逼的学生信息:");
printf("%d\t%s\t%s\t%.1lf\t\n", arr[a].StuNum, arr[a].Name, arr[a].Gender, arr[a].score);
//printf("傻子学生信息:");
//printf("%d\t%s\t%s\t%.1lf\t\n", arr[b].StuNum, arr[b].Name, arr[b].Gender, arr[b].score);
}
void fun4(struct Stu* arr, int n) {
double sum=0;
for (int i = 0; i < n; i++) {
sum =sum+arr[i].score;
}
double avg = sum / n;
printf("sum=%.1lf and avg=%.1lf\n", sum, avg);
}
void fun5(struct Stu* arr, int n,int k) {
for (int i = 1; i < n; i++)
{
for (int j = 0; j < n - i; j++)
{
if (k == 1) {
if (arr[j].score > arr[j + 1].score)
{
int temp = arr[j].score;
arr[j].score = arr[j + 1].score;
arr[j + 1].score = temp;
}
}
else if (k == 0) {
if (arr[j].score < arr[j + 1].score)
{
int temp = arr[j].score;
arr[j].score = arr[j + 1].score;
arr[j + 1].score = temp;
}
}
}
}
printf("学号\t姓名\t性别\t成绩\t\n");
for (int j = 0; j < n; j++) {
printf("%d\t%s\t%s\t%.1lf\t\n", arr[j].StuNum, arr[j].Name, arr[j].Gender, arr[j].score);
}
}
void fun6(struct Stu* arr, int n, char name[]) {
int k = 0;
for (int j = 0; j < n; j++) {
int b = strcmp(arr[j].Name, name);
switch (b) {
case 0: {
printf("在");
}goto END;
}
}
printf("不在");
END:
printf("\n");
}
int main() {
int number = 0;
int a = 0;
struct Stu arr[MAX];
while (1) {
caidan();
printf("请输入您的选项:");
scanf("%d", &a);
switch (a)
{
case 1: {
fun1(arr, &number);
}break;
case 2: {
fun2(arr, number);
}break;
case 3: {
fun3(arr, number);
}break;
case 4: {
fun4(arr, number);
}break;
case 5: {
int i;
printf("请输入0(降序)或1(升序):");
scanf("%d", &i);
fun5(arr, number,i);
}break;
case 6: {
char name[20] = "";
printf("请输入要查询的学生姓名:");
scanf("%s", name);
fun6(arr, number,name);
}break;
case 0: goto END;
default:
printf("您输入有误");
}
}
END:
printf("\n");
}