学生成绩管理系统 C语言程序设计 急!

学生成绩管理系统是一个非常实用的程序,如果能够把用户输入的数据存盘,下次运行时读出,就更有用了。
某班有最多不超过30人(具体人数由键盘输入)参加期末考试,考试科目为数学(MT)、英语(EN)和物理(PH)。,即编程实现如下菜单驱动的学生成绩管理系统:
(1)录入每个学生的学号、姓名和各科考试成绩;
(2)计算每门课程的总分和平均分;
(3)计算每个学生的总分和平均分;
(4)按每个学生的总分由高到低排出名次表;
(5)按每个学生的总分由低到高排出名次表;
(6)按学号由小到大排出成绩表;
(7)按姓名的字典顺序排出成绩表;
(8)按学号查询学生排名及其考试成绩;
(9)按姓名查询学生排名及其考试成绩;
(10)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比;
(11)输出每个学生的学号、姓名、各科考试成绩,以及每门课程的总分和平均分;
(12)将每个学生的记录信息写入文件;
(13)从文件中读出每个学生的记录信息并显示。
要求程序运行后先显示如下菜单,并提示用户输入选项:
1.Append record
2.Caculate total and average score of every course
3.Caculate total and average score of every student
4.Sort in descending order by total score of every student
5.Sort in ascending order by total score of every student
6.Sort in ascending order by number
7.Sort in dictionary order by name
8.Search by number
9.Search by name
10.Statistic analysis for every course
11.List record
12.Write to a file
13.Read from a file
0.Exit
Please enter your choice:
然后,根据用户输入的选项执行相应的操作

我自己写了一个关于C语言的链表程序,,里面有插入学生信息和和成绩排名。。也有查找和删除,插入,但是我没有做修改的功能。。。
是没有界面的我还不会图形的。但是我觉得基本代码也应该还是有用的。你给看下我的。看可不可以帮到你。以后希望多多交流 。。。

#include "iostream.h"
#include "stdio.h"
#define manfen 150
typedef struct student {
char name[20];
double fen[4];
struct student * next;
} student;

int i=1;
int strcmp(char *a, char *b)
{
while((*a++ == *b++)&&(*a))
;
if((*a==NULL)&&(*b==NULL))
return 1;
else
return 0;
}

void SqlistStudent(student *&L,int j=1)
{
void heli(student *,int);
int a;
student *p,*q;
q=p=L=new student;
for(a=0;a<j;a++)
{
cout<<endl;
cout<<"请输入第";
cout<<i;
cout<<"位学生的名字:";
cin>>q->name;
cout<<" 语文分数:";
cin>>q->fen[0];
heli(q,0);
cout<<" 数学分数:";
cin>>q->fen[1];
heli(q,1);
cout<<" 英语分数:";
cin>>q->fen[2];
heli(q,2);
q->fen[3]=q->fen[0]+q->fen[1]+q->fen[2];
q=new student();
p->next=q;
p=q;
q->next=NULL;
i++;
}
cout<<"输入截止"<<endl;
}

void heli(student *t,int e)
{
while(t->fen[e]<0||t->fen[e]>manfen)
{
cout<<"输入的分数不合理,输入范围为:0-"<<manfen<<" 重新输入:"<<endl;
cin>>t->fen[e];
}
}

void shanchu(student *&l)
{
int strcmp(char *a, char *b);
student *q,*p;
char na[20];
int a=0,b=0;
q=p=l;
while(a!=-1)
{
cout<<"输入请删除学生信息的名字"<<endl;
cin>>na;
while(q->next!=NULL)
{
if( strcmp(na,q->name)==1 )
break;
p=q;
q=q->next;
b++;
}
if(strcmp(na,q->name)==1 )
{
if(b==0)
{
l=q->next;
i--;
break;
}
else
{
p->next=q->next;
i--;
break;
}
}
else
cout<<"没有此学生信息,请检查和重新输入"<<endl;
q=p=l;
}

}

void charu(student *&l)
{
int strcmp(char *a, char *b);
void heli(student *t,int e);
student *q,*p;
q=p=l;
int a=0,b=0,c=1,d=1;
char na[20];
student *f;
f=new student;
i++;
cout<<endl;
cout<<"请输入学生的名字";
cin>>f->name;
cout<<" 语文分数:";
cin>>f->fen[0];
heli(f,0);
cout<<" 数学分数:";
cin>>f->fen[1];
heli(f,1);
cout<<" 英语分数:";
cin>>f->fen[2];
heli(f,2);
f->fen[3]=f->fen[0]+f->fen[1]+f->fen[2];
f->next=NULL;
while(d!=0)
{
cout<<"请输入插入结点位置相邻的学生姓名"<<endl;
cin>>na;
while(q->next!=NULL)
{
b=strcmp(na,q->name);
if(b==1)
break;
p=q;
q=q->next;
d++;
}
if(b==1)
{
cout<<"在输入的名字前插入请输入1"<<endl;
cout<<"在输入的名字后插入请输入2"<<endl;
cin>>a;
if(a==1)
{
if(d==1)
{
f->next=l;
l=f;
cout<<"插入完成"<<endl;
break;
}
else
{
p->next=f;
f->next=q;
cout<<"插入完成"<<endl;
break;
}

}
if(a==2)
{
f->next=q->next;
q->next=f;
cout<<"插入完成"<<endl;

break;
}
}
if(b==0)
{
cout<<"没有找到此名字"<<endl;
}
q=p=l;
}
}

void print(student *l)
{
student *q;
q=l;
while(q->next!=NULL)
{
cout<<"学生的名字:"<<q->name<<endl;
cout<<"语文:"<<q->fen[0]<<endl;
cout<<"数学:"<<q->fen[1]<<endl;
cout<<"英语:"<<q->fen[2]<<endl;
cout<<"总分:"<<q->fen[3]<<endl;
q=q->next;
}

}

void anfencha(int a,double b,student *l)
{
student *q;
q=l;
int h=0;
while(q->next!=NULL)
{
if(q->fen[a]==b)
{
cout<<"学生的名字:"<<q->name<<endl;
cout<<"语文:"<<q->fen[0]<<endl;
cout<<"数学:"<<q->fen[1]<<endl;
cout<<"英语:"<<q->fen[2]<<endl;
cout<<"总分:"<<q->fen[3]<<endl;
h++;
}
q=q->next;
}
cout<<"您要查询的学生不存在"<<endl;
}

void anmin(char *na,student *l)
{
student *q;
int h=0;
q=l;
while(q->next!=NULL)
{
if(strcmp(na,q->name)==1)
{
cout<<"学生的名字:"<<q->name<<endl;
cout<<"语文:"<<q->fen[0]<<endl;
cout<<"数学:"<<q->fen[1]<<endl;
cout<<"英语:"<<q->fen[2]<<endl;
cout<<"总分:"<<q->fen[3]<<endl;
h++;
}
q=q->next;
}
if(h==0)
cout<<"没有此学生信息。"<<endl;
}

void paixu(student *l,int e)
{
student *q,*p;
student *a[30];
int b=0,c;
q=p=l;
for(b=0;b<30;b++)
a[b]=q;
b=0;
while(q->next!=NULL)
{
a[b]=q;
q=q->next;
b++;
}
for(b=0;b<i-1;b++)
{
for(c=b+1;c<i-1;c++)
{
if(a[b]->fen[e]<=a[c]->fen[e])
{
p=a[b];a[b]=a[c];a[c]=p;
}
}
}
switch(e)
{
case 0:cout<<"按照语文分数的排名情况是:"<<endl;break;
case 1:cout<<"按照数学分数的排名情况是:"<<endl;break;
case 2:cout<<"按照英语分数的排名情况是:"<<endl;break;
case 3:cout<<"按照总分分数的排名情况是:"<<endl;break;
}
for(b=0;b<i-1;b++)
{
cout<<"第"<<b+1<<"名"<<endl;
cout<<"学生的名字:"<<a[b]->name<<endl;
cout<<" 语文:"<<a[b]->fen[0]<<endl;
cout<<" 数学:"<<a[b]->fen[1]<<endl;
cout<<" 英语:"<<a[b]->fen[2]<<endl;
cout<<" 总分:"<<a[b]->fen[3]<<endl;
cout<<endl;
}

}

void main()
{
student *head;
int a=1,b=1,c=1,d;
char na[20];
cout<<"请输入需要保存的学生人数:"<<endl;
cin>>a;
SqlistStudent(head,a);
while(a!=0)
{
cout<<endl;
cout<<"退出请输入:0"<<endl;
cout<<"要查询请输入:1"<<endl;
cout<<"要插入学生信息请输入:2"<<endl;
cout<<"要查询各科排名情况:3"<<endl;
cout<<"要删除学生信息请输入4"<<endl;
cin>>a;
if(a==0)
break;
if(a==1)
{
cout<<"根据分数查询请输入1"<<endl;
cout<<"根据名字查询请输入2"<<endl;
cout<<"查询所有学生请输入3"<<endl;
cin>>b;
if(b==1)
{
cout<<"根据语文分数查询请输入0"<<endl;
cout<<"根据数学分数查询请输入1"<<endl;
cout<<"根据英语分数查询请输入2"<<endl;
cout<<"根据总分数查询请输入3"<<endl;
cin>>c;
cout<<"请输入要查找科目分数:"<<endl;
cin>>d;
anfencha(c,d,head);
}
if(b==2)
{
cout<<"请输入要查询学生名字:"<<endl;
cin>>na;
anmin(na,head);
}
if(b==3)
print(head);
}
if(a==2)
{
charu(head);
}
if(a==3)
{
cout<<"根据语文分数查询请输入0"<<endl;
cout<<"根据数学分数查询请输入1"<<endl;
cout<<"根据英语分数查询请输入2"<<endl;
cout<<"根据总分数查询请输入3"<<endl;
cin>>c;
paixu(head,c);
}
if(a==4)
shanchu(head);

}

}追问

我没有要求插入删除修改,但是我需要的程序还需要课程成绩分析啊,亲~

温馨提示:答案为网友推荐,仅供参考
相似回答