永发信息网

c语言课程设计学生成绩管理系统。 学生基本信息包括学号,姓名,性别,三门成绩,请编程序,实现如下功能:

答案:3  悬赏:10  手机版
解决时间 2021-02-11 22:54
c语言课程设计学生成绩管理系统。 学生基本信息包括学号,姓名,性别,三门成绩,请编程序,实现如下功能:
最佳答案
临时写的,没有编译,应该差不离。

#include

#define MAX_CORE_NUM 3
#define MAX_STU_NUM 100
struct stu_info_t
{
int no;
char name[50];
int is_male;
int core[MAX_CORE_NUM];
int core_total;
int rank;
};
int class_min_stu[MAX_CORE_NUM];
int class_max_stu[MAX_CORE_NUM];
struct stu_info_t stu_info[MAX_STU_NUM];
int stu_num = 0;
int input_stu_info()
{
char q = 0;
int i = 0;
int j = 0;
char c = 0;

printf("请输入所有学生信息:\n");
i = 0;
while (q != 'q' && q != 'Q' && i < MAX_STU_NUM)
{
printf("学号:");
scanf("%d", &(stu_info[i].no));
printf("姓名:");
scanf("%s", stu_info[i].name);
printf("性别(M/m - 男生,F/f - 女生):");
scanf("%c", &c);
if (c == 'M' || c == 'c')
stu_info[i].is_male = 1;
else
stu_info[i].is_male = 0;
stu_info[i].core_total = 0;
for (j = 0; j < MAX_CORE_NUM; j++)
{
printf("课程%d得分:", j+1);
scanf("%d", &(stu_info[i].core[j]));
stu_info[i].core_total += stu_info[i].core[j];
}
i++;
if (i >= MAX_STU_NUM)
{
printf("最多输入%d个学生信息\n", MAX_STU_NUM);
break;
}
printf("退出(Q/q):");
scanf("%c", &q);
}
stu_num = i;
return 0;
}
int save_stu_info()
{
int i = 0;
int j = 0;
FILE * fp = NULL;
fp = fopen("students.txt", "rw");
if (fp == NULL)
return -1;
fprintf(fp, "\t学号\t姓名\t性别");
for (j = 0; j < MAX_CORE_NUM; j++)
{
fprintf(fp, "\t课程%d", j+1);
}
fprintf(fp, "\r\n");
for (i = 0; i < stu_num; i++)
{
fprintf(fp, "\t%d\t%s\t%s", stu_info[i].no, stu_info[i].name, (stu_info[i].is_male ? "男" : "女"));
for (j = 0; j < MAX_CORE_NUM; j++)
{
fprintf(fp, "\t%d", stu_info[i].core[j]);
}
fprintf(fp, "\r\n");
}
fclose(fp);
return 0;
}
int cal_rank()
{
int i = 0;
int j = 0;
int class_min;
int class_max;
struct stu_info_t t;
for (i = 0; i < stu_num - 1; i++)
{
for (j = i + 1; j < stu_num; j++)
{
if (stu_info[i].core_total < stu_info[j].core_total)
{
memcpy(&t, &stu_info[j], sizeof(struct stu_info_t));
memcpy(&stu_info[j], &stu_info[i], sizeof(struct stu_info_t));
memcpy(&stu_info[i], &t, sizeof(struct stu_info_t));
}
}
}
for (i = 0; i < stu_num; i++)
{
stu_info[i].rank = i + 1;
}
for (j = 0; j < MAX_CORE_NUM; j++)
{
class_min = 0;
class_max = 10000;
for (i = 0; i < stu_num; i++)
{
if (stu_info[i].core[j] < class_min)
{
class_min = stu_info[i].core[j];
class_min_stu[j] = i;
}
if (stu_info[i].core[j] > class_max)
{
class_max = stu_info[i].core[j];
class_max_stu[j] = i;
}
}
}
return 0;
}

int output_total()
{
int i = 0;
printf("\t学号\t姓名\t总分\t排名\n");
for (i = 0; i < stu_num; i++)
{
printf("\t%d\t%s\t%d\t%d\n", stu_info[i].no, stu_info[i].name, stu_info[i].core_total, stu_info[i].rank);
}
return 0;
}
int output_class()
{
int i = 0;
int j = 0;
int core = 0;
for (j = 0; j < MAX_CORE_NUM; j++)
{
core = stu_info[class_max_stu[j]].core[j];
printf("课程%d最高分:%d\n", j+1, core);
printf("\t学号\t姓名\n");
for (i = 0; i < stu_num; i++)
{
if (stu_info[i].core[j] == core)
{
printf("\t%d\t%s\n", stu_info[i].no, stu_info[i].name);
}
}
}
for (j = 0; j < MAX_CORE_NUM; j++)
{
core = stu_info[class_min_stu[j]].core[j];
printf("课程%d最低分:%d\n", j+1, core);
printf("\t学号\t姓名\n");
for (i = 0; i < stu_num; i++)
{
if (stu_info[i].core[j] == core)
{
printf("\t%d\t%s\n", stu_info[i].no, stu_info[i].name);
}
}
}
return 0;
}
void main()
{
input_stu_info();
save_stu_info();
cal_rank();
output_total();
output_class();
return;
}追问要求主页上有信息输入、成绩排名,最高最低分学生信息 、退出谢了追答里面有啊
input_stu_info管信息输入
output_total输出整体排名
output_class输出最高最低分学生名单

除非你要求更复杂的界面,那我就不擅长了
你把input还有ouput那几个子函数修改一下试试追问用户界面菜单最少包括 信息输入、成绩排名,最高最低分学生信息 、退出麻烦你增加一下追答不好意思,界面我不擅长,看看别人是否有解吧追问i].name,stud[i].gender ,stud[i].english,stud[i].chinese,stud[i].math,stud[i].english+stud[i].chinese+stud[i].math);
else
printf("%d%d%s%s%d%d%d%d\n",j++,stud[i].num,stud[i].name,stud[i].gender ,stud[i].english,stud[i].chinese,stud[i].math,stud[i].english+stud[i].chinese+stud[i].math);

}
fclose(fp);
}麻烦你给我修改一下这个程序太给力了,你的回答完美解决了我的问题!
全部回答
我有源码。。明天开电脑给你追问谢谢我的问题没有解决,不过感谢你的热心解答!
用数组,和链表,排序。追问要完整的程序,我做的程序不全,追答企鹅lianxi追问我的问题没有解决,不过感谢你的热心解答!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
如何正确认识自己脸型,身高,形象
模拟人生2怎么变僵尸?
我买的车票是2月24日的动车学生票,想改签成2
江城检车线地址在什么地方,我要处理点事
材料:在一个冬天,小黄不小心踩到冰上摔了一
养身盐排骨绵阳店在哪里啊,我有事要去这个地
请问能帮我查一下有这几种中草药吗?分别是兰
浩瀚汽修地址在什么地方,我要处理点事
蝴蝶和斯蒂卡哪个好?
一件美丽的往事 作文400字
minitab如何做出二次函数图
去美国要不要先读一年预科
金麒麟汽车装饰服务有限公司地址有知道的么?
爱婴室孕婴童一站式购物这个地址在什么地方,
忘记了校讯通登录帐号和密码怎么办
推荐资讯
【loosely】theyarebasedlooselyonthebeatles
甲美克灰指甲(大渡口店)地址在什么地方,想过
少女时代badgirl平假名歌词
为什么油脂圆珠笔掉再地上会断油?如何解决?
菜园街社区居委会地址在什么地方,我要处理点
李烟墩村地址有知道的么?有点事想过去
中国邮政夏村邮电支局地址有知道的么?有点事
【探究凸透镜成像的规律】...探究凸透镜成像
中国联通(创富金街营业厅)地址在什么地方,想
有关福建福清郑氏家谱或者族谱
今天朋友问了我一件事,整件事我都不明白,就
被淘宝商家骚扰,怎么维权。
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?