定义一个学生结构和结构数组,scanf或者从文件读入学生信息
增删改学生成绩,遍历学生数组统计成绩数据
#include "stdio.h"
#define N 2
struct student{
int id;
char name[20];
int kaoqun;
int biaoxian;
int zuoye;
int biji;
int sum;
}stud[N],t;
int main()
{
int i,j;
for(i=0;i<N;i++){
printf("请输入第%d个学生信息\n",i+1);
scanf("%d %s",&stud[i].id,&stud[i].name);
fflush(stdin);
scanf("%d %d %d %d",&stud[i].kaoqun,&stud[i].biaoxian,&stud[i].zuoye,&stud[i].biji);
stud[i].sum = stud[i].kaoqun*0.3+stud[i].biaoxian*0.3+stud[i].zuoye*0.3+stud[i].biji*0.1;
}
//排序
for (i = 0; i < N - 1; i++){
for (j = 0; j < N - 1 - i; j++){ //按成绩对学生信息进行排序
if (stud[j].sum > stud[j + 1].sum){ //整型数字的比较
t = stud[j];
stud[j] = stud[j + 1];
stud[j + 1] = t;
}
}
}
//打印
printf("学号\t姓名\t考勤\t表现\t作业\t笔记\t总分\t\n");
for (i = 0; i < N; i++){
printf("%d\t", stud[i].id);
printf("%s\t", stud[i].name);
printf("%d\t", stud[i].kaoqun);
printf("%d\t", stud[i].biaoxian);
printf("%d\t", stud[i].zuoye);
printf("%d\t", stud[i].biji);
printf("%d \n", stud[i].sum);
}
return 1;
}
附上源码:https://blog.csdn.net/weixin_45254641/article/details/103501413
如有帮助,望采纳。
#include"student.h"
#define _CRT_SECURE_NO_WARNINGS
int main()
{
char answer;
int choice;
struct student *head ;
head = create();
sort(head);
printf("\t\t\t学生成绩管理系统\n");
printf("\n\t************STUDENT-SCORE-SYSTEM 5.0***************\n");
printf("\n\t************powered by 信卓11801聂健***************\n");
printf("\n\t\t\t按任意键登录系统\n");
getchar();
system("cls");
do
{
printf("欢迎你,管理员!\n");
printf("|---------------------------------------|\n");
printf("|\t请输入选项编号(0-6):\t\t|");
printf("\n|---------------------------------------|\n");
printf("|\t1--浏览学生信息:\t\t|\n");
printf("|\t2--查询学生信息:\t\t|\n");
printf("|\t3--修改学生信息:\t\t|\n");
printf("|\t4--删除学生信息:\t\t|\n");
printf("|\t5--各科成绩:\t\t\t|\n");
printf("|\t6--最高分:\t\t\t|\n");
printf("|\t0--退出系统:\t\t\t|\n");
printf("|---------------------------------------|\n");
printf("请输入选项");
scanf("%d",&choice);
fflush(stdin);
switch(choice)
{
case 0:
{
printf("********退出系统*********\n");
filein(head);//将修改后的成绩保存在data11.txt中
printf("修改的数据已经保存在data11.txt中\n");
printf("欢迎下次使用\n");
exit(0);
break;
}
case 1:
{
system("cls");
printf("*************学生成绩一览表********************\n");
printf("学号\t姓名\t课程1\t课程2\t课程3\t总分\t排名\n");
print(head); //打印所有人的信息
printf("\n按任意键继续回到菜单\n");
getch();
system("cls");
break;
}
case 2:
{
while(1)
{
printf("请选择查询方式\n");
printf("1.姓名\n2.学号\n");
scanf("%s",&answer);
if( answer == '1' )
{
locatename(head);//查询信息
}
if(answer == '2' )
{
locatenum(head);
}
if(answer != '1' && answer!= '2')
{
printf("输入错误\n");
}
printf("1.按任意键回车后继续查询\n0.退出\n");
scanf("%s",&answer);
fflush(stdin);
if(answer == '0' )
{
break;
}
}
printf("\n按任意键回到菜单");
getch();
system("cls");
break;
}
case 3:
{
while(1)
{
printf("请选择修改成绩的方式\n");
printf("1.姓名\n2.学号\n");
scanf("%s",&answer);
if(answer == '1')
{
changename(head);
sort(head); //修改成绩后重新排序
}
if(answer == '2')
{
changenum(head);
sort(head); //修改成绩后重新排序
}
if(answer != '1' && answer!= '2')
{
printf("输入错误\n");
}
printf("是否继续\n");
printf("1.按任意键回车后继续修改\n0.退出\n");
scanf("%s",&answer);
if(answer=='0')
{
break;
}
}
printf("\n按任意键回到菜单\n");
getch();
system("cls");
break;
}
case 4:
{
while(1)
{
printf("请选择删除学生的方式\n");
printf("1.姓名\n2.学号\n");
scanf("%s",&answer);
if(answer=='1')
{
head= delname(head); //删除头时头要换
sort(head); //删除学生后重新排序
}
if(answer=='2')
{
head= delnum(head); //删除头时头要换
sort(head); //删除学生后重新排序
}
if(answer != '1' && answer!= '2')
{
printf("输入错误\n");
}
printf("是否继续\n");
printf("1.继续删除\n0.退出\n");
scanf("%s",&answer);
if(answer=='0')
{
break;
}
}
printf("\n按任意键继续执行你想要的操作");
getch();
system("cls");
break;
}
case 5:
{
ABCD(head);//计算人数
printf("\n按任意键继续执行你想要的操作");
getch();
system("cls");
break;
}
case 6:
{
max(head);
printf("\n按任意键继续执行你想要的操作");
getch();
system("cls");
break;
}
default:
{
printf("********没有这个选项*********\n按任意键重新输入\n");
getch();
break;
}
}
}while(1);
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632