谁给用C语言编写个学生选课系统?最高分求助!

首先几点说明:
1.学生基本情况录入。
2.允许对已经录入的数据进行显示。
3.允许进行数据的插入。
4.删除基本数据的相关信息。

数据结构可参考下面定义
typedef struct S1
{
char no[9];/*学号*/
char name[15]; /*姓名*/
char sex; /*性别*/
int age; /*年龄*/
int score[4]; /*成绩*/
float sum; /*总分*/
float average; /*平均分*/
int order; /*排名*/
struct S1 *next;
}STUDENT

最重要的是:最好不要用链表这种高深的东西,我看不懂

还有就是别随便粘贴一段过来过来,必须符合以上要求,另外加分,越快越好,明天我们就要交啦!!
谢谢啦
题目应该改为:学生成绩管理系统!
+328643488

#include "stdio.h"
#include"stddef.h"
#include "stdlib.h"
#include "string.h"
#include "time.h"//获取当前时间来产生随机值

#define Max 100
static Count=0;

typedef struct stu
{
int classNum;//学生学号
int CScore;//语文成绩
int EScore;//英语成绩
int MScore;//数学成绩
float average;//平均成绩
char Name[30];// 学生姓名
char sex[2];//学生性别
}student;

void printMain()
{
printf("*****************************************\n");
printf("\t 欢迎使用学生管理系统!\n");
printf(" 作者:******\n");
printf("*****************************************\n");
printf("\t\t1:成绩录入!\n");
printf("\t\t2:成绩统计!\n");
printf("\t\t3:成绩查询!\n");
printf("\t\t4:成绩排序!\n");
printf("\t\t5:成绩插入!\n");
printf("\t\t6:成绩删除!\n");
printf("\t\t7:成绩修改!\n");
printf("\t\t8:成绩显示!\n");
printf("\t\t9:退出系统!\n");
printf("*****************************************\n");
printf("\n");
printf("请输入您的选择:");
}
void CinScore(student stu[])//输入学生信息
{
FILE *fp;
printf("请输入学生的姓名:");
scanf("%s",&stu[Count].Name);
printf("\n请输入学生的性别(M or F):");
scanf("%s",&stu[Count].sex);
printf("\n请输入学生的学号:");
scanf("%d",&stu[Count].classNum);
printf("\n请输入学生的语文成绩:");
scanf("%d,",&stu[Count].CScore);
printf("\n请输入学生的英语成绩:");
scanf("%d",&stu[Count].EScore);
printf("\n请输入学生的数学成绩:");
scanf("%d",&stu[Count].MScore);
stu[Count].average=(stu[Count].CScore+
stu[Count].EScore+stu[Count].MScore)/3.0f;
if(Count==0)
{
fp=fopen("40702.dat","w");
}
else
{
fp=fopen("40702.dat","ab");
}
fprintf(fp,"%s\n",stu[Count].Name);
fprintf(fp,"%s\n",stu[Count].sex);
fprintf(fp,"%d\n",stu[Count].classNum);
fprintf(fp,"%d\n",stu[Count].CScore);
fprintf(fp,"%d\n",stu[Count].EScore);
fprintf(fp,"%d\n",stu[Count].MScore);
fprintf(fp,"%f\n",stu[Count].average);
fclose(fp);
Count++;
}
void CinFile(student stu[])//从文件读入
{
FILE *fp1,*fp2;
fp1=fopen("student.txt","r");
while(!feof(fp1))//判断文件读入是否结束
{
fscanf(fp1,"%s",&stu[Count].Name);
fscanf(fp1,"%s",&stu[Count].sex);
fscanf(fp1,"%d",&stu[Count].classNum);
fscanf(fp1,"%d",&stu[Count].CScore);
fscanf(fp1,"%d",&stu[Count].EScore);
fscanf(fp1,"%d",&stu[Count].MScore);
fscanf(fp1,"%f",&stu[Count].average);
if(Count==0)
{
fp2=fopen("40702.dat","w");
}
else
{
fp2=fopen("40702.dat","ab");
}
fprintf(fp2,"%s\n",stu[Count].Name);
fprintf(fp2,"%s\n",stu[Count].sex);
fprintf(fp2,"%d\n",stu[Count].classNum);
fprintf(fp2,"%d\n",stu[Count].CScore);
fprintf(fp2,"%d\n",stu[Count].EScore);
fprintf(fp2,"%d\n",stu[Count].MScore);
fprintf(fp2,"%f\n",stu[Count].average);
fclose(fp2);
Count++;
}
Count--;
fclose(fp1);
}
void InputScore(student stu[])
{
int choice;
printf("1:从文件读入!\n");
printf("2:手动输入!\n");
printf("请输入您的选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:
CinFile(stu);
break;
case 2:
CinScore(stu);
break;
default:
printf("您的输入有误!\n");
break;
}
}
void ClassifyScore(student stu[])//统计各分数段的人数
{
int perfect=0;//记录优秀的人数
int good=0;//记录良好的人数
int medium=0;//记录中等的人数
int pass=0;//记录及格的人数
int bad=0;//记录不及格的人数
int i=0;
for(i=0;i<Count;i++)
{
if(stu[i].average<60)
{
bad++;
}
else if(stu[i].average<70)
{
pass++;
}
else if(stu[i].average<80)
{
medium++;
}
else if(stu[i].average<90)
{
good++;
}
else if(stu[i].average<=100)
{
perfect++;
}
}
printf("成绩为优秀的人数为 :\t%d\n",perfect);
printf("成绩为良好的人数为 :\t%d\n",good);
printf("成绩为中等的人数为 :\t%d\n",medium);
printf("成绩为及格的人数为 :\t%d\n",pass);
printf("成绩为不及格的数为 :\t%d\n",bad);
}
void SearchName(student stu[])//按名字查询
{
int i;
char tempname[30];
printf("请输入要查询的姓名: ");
scanf("%s",&tempname);
printf("\n");
for(i=0;i<Count;i++)
{
if(strcmp(tempname,stu[i].Name)==0)
{
printf("姓名\t性别\t语文成绩 英语成绩 数学成绩 平均成绩\n");
printf("\n%s \t%s \t%d \t %d \t %d \t%.3f\n",stu[i].Name,
stu[i].sex,stu[i].CScore,stu[i].EScore,stu[i].MScore,
stu[i].average);
break;
}
}
if(strcmp(tempname,stu[i].Name))
{
printf("没有这个学生的信息!\n");
}
}
void SearchClass(student stu[])//按学号查询
{
int i;
int tempClass;
printf("请输入要查询的学号: ");
scanf("%d",&tempClass);
printf("\n");

for(i=0;i<Count;i++)
{
if(tempClass==stu[i].classNum)
{
printf("姓名\t性别\t学号\t语文成绩 英语成绩 数学成绩 平均成绩\n");
printf("\n%s \t%s \t%d\t%d \t %d \t %d \t%.3f\n",stu[i].Name,
stu[i].sex,stu[i].classNum,stu[i].CScore,stu[i].EScore,stu[i].MScore,
stu[i].average);
break;
}
}
if(stu[i].classNum!=tempClass)
{
printf("没有这个学生的信息!\n");
}
}
void SearchStu(student stu[])//成绩查询
{
printf("1:按姓名查找!\n");
printf("2:按学号查找!\n");
int choice;
printf("请输入您的选择: ");
scanf("%d",&choice);
printf("\n");
switch(choice)
{
case 1:
SearchName(stu);
break;
case 2:
SearchClass(stu);
break;
default:
printf("您的输入有误!");
system("cls");
break;
}
}
void Equal(student *p,student *q)//把右边的结构体的值赋给左边
{
p->average=q->average;
p->classNum=q->classNum;
p->CScore=q->CScore;
p->EScore=q->EScore;
p->MScore=q->MScore;
strcpy(p->Name,q->Name);
strcpy(p->sex,q->sex);
}
void Writefile(FILE *fp,student stu[])//写入文件并输出到屏幕
{
int i=0;
for(i=0;i<Count;i++)
{
printf("\n%s \t%s \t%d\t%d \t %d \t %d \t%.3f\n",stu[i].Name,
stu[i].sex,stu[i].classNum,stu[i].CScore,stu[i].EScore,stu[i].MScore,
stu[i].average);
fprintf(fp,"%s\n",stu[i].Name);
fprintf(fp,"%s\n",stu[i].sex);
fprintf(fp,"%d\n",stu[i].classNum);
fprintf(fp,"%d\n",stu[i].CScore);
fprintf(fp,"%d\n",stu[i].EScore);
fprintf(fp,"%d\n",stu[i].MScore);
fprintf(fp,"%f\n",stu[i].average);
}
fclose(fp);
}
void WritefileOnly(FILE *fp,student stu[])//只写入文件
{
int i=0;
for(i=0;i<Count;i++)
{
fprintf(fp,"%s\n",stu[i].Name);
fprintf(fp,"%s\n",stu[i].sex);
fprintf(fp,"%d\n",stu[i].classNum);
fprintf(fp,"%d\n",stu[i].CScore);
fprintf(fp,"%d\n",stu[i].EScore);
fprintf(fp,"%d\n",stu[i].MScore);
fprintf(fp,"%f\n",stu[i].average);
}
fclose(fp);
}
void swapScore(student *p,student *q)
{
student *temp;
temp=(student*)malloc(sizeof(student));
temp->average=p->average;
temp->classNum=p->classNum;
temp->CScore=p->CScore;
temp->EScore=p->EScore;
temp->MScore=p->MScore;
strcpy(temp->Name,p->Name);
strcpy(temp->sex,p->sex);
p->average=q->average;
p->classNum=q->classNum;
p->CScore=q->CScore;
p->EScore=q->EScore;
p->MScore=q->MScore;
strcpy(p->Name,q->Name);
strcpy(p->sex,q->sex);
q->average=temp->average;
q->classNum=temp->classNum;
q->CScore=temp->CScore;
q->EScore=temp->EScore;
q->MScore=temp->MScore;
strcpy(q->Name,temp->Name);
strcpy(q->sex,temp->sex);
free(temp);
}
void sortChinese(student stu[])
{
FILE *fp;
int i,j;
student *p;
p=stu;
for(i=0;i<Count-1;i++)
{
for(j=0;j<Count-i;j++)
{
if(stu[j+1].CScore>stu[j].CScore)
{
swapScore((p+j),(p+j+1));
}
}
}
printf("姓名\t性别\t学号\t语文成绩 英语成绩 数学成绩 平均成绩\n");
fp=fopen("40702.dat","w");
Writefile(fp,stu);
}
void sortMath(student stu[])
{
FILE *fp;
int i,j;
student *p;
p=stu;
for(i=0;i<Count-1;i++)
{
for(j=0;j<Count-i;j++)
{
if(stu[j+1].MScore>stu[j].MScore)
{
swapScore((p+j),(p+j+1));
}
}
}
printf("姓名\t性别\t学号\t语文成绩 英语成绩 数学成绩 平均成绩\n");
fp=fopen("40702.txt","w");
Writefile(fp,stu);
}
void sortEnglish(student stu[])
{
FILE *fp;
int i,j;
student *p;
p=stu;
for(i=0;i<Count-1;i++)
{
for(j=0;j<Count-i;j++)
{
if(stu[j+1].EScore>stu[j].EScore)
{
swapScore((p+j),(p+j+1));
}
}
}
printf("姓名\t性别\t学号\t语文成绩 英语成绩 数学成绩 平均成绩\n");
fp=fopen("40702.dat","w");
Writefile(fp,stu);
}
void sortCourse(student stu[])//按单科成绩排序
{
int choice;
printf("1:按语文成绩排序!\n");
printf("2:按数学成绩排序!\n");
printf("3:按英语成绩排序!\n");
printf("请输入您的选择:\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
sortChinese(stu);
break;
case 2:
sortMath(stu);
break;
case 3:
sortEnglish(stu);
break;
default:
printf("输入有误!\n");
system("PAUSE");
break;
}
}
void sortAverage(student stu[])//本函数使用平均成绩来进行排序
{
FILE *fp;
int i,j;
student *p;
p=stu;
for(i=0;i<Count-1;i++)
{
for(j=0;j<Count-i;j++)
{
if(stu[j+1].average>stu[j].average)
{
swapScore((p+j),(p+j+1));
}
}
}
printf("姓名\t性别\t学号\t语文成绩 英语成绩 数学成绩 平均成绩\n");
fp=fopen("40702.dat","w");
Writefile(fp,stu);
}
void sortScore(student stu[])
{
int choice;
printf("1:按平均成绩排序!\n");
printf("2:按单科成绩排序!\n");
printf("请输入您的选择:\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
sortAverage(stu);
break;
case 2:
sortCourse(stu);
break;
default:
printf("输入有误!\n");
system("PAUSE");
break;
}
}
void insertName(student stu[])//按名字插入学生信息
{
char tempName[30];
student *p,*temp;
student tempStu;
temp=&tempStu;
p=stu;
int i,j;
FILE *fp,*fp1;
printf("\n输入插入处学生的姓名:");
scanf("%s",&tempName);
for(i=0;i<Count;i++)
{
if(strcmp(stu[i].Name,tempName)==0)
{
break;
}
}
if(strcmp(stu[i].Name,tempName))
{
printf("插入有错,没有此学生!\n");
return;
}
printf("请输入要插入的学生的信息!\n");
printf("请输入学生姓名:");
scanf("%s",&tempStu.Name);
printf("\n请输入学生性别:");
scanf("%s",&tempStu.sex);
printf("\n请输入学生学号:");
scanf("%d",&tempStu.classNum);
printf("\n请输入学生的语文成绩:");
scanf("%d,",&tempStu.CScore);
printf("\n请输入学生的英语成绩:");
scanf("%d",&tempStu.EScore);
printf("\n请输入学生的数学成绩:");
scanf("%d",&tempStu.MScore);
tempStu.average=(tempStu.CScore+
tempStu.EScore+tempStu.MScore)/3.0f;

Count++;
for(j=Count-1;j>i+1;j--)
{
Equal(p+j,p+j-1);
}
Equal((p+i+1),temp);
fp=fopen("40702.dat","w");
WritefileOnly(fp,stu);
fclose(fp);
fp1=fopen("student.txt","w");
WritefileOnly(fp1,stu);
fclose(fp1);
}
void insertNumber(student stu[])//按学号插入学生信息
{
int tempNumber;
student *p,*temp;
p=stu;
student tempStu;
temp=&tempStu;
int i,j;
FILE *fp,*fp1;
printf("\n输入插入处学生的学号:");
scanf("%d",&tempNumber);
for(i=0;i<Count;i++)
{
if(stu[i].classNum==tempNumber)
{
break;
}
}
if(stu[i].classNum!=tempNumber)
{
printf("插入有错,没有此学生!\n");
return;
}
printf("请输入要插入的学生的信息!\n");
printf("请输入学生姓名:");
scanf("%s",&tempStu.Name);
printf("\n请输入学生性别:");
scanf("%s",&tempStu.sex);
printf("\n请输入学生学号:");
scanf("%d",&tempStu.classNum);
printf("\n请输入学生的语文成绩:");
scanf("%d,",&tempStu.CScore);
printf("\n请输入学生的英语成绩:");
scanf("%d",&tempStu.EScore);
printf("\n请输入学生的数学成绩:");
scanf("%d",&tempStu.MScore);
tempStu.average=(tempStu.CScore+
tempStu.EScore+tempStu.MScore)/3.0f;
Count++;
for(j=Count-1;j>i+1;j--)
{
Equal((p+j),(p+j-1));
}
Equal((p+i+1),temp);
fp=fopen("40702.dat","w");
WritefileOnly(fp,stu);
fclose(fp);
fp1=fopen("student.txt","w");
WritefileOnly(fp1,stu);
fclose(fp1);
}
void insertRandom(student stu[])
{
FILE *fp,*fp1;
student *p,*temp;
p=stu;
student tempStu;
temp=&tempStu;
int j;
srand(time(0));
int randNumber=rand()%Count;
printf("请输入要插入的学生的信息!\n");
printf("请输入学生姓名:");
scanf("%s",&tempStu.Name);
printf("\n请输入学生性别:");
scanf("%s",&tempStu.sex);
printf("\n请输入学生学号:");
scanf("%d",&tempStu.classNum);
printf("\n请输入学生的语文成绩:");
scanf("%d,",&tempStu.CScore);
printf("\n请输入学生的英语成绩:");
scanf("%d",&tempStu.EScore);
printf("\n请输入学生的数学成绩:");
scanf("%d",&tempStu.MScore);
tempStu.average=(tempStu.CScore+
tempStu.EScore+tempStu.MScore)/3.0f;
Count++;
for(j=Count-1;j>randNumber;j--)
{
Equal((p+j),(p+j-1));
}
Equal((p+randNumber),temp);
fp=fopen("40702.dat","w");
WritefileOnly(fp,stu);
fclose(fp);
fp1=fopen("student.txt","w");
WritefileOnly(fp1,stu);
fclose(fp1);
}
void insertStu(student stu[])//插入学生信息
{
int choice;
if(Count==0)
{
printf("没有学生信息!\n");
CinScore(stu);
return;
}
printf("1:按姓名插入!\n");
printf("2:按学号插入!\n");
printf("3:随机插入!\n");
printf("请输入您的选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:
insertName(stu);
break;
case 2:
insertNumber(stu);
break;
case 3:
insertRandom(stu);
break;
default:
printf("您的输入有误!");
system("PAUSE");
break;
}
}
void DeleteName(student stu[])
{
int i,j;
FILE *fp;
char tempName[30];
student *p=stu;
printf("请输入要删除的学生的姓名:");
scanf("%s",tempName);
for(i=0;i<Count;i++)
{
if(strcmp(stu[i].Name,tempName)==0)
{
break;
}
}
if(strcmp(stu[i].Name,tempName))
{
printf("对不起,没有这个学生,这个学生可能已经被删除!\n");
system("PAUSE");
}
for(j=i;j<Count-1;j++)
{
Equal((p+j),(p+j+1));
}
Count--;
fp=fopen("40702.dat","w");
printf("操作成功!\n");
WritefileOnly(fp,stu);
}
void DeleteNumber(student stu[])
{
int i,j;
int tempNumber=0;
FILE *fp;
student *p;
p=stu;
printf("请输入要删除的学生的学号:");
scanf("%d",&tempNumber);
for(i=0;i<Count;i++)
{
if(stu[i].classNum==tempNumber)
{
break;
}
}
if(stu[i].classNum!=tempNumber)
{
printf("对不起,没有这个学生,这个学生可能已经被删除!\n");
system("PAUSE");
}

for(j=i;j<Count-1;j++)
{
Equal((p+j),(p+j+1));
}
Count--;
fp=fopen("40702.dat","w");
printf("操作成功!\n");
WritefileOnly(fp,stu);
}
void DeleteScore(student stu[])//删除学生信息
{
int choice;
printf("1:按姓名删除!\n");
printf("2:按学号删除!\n");
printf("请输入您的选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:
DeleteName(stu);
break;
case 2:
DeleteNumber(stu);
break;
default:
printf("您的输入有误!");
system("PAUSE");
break;
}
}
void ChangeName(student stu[])
{
int i;
FILE *fp;
char tempName[30];
student *p=stu;
printf("请输入要修改的学生的姓名:");
scanf("%s",&tempName);
for(i=0;i<Count;i++)
{
if(strcmp(stu[i].Name,tempName)==0)
{
break;
}
}
if(strcmp(stu[i].Name,tempName))
{
printf("对不起,没有这个学生的信息!\n");
}
else
{
printf("请输入学生的姓名:");
scanf("%s",&stu[i].Name);
printf("\n请输入学生的性别(M or F):");
scanf("%s",&stu[i].sex);
printf("\n请输入学生的学号:");
scanf("%d",&stu[i].classNum);
printf("\n请输入学生的语文成绩:");
scanf("%d,",&stu[i].CScore);
printf("\n请输入学生的英语成绩:");
scanf("%d",&stu[i].EScore);
printf("\n请输入学生的数学成绩:");
scanf("%d",&stu[i].MScore);
stu[i].average=(stu[i].CScore+
stu[i].EScore+stu[i].MScore)/3.0f;
fp=fopen("40702.dat","w");
WritefileOnly(fp,stu);
}
}
void ChangeNumber(student stu[])
{
int i;
FILE *fp;
int tempNumber=0;
student *p=stu;
printf("请输入要修改的学生的学号:");
scanf("%d",&tempNumber);
for(i=0;i<Count;i++)
{
if(stu[i].classNum==tempNumber)
{
break;
}
}
if(stu[i].classNum!=tempNumber)
{
printf("对不起,没有这个学生的信息!\n");
}
else
{
printf("请输入学生的姓名:");
scanf("%s",&stu[i].Name);
printf("\n请输入学生的性别(M or F):");
scanf("%s",&stu[i].sex);
printf("\n请输入学生的学号:");
scanf("%d",&stu[i].classNum);
printf("\n请输入学生的语文成绩:");
scanf("%d,",&stu[i].CScore);
printf("\n请输入学生的英语成绩:");
scanf("%d",&stu[i].EScore);
printf("\n请输入学生的数学成绩:");
scanf("%d",&stu[i].MScore);
stu[i].average=(stu[i].CScore+
stu[i].EScore+stu[i].MScore)/3.0f;
fp=fopen("40702.dat","w");
WritefileOnly(fp,stu);
}
}
void ChangeScore(student stu[])//改变学生信息
{
int choice;
printf("1:按学生姓名修改!\n");
printf("2:按学生学号修改!\n");
printf("请输入您的选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:
ChangeName(stu);
break;
case 2:
ChangeNumber(stu);
break;
default:
printf("您的输入有误!\n");
system("PAUSE");
break;
}
}
void printScore(student stu[])//显示学生信息
{
FILE *fp;
int i=0;
if(Count==0)
{
printf("没有学生信息!请添加学生信息!\n");
return;
}
else
{
printf("姓名\t性别\t学号\t语文成绩 英语成绩 数学成绩 平均成绩\n");
for(i=0;i<Count;i++)
{
printf("\n%s \t%s \t%d\t%d \t %d \t %d \t%.3f\n",stu[i].Name,
stu[i].sex,stu[i].classNum,stu[i].CScore,stu[i].EScore,stu[i].MScore,
stu[i].average);
}
}
fp=fopen("40702.dat","w");
WritefileOnly(fp,stu);
fclose(fp);
}
int main()//主函数
{
student stu[Max];
char goon='y';
int choice;
while(goon!='n')
{
printMain();
scanf("%d",&choice);
switch(choice)
{
case 1:
InputScore(stu);
break;
case 2:
ClassifyScore(stu);
break;
case 3:
SearchStu(stu);
break;
case 4:
sortScore(stu);
break;
case 5:
insertStu(stu);
break;
case 6:
DeleteScore(stu);
break;
case 7:
ChangeScore(stu);
break;
case 8:
printScore(stu);
break;
case 9:
exit(0);
break;
default:
printf("输入有误!\n");
break;
}
printf("是否继续(输入n结束)?\n");
scanf("%s",&goon);
system("cls");
}
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-08-15
这玩意网上还很多的~
C语言成绩管理系统!!(上)
http://lhe010.blog.163.com/blog/static/21495839200761661713310/
C语言成绩管理系统
http://xinya11276.blog.163.com/blog/static/263580382008559548561/
第2个回答  2008-08-16
呵呵`
以前做过`不过早删了`网上搜下好多啊
第3个回答  2008-08-18
仅供参考!程序最好你自己写,或者自己改!这样你的水平才能提高!

#include <stdio.h>
#include <string.h>

#define STU_NUM 10//学生数
#define SCORE_NUM 3//每个学生的科目数

typedef struct /*定义结构体数组*/
{
char num[20]; /*学号*/
char name[20]; /*姓名*/
float score[SCORE_NUM]; /*成绩*/
float total;//总分
float average;//平均分
} Student;

Student stu[STU_NUM];

//输入学生信息
void input()
{
int i,j;

printf("请输入%d个学生的信息:\n",STU_NUM);
for(i=0;i<STU_NUM;i++)
{
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d的成绩:",j+1);
scanf("%f",&stu[i].score[j]);
}
}
}

//输出学生信息
void output()
{
int i,j;

//打印表头
printf("学号\t姓名\t");
for(j=0;j<SCORE_NUM;j++)
{
printf("科目%d\t",j+1);
}
printf("总分\t平均分\n");

//打印所有学生信息
for(i=0;i<STU_NUM;i++)
{
printf("%s\t%s\t",stu[i].num,stu[i].name);
for(j=0;j<SCORE_NUM;j++)
{
printf("%3.2f\t",stu[i].score[j]);
}
printf("%3.2f\t%3.2f\n",stu[i].total,stu[i].average);
}
}

//计算总分和平均分
void process()
{
int i,j;

for(i=0;i<STU_NUM;i++)
{
stu[i].total=0;
for(j=0;j<SCORE_NUM;j++)
{
stu[i].total+=stu[i].score[j];
}
stu[i].average=stu[i].total/SCORE_NUM;
}
}

//排序并输出
void sort()
{
Student tStu;
int i,j;

for(i=0;i<STU_NUM;i++)
{
for(j=STU_NUM-1;j>i;j--)
{
if(stu[j].total>stu[j-1].total)
{
tStu=stu[j];
stu[j]=stu[i];
stu[i]=tStu;
}
}
}
}

void main()
{
input();
process();
sort();
output();
}

参考资料:http://zhidao.baidu.com/question/57230399.html

第4个回答  2008-08-23
#include"iostream"
#include"cstring"
#include"iomanip"
#include"cstdio"
using namespace std;
struct sub_info
{
char num[10];
char name[20];
char qua[5];
int cla_per;
int exp_per;
int points;
int term;
};
struct selections
{
char selec_num[10];
};
void input(sub_info sub[],int n) //课程录入函数
{
char qua_a[]="必修",qua_b[]="选修",qua_c[]="限选";
cout<<"----------------------------------------------"<<endl;
cout<<" 课程录入 "<<endl;
cout<<"----------------------------------------------"<<endl;
cout<<endl;
for(int i=0;i<n;i++)
{
cout<<"课程编号:"; cin>>sub[i].num;
cout<<"课程名称:"; cin>>sub[i].name;
cout<<"课程性质(a.必修,b.选修,c.限选):"; cin>>sub[i].qua;
if(sub[i].qua[0]=='a'||sub[i].qua[0]=='A') strcpy(sub[i].qua,qua_a); //将课程性质由'a','b','c'改变成'必修','选修','限选'
if(sub[i].qua[0]=='b'||sub[i].qua[0]=='B') strcpy(sub[i].qua,qua_b);
if(sub[i].qua[0]=='c'||sub[i].qua[0]=='C') strcpy(sub[i].qua,qua_c);
cout<<"授课学时:"; cin>>sub[i].cla_per;
cout<<"上机学时:"; cin>>sub[i].exp_per;
cout<<"学分:"; cin>>sub[i].points;
cout<<"开学学期:"; cin>>sub[i].term;
cout<<"----------------------------------------------"<<endl;
}
FILE *fp_input=fopen("d:\\录入课程信息.txt","wt"); //存储录入课程信息至D:\录入课程信息.txt
for(int i=0;i<n;i++)
{
fprintf(fp_input,"第%d门课程:[编号:%s,名称:%s,性质:%s,授课学时:%d,上机学时:%d,总学时:%d,开学学期: %d]\n\n",i+1,sub[i].num,sub[i].name,sub[i].qua,sub[i].cla_per,sub[i].exp_per,sub[i].cla_per+sub[i].exp_per,sub[i].points,sub[i].term);
}
}
void scan(sub_info sub[],int n) //课程浏览函数
{
cout<<"----------------------------------------------"<<endl;
cout<<" 课程浏览 "<<endl;
cout<<"----------------------------------------------"<<endl;
cout<<setiosflags(ios::right) //对齐输出课程信息
<<setw(5)<<"编号"
<<setw(10)<<"名称"
<<setw(6)<<"性质"
<<setw(9)<<"授课学时"
<<setw(9)<<"上机学时"
<<setw(7)<<"总学时"
<<setw(5)<<"学分"
<<setw(9)<<"开学学期"<<endl;
for(int i=0;i<n;i++)
{
cout<<setiosflags(ios::right)
<<setw(5)<<sub[i].num
<<setw(10)<<sub[i].name
<<setw(6)<<sub[i].qua
<<setw(9)<<sub[i].cla_per
<<setw(9)<<sub[i].exp_per
<<setw(7)<<sub[i].cla_per+sub[i].exp_per
<<setw(5)<<sub[i].points
<<setw(9)<<sub[i].term<<endl;
}
cout<<"----------------------------------------------"<<endl;
}
void search(sub_info sub[],int n) //课程查询函数
{
cout<<"----------------------------------------------"<<endl;
cout<<" 课程查询 "<<endl;
cout<<"----------------------------------------------"<<endl;
cout<<"选择查询方式(1.按课程性质查询,2.按学分查询):"<<endl;
int search_choice;
cin>>search_choice;
cout<<"----------------------------------------------"<<endl;
switch(search_choice)
{
case 1: cout<<"必修课有:"<<endl; //按学科性质查询
for(int i1=0;i1<n;i1++)
if(strcmp(sub[i1].qua,"必修")==0) cout<<sub[i1].name<<endl;
cout<<"---------"<<endl;
cout<<"选修课有:"<<endl;
for(int i2=0;i2<n;i2++)
if(strcmp(sub[i2].qua,"选修")==0) cout<<sub[i2].name<<endl;
cout<<"---------"<<endl;
cout<<"限选课有:"<<endl;
for(int i3=0;i3<n;i3++)
if(strcmp(sub[i3].qua,"限选")==0) cout<<sub[i3].name<<endl;
cout<<"---------"<<endl;
break;
case 2: cout<<"按学分由高到低排列为:"<<endl; //按学科学分由高到低查询
sub_info sub_temp;
for(int i=0;i<n;i++)
for(int j=0;j+i<n;j++)
if(sub[i].points<sub[i+j].points)
{
sub_temp=sub[i];
sub[i]=sub[i+j];
sub[i+j]=sub_temp;
}
for(int k=0;k<n;k++)
cout<<sub[k].name<<endl;
break;
default:cout<<"输入错误,返回主选单"<<endl;
break;
}
}
void select(sub_info sub[],int n) //选课函数
{
cout<<"----------------------------------------------"<<endl;
cout<<" 选课 "<<endl;
cout<<"----------------------------------------------"<<endl;
cout<<"输入要选课程编号(输入'end'结束选课):";
selections selec_sub[100];
for(int i=0;i<n;i++)
{
cin>>selec_sub[i].selec_num;
if(strcmp(selec_sub[i].selec_num,"end")==0)
break;
}
cout<<"所选课程为:"<<endl;
cout<<"----------------------------------------------"<<endl;
cout<<setiosflags(ios::right)
<<setw(5)<<"编号"
<<setw(10)<<"名称"
<<setw(6)<<"性质"
<<setw(9)<<"授课学时"
<<setw(9)<<"上机学时"
<<setw(7)<<"总学时"
<<setw(5)<<"学分"
<<setw(9)<<"开学学期"<<endl;
FILE *fp_select=fopen("d:\\所选课程.txt","wt"); //存储选课信息至D:\所选课程.txt
for(int i1=0;i1<n;i1++)
for(int i2=0;i2<n;i2++)
{
if(strcmp(sub[i2].num,selec_sub[i1].selec_num)==0)
{
cout<<setiosflags(ios::right) //输出所选课程
<<setw(5)<<sub[i2].num
<<setw(10)<<sub[i2].name
<<setw(6)<<sub[i2].qua
<<setw(9)<<sub[i2].cla_per
<<setw(9)<<sub[i2].exp_per
<<setw(7)<<sub[i2].cla_per+sub[i2].exp_per
<<setw(5)<<sub[i2].points
<<setw(9)<<sub[i2].term<<endl;
fprintf(fp_select,"[编号:%s,名称:%s,性质:%s,授课学时:%d,上机学时:%d,总学时:%d,开学学期:%d]\n\ n",sub[i2].num,sub[i2].name,sub[i2].qua,sub[i2].cla_per,sub[i2].exp_per,sub[i2].cla_per+sub[i2].exp_per,sub[i2].points,sub[i2].term);
}
}
cout<<"----------------------------------------------"<<endl;
}
int main()
{
cout<<"**********************************************"<<endl;
cout<<"* 学生选课系统 *"<<endl;
cout<<"**********************************************"<<endl;
int n;
cout<<"输入录入课程数目:";
cin>>n;
sub_info sub[100];
input(sub,n);
cout<<"已将录入课程信息存入D:\\'录入课程信息.txt'文件"<<endl;
cout<<"----------------------------------------------"<<endl;
int choice;
S: cout<<"--------------------主选单--------------------"<<endl;
cout<<"选择操作(课程浏览按1,课程查询按2,选课按3,退出按0):";
cin>>choice;
switch(choice)
{
case 1: scan(sub,n); //课程浏览
cout<<"浏览完毕,返回主选单,";
system("pause");
cout<<"----------------------------------------------"<<endl;
goto S;
case 2: search(sub,n); //课程查询
cout<<"查询完毕,返回主选单,";
system("pause");
cout<<"----------------------------------------------"<<endl;
goto S;
case 3: select(sub,n); //选课
cout<<"已将所选课程信息存入D:\\'所选课程.txt'文件"<<endl;
cout<<"选课完毕,返回主选单,";
system("pause");
cout<<"----------------------------------------------"<<endl;
goto S;
case 0: break;
default:cout<<"输入错误,返回主选单,";
system("pause");
cout<<"----------------------------------------------"<<endl;
goto S;
}
system("pause");
}

以前编的,不知道适合不适合,是C++的,希望有帮助
第5个回答  2008-08-23
我说呢大家怎么这么热心用这么长时间帮人写一个这么长的程序,原来是网上搜的
相似回答