求一道C语言程序设计题目

实现学生学籍管理系统主要功能包括成绩的录入,显示,查询,统计四大模块.各模块的功能如下:录入模块:通过键盘录入全班同学三门课的成绩.显示模块:显示所有录入的成绩.统计模块... 实现学生学籍管理系统
主要功能包括成绩的录入,显示,查询,统计四大模块.各模块的功能如下:
录入模块:通过键盘录入全班同学三门课的成绩.
显示模块:显示所有录入的成绩.
统计模块:统计各门课的平均分和每个同学的平均分,排序,并打印前三名.
写出代码和运行结果.

很急拜托各位咯!!!!!!!!!!!
展开
 我来答
追悔七年
2008-06-04 · TA获得超过587个赞
知道小有建树答主
回答量:251
采纳率:66%
帮助的人:263万
展开全部
未经调试,请自行调试
关于排序,由于不清楚你是要排整个表还是只排平均成绩,所以未编写,给你提供冒泡排序的方法,自己去改。
#include <stdio.h>
#include <string.h>
#include <process.h>

struct grade
{
char name[20], ID[10]
int maths, english, physics;
float average;
grade *next;
};
grade *CreateList()
{
grade *head = NULL, *temp = NULL, *tail;
printf("输入学生成绩信息,在学号处输入-1结束输入。\n\n");
while(1)
{
temp = new grade;
printf("输入学号:");
scanf("%s", temp->ID);
if(!strcmp(temp->ID, "-1"))
{
delete temp;
break;
}
printf("输入姓名:");
scanf("%s", temp->name);
printf("输入数学成绩:");
scanf("%d", &temp->maths);
printf("输入英语成绩:");
scanf("%d", &temp->english);
printf("输入物理成绩:");
scanf("%d", &temp->physics);
if(head == NULL)
{
head = temp;
head->next = NULL;
tail = head;
}
else
{
temp->next = NULL;
tail->next = temp;
tail = temp;
}
}
return head;
}
void Browse(grade *h)
{
printf("学号\t姓名\t数学成绩\t英语成绩\t物理成绩\n");
while(h)
{
printf("%s\t%s\t%d\t%d\t%d\n", h->ID, h->name,
h->maths, h->english, h->physics);
h = h->next;
}
}
void average(grade *h)
{
float avg_maths = 0, avg_en = 0, avg_physics = 0;
int i = 0;
while(h)
{
h->average = (h->maths + h->english + h->physics) / 3.0;
printf("%s的平均成绩是%f\n", h->name, h->average);
avg_maths += h->maths;
avg_en += h->english;
avg_physics += h->physics;
i++;
h = h->next;
}
i /= 1.0;
printf("数学平均成绩:%f\n英语平均成绩:%f\n物理平均成绩:%f\n", avg_maths / i, avg_en / i, avg_physics / i);
}
void main()
{
char ch;
grade *head;
printf("****************学生成绩系统*****************\n");
printf("\t\t1.建立数据库\n\t\t2.浏览\n\t\t3.平均成绩\n\t\t4.退出\n");
while (1)
{
printf("选择操作:");
ch = getchar();
switch (ch)
{
case '1':
head = CreateList();
break;
case '2':
Browse(head);
break;
case '3':
average(head);
break;
case '4':
exit(0);
default:
printf("未知操作\n");
}
}
}
void bubble(int *b, int n) //传的是一个b[n]的数组
{
printf("\n以下为冒泡排序的过程:\n\n");
int temp, m;
for(int j=0; j<n; j++)
{
m = 0;
for(int i=0; i<n-j; i++)
{
if(b[i] > b[i+1])
{
temp = b[i];
b[i] = b[i+1];
b[i+1] = temp;
m++;
}
}
printf("第%d次:", j+1);
for(int k=0; k<n; k++)
printf("%4d",b[k]);
printf("\n");
if(m == 0)
break;
}
}
耕耘业兴隆7
2008-06-04 · TA获得超过610个赞
知道小有建树答主
回答量:797
采纳率:0%
帮助的人:373万
展开全部
这个不是一道C语言程序设计题目那么简单吧???

做毕业设计?

一个小项目
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式