下文仅代表个人对c语言的见解。
一、本程序的功能要求
1.录入学生信息和成绩
2.查找学生信息和
3.增加学生信息
4.修改学生信息
5.删除学生信息
6.打印学生成绩排名
7.打印出优秀和不及格学生
8.退出程序
二、程序设计的思想
我们的思路要对它有一个大概的轮廓,轮廓有了,我们再一步一步来实现它,首先需要定义一个学生结构体类型,里面包含着我们所需的各种学生信息和各科成绩。
主函数里定义结构体数组,管理好多个学生信息,也可以把他定义为全局变量。定义一个总人数的全局变量在最上方,int count=0;
然后再定义自定义函数来实现各个功能模块,再定义一个主菜单函数实现登录界面和作为实现其他功能的纽带,主函数采用do-while和switch结构。
三、函数功能介绍
以下主要介绍了重要的函数功能,部分函数省略:
void BubbleSort(stu *s) 冒泡排序,对学生平均分进行排序,并确定个人的排名
void Input(stu *s) 实现输入学生的信息和成绩
void Search(stu *s) 实现查找学生信息
void Alter(stu *s) 实现修改学生信息
void Delete(stu *s) 实现删除学生信息
void Add(stu *s) 实现增加学生信息
int Menu() 实现登录主菜单界面
void Rank(stu *s) 实现按名次从高到低输出学生成绩排名
void Statistics(stu *s) 实现输出优秀和不及格的学生信息
学生结构体
typedef struct student
{
int num;
char name[10];
int pol;
int Eng;
int Math;
int aver;
int ran;
}stu;
四、完整源代码
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#define MAX 100
int count = 0;
typedef struct student
{
int num;
char name[10];
int pol;
int Eng;
int Math;
int aver;
int ran;
}stu;
void BubbleSort(stu *s)
{
int i, j, a;
stu t;
for (i = 1; i<count; i++)
{
a = 0;
for (j = count; j>i; j--)
{
if (s[j].aver>s[j-1].aver)
{
t=s[j];
s[j]=s[j-1];
s[j-1]=t;
a=1;
}
}
if (a==0)
break;
}
s[1].ran=1;
for(i=2;i<=count;i++)
{
if(s[i].aver<s[i-1].aver)
s[i].ran=i;
else if(s[i].aver==s[i-1].aver)
s[i].ran=s[i-1].ran;
else
printf("\nerror!\n");
}
}
void Input(stu *s)
{
int i;
printf("请输入要录入学生信息的人数:");
scanf("%d", &count);
for (i = 1; i <= count; i++)
{
printf("请输入第%d个学生信息!\n", i);
printf("学号:");
scanf("%d", &s[i].num);
printf("姓名:");
scanf("%s", s[i].name);
printf("政治:");
scanf("%d", &s[i].pol);
printf