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

要求本系统可供本系统可供学生查询自己的成绩,供教师录入成绩,查看所有成绩,按班级统计成绩。
(1)、成绩录入功能:只有教师可以使用。录入内容包括:学号、姓名、课程名、成绩。存入数据文件grade.dat或者grade.txt中。
(2)、成绩查询:学生输入学号后可以查询自己各门课的成绩。教师可以按班级和课程查询学生的成绩。
(3)、成绩统计:教师可以按课程统计每个班的最高成绩、最低成绩、平均成绩、不及格的学生人数以及占总人数的百分比。
注:学号的组成格式为:B09080101,B后的6位代表班级。
60分以下为不及格

还要包括数据库基本维护 包括 录入 查找 删除 插入 修改 5个基本功能

系统主界面应有以下功能选项
教师录入成绩
学生查询成绩
教师统计成绩
退出

最好是结构体 而不是单链表
函数调用什么的随便 如果模板分块不要太复杂

我自己写了一个关于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);

}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-28
针对你的描述C语言程序设计 学生成绩管理系统 (急),
我们可以为你提供一份适用于初学者的代码,
有别的要求也可以与我们联系,
联系我们需要提供你的问题和电子邮件,
有可能帮你,但是绝对救急,
请用BaiduHi为我留言,

此回复对于所有需求和和来访者有效,

ES:\\2C03AFA038F3D2A2F97C89A3F1D757FF
相似回答