大家好,又见面了,我是你们的朋友全栈君。
大一上c语言学生管理系统(上)
你好!如果这是你第一次使用 c语言做完整的一个简单小程序,以下内容包括每个功能函数。如果你想学习c语言不那么枯燥, 可以仔细阅读这篇文章,了解一下c语言的基本语法知识。
**
ps:个人主页有完整版代码
**
主要函数功能
1.打印功能菜单。
2. 录入学生信息。
3. 计算所以学生总分和平均分。
4. 根据学生分数由高到低输出学生信息。
5. 根据学生学号由小到大输出学生信息。
6. 输入学生学号查找该学生对应的信息。
7. 优秀、合格,不合格等所占百分比及人数。
8. 输出所有学生信息。
学生信息结构体
学生信息 | 数据类型 |
---|---|
姓名 | 字符串数组 |
学号 | long |
分数 | int |
##这是我们的主函数##
注:主函数的n是学生总人数,是随着录入学生信息函数的修改而变化的。
int main()
{
int n=0;
while(1)
{
void List(); //输出列表
void Input(STU stu[],int *n); //输入学生数据
void Sumandave(STU stu[],int n); //和与平均值
void Hightolow(STU stu[],int n); //分数由大到小
void Smalltolarge(STU stu[],int n); //学号由小到大
void Search(STU stu[],int n); //查找某个学生信息
void Percentage(STU stu[],int n); //所占人数和百分比
void Outputinformation(STU stu[],int n); //输出所以学生信息
system("cls"); //清屏
List(); //输出列表
char c=getch(); //头文件conio,按下某个字符时,函数自动读取,无需按回车.
switch(c)
{
case '1':
Input(&stu1,&n);
break;
case '2':
Sumandave(&stu1,n);
break;
case '3':
Hightolow(&stu1,n);
break;
case '4':
Smalltolarge(stu1,n);
break;
case '5':
Search(stu1,n);
break;
case '6':
Percentage(&stu1,n);
break;
case '7':
Outputinformation(&stu1,n);
break;
case '0':
exit(0);
break; //exit(0)退出程序
}
}
1、打印功能菜单函数
//输出列表
void List()
{
printf("*****************************************************************\t\t\t\n");
printf("*\t\t欢迎使用高校学生成绩管理系统ws版\t\t*\n");
printf("*\t\t\t 请选择功能\t\t\t\t*\n");
printf("*****************************************************************\t\t\t\n");
printf("*\t 1.Input record\t\t\t\t\t*\n");
printf("*\t 2.Caculate total and average socre of course\t\t*\n");
printf("*\t 3.Sort in descending older by score\t\t\t*\n");
printf("*\t 4.Sort in ascending older by number\t\t\t*\n");
printf("*\t 5.Search by number\t\t\t\t\t*\n");
printf("*\t 6.Statistic analysis\t\t\t\t\t*\n");
printf("*\t 7.List record\t\t\t\t\t\t*\n");
printf("*\t 0.Exit\t\t\t\t\t\t*\n");
printf("*****************************************************************\t\t\t\n");
}
2、录入学生信息函数
//输入n个学生信息
void Input(STU stu[],int *n) //取n地址,及时更新人数数量,以便更新数据
{
int m;
static int i=0;
printf("请输入要录入的学生人数:");
scanf("%d",&m);
for(; i<m+*n; i++)
{
printf("请输入学生姓名:");
scanf("%s",stu[i].name);
printf("请输入学生学号:");
scanf("%ld",&stu[i].id);
printf("请输入学生分数:");
scanf("%d",&stu[i].score);
printf("***********************\n");
}
*n+=m;
printf("学生信息录入成功!!!\n");
system("pause");
}
3、计算所以学生总分和平均分函数
//计算总分和平均分
void Sumandave(STU stu[],int n)
{
int i,sum=0;
float ave;
for(i=0; stu[i].score; i++)
{
sum+=stu[i].score;
}
ave=(float)sum/n;
printf("%d名同学的sum:%d\n",i,sum);
printf("%d名同学的ave:%.2f\n",i,ave);
system("pause");
}
4、 根据学生分数由高到低输出学生信息函数
//分数由高到低排序
void Hightolow(STU stu[],int n)
{
char x[100];
int i,j;
long int t;
for(i=0; i<n-1; i++)
{
for(j=i; j<n; j++)
{
if(stu[i].score<stu[j].score)
{
t=stu[i].score;
stu[i].score=stu[j].score;
stu[j].score=t;
t=stu[i].id;
stu[i].id=stu[j].id;
stu[j].id=t;
strcpy(x,stu[i].name);
strcpy(stu[i].name,stu[j].name);
strcpy(stu[j].name,x);
}
}
}
printf("%d名同学分数由高到低:\n",n);
printf("姓名:");
for(int p=0; p<n; p++)
{
printf("%10s",stu[p].name);
}
printf("\n");
printf("分数:");
for(int p=0; p<n; p++)
{
printf("%10d",stu[p].score);
}
printf("\n");
printf("学号:");
for(int p=0; p<n; p++)
{
printf("%10ld",stu[p].id);
}
printf("\n");
system("pause");
}
5、 根据学生学号由小到大输出学生信息函数
//学号由小到大排序
void Smalltolarge(STU stu[],int n)
{
char x[100];
int i,j;
long int t;
for(i=0; i<n-1; i++)
{
for(j=i; j<n; j++)
{
if(stu[i].id>stu[j].id)
{
t=stu[i].score;
stu[i].score=stu[j].score;
stu[j].score=t;
t=stu[i].id;
stu[i].id=stu[j].id;
stu[j].id=t;
strcpy(x,stu[i].name);
strcpy(stu[i].name,stu[j].name);
strcpy(stu[j].name,x);
}
}
}
printf("%d名同学学号由低到高:\n",n);
printf("姓名:");
for(int p=0; p<n; p++)
{
printf("%10s",stu[p].name);
}
printf("\n");
printf("分数:");
for(int p=0; p<n; p++)
{
printf("%10d",stu[p].score);
}
printf("\n");
printf("学号:");
for(int p=0; p<n; p++)
{
printf("%10ld",stu[p].id);
}
printf("\n");
system("pause");
}
6、 输入学生学号查找该学生对应的信息函数
//输入学号查找学生输出对应信息
void Search(STU stu[],int n)
{
int i;
long int p;
printf("请输入要查找的学生学号:");
scanf("%ld",&p);
for(i=0; i<n; i++)
{
if(p==stu[i].id)
{
printf("该学生姓名:%s\n",stu[i].name);
printf("该学生学号:%d\n",stu[i].id);
printf("该学生成绩:%d",stu[i].score);
break;
}
}
if(i==n)
printf("Not found!\n");
printf("\n");
system("\npause");
}
7、 优秀、合格,不合格等所占百分比及人数函数
//每级别人数所占百分比
void Percentage(STU stu[],int n)
{
int m;
static int a[5]= {
0},i=0;
float b[i];
for(; i<n; i++) //找各级别所占人数
{
m=stu[i].score;
m/=10;
switch(m) //计算各级别人数
{
case 10:
case 9:
a[4]++;
break;
case 8:
a[3]++;
break;
case 7:
a[2]++;
break;
case 6:
a[1]++;
break;
default:
a[0]++;
break;
}
}
printf("总人数为:%d人\n",n); //各级别人数百分比
printf("优秀人数为%d人。所占百分比为:%.2f%%\n",a[4],(float)100*a[4]/n);
printf("良好人数为%d人。所占百分比为:%.2f%%\n",a[3],(float)100*a[3]/n);
printf("中等人数为%d人。所占百分比为:%.2f%%\n",a[2],(float)100*a[2]/n);
printf("及格人数为%d人。所占百分比为:%.2f%%\n",a[1],(float)100*a[1]/n);
printf("不及格人数为%d人。所占百分比为:%.2f%%\n",a[0],(float)100*a[0]/n); //%%打出%
system("pause");
}
8、 输出所有学生信息函数
//输出每个学生学号和成绩
void Outputinformation(STU stu[],int n)
{
int i;
for(i=0; i<n; i++) //输出n个学号和分数
{
printf("\n学生姓名:%s\n学号:%ld\n分数:%d\n****************",stu[i].name,stu[i].id,stu[i].score);
}
printf("\n");
system("pause");
}
**********************************************************************
希望可以对您有所帮助!!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/127175.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...