要沉了么 好吧这是我写的好多排序还没写 大家给点建议吧 = =学的不好 求轻喷
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//记录总数
int num=0;
//结构体定义
struct Student
{
int number;
char name[20];
char sex[10];
char nation[10];
int birth[6];
char post[10];
float mark1;//高级语言程序设计
float mark2;//高级语言程序设计实验
float mark3;//高级语言课程设计
float mark4;//面向对象程序设计
float mark5;//面向对象程序设计实验
float average;//平均
float weighted_average;//加权平均
}stu[100];
//显示学生记录
void fp_show1(int i)
{
printf("\t学号\t姓名\t性别\t民族\t出生年月\t行政职务\n");
printf("-------------------------------------------------------------\n");
printf("%d%s%s%s%d%s\n",stu[i].number,stu[i].name,
stu[i].sex,stu[i].nation,stu[i].birth,stu[i].post);
printf("-------------------------------------------------------------\n");
printf("\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t平均成绩\t加权平均成绩\n");
printf("%f%f%f%f%f%f%f\n",stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].average,stu[i].weighted_average);
printf("-------------------------------------------------------------\n");
}
//学生个人平均成绩单
void fp_show2(int i){
printf("\t学号\t姓名\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t平均成绩\t平均成绩排名");
printf("-------------------------------------------------------------\n");
printf("%d%s%f%f%f%f%f%f%d",stu[i].number,stu[i].name,stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].average,&i);
printf("-------------------------------------------------------------\n");
}
//学生个人加权平均成绩单
void fp_show3(int i){
printf("\t学号\t姓名\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t加权绩\t加权成绩排名");
printf("-------------------------------------------------------------\n");
printf("%d%s%f%f%f%f%f%f%d",stu[i].number,stu[i].name,stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].weighted_average,&i);
printf("-------------------------------------------------------------\n");}
//1增加学生记录
void fp_add()
{
while(1)
{
printf("\n请输入学号:\n");
scanf("%s",stu[num].number);
printf("\n请输入姓名:\n");
scanf("%s",stu[num].name);
printf("\n请输入性别:\n");
scanf("%s",stu[num].sex);
printf("\n请输入民族:\n");
scanf("%s",stu[num].nation);
printf("\n请输入出生年月:\n");
scanf("%d",stu[num].birth);
printf("\n请输入行政职务:\n");
scanf("%s",stu[num].post);
printf("\n请输入高级语言程序设计成绩:\n");
scanf("%f",&stu[num].mark1);
printf("\n请输入高级语言程序设计实验成绩:\n");
scanf("%f",&stu[num].mark2);
printf("\n请输入高级语言课程设计成绩:\n");
scanf("%f",&stu[num].mark3);
printf("\n请输入面向对象程序设计成绩:\n");
scanf("%f",&stu[num].mark4);
printf("\n请输入面向对象程序设计实验成绩:\n");
scanf("%f",&stu[num].mark5);
stu[num].average=(stu[num].mark1+stu[num].mark2+stu[num].mark3+stu[num].mark4,stu[num].mark5)/5;
stu[num].weighted_average=stu[num].mark1*0.25+stu[num].mark2*0.125+stu[num].mark3*0.125+stu[num].mark4*0.25+stu[num].mark5*0.125;
num++;
getchar();
printf("\n是否继续添加(y/n)\n");
if(getchar()=='n') break;
}
}
//2修改学生记录
void fp_modify()
{ int a;
int i,t;
while(1)
{
printf("\n请输入学生学号:\n");
scanf("%d",a);
if(a<5300||a>5399){
printf("输入有误,请重新输入:");
return;}
else{
for(t=0;t<num;t++){
if(strcmp(stu[t].number,a)==0)
i=t;
}
if(i>=0){
fp_show1(i);
printf("\n请输入修改后的学号:\n");
scanf("%d",stu[i].number);
printf("\n请输入修改后的姓名:\n");
scanf("%s",stu[i].name);
printf("\n请输入修改后的性别:\n");
scanf("%s",stu[i].sex);
printf("\n请输入修改后的民族:\n");
scanf("%s",stu[i].nation);
printf("\n请输入修改后的出生年月:\n");
scanf("%d",stu[i].average);
printf("\n请输入修改后的行政职务:\n");
scanf("%s",stu[i].post);
printf("\n请输入修改后的高级语言程序设计成绩:\n");
scanf("%f",&stu[i].mark1);
printf("\n请输入修改后的高级语言程序设计实验成绩:\n");
scanf("%f",&stu[i].mark2);
printf("\n请输入修改后的高级语言程序课程设计成绩:\n");
scanf("%f",&stu[i].mark3);
printf("\n请输入修改后的面向对象程序设计成绩:\n");
scanf("%f",&stu[i].mark4);
printf("\n请输入修改后的面向对象程序设计实验成绩:\n");
scanf("%f",&stu[i].mark5);
stu[i].average=(stu[i].mark1+stu[i].mark2+stu[i].mark3+stu[i].mark4+stu[i].mark5)/5;}
else
printf("输入有误,修改失败");
getchar();
printf("\n是否继续修改(y/n)?\n");
if(getchar()=='n') return;
}
}
}
//3删除学生记录
void fp_delete(){
int i,t,a;
while(1){
printf("\n请输入删除的学生学号:\n");
scanf("%d",a);
for(t=0;t<num;t++)//返回下标;
{
if(strcmp(stu[t].number,a)==0)
i=t;
}
if(i>=0)
{
fp_show(i);
getchar();
printf("\n是否真的要删除?(y/n)\n");
if(getchar()=='y')
{
for(t=i;t<num-1;t++)
stu[t]=stu[t+1];
num--;
}
}
else
printf("输入有误,删除失败");
getchar();
printf("\n是否继续删除(y/n)?\n");
if(getchar()=='n') return;
}
}
//4按姓名查询学生记录
void fp_search()
{ void fp_show1(int);
char a[20];
int i,t;
while(1)
{
printf("\n请输入学生姓名:\n");
scanf("%s",a);
for(i=0;i<num;i++)
{
if(strcmp(stu[i].name,a)==0)
t=i;
}
if(t>=0)
fp_show(t);
else
printf("失败");
getchar();
printf("\n返回/继续 y/n\n");
if(getchar()=='y') break;
}
}
//学号顺序查询
void fp_show4(int){
printf("\t学号\t姓名\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t平均成绩\t加权平均成绩");
printf("-------------------------------------------------------------\n");
printf("\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t平均成绩\t加权平均成绩\n");
printf("%f%f%f%f%f%f%f\n",stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].average,stu[i].weighted_average);
}
//5按平均成绩排序
void fp_show5(int)
{int i,j;
struct Student temp;
for(i=0;i<num-1;i++)//冒泡法排序
for(j=0;j<num-1-i;j++)
if(stu[i].average>stu[i+1].average)
{ temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=temp;
}
//输出成绩排序
printf("\t学号\t姓名\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t平均成绩\t加权平均成绩\n");
printf("-------------------------------------------------------------\n");
for(i=num-1;i>=0;i--){
printf("%d%s%f%f%f%f%f%f%f\n",stu[i].number,stu[i].name,
stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].weighted_average,stu[i].average);
}
getchar();
printf("\n请输入y返回\n");
if(getchar()=='y') return;
}
//按加权平均成绩排序
void fp_show6(int)
{int i,j;
struct Student temp;
for(i=0;i<num-1;i++)//冒泡法排序
for(j=0;j<num-1-i;j++)
if(stu[i].weighted_average>stu[i+1].weighted_average)
{ temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=temp;
}
//输出成绩排序
printf("\t学号\t姓名\t高级语言程序设计\t高级语言程序设计实验\t高级语言课程设计\t面向对象程序设计\t面向对象程序设计实验\t加权平均成绩\n");
printf("-------------------------------------------------------------\n");
for(i=num-1;i>=0;i--){
printf("%d%s%f%f%f%f%f%f%f\n",stu[i].number,stu[i].name,
stu[i].mark1,stu[i].mark2,stu[i].mark3,stu[i].mark4,stu[i].mark5,stu[i].weighted_average);
}
getchar();
printf("\n请输入y返回\n");
if(getchar()=='y') return;
}
//单科优秀成绩查询
void fp_show7(int){
for(i=0;i<num;i++){
for(j=0;j<num-1-i;j++)
if(stu[i].mark>stu[i+1].mark)
{ temp=stu[i];
stu[i]=stu[i+1];
stu[i+1]=temp;
}
printf("\t学号\t姓名\t成绩");
printf("-------------------------------------------------------------\n");
printf("%d%s%f",stu[i].number,stu[i].name,stu[i].mark);
}
}
//单科成绩排序
void fp_show8(int){
for(i=0;i<num;i++){
if(stu[i].mark>89){
printf("\t学号\t姓名\t行政职务\t单科成绩");
printf("-------------------------------------------------------------\n");
printf("%d%s%s%f",stu[i].number,stu[i].name,stu[i].post,stu[i].mark);}
}
//打开文件
void fp_open()
{ FILE *fp;
int i;
if((fp=fopen("database.txt","rb"))==NULL)
{
printf("打开文件失败;\n");
return;
}
if(fread(&num,sizeof(int),1,fp)!=1)
{
num=0;
}else
{
for(i=0;i<num;i++)
fread(&stu[i],sizeof(struct Student),1,fp);
}
fclose(fp);
}
//写进数据
void fp_write()
{
FILE *fp;
int i;
if((fp=fopen("database.txt","wb"))==NULL)
{
printf("打开文件失败;\n");
return;
}
if(fwrite(&num,sizeof(int),1,fp)!=1)
{
printf("写入错误;\n");
}
{for(i=0;i<num;i++)
if(fwrite(&stu[i],sizeof(struct Student),1,fp)!=1)
printf("写入错误\n");
}
fclose(fp);
}
//主程序
int main()
{ int choice;
//打开文件
fp_open();
while(1)
{
printf("\n\n ***************欢迎使用学生成绩管理系统***************\n\n\n");
printf("\t\t☆\t1.增加学生信息\t☆\n");
printf("\t\t☆\t2.修改学生信息\t☆\n");
printf("\t\t☆\t3.删除学生信息\t☆\n");
printf("\t\t☆\t4.查询学生信息\t☆\n");
printf("\t\t☆\t5.成绩排序信息\t☆\n");
printf("\t\t☆\t6.保存并退出 \t☆\n\n\n");
printf(" ******************************************************\n");
printf("◇请选择(1-6):◇ \n");
scanf("%d",&choice);
switch(choice)
{
case 1 : fp_add(); break;
case 2 : fp_modify(); break;
case 3 : fp_delete(); break;
case 4 :
int i,a;
printf(" *******************************************************\n\n");
printf("\t☆\t1.查询学生个人信息 \t☆\n");
printf("\t☆\t2.查询学生个人平均成绩单\t☆\n");
printf("\t☆\t3.查询学生个人加权成绩单\t☆\n");
printf("\t☆\t4.返回上一层 \t☆\n\n");
printf(" *******************************************************\n");
printf("◇请选择(1-4):◇ \n");
scanf("%d",&i);
printf("请输入所查询学生的学号:\n");
scanf("%d",&a);
switch(i){
case 1:void fp_show1(int a);break;
case 2:void fp_show2(int a);break;
case 3:void fp_show3(int a);break;
case 4:exit(0);break;
}break;
case 5 :
int n;
printf(" ***************************************************\n\n");
printf("\t☆\t1.总成绩查询 \t☆\n");
printf("\t☆\t2.班级成绩查询 \t☆\n");
printf("\t☆\t3.单科优秀成绩查询\t☆\n");
printf("\t☆\t4.返回上一层 \t☆\n\n");
printf(" ***************************************************\n");
printf("◇请选择(1-4):◇ \n");
scanf("%d",&n);
switch(n){
case 1:
int j;
printf(" *****************************************************\n\n");
printf("\t☆\t1.总成绩学号顺序查询\t☆\n");
printf("\t☆\t2.总成绩平均成绩排名\t☆\n");
printf("\t☆\t3.总成绩加权平均排名\t☆\n");
printf("\t☆\t4.返回上一层 \t☆\n\n");
printf(" *****************************************************\n");
printf("◇请选择(1-4):◇ \n");
scanf("%d",&j);
switch(j){
case 1:fp_show4();break;
case 2:fp_show5();break;
case 3:fp_show6();break;
case 4:exit(0);break;
}
case 2:
int k,a;
printf(" ***************************************************\n\n");
printf("\t☆\t1.班级学号顺序查询 \t☆\n");
printf("\t☆\t2.班级平均成绩排名 \t☆\n");
printf("\t☆\t3.班级加权平均成绩排名\t☆\n");
printf("\t☆\t4.班级单科成绩排名 \t☆\n");
printf("\t☆\t5.返回上一层 \t☆\n\n");
printf(" ***************************************************\n");
printf("◇请选择(1-5):◇ \n");
scanf("%d",&k);
printf("请输入所查的班级:\n");
scanf("%d",a);
switch(k){
case 1:fp_show4(int a);break;
case 2:fp_show5(int a);break;
case 3:fp_show6(int a);break;
case 4:fp_show8(int a);break;
case 5:exit(0);break;
}
case 3:fp_show7(int);break;
case 4:exit(0);break;
}break;
default: exit(0);break;
}
//关闭并写入数据
fp_write();
}
return 0;
}