永发信息网

求一个超简单的C语言编译的学生成绩管理程序

答案:1  悬赏:10  手机版
解决时间 2021-03-04 02:33
求一个超简单的C语言编译的学生成绩管理程序
最佳答案
#include"stdio.h"
#include "stdlib.h"
#include "string.h"

typedef struct
{
char num[15];
char name[8];
int score[4]; //数组成员0、1、2为三门成绩,3为平均成绩
}messege;

typedef struct
{
messege student[100];
int len;
}lis;
lis list;

void menu();
void input_mune(char num);
void input();
void sort_menu();
void sort(char order);

void browse();
void exchange(); //结构体message成员变量互换函数
void del_menu();
void del();

main()
{
list.len=0;
menu();
}

void menu()
{
char num='6';
while (num!='0')
{
system("cls"); //清屏
printf("\n\n");
printf(" 学生成绩管理 \n");
printf("\n\n");
printf(" **************************************************** \n");
printf("\n");
printf(" 1.添加记录 \n"); //添加记录不排序
printf("\n");
printf(" 2.排序记录 \n");
printf("\n");
printf(" 3.浏览记录 \n");
printf("\n");
printf(" 4.插入记录 \n");
printf("\n");
printf(" 5.删除指定记录 \n");
printf("\n");
printf(" 0.退出 \n");
printf("\n");
printf(" **************************************************** \n");
printf("\n\n");
printf(" 请输入操作序号: ");
scanf("%s",&num);

if((num=='1')||(num=='4'))
input_mune(num);
else
if(num=='2')
sort_menu();
else
if(num=='3')
browse();
else
if(num=='5')
del_menu();
}
}

void input_mune(char num)
{
char n='2';
while (n!='0')
{
system("cls");
printf("\n\n");
printf(" 添加记录 \n");
printf("\n\n");
printf(" **************************************************** \n");
printf("\n");
printf(" 1.添加记录 \n");
printf("\n");
printf(" 0.返回主界面 \n");
printf("\n");
printf(" **************************************************** \n");
printf("\n\n");
printf(" 请输入操作序号: ");
scanf("%s",&n);
if(n=='1')
{
if(list.len>=100)
printf(" 学生信息表已满,无法添加\n");
else
{
input();
if(num=='4')
sort('1');
}
printf(" 输入任意键回车添加信息,返回主界面请输入0: ");
scanf("%s",&n);
}
}
}

void input()
{
int i;
printf(" 输入学生学号: ");
scanf("%s",&list.student[list.len].num);
printf("\n");
printf(" 输入学生姓名: ");
scanf("%s",&list.student[list.len].name);
printf("\n");
for(i=0;i<3;i++)
{
printf(" 输入成绩%d: ",i+1);
scanf("%d",&list.student[list.len].score[i]);
}
list.student[list.len].score[3]=(list.student[list.len].score[0]+list.student[list.len].score[1]+list.student[list.len].score[2])/3;
printf(" 你输入的信息为:\n");
printf(" 学号:%s",list.student[list.len].num);
printf(" 姓名:%s",list.student[list.len].name);
printf(" 成绩:%d %d %d",list.student[list.len].score[0],list.student[list.len].score[1],list.student[list.len].score[2]);
printf(" 平均成绩:%d\n",list.student[list.len].score[3]);
list.len=list.len+1;
}
void sort_menu()
{
char n='3';
while(n!='0')
{
system("cls");
printf("\n\n");
printf(" 排序 \n");
printf("\n\n");
printf(" **************************************************** \n");
printf("\n");
if(list.len==0)
{
printf(" 0.返回主界面 \n");
printf("\n");
printf(" **************************************************** \n");
printf("\n\n");
printf(" 记录为空,无法排序");
printf("\n\n");
printf(" 请输入操作序号: ");
scanf("%s",&n);
}
else
if(list.len==1)
{
printf(" 0.退出 \n");
printf("\n");
printf(" **************************************************** \n");
printf("\n\n");
printf(" 只有一条记录,无需排序");
printf("\n\n");
printf(" 请输入操作序号: ");
scanf("%s",&n);
}
else
{
printf(" 1.升序 \n");
printf("\n");
printf(" 2.降序 \n");
printf("\n");
printf(" 0.退出 \n");
printf("\n");
printf(" **************************************************** \n");
printf("\n\n");
printf(" 请输入操作序号: ");
scanf("%s",&n);
if((n=='1')||(n=='2'))
{
sort(n);
printf(" 排序完成,输入任意键回车添加信息,返回主界面请输入0: ");
scanf("%s",&n);
}
}
}
}

void sort(char order)
{
int i,j;
if(order=='1')
for(i=0;i {
for(j=i+1;j {
if(list.student[i].score[3]>list.student[j].score[3])
{
exchange(i,j);
}
}
}
else
{
if(order=='2')
for(i=0;i {
for(j=i+1;j {
if(list.student[i].score[3] {
exchange(i,j);
}
}
}
}
}

void exchange(int i,int j)
{
messege temp;
temp.score[0]=list.student[i].score[0];
temp.score[1]=list.student[i].score[1];
temp.score[2]=list.student[i].score[2];
temp.score[3]=list.student[i].score[3];
strcpy(temp.num,list.student[i].num);
strcpy(temp.name,list.student[i].name);
list.student[i].score[0]=list.student[j].score[0];
list.student[i].score[1]=list.student[j].score[1];
list.student[i].score[2]=list.student[j].score[2];
list.student[i].score[3]=list.student[j].score[3];
strcpy(list.student[i].num,list.student[j].num);
strcpy(list.student[i].name,list.student[j].name);
list.student[j].score[0]=temp.score[0];
list.student[j].score[1]=temp.score[1];
list.student[j].score[2]=temp.score[2];
list.student[j].score[3]=temp.score[3];
strcpy(list.student[j].num,temp.num);
strcpy(list.student[j].name,temp.name);
}

void browse()
{
int i;
char n='1';

while(n!='0')
{
system("cls");
printf("\n\n");
printf(" 浏览记录 \n");
printf("\n\n");
printf(" **************************************************** \n");
printf("\n");
printf(" 学号 姓名 成绩1 成绩2 成绩3 平均成绩 \n");
for(i=0;i {
printf(" %-15s",list.student[i].num);
printf("%-8s",list.student[i].name);
printf("%5d",list.student[i].score[0]);
printf(" %5d",list.student[i].score[1]);
printf(" %5d",list.student[i].score[2]);
printf(" %8d\n",list.student[i].score[3]);
}
printf("\n");
printf(" **************************************************** \n");
printf("\n\n");
printf(" 输入任意键回车刷新,返回主界面请输入0: ");
scanf("%s",&n);
}
}

void del_menu()
{
char n='2';
while (n!='0')
{
system("cls");
printf("\n\n");
printf(" 删除记录 \n");
printf("\n\n");
printf(" **************************************************** \n");
printf("\n");
printf(" 1.删除记录 \n");
printf("\n");
printf(" 0.返回主界面 \n");
printf("\n");
printf(" **************************************************** \n");
printf("\n\n");
printf(" 请输入操作序号: ");
scanf("%s",&n);
if(n=='1')
{
del();
printf(" 输入任意键回车删除记录,返回主界面请输入0: ");
scanf("%s",&n);
}
}
}

void del()
{
int i,j;
char name[8];
printf(" 请输入学生姓名: ");
scanf("%s",name);
for(i=0;i {
if(strcmp(name,list.student[i].name)==0)
{
for(j=i;j {
list.student[j].score[0]=list.student[j+1].score[0];
list.student[j].score[1]=list.student[j+1].score[1];
list.student[j].score[2]=list.student[j+1].score[2];
list.student[j].score[3]=list.student[j+1].score[3];
strcpy(list.student[j].num,list.student[j+1].num);
strcpy(list.student[j].name,list.student[j+1].name);
}
list.len=list.len-1;
}
}
}

顺便问下2013好不好用?我用的是2012的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
护眼世家青少年视力健康中心莱西月湖店地址有
哪些2门4座的硬顶敞篷车后座空间比较宽敞,后
电脑上下载哪个英语词典比较好呢。。
怎样将管理费用处理为长期待摊费用
龟山公园(西南门)这个地址在什么地方,我要处
摊销完的物业费和房租退回企业做营业外收入处
钢材销售工作指标是多少?
李东华的现任老婆
如何 使PS 自动显示 图片与 画布的距离
蒲江县鹤山镇同兴康药房怎么去啊,有知道地址
下列关于生物性状的表述,错误的是A. 每个生
唱立方移动迷你自助K吧应该不会太吵吧?
如何查询自己是否已经获取学位
屈臣氏蒸馏水可以加入汽车冷却液不足
为什么失去电子能力与最外层电子数以及电子层
推荐资讯
360手机卫士怎么修改本机sim卡名称?
z65z67次列车怎么说列车运行图调整,暂停发售
最早实行复式预算的国家是( )。A.英国B.法
风疙瘩怎么根治?
身份证到期了多久会影响股票买卖
普宜中学优秀班主任
又来一个
碧血情天要钱吗
英语中,1.spend 2.cost 3.take 4.pay.这4个
石家庄哪个商场可以买到较多品牌大学生穿的衣
河南2017年理科高考分数515分能排多少名
星源通讯在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?