怎么用C语言作学生成绩管理系统
发布网友
发布时间:2022-05-01 06:03
我来回答
共3个回答
热心网友
时间:2022-06-25 08:19
可以实现定义输入N个人M门科目的成绩输入,有查找、排序功能
#include <stdio.h>
#include <string.h>
#define NUM 100
struct student
{
int number; //学号
char name[12]; //姓名
int score[20]; //成绩
int total; //总分
double average; //平均分
};
struct student stu[NUM];
int c=0; //c是结构体数组的下标 在此为全局变量
int d=0; //d是结构体数组的下标 在此为全局变量
void menu(); //定义menu菜单
void input(); //插入数据函数
void sort(); //排序
void find(); //查找(按学号或姓名查找
void error(); //错误提示
void print(); //输出具体信息
void main()
{
menu();
}
void menu()//主菜单
{
int select; //选择(1--5间)
system("cls");
printf(" ☆ ★*☆ ★*☆ ★*☆★*☆ ★*☆★ \n");
printf(" ★*☆★ ◢█◣ ★*☆★*☆ \n");
printf(" ★*☆★*★ ◢███◣ ★*☆★*★☆ \n");
printf(" ★*☆ ★*☆ ★ .█████.★*☆ ★*☆ ★ \n");
printf(" ★*☆ ★*☆*★★.█田█田█.★*☆ ★*☆ ★★ \n");
printf(" ★*☆ ★*☆*★★.█田█田█.★*☆ ★*☆ ★★ \n");
printf(" ★*☆ ★*☆*★★.█田█田█.★*☆ ★*☆ ★★ \n");
printf(" ★*☆ ★*☆*★★.█田█田█.★*☆ ★*☆ ★★ \n");
printf(" ★*☆ ★*☆*★★.█田█田█.★*☆ ★*☆ ★★ \n");
printf(" ★*☆ ★*☆*★★.█田█田█.★*☆ ★*☆*★★ \n");
printf(" ★*☆ ★*☆*★★.█田█田█.★*☆ ★*☆ ★★ \n");
printf(" ★*☆ ★*☆*★★.█████.★*☆ ★*☆*★★ \n");
printf(" ★*☆ ★*☆*★★.█████.★*☆ ★*☆ ★★ \n");
printf(" ~~~~~*^_^* ◢██□██◣.*^_^* ~~~~~ \n\n");
printf(" 学生成绩管理系统\n");
printf(" ***************\n");
printf(" * *\n");
printf(" *[1]输入数据 *\n");
printf(" *[2]查找数据 *\n");
printf(" *[3]打印输出 *\n");
printf(" *[4]数据排序 *\n");
printf(" *[5]退出 *\n");
printf(" * *\n");
printf(" ***************\n");
printf("请输入你的选项(1--5):");
scanf("%d",&select);//输入要选择的项目
switch(select) //判断选择
{
case 1:input();break;
case 2:find();break;
case 3:print();break;
case 4:sort();break;
case 5:exit(0);break;
default:error();break;
}
}
void input() //输入入数据
{
int m,n,i;//m,n,i,j为循环变量
printf("请输入要统计的人数 M= ");
scanf("%d",&c);
printf("请输入要统计的科目数量N= ");
scanf("%d",&d);
printf("\n");
for(m=0;m<c;m++)
{
printf("请输入第%d个学生的学号 \t\t",m+1);
scanf("%d",&stu[m].number);
for (i=0;i<m;i++)
{
if (stu[m].number==stu[i].number)
{
printf("输入的学号重复请重新输入 \t\t");
scanf("%d",&stu[m].number);
}
}
printf("请输入第%d个学生的姓名 \t\t",m+1);
scanf("%s",&stu[m].name);
for (n=0;n<d;n++)
{
printf("请输入第个%d学生的第%d门科目的成绩\t",m+1,n+1);
scanf("%d",&stu[m].score[n]);
stu[m].total+=stu[m].score[n];
}
printf("总分:%d\t",stu[m].total);
stu[m].average=stu[m].total/(d+0.0);
printf("平均分%4.2f\n",stu[m].average);
}
printf("\n按回车键返回主菜单……\n");
getchar();
getchar();
menu();
}
void sort()//排序
{
int i,j;
printf("正在排序中.......\n");
for(i=0;i<c;i++)
{
for(j=i+1;j<=c;j++)
{
if(stu[i].total<stu[j].total)
{
stu[100]=stu[i];
stu[i]=stu[j];
stu[j]=stu[100];
}
}
}
printf("已排好序,请按回车键返回主菜单……\n");
getchar();
getchar();
menu();
}
void find() //查找
{
int stuNO; //学号
char name[12]; //姓名
int flag; //选择标志
int i,j; //循环变量
system("cls"); //清屏
printf("按学号查找[1]:\n");
printf("按姓名查找[2]:\n");
printf("请选择:");
scanf("%d",&flag);
if(flag==1)
{
printf("请输入你要查找的学号:");
scanf("%d",&stuNO);
for(i=0;i<c;i++)
{
if(stu[i].number==stuNO)
{
printf("\n==**==**==** %s的成绩 **==**==**==**==**\n",stu[i].name);
printf("学号:%d\t \n",stu[i].number);
for (j=0;j<d;j++)
{
printf("成绩%d:%d\n",j+1,stu[i].score[j]);
}
printf("总分:%d\t平均分:%4.2f\n",stu[i].total,stu[i].average);
}
}
}
else if(flag==2)
{
printf("请输入你要查找的姓名:");
scanf("%s",name);
for(i=0;i<c;i++)
{
if(strcmp(stu[i].name,name)==0)
{
printf("\n==**==**==** %s的成绩 **==**==**==**==**\n",stu[i].name);
printf("学号:%d\t ",stu[i].number);
for (j=0;j<d;j++)
{
printf("成绩%d:%d\n",j+1,stu[i].score[j]);
}
printf("总分:%d\t平均分:%4.2f\n",stu[i].total,stu[i].average);
}
}
}
else
{
printf("选择的范围(1或2),请重新输入……");
find();
}
printf("\n按回车键返回主菜单……\n");
getchar();
getchar();
menu();
}
void error()
{
system("cls"); //清屏
printf("输入有误,选择的范围是1--7:\n");
printf("\n按回车键继续……\n");
getchar();
getchar();
system("cls"); //清屏
menu();
}
void print() //打印学生成绩信息
{
int i,j;
printf("学号\t姓名\t");
for(j=0;j<d;j++)
{
printf("成绩%d\t",j+1);
}
printf(" 总分\t平均分");
printf("\n");
for(i=0;i<c;i++)
{
printf("%d\t%s\t",stu[i].number,stu[i].name);
for(j=0;j<d;j++)
{
printf("%d\t ",stu[i].score[j]);
}
printf(" %d\t%4.2f\n",stu[i].total,stu[i].average);
}
getchar();
getchar();
menu();
}
热心网友
时间:2022-06-25 08:20
这个这个……
问万燕去吧。
热心网友
时间:2022-06-25 08:20
课程设计吗?哎 没人愿意写的 楼上说的对 有偿可能会有人愿意写 最好还是自己写