| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6712 人关注过本帖
标题:小女就要交作业了.学生成绩管理系统.大家帮帮忙好吗?我都要哭出来了..
只看楼主 加入收藏
seeker
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2005-6-5
收藏
得分:0 

贴出来供大家参考,这是我当年的作业. /*---------------------------------------------------------------*/ /*----{ 作者:seeker 班级: 2003级软件(2)班 学号:21号 }---------*/ /*---------------------------------------------------------------*/ /* 2004年6月16日 ◆ 未知的征程,注定的辉煌! ◆ */ /*---------------------------------------------------------------*/ /* 本程序根据问题的功能要求综合编写在一起,能实现链表的 */ /* 创建,删除,插入,输出,排序,保存,读写等操作。具体功能描 */ /* 述程序的运行菜单和各自的子菜单。 */ /* */ /*------------本程序在vc++6.0环境下编译成功。--------------------*/

#include <malloc.h> #include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct scorenode) #define DEBUG #include <string.h> struct scorenode /*定义结构体*/ {int number;/*学号*/ char name[10];/*姓名*/ char sex[1];/* 性别*/ int age; /*年龄*/ float yuwen;/*语文成绩*/ float yingyu;/*英语成绩*/ float shuxue;/*数学成绩 */ struct scorenode *next; }; typedef struct scorenode score; int n,k; /*n,k,为全局变量,本程序中的函数均可以使用它*/ /*================================================================================================================================*/ /**********************************************************/ /*** 函数creat0221,功能: ****/ /*** 创建链表,此函数带回一个指向链表头的指针。 ****/ /*** 具有按学号从小到大自动排序功能,实现了题目的要求。****/ /**********************************************************/ score *creat0221(void) { score*head; score *p1,*p2,*p3,*max; int i,j; float fen; char t[10]; n=0; p1=p2=p3=(score *)malloc(LEN);/*开辟一个新单元*/ head=p3; printf("请输入学生资料,输0退出!\n"); repeat1: printf("请输入学生学号(学号应大于0):");/*输入学号,学号应大于0*/ scanf("%d",&p1->number); while(p1->number<0) {getchar(); printf("输入错误,请重新输入学生学号:"); scanf("%d",&p1->number); } /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/ if(p1->number==0) goto end; /*当输入的学号为0时,转到末尾,结束创建链表*/ else { p3=head; if(n>0) {for(i=0;i<n;i++) {if(p1->number!=p3->number) p3=p3->next; else {printf("学号重复,请重输!\n"); goto repeat1; /*当输入的学号已经存在,程序报错,返回前面重新输入*/ } } } } printf("请输入学生姓名:");/*输入学生姓名*/ scanf("%s",&p1->name);

printf("请输入性别(m或f):");/*输入性别*/ scanf("%s",p1->sex);

printf("请输入年龄(0~100):");/*输入年龄*/ scanf("%d",&p1->age); while(p1->age<0||p1->age>100) {getchar(); printf("输入错误,请重新输入年龄");/*输入错误,重新输入年龄直到正确为止*/ scanf("%d",&p1->age); } printf("请输入语文成绩(0~100):");/*输入语文成绩,成绩应在0-100*/ scanf("%f",&p1->yuwen); while(p1->yuwen<0||p1->yuwen>100) {getchar(); printf("输入错误,请重新输入语文成绩");/*输入错误,重新输入语文成绩直到正确为止*/ scanf("%f",&p1->yuwen); }

printf("请输入英语成绩(0~100):");/*输入英语成绩,成绩应在0-100*/ scanf("%f",&p1->yingyu); while(p1->yingyu<0||p1->yingyu>100) {getchar(); printf("输入错误,请重新输入英语成绩");/*输入错误,重新输入英语成绩直到正确为止*/ scanf("%f",&p1->yingyu); }

printf("请输入数学成绩(0~100):");/*输入数学成绩,成绩应在0-100*/ scanf("%f",&p1->shuxue); while(p1->shuxue<0||p1->shuxue>100) {getchar(); printf("输入错误,请重新输入数学成绩");/*输入错误,重新输入数学成绩直到正确为止*/ scanf("%f",&p1->shuxue); }

head=NULL; while(p1->number!=0) { n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(score *)malloc(LEN); printf("请输入学生资料,输0退出!\n"); repeat2: printf("请输入学生学号(学号应大于0):"); scanf("%d",&p1->number);/*输入学号,学号应大于0*/ while(p1->number<0) {getchar(); printf("输入错误,请重新输入学生学号:"); scanf("%d",&p1->number); } /*输入学号为字符或小于0时,程序报错,提示重新输入学号*/ if(p1->number==0) goto end;/*当输入的学号为0时,转到末尾,结束创建链表*/ else { p3=head; if(n>0) {for(i=0;i<n;i++) {if(p1->number!=p3->number) p3=p3->next; else {printf("学号重复,请重输!\n"); goto repeat2; }/*当输入的学号已经存在,程序报错,返回前面重新输入*/ } } } printf("请输入学生姓名:"); scanf("%s",&p1->name);/*输入学生姓名*/ printf("请输入性别(m或f):");/*输入性别*/ scanf("%s",p1->sex);

printf("请输入年龄(0~100):");/*输入年龄*/ scanf("%d",&p1->age); while(p1->age<0||p1->age>100) {getchar(); printf("输入错误,请重新输入年龄");/*输入错误,重新输入年龄直到正确为止*/ scanf("%f",&p1->age); }

printf("请输入语文成绩(0~100):"); scanf("%f",&p1->yuwen);/*输入语文成绩,成绩应在0-100*/ while(p1->yuwen<0||p1->yuwen>100) {getchar(); printf("输入错误,请重新输入语文成绩"); scanf("%f",&p1->yuwen);/*输入错误,重新输入语文成绩直到正确为止*/ } printf("请输入英语成绩(0~100):"); scanf("%f",&p1->yingyu);/*输入英语成绩,成绩应在0-100*/ while(p1->yingyu<0||p1->yingyu>100) {getchar(); printf("输入错误,请重新输入英语成绩"); scanf("%f",&p1->yingyu);/*输入错误,重新输入英语成绩直到正确为止*/ } printf("请输入数学成绩(0~100):"); scanf("%f",&p1->shuxue);/*输入数学成绩,成绩应在0-100*/ while(p1->shuxue<0||p1->shuxue>100) {getchar(); printf("输入错误,请重新输入数学成绩"); scanf("%f",&p1->shuxue);/*输入错误,重新输入数学成绩直到正确为止*/ } }

end: p1=head; p3=p1; for(i=1;i<n;i++) { for(j=i+1;j<=n;j++) { max=p1; p1=p1->next; if(max->number>p1->number) { k=max->number; max->number=p1->number; p1->number=k; /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/ strcpy(t,max->name); strcpy(max->name,p1->name); strcpy(p1->name,t); /*交换前后结点中的姓名,使之与学号相匹配*/

strcpy(t,max->sex); strcpy(max->sex,p1->sex); strcpy(p1->sex,t); /*交换前后结点中的性别,使之与学号相匹配*/ k=max->age; max->age=p1->age; p1->age=k; /*交换前后结点中的年龄,使之与学号相匹配*/ fen=max->yuwen; max->yuwen=p1->yuwen; p1->yuwen=fen; /*交换前后结点中的语文成绩,使之与学号相匹配*/

fen=max->yingyu; max->yingyu=p1->yingyu; p1->yingyu=fen; /*交换前后结点中的英语成绩,使之与学号相匹配*/ fen=max->shuxue; max->shuxue=p1->shuxue; p1->shuxue=fen; /*交换前后结点中的数学成绩,使之与学号相匹配*/ } } max=head;p1=head;/*重新使max,p指向链表头*/ } p2->next=NULL;/*链表结尾*/ printf("输入的学生数为:%d个!\n",n); return(head); } /*===========待续=====*/


我相信总有一片天空属于我!http://myseeker. E-Mail:lwqcny@
2005-10-12 14:55
seeker
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2005-6-5
收藏
得分:0 

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /* 函数load0221,功能:从文件读入学生记录. */ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ score *load0221(score *head)

{ score *p1,*p2; int m=0; char filepn[20]; FILE *fp; printf("请输入文件路径及文件名:"); scanf("%s",filepn);/*输入文件路径及名称*/ if((fp=fopen(filepn,"r+"))==NULL) { printf("不能打开文件!\n"); return 0; } fscanf(fp," 学生管理系统 \n"); fscanf(fp," 作者:seeker 班级:03级软件(2)班 学号:21 \n"); fscanf(fp,"----------------------------------------------\n"); fscanf(fp,"|学号\t|姓名\t|性别\t|年龄\t|语文\t|英语\t|数学\t|\n"); fscanf(fp,"----------------------------------------------\n");/*读入表格域*/ printf(" 学生管理系统 \n"); printf(" 作者:seeker 班级:03级软件(2)班 学号:21 \n"); printf("----------------------------------------------\n"); printf("|学号\t|姓名\t|性别\t|年龄\t|语文\t|英语\t|数学\t|\n"); printf("----------------------------------------------\n");/*打印表格域*/ m=m+1; if(m==1) { p1=(score *)malloc(LEN); /*开辟一个新单元*//*文件读入与显示*/ fscanf(fp,"%d%s%s%d%f%f%f",&p1->number,p1->name,p1->sex,&p1->age,&p1->yuwen,&p1->yingyu,&p1->shuxue); printf("|%d\t|%s\t|%s\t|%d\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->sex,p1->age,p1->yuwen,p1->yingyu,p1->shuxue); head=NULL; do { n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(score *)malloc(LEN); /*开辟一个新单元*/ /*文件读入与显示*/ fscanf(fp,"%d%s%s%d\t%f%f%f\n",&p1->number,p1->name,p1->sex,&p1->age,&p1->yuwen,&p1->yingyu,&p1->shuxue); printf("|%d\t|%s\t|%s\t|%d\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->sex,p1->age,p1->yuwen,p1->yingyu,p1->shuxue); } while(!feof(fp)); p2->next=p1; p1->next=NULL; n=n+1; } printf("----------------------------------------------\n");/*表格下线*/ fclose(fp);/*结束读入,关闭文件*/ return (head); }

/*================================================================================================================================*/ /********************************************************************/ /*** 函数add0221, 功能:追加学生资料,并且将所有学生资料按学号排序 ***/ /********************************************************************/ score *add0221(score *head,score *stu) {score *p0,*p1,*p2,*p3,*max; int i,j; float fen; char t[10];

p3=stu=(score *)malloc(LEN);/*开辟一个新单元*/ printf("\n输入要增加的学生的资料!"); repeat4: printf("请输入学生学号(学号应大于0):"); scanf("%d",&stu->number); /*输入学号,学号应大于0*/ while(stu->number<0) {getchar(); printf("输入错误,请重新输入学生学号:"); scanf("%d",&stu->number);/*输入错误,重新输入学号*/ } if(stu->number==0) goto end2;/*当输入的学号为0时,转到末尾,结束追加*/ else { p3=head; if(n>0) {for(i=0;i<n;i++) {if(stu->number!=p3->number) p3=p3->next; else {printf("学号重复,请重输!\n"); goto repeat4; /*当输入的学号已经存在,程序报错,返回前面重新输入*/ } } } } printf("输入学生姓名:");/*输入学生姓名*/ scanf("%s",stu->name); printf("请输入性别(m或f):");/*输入性别*/ scanf("%S",stu->sex); printf("请输入年龄(0~100):");/*输入年龄*/ scanf("%d",&stu->age); while(stu->age<0||stu->age>100) {getchar(); printf("输入错误,请重新输入年龄");/*输入错误,重新输入年龄直到正确为止*/ scanf("%d",&stu->age);}

printf("请输入语文成绩(0~100):"); scanf("%f",&stu->yuwen); /*输入语文成绩,成绩应在0-100*/ while(stu->yuwen<0||stu->yuwen>100) {getchar(); printf("输入错误,请重新输入语文成绩"); scanf("%f",&stu->yuwen);} /*输入错误,重新输入语文成绩直到正确为止*/ printf("请输入英语成绩(0~100):"); scanf("%f",&stu->yingyu);/*输入英语成绩,成绩应在0-100*/ while(stu->yingyu<0||stu->yingyu>100) {getchar(); printf("输入错误,请重新输入英语成绩"); scanf("%f",&stu->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/ printf("请输入数学成绩(0~100):"); scanf("%f",&stu->shuxue);/*输入数学成绩,成绩应在0-100*/ while(stu->shuxue<0||stu->shuxue>100) {getchar(); printf("输入错误,请重新输入数学成绩"); scanf("%f",&stu->shuxue);/*输入错误,重新输入数学成绩直到正确为止*/ } p1=head; p0=stu; if(head==NULL) {head=p0;p0->next=NULL;}/*当原来链表为空时,从首结点开始存放资料*/ else/*原来链表不为空*/ { if(p1->next==NULL)/*找到原来链表的末尾*/ { p1->next=p0; p0->next=NULL;/*将它与新开单元相连接*/ } else { while(p1->next!=NULL)/*还没找到末尾,继续找*/ { p2=p1;p1=p1->next; } p1->next=p0; p0->next=NULL; } } n=n+1; p1=head; p0=stu; for(i=1;i<n;i++) { for(j=i+1;j<=n;j++) { max=p1; p1=p1->next; if(max->number>p1->number) { k=max->number; max->number=p1->number; p1->number=k; /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/ strcpy(t,max->name); strcpy(max->name,p1->name); strcpy(p1->name,t); /*交换前后结点中的姓名,使之与学号相匹配*/

strcpy(t,max->sex); strcpy(max->sex,p1->sex); strcpy(p1->sex,t); /*交换前后结点中的性别,使之与学号相匹配*/

k=max->age; max->age=p1->age; p1->age=k; /*交换前后结点中的年龄,使之与学号相匹配*/

fen=max->yuwen; max->yuwen=p1->yuwen; p1->yuwen=fen; /*交换前后结点中的语文成绩,使之与学号相匹配*/ fen=max->yingyu; max->yingyu=p1->yingyu; p1->yingyu=fen; /*交换前后结点中的英语成绩,使之与学号相匹配*/ fen=max->shuxue; max->shuxue=p1->shuxue; p1->shuxue=fen; /*交换前后结点中的数学成绩,使之与学号相匹配*/ }

} max=head;p1=head;/*重新使max,p指向链表头*/ } end2: printf("现在的学生数为:%d个!\n",n); return(head); } /*================================================================================================================================*/ /***************************************************/ /********* 函数search0221,功能:查询学生成绩********/ /***************************************************/ score *search0221(score *head) {int number; score *p1,*p2; printf("输入要查询的学生的学号,"); scanf("%d",&number); while(number!=0) { if(head==NULL) {printf("\n没有任何学生资料!\n"); return(head); } printf("--------------------------------------------------\n"); printf("|学号\t|姓名\t|性别\t|年龄\t|语文\t|英语\t|数学\t|\n"); printf("--------------------------------------------------\n");/*打印表格域*/ p1=head; while(number!=p1->number&&p1->next!=NULL) {p2=p1;p1=p1->next;} if(number==p1->number) {printf("|%d\t|%s\t|%s\t|%d\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->sex,p1->age,p1->yuwen,p1->yingyu,p1->shuxue); printf("--------------------------------------------------\n");/*打印表格域*/ } else printf("%d不存在此学生!\n",number); printf("输入要查询的学生的学号,"); scanf("%d",&number); } printf("已经退出了!\n"); return(head); }

/*==================================================================================================================================*/ /***************************************************/ /********* 函数del0221,功能:删除学生资料 *********/ /***************************************************/ score *del0221(score *head) { score *p1,*p2; int number; printf("输入要删除的学生的学号(输入0时退出):"); scanf("%d",&number); getchar(); while(number!=0)/*输入学号为0时退出*/ { if(head==NULL) { printf("\n没有任何学生资料!\n"); return(head); }

p1=head; while(number!=p1->number&&p1->next!=NULL) /*p1指向的不是所要找的首结点,并且后面还有结点*/ { p2=p1;p1=p1->next; } /*p1后移一个结点*/ if(number==p1->number) /*找到了*/ { if(p1==head) head=p1->next; /*若p1指向的是首结点,把地二个结点地址赋予head*/ else p2->next=p1->next; /*否则将下一个结点地址 赋给前一结点地址*/ printf("删除:%d\n",number);n=n-1; } else printf("%d不存在此学生!\n",number); /*找不到该结点*/ printf("输入要删除的学生的学号:"); scanf("%d",&number); getchar(); } #ifdef DEBUG printf("已经退出了!\n"); #endif printf("现在的学生数为:%d个!\n",n); return(head); }

/*=========待续=========================*/


我相信总有一片天空属于我!http://myseeker. E-Mail:lwqcny@
2005-10-12 14:57
seeker
Rank: 1
等 级:新手上路
帖 子:172
专家分:0
注 册:2005-6-5
收藏
得分:0 

/*仅供参考,修改就能实现根多功能了*/ /**********************************************************/ /********** 函数print0221,功能:显示学生成绩 **************/ /**********************************************************/ void print0221(score *head) { score *p; if(head==NULL) {printf("\n没有任何学生资料!\n");} else {printf("%d\n",n); printf("---------------------------------------------------\n"); printf("|学号\t|姓名\t|性别\t|年龄\t|语文\t|英语\t|数学\t|\n"); printf("---------------------------------------------------\n");/*打印表格域*/ p=head; do {printf("|%d\t|%s\t|%s\t|%d\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->sex,p->age,p->yuwen,p->yingyu,p->shuxue); printf("-----------------------------------------------------\n");/*打印表格域*/ p=p->next;}while (p!=NULL);/*打印完成了*/ } } /*===============================================================================================================================*/ /**************************************************************/ /******** 函数statistics0221,功能:统计学生成绩 ***************/ /**************************************************************/ score *statistics0221(score *head) { float sum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min; score *p; int x,y=0,i=0; p=head; printf("1个人总分和平均分\t2单科平均分\t3总分最高分\t4总分最低分\n"); scanf("%d",&x); getchar();

switch(x)/*用switch语句实现功能选择*/ { case 1: if(head==NULL) {printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/ else { printf("-------------------------------------------------------------------\n"); printf("|学号\t|姓名\t|性别\t|年龄\t|语文\t|英语\t|数学\t|总分\t|平均分\t|\n"); printf("----------------------------------------------------------------\n");/*打印表格域*/ while(p!=NULL) { sum1=p->yuwen+p->yingyu+p->shuxue; /*计算个人总分*/ ave1=sum1/3;/*计算个人平均分*/ printf("|%d\t|%s\t|%s\t|%d\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|\n",p->number,p->name,p->sex,p->age,p->yuwen,p->yingyu,p->shuxue,sum1,ave1); printf("------------------------------------------------------------------\n");/*打印表格域*//*打印结果*/ p=p->next;} } return(head);break;

case 2: if(head==NULL) {printf("\n没有任何学生资料!\n");/*链表为空*/ return(head); } while(p!=NULL) { sum1=sum1+p->yuwen; sum2=sum2+p->yingyu; sum3=sum3+p->shuxue;/*计算总分*/ y=y+1; ave1=sum1/y; ave2=sum2/y; ave3=sum3/y;/*计算平均分*/ p=p->next;/*使p指向下一个结点*/ } printf("语文平均分是%.1f\n",ave1); printf("英语平均分是%.1f\n",ave2); printf("数学平均分是%.1f\n",ave3);/*打印结果*/ return(head); break; case 3:if(head==NULL) {printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/ max=p->yuwen+p->yingyu+p->shuxue; while(i<n) { i=i+1; sum1=p->yuwen+p->yingyu+p->shuxue; /*计算个人总分*/ if(max<sum1) max=sum1; p=p->next; } printf("总分最高分:%.1f",max); printf("\n"); return(head); break;

case 4: if(head==NULL) {printf("\n没有任何学生资料!\n");return(head);}/*链表为空*/ while(p!=NULL) { min=p->yuwen+p->yingyu+p->shuxue; while(p!=NULL) {sum2=p->yuwen+p->yingyu+p->shuxue; if(min>sum2) min=sum2; p=p->next; } } printf("总分最低分:%.1f",min); printf("\n"); return(head); break; default :printf("输入错误,请重试!\n"); } return(head); }

/*===============================================================================================================================*/ /******************************************************/ /******** 函数save0221,功能:保存学生的资料 ***********/ /******************************************************/ save0221(score *p1) { FILE *fp; char filepn[20];/*用来存放文件保存路径以及文件名*/ printf("请输入文件路径及文件名:"); scanf("%s",filepn); if((fp=fopen(filepn,"w+"))==NULL) { printf("不能打开文件!\n"); return 0; }

fprintf(fp," 学生管理系统 \n"); fprintf(fp," 作者:seeker 班级:03级软件(2)班 学号:21 \n"); fprintf(fp,"----------------------------------------------\n"); fprintf(fp,"|学号\t|姓名\t|性别\t|年龄\t|语文\t|英语\t|数学\t|\n"); fprintf(fp,"----------------------------------------------\n"); /*打印表格域*/ while(p1!=NULL) { fprintf(fp,"%d\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t\n",p1->number,p1->name,p1->sex,p1->age,p1->yuwen,p1->yingyu,p1->shuxue); p1=p1->next;/*下移一个结点*/ } fclose(fp); printf("文件已经保存!\n"); return 0; } /*================================================================================================================================*/ /**************************************************************/ /****** 定义排序函数。此函数带回一个指向链表头的指针 **********/ /**************************************************************/ score *taxis0221(score *head) { score *p,*max; int i,j,x; float fen; char t[10]; if(head==NULL) {printf("\n没有任何学生资料,请先建立链表!\n");return(head);}/*链表为空*/ max=p=head; for(i=0;i<80;i++) printf("*"); printf("1按学生学号排序\t2按学生姓名排序\t3按语文成绩排序\n"); printf("4按英语成绩排序\t5按数学成绩排序\t\n"); for(i=0;i<80;i++) printf("*"); printf("请选择操作:"); scanf("%d",&x);/*选择操作*/ getchar(); switch(x) /*用switch语句实现功能选择*/ {case 1 : for(i=1;i<n;i++) { for(j=i+1;j<=n;j++) { max=p; p=p->next; if(max->number>p->number) { k=max->number; max->number=p->number; p->number=k; /*交换前后结点中的学号值,使得学号大者移到后面的结点中*/ strcpy(t,max->name); strcpy(max->name,p->name); strcpy(p->name,t); /*交换前后结点中的姓名,使之与学号相匹配*/

strcpy(t,max->sex); strcpy(max->sex,p->sex); strcpy(p->sex,t); /*交换前后结点中的性别,使之与学号相匹配*/

k=max->age; max->age=p->age; p->age=k; /*交换前后结点中的年龄,使之与学号相匹配*/

fen=max->yuwen; max->yuwen=p->yuwen; p->yuwen=fen; /*交换前后结点中的语文成绩,使之与学号相匹配*/ fen=max->yingyu; max->yingyu=p->yingyu; p->yingyu=fen; /*交换前后结点中的英语成绩,使之与学号相匹配*/ fen=max->shuxue; max->shuxue=p->shuxue; p->shuxue=fen; /*交换前后结点中的数学成绩,使之与学号相匹配*/ }

} max=head;p=head;/*重新使max,p指向链表头*/ } print0221(head);break;/*打印值排序后的链表内容*/

case 2 : for(i=1;i<n;i++) { for(j=i+1;j<=n;j++) { max=p; p=p->next; if(strcmp(max->name,p->name)>0)/*strcmp=>字符串比较函数*/ { strcpy(t,max->name);/*strcpy=>字符串复制函数*/ strcpy(max->name,p->name); strcpy(p->name,t); /*交换前后结点中的姓名,使得姓名字符串的值大者移到后面的结点中*/ k=max->number; max->number=p->number; p->number=k; /*交换前后结点中的学号值,使之与姓名相匹配*/ strcpy(t,max->sex); strcpy(max->sex,p->sex); strcpy(p->sex,t); /*交换前后结点中的性别,使之与姓名相匹配*/

k=max->age; max->age=p->age; p->age=k; /*交换前后结点中的年龄,使之与姓名相匹配*/

fen=max->yuwen; max->yuwen=p->yuwen; p->yuwen=fen; /*交换前后结点中的语文成绩,使之与姓名相匹配*/

fen=max->yingyu; max->yingyu=p->yingyu; p->yingyu=fen; /*交换前后结点中的英语成绩,使之与姓名相匹配*/

fen=max->shuxue; max->shuxue=p->shuxue; p->shuxue=fen; /*交换前后结点中的数学成绩,使之与姓名相匹配*/ } } p=head; max=head; } print0221(head);break; case 3 : for(i=1;i<n;i++) {for(j=i+1;j<=n;j++) {max=p; p=p->next; if(max->yuwen>p->yuwen) { fen=max->yuwen; max->yuwen=p->yuwen; p->yuwen=fen; /*交换前后结点中的语文成绩,使得语文成绩高者移到后面的结点中*/ k=max->number; max->number=p->number; p->number=k; /*交换前后结点中的学号,使之与语文成绩相匹配*/

strcpy(t,max->name); strcpy(max->name,p->name); strcpy(p->name,t); /*交换前后结点中的姓名,使之与语文成绩相匹配*/

strcpy(t,max->sex); strcpy(max->sex,p->sex); strcpy(p->sex,t); /*交换前后结点中的性别,使之与语文成绩相匹配*/ k=max->age; max->age=p->age; p->age=k; /*交换前后结点中的年龄,使之与语文成绩相匹配*/ fen=max->yingyu; max->yingyu=p->yingyu; p->yingyu=fen; /*交换前后结点中的英语成绩,使之与语文成绩相匹配*/

fen=max->shuxue; max->shuxue=p->shuxue; p->shuxue=fen; /*交换前后结点中的数学成绩,使之与语文成绩相匹配*/ } } p=head; max=head; } print0221(head);break; case 4 : for(i=1;i<n;i++) {for(j=i+1;j<=n;j++) {max=p; p=p->next; if(max->yingyu>p->yingyu) { fen=max->yingyu; max->yingyu=p->yingyu; p->yingyu=fen; /*交换前后结点中的英语成绩,使得英语成绩高者移到后面的结点中*/ k=max->number; max->number=p->number; p->number=k; /*交换前后结点中的学号,使之与英语成绩相匹配*/

strcpy(t,max->name); strcpy(max->name,p->name); strcpy(p->name,t); /*交换前后结点中的姓名,使之与英语成绩相匹配*/ strcpy(t,max->sex); strcpy(max->sex,p->sex); strcpy(p->sex,t); /*交换前后结点中的性别,使之与英语成绩相匹配*/

k=max->age; max->age=p->age; p->age=k; /*交换前后结点中的年龄,使之与英语成绩相匹配*/

fen=max->yuwen; max->yuwen=p->yuwen; p->yuwen=fen; /*交换前后结点中的语文成绩,使之与英语成绩相匹配*/ fen=max->shuxue; max->shuxue=p->shuxue; p->shuxue=fen; /*交换前后结点中的数学成绩,使之与英语成绩相匹配*/ } } p=head; max=head; } print0221(head); break;

case 5 : for(i=1;i<n;i++) {for(j=i+1;j<=n;j++) {max=p; p=p->next; if(max->shuxue>p->shuxue) { fen=max->shuxue; max->shuxue=p->shuxue; p->shuxue=fen; /*交换前后结点中的数学成绩,使得数学成绩高者移到后面的结点中*/

k=max->number; max->number=p->number; p->number=k; /*交换前后结点中的学号,使之与数学成绩相匹配*/

strcpy(t,max->name); strcpy(max->name,p->name); strcpy(p->name,t); /*交换前后结点中的姓名,使之与数学成绩相匹配*/ strcpy(t,max->sex); strcpy(max->sex,p->sex); strcpy(p->sex,t); /*交换前后结点中的性别,使之与数学成绩相匹配*/

k=max->age; max->age=p->age; p->age=k; /*交换前后结点中的年龄,使之与数学成绩匹配*/ fen=max->yuwen; max->yuwen=p->yuwen; p->yuwen=fen; /*交换前后结点中的语文成绩,使之与数学成绩相匹配*/

fen=max->yingyu; max->yingyu=p->yingyu; p->yingyu=fen; /*交换前后结点中的英语成绩,使之与数学成绩相匹配*/ } } p=head; max=head; } print0221(head); break;

default :printf("输入错误,请重试! \n"); } return (0); }

/*====================================================================================================*/

/*================================================================================================================================*/ /*******************************************************/ /******* 函数menu0221,功能:菜单选择界面 **************/ /*******************************************************/ int menu0221(k) { int i; printf("\n"); printf("\n\t\t\t\t 学生管理系统\n"); printf("\t\t\t作者:seeker 班级:03级软件(2)班 学号:21\n"); for(i=0;i<80;i++) printf("*"); printf("1输入学生的资料\t\t\t2从文件调入资料\t\t\t3查询学生的成绩\n"); printf("4删除学生的资料\t\t\t5追加学生的资料\t\t\t6显示学生的成绩\n"); printf("7统计学生的成绩\t\t\t8保存输入的资料\t\t\t9对成绩进行排序\n"); /*菜单选择界面*/ for(i=0;i<80;i++) printf("*"); printf("欢迎进入学生管理系统,请选择您所要的操作(选择(0)退出):"); scanf("%d",&k);/*选择操作*/ getchar(); return (k); }

/*============================================================================================*/ /**********************************************************************************/ /***** 主函数main,功能: **********/ /***** 通过调用creat,search,del,add,print,ststistics,save,taxis等函数,**********/ /***** 实现两个问题的功能要求 。 **********/ /**********************************************************************************/ main() {score *head=0,*stu=0; while(1) {k=menu0221(k); switch(k)/*用switch语句实现功能选择*/ {case 1: head=creat0221();break;/*调用创建链表函数*/ case 2: head=load0221(head);break;/*从文件调入记录函数*/ case 3: head=search0221(head);break;/*调用成绩查询函数*/ case 4: head=del0221(head); break;/*调用删除学生资料函数*/ case 5: head=add0221(head,stu);break;/*调用追加学生资料函数*/ case 6: print0221(head); break;/*调用显示学生资料函数*/ case 7: statistics0221(head); break;/*调用统计函数*/ case 8: save0221(head);break;/*调用保存函数*/ case 9: taxis0221(head);break;/*调用排序函数*/ case 0: exit(0);/*退出系统,返回主界面*/ default: printf("输入错误,请重试!\n"); } } } /*=============END=========*/


我相信总有一片天空属于我!http://myseeker. E-Mail:lwqcny@
2005-10-12 15:01
wdufo
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2005-9-15
收藏
得分:0 
作业 ??
坚决不管!!!
2005-10-12 17:56
socks
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2005-10-13
收藏
得分:0 
用VB+ACCESS做吧,呵

虔诚的初学者~~~
2005-10-13 01:20
如梦
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2005-9-21
收藏
得分:0 

书上有的


学习不可少
2005-10-15 11:11
夜风
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2005-10-16
收藏
得分:0 
你这个作业怎么向北大清鸟培训机构布置的作业!!
其实你不因为把问题放在一起想!慌什么!一个一个来嘛!

我永远都是是新人!知识是学不完的!希望大家多照顾点!!!
2005-10-16 07:16
liyanguestc
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2005-5-15
收藏
得分:0 
99101,99  中间不能加逗号!!!!

2005-10-16 09:28
luxiao
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-9-26
收藏
得分:0 
2005-10-16 22:17
ShaJia
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-10-8
收藏
得分:0 
还是你自己好好看看书做吧!


2005-10-17 12:24
快速回复:小女就要交作业了.学生成绩管理系统.大家帮帮忙好吗?我都要哭出来了..
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027455 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved