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

c语言课程设计学生成绩管理系统。学生基本信息包括学号,姓名,性别,三门成绩,请编程序,实现如下功能:(1)从键盘输入每个学生的基本信息,并将学生信息保存到students... c语言课程设计学生成绩管理系统。 学生基本信息包括学号,姓名,性别,三门成绩,请编程序,实现如下功能: (1)从键盘输入每个学生的基本信息,并将学生信息保存到students.txt中 (2)能够计算每个学生的总分,并按总分将成绩排序,显示每个学生的总分和排名 (3)按各门功课成绩计算最高最低分,显示每门课程中最高最低分的学生信息。
尽量写全一点,要源程序
展开
 我来答
Daizy落樱
推荐于2017-09-05
知道答主
回答量:10
采纳率:0%
帮助的人:13万
展开全部
临时写的,没有编译,应该差不离。

#include <stdio.h>

#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;
}
更多追问追答
追问
要求主页上有信息输入、成绩排名,最高最低分学生信息  、退出
谢了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友455632d898
2013-09-09 · TA获得超过275个赞
知道小有建树答主
回答量:804
采纳率:0%
帮助的人:338万
展开全部
用数组,和链表,排序。
更多追问追答
追问
要完整的程序,我做的程序不全,
追答
企鹅lianxi
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友f9b4f4c
2013-09-09
知道答主
回答量:32
采纳率:0%
帮助的人:12.5万
展开全部
我有源码。。明天开电脑给你
追问
谢谢
我的问题没有解决,不过感谢你的热心解答!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式