C语言编写的学生成绩管理系统源代码

合集下载

C语言学生成绩管理系统源代码

C语言学生成绩管理系统源代码
case '0' : exit(0);
}
goto menu;
}
printf("\n请重新输入成绩:\n语文:");
scanf("%d",&students[n].chinese);
printf("数学:");
scanf("%s",&students[n].math);
printf("英语:");
scanf("%d",&students[n].english);
int n;
page_title("编辑学生基本信息");
if((n=search_id())!=-1)
{
printf("\n请重新输入新信息:\n学号:");
scanf("%d",&students[n].id);
printf("姓名:");
scanf("%s",&students[n].name);
{
case 1 : students[n].chinese=t;break;
case 2 : students[n].math=t;break;
case 3 : students[n].english=t;break;
}
}
}
return_confirm();
scanf("%d",&s);
for(n=0;n<32;n++)
{
if(students[n].id!=0)

C语言学生成绩管理系统源代码

C语言学生成绩管理系统源代码

C语言学生成绩管理系统源代码程序代码:#include;#include;#include;#define SIZE 3 /*定义常量SIZE便于以后的修改*/ struct student /*定义一个结构体数组存放学生的信息*/{int number; /*学号*/char name[20];/*名字*/char xueyuan[20];/*学院*/int cla;/*班级*/int score[3];/*分数*/int sum;/*总分*/int average;/*平均分*/}stu[SIZE];void menu();/*调用菜单函数*/void write();/*读入信息*/void save(int x);/*保存stud.dat文件函数*/void SaveOneStudent(int i);/*保存一个学生信息*/ void SaveAllStudent(int n);/*保存全部学生信息*/ void inturn (struct student c[]);/*用于对学生的信息按学号排序的函数*/void save2();/*将排序后的信息存入student.dat文件中*/int AddStudent(int n);/*增加学生信息*/void InputOnestudent(int i);/*输入一个同学信息*/ int DelStudent(int n);/*删除学生信息*/void ModifyStudent(int n);/*修改学生信息*/void OutputOneStudent(int i);/*查询一个学生信息*/ void SearchMenu(int n);/*查询学生信息操作*/void SearchNumber(int n);/*按学号查询学生信息*/ void SearchName(int n);/*按姓名查询学生信息*/ void SearchXueyuan(int n);/*按所在学院查询学生信息*/void SearchCla(int n);/*按所在班级查询学生信息*/ void tongji();/*学生信息统计操作*/void tongji2();/*统计不及格率操作*/void zfsc();/*总分排序操作*/void avecz();/*按平均分统计人数操作*/void avecz();/*按平均分统计人数操作*/void search();/*查找最高成绩操作*/void tongji2();/*统计不及格率操作*/void read();/*读取student.dat文件文件中学生的信息*//*主函数************************************************* ***********************************/void main(){int n=SIZE;int choice;/*用户选择变量*/printf(&quot;************************************ *******************************************\n&quo t;);printf(&quot;* *\n&quot;);printf(&quot;* Hwadee &学生成绩文件管理& Hwadee *\n&quot;);printf(&quot;* *\n&quot;);printf(&quot;*******************************************************************************\n\n\n&quot;);printf(&quot;******************************●●欢迎使用●●*********************************&quot;);while (1){menu();/*调用菜单函数形成操作界面*/printf(&quot;请选择:&quot;);scanf(&quot;%d&quot;, &choice);if ( choice==0 ){printf(&quot;\t\t\t\t谢谢使用!!!&quot;);break;}switch(choice) /*多重选择实现功能不同的功能*/ {case 1:write();inturn(stu);save(SIZE);break;case 2:AddStudent(n);break;case 3:DelStudent(n);break;case 4:ModifyStudent(n);break;case 5:SearchMenu(n);break;case 6:tongji();break;case 0:printf(&quot;\n谢谢使用!再见!\n&quot;);default:printf(&quot;\n按键错误!请重新选择!\n&quot;); }/*结束switch*/}/*结束while*/}部分程序清单/*菜单函数************************************************* ************************************/void menu(){printf(&quot;************请输入所需操作***********\n&quot;);/*选择功能菜单*/printf(&quot;************************************ *\n&quot;);printf(&quot;1.学生成绩写入及排序\n&quot;); printf(&quot;2.增加学生信息\n&quot;);printf(&quot;3.删除学生信息\n&quot;);printf(&quot;4.修改学生信息\n&quot;);printf(&quot;5.查询学生信息\n&quot;);printf(&quot;6.学生成绩统计操作\n&quot;); printf(&quot;0.退出系统\n&quot;);printf(&quot;**************************************\n&quot;);}/*写入函数*************************************************************************************/void write(){int i;/*计数变量*/for(i=0;i;m[j].number){temp=m[i];m[i]=m[j];m[j]=temp;}}printf(&quot;\n排序后的学生信息:\n\n&quot;); for(i=0;i;0&&x;59&&stu[i].average;69&&stu[i].average;79&&stu[i].average;89&&stu[i].average;stu[k].score[0])i=k;}printf(&quot;高数成绩最高学生信息如下:\n&quot;);OutputOneStudent(k);printf(&quot; 输出结束\n&quot;);printf(&quot;************************************************* *********&quot;);}if(x==2){for(i=0;i;stu[k].score[1])i=k;}printf(&quot;英语成绩最高学生信息如下:\n&quot;);OutputOneStudent(k);printf(&quot; 输出结束\n&quot;);printf(&quot;************************************************* *********&quot;);}if(x==3){for(i=0;i;stu[k].score[2])i=k;}printf(&quot;C语言成绩最高学生信息如下:\n&quot;);OutputOneStudent(k);printf(&quot; 输出结束\n&quot;);printf(&quot;************************************************* *********&quot;);}}/*统计不及格率操作************************************************* ****************************/void tongji2(){int x,i,k;printf(&quot;********************输入统计选项**********************\n&quot;); /*选择功能菜单*/ printf(&quot;统计高数成绩不及格率请按:1\n&quot;);printf(&quot;统计英语成绩不及格率请按:2\n&quot;);printf(&quot;统计C语言成绩不及格率请按:3\n&quot;);scanf(&quot;%d&quot;,&x);/*用户选择变量 */ if(x==1){for(i=0;i。

学生成绩管理系统c语言代码(供参考)

学生成绩管理系统c语言代码(供参考)

C程序学生管理系统以下是用C语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include”stdlib。

h"#include"string。

h”typedefstruct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedefstruct unit//定义接点{studentdate;struct unit*next;}unit;unit大build()//建立链表并返回指针{unit*p;if((p=(unit*)malloc(sizeof(unit)))==NULL){printf("二>初始化失败!”);return0;}else{p—>next=NULL;p-〉date.number=O;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit大head)//增加学生{unit*p,*q;int m,n=0;q=head-〉next;p=(unit*)malloc(sizeof(unit));printf(”二〉请输入新生姓名!\n");gets(p—>);fflush(stdin);printf("二〉请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q二二NULL)n二1;while(q){if(q->date.number==m){prinTf("二>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head-〉next;break;}else{q=q->next;if(q==NULL)n=1;}}}p一〉date。

学生成绩管理系统c语言代码(供参考)

学生成绩管理系统c语言代码(供参考)

C程序学生管理系统以下是用c语言编写的学生成绩管理系统的简单代码,可以用vc运行(供参考)#include"stdio.h"#include"stdlib.h"#include"string.h"typedef struct student//定义学生{char name[10];int number;char sex[2];int math;int eglish;int clanguge;int average;}student;typedef struct unit//定义接点{student date;struct unit *next;}unit;unit* build()//建立链表并返回指针{unit *p;if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>初始化失败!");return 0;}else{p->next=NULL;p->date.number=0;//头结点存放学生人数printf("初始化成功!\n");return p;}}void add(unit *head)//增加学生{unit *p,*q;int m,n=0;q=head->next;p=(unit*)malloc(sizeof(unit));printf("=>请输入新生姓名!\n");gets(p->);fflush(stdin);printf("=>请输入学号!\n");while(n==0){scanf("%d",&m);fflush(stdin);if(q==NULL) n=1;while(q){if(q->date.number==m){printf("=>你输入的学号与已有同学的学号相同,请重新输入!\n");q=head->next;break;}else{q=q->next;if(q==NULL) n=1;}}}p->date.number=m;printf("=>请输入性别!\n");gets(p->date.sex);fflush(stdin);printf("=>请输入数学成绩\n");scanf("%d",&m);fflush(stdin);p->date.math=m;printf("=>请输入英语成绩\n");scanf("%d",&m);fflush(stdin);p->date.eglish=m;printf("=>请输入c语言成绩\n");scanf("%d",&m);fflush(stdin);p->date.clanguge=m;p->date.average=(p->date.math+p->date.eglish+p->date.clanguge);q=head->next;head->next=p;p->next=q;head->date.number++;}void deletion(unit *head)//删除一名学生{unit *p=head->next,*q=head;char N[10];printf("=>请输入你想删除的学生姓名!\n");gets(N);fflush(stdin);if(p==NULL)printf("=>系统无学生可删除!\n");while(p){if(strcmp(p->,N)==0){q->next=p->next;head->date.number--;printf("=>删除%s成功!\n",p->);free(p);break;}else{p=p->next;q=q->next;if(p==NULL)printf("=>你要删除的学生不存在,删除失败!\n");}}}int display(unit *head)//显示学生信息{unit *p=head->next;int m,n=0;char N[10];if(p==NULL){printf("=>系统无学生!\n");return 0;}while(n==0){printf("********************************************************* *********************\n");printf("=>请选择你的操作!\n");printf("=>\t\t\t1.显示所有\t2.按姓名查找\n\t\t\t3.按学号查找\t4.返回主菜单\n");scanf("%d",&m);fflush(stdin);switch(m){case 1:printf("\n=>该系统拥有%d名学生!\n\n",head->date.number);p=head->next;printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t综合\n\n");while(p){printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);p=p->next;}break;case 2:printf("=>请输入查找姓名!\n");gets(N);fflush(stdin);p=head->next;while(p){if(strcmp(p->,N)==0){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t 综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)printf("=>你要查的学生不存在!");}}break;case 3: printf("=>请输入查找学号!\n");scanf("%d",&m);fflush(stdin);p=head->next;while(p){if(p->date.number==m){printf("\t姓名\t学号\t性别\t数学\t英语\tc语言\t 综合\n");printf("\t%s\t%d\t%s\t%d\t%d\t%d\t%d\n",p->,p->date.numb er,p->date.sex,p->date.math,p->date.eglish,p->date.clanguge,p->date.average);break;}else{p=p->next;if(p==NULL)printf("=>你要查的学生不存在!\n");}}break;case 4:n=1;break;}}return 1;}int range(unit *head)//排序{unit *p=head,*q=head->next;int n,i,m=head->date.number;printf("********************************************************* **********************\n");printf("\t\t\t1.按学号\t2.按成绩\n\n");printf("=>请选择操作!\n》");scanf("%d",&n);fflush(stdin);if(q==NULL){ printf("=>无学生可排序!\n");return 0;}switch(n){case 2:for(i=0;i<m;i++)//按总分排序{p=head;q=head->next;while(q->next){if((q->date.average)<(q->next->date.average)){p->next=q->next;p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next;}}}break;case 1:for(i=0;i<=m;i++)//按学号排序{p=head;q=head->next;while(q->next){if((q->date.number)>(q->next->date.number)){p->next=q->next;p=p->next;q->next=p->next;p->next=q;}else{p=p->next;q=q->next;}}}break;}printf("=>排序成功!\n");return 1;}void menu(){printf("\n********************************* 主菜单***************************************\n");printf("\t\t\t1.新建系统\t2.添加学生\n\t\t\t3.删除学生\t4.查看信息\n\t\t\t5.排列顺序\t6.读取信息\n\t\t\t7.保存信息\t8.退出系统\n");printf("=>请选择你的操作!\n");}int save(unit *head)//保存{FILE *fp;unit *p;p=head;if((fp=fopen("d:\\学生","wb+"))==NULL){printf("=>保存失败!");return 0;}while(p){fwrite(&(p->date),sizeof(student),1,fp);p=p->next;}printf("=>保存成功!");fclose(fp);return 1;}unit* read()//读入系统学生信息{int i;unit *p,*q,*head;FILE *fp;if((head=(unit*)malloc(sizeof(unit)))==NULL) { printf("=>开辟空间失败!");exit(1);}else{head->next=NULL;head->date.number=0;//头结点存放学生人数}q=head;if((fp=fopen("d:\\学生","rb"))==NULL){printf("=>系统无学生!\n");return 0;}fread(&(q->date),sizeof(student),1,fp);for(i=0;i<head->date.number;i++){if((p=(unit*)malloc(sizeof(unit)))==NULL){ printf("=>读值失败!");exit(1);}fread(&(p->date),sizeof(student),1,fp);p->next=q->next;q->next=p;}fclose(fp);return head;}void main(){int m=0,n, i;unit *head;printf("************************************************************* *******************\n\n");printf("\t\t\t* 欢迎使用学生成绩管理系统 * \n");printf("\n\t\t\t\t\t\t\t\t编译员:吹吹风\n\n");printf("=>正在读取系统信息......\n");if((head=read())==0){printf("=>是否新建?\n");printf("\t\t\t是(1)\t\t否(2)\n");scanf("%d",&i);fflush(stdin);if(i==1)head=build();else if(i==2)exit(1);}elseprintf("=>信息导入成功!");while(m==0){menu();scanf("%d",&n);fflush(stdin);switch(n){case 1: head=build();break;case 2:add(head);break;case 3:deletion(head);break;case 4:display(head);break;case 5: range(head);break;case 6:head=read();if(head!=0) printf("=>读取存盘成功!\n");break;case 7:save(head);break;case 8:m=1;break;}}}。

C学生成绩管理系统源代码

C学生成绩管理系统源代码

# i n c l u d e < >#include<>#include<>#include<>#include<> classPerson{public:charname[8];};classstudent:publicPersonlass_0<<""<<stud[i].num<<""<<stud[i].name<<""<<stud[i].c_p r ogram<<""<<stud[i].english<<""<<stud[i].math<<""<<stud[i].average<<endl;}();}intRead(studentstud[])lass_0>>stud[i].num>>stud[i].name>>stud[i].c_program>>stud[i] .e nglish>>stud[i].math>>stud[i].average;}();returncount;} voidInput(studentstud[])lass_0;loop:coutvv"学号:";cin>>stud[i].num;intc=0;while(c<i){c++;if(stud[i].num==stud[i-c].num){coutvv"你输入的学号已经存在!请重新输入!"<<endl; gotoloop;}}coutvv"姓名:";cin>>stud[i].name;do{flag=0;cout<v"C++成绩:";cin>>stud[i].c_program; if(stud[i].c_program>100||stud[i].c_programv1) coutvv"请输入1-100之间的数字!\n";elseflag=1; }while(flag==0);do{flag=0; cout<<" 英语成绩:"; cin>>stud[i].english;if(stud[i].english>100||stud[i].english<1)coutvv"请输入1-100之间的数字!\n";elseflag=1; }while(flag==0);do{flag=0; cout«"数学成绩:"; cin>>stud[i].math;if(stud[i].math>100||stud[i].math<1)coutvv"请输入1-100之间的数字!\n";elseflag=1; }while(flag==0);stud[i].average=(stud[i].c_program+stud[i].english+stud[i].math)/3;coutvv"平均分:"vvstud[i].average<ve ndl;coutvv"继续录入学生成绩?(y/n)";cin>>sign;/* 输入判断*/ i++;}Write(stud,i);}voidStatistic(studentstud[])lass_0vv"\t"vvstud[i].numvv"\t"vvstud[i].namevv"\t"vvst ud[i] .averagevvendl;system("pause");} voidLookup(studentstud[])学号查找 2.按姓名查找"vvendl;cin>>p;if(p==1){system("cls");/*运行前清屏*/ intn=Read(stud);ints;inti=0; coutvvendlvv">>>>>>>> 查找学生成绩vvvvvvvv\n"vvendl; coutvv"请输入查找学生的学号:"vvendl;cin>>s;while((stud[i].num-s)!=0&&i<n)i++;/* 查找判断*/if(i==n){cout<<" 没有该学生的信息!"<<endl;/* 输入失败信息*/}else{cout<<" ------------------- "<<endl;cout«"班级:"v<stud[i].class_O<vendl;/* 输出该学生信息*/ cout«"学号:"<<stud[i]. num <<e ndl;cout«"姓名:"<<stud[i].name«endl; cout<<"C++:"<<stud[i].c_program<<endl;cout«"英语:"<<stud[i].e nglish«e ndl;cout«"数学:"<<stud[i].math<<e ndl;cout«"平均分:"<<stud[i].average<<endl;}}if(p==2){system("cls");/* 运行前清屏*/ intm=Read(stud);chart;inti=O;cout<<endl<<">>>>>>>> 查找学生成绩<<<<<<<<\n"<<endl; coutvv"请输入查找学生的姓名:"<<endl;cin>>t; while(strcmp(stud[i].name-t,stud[i].name)==O&&i<m)i++;/* 查找判断*/ { cout<<" ------------------- "<<endl;cout«"班级:"<<stud[i].class_O<<endl;/* 输出该学生信息*/ cout«"学号:"<<stud[i]. num <<e ndl;cout«"姓名:"<<stud[i].name<<endl; cout<<"C++:"<<stud[i].c_program<<endl;cout«"英语:"<<stud[i].e nglish«e ndl;cout«"数学:"<<stud[i].math<<e ndl;cout«"平均分:"<<stud[i].average<<endl;}}}voidModify(studentstud[])um-s)!=O&&i<n)i++;/* 查找判断*/if(i==n){cout«"没有该学生的成绩!"<<endl;/*输入失败信息*/}elsecout<<" ------- 该学生的信息 ----- \n"<<endl;/* 格式头*/coutvv"班级"vv"\t"vv"学号"vv"\t"vv"姓名"vv"\t"vv"c++"vv"\t"vv"英语"<<"\t"<<" 数学"<<"\t"<<" 平均分"<<endl;cout<<" ----------------------- "<<endl;cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].c_p rog ram<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].average<<endl;cout<<" ----------------------- "<<endl;coutvv"请输入要修改的课程号"<<endl;cout«"语言2.英语3.数学"<<endl;cin>>a;coutvv"重新输入分数"<<endl;cin>>q;if(a==1)stud[i].c_program=q;if(a==2)stud[i].english=q;if(a==3)stud[i].math=q;stud[i].average=(stud[i].c_program+stud[i].english+stud[i].math)/3;coutvv" ------ 该学生的信息----- \n"vvendl;/* 格式头*/coutvv"班级"vv"\t"vv"学号"vv"\t"vv"姓名"vv"\t"vv"c++"vv"\t"v<" 英语"vv"\t"vv" 数学"vv"\t"vv" 平均分"vvendl;coutvv" ----------------------- "vvendl;coutvvstud[i].class_0vv"\t"vvstud[i].numvv"\t"vvstud[i].namevv"\t"vvstud[i].c_p rog ramvv"\t"vvstud[i].englishvv"\t"vvstud[i].mathvv"\t"vvstud[i].averagevvendl;charc;coutvv"是否保存数据?(y/n)"vvendl;cin>>c;if(c!='n'&&c!='N')Write(stud,n);}}voidInsert(studentstud[])lass_0;coutvv"学号:";cin>>stud[n].num;coutvv"姓名:";cin>>stud[n].name;coutvv"C++成绩:";cin>>stud[n].c_program;coutvv"英语成绩:";cin>>stud[n].english;coutvv"数学成绩:";cin>>stud[n].math;stud[n].average=(stud[n].c_program+stud[n].english+stud[n].math)/3;cout«"平均分"<<stud[ n].average;n++;cout«"插入成功!"<<endl;/*返回成功信息*/cout«"是否继续输入(y/n)"«endl;cin>>s;}Write(stud,n);}voidManage(studentstud[])verage<stud[j+1].average){strcpy(t,stud[j+1].class_0);strcpy(stud[j+1].class_0,stud[j].class_0);strcpy(stud[j].class_0,t);k=stud[j+1].num;stud[j+1].num=stud[j].num;stud[j].num=k;strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name);strcpy(stud[j].name,t);s=stud[j+1].c_program;stud[j+1].c_program=stud[j].c_program;stud[j].c_program=s;s=stud[j+1].english;stud[j+1].english=stud[j].english;stud[j].english=s;s=stud[j+1].math;stud[j+1].math=stud[j].math;s=stud[j+1].average;stud[j+1].average=stud[j].average;stud[j].average=s;}cout<<" ------------------------- "<<endl;/* 格式头*/coutvv"班级"vv"\t"vv"学号"vv"\t"vv"姓名"vv"\t"vv"C++"vv"\t"vv" 英语"vv"\t"vv"数学"<<"\t"<<"平均分"<<"\t"<<"名次"<<endl;for(i=0;i<n;i++)/* 循环输入*/{stud[i].order=i+1;cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].c _program<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].average<<"\t"<<stud[ i].or der<<endl;}Write(stud,n);}voidOutput(studentstud[])lass_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stu d[i].c_program<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].average<<endl ;}cout<<" --------------------------------------------------- "<<endl;}}intmenu()/* 菜单函数*/{charc;do{system("cls");/* 运行前清屏*/cout<<" ***************************************************** **\n"<<endl;cout<<" ----------- 欢迎使用学生成绩管理系统 -------- \n"<<endl;cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"<<endl;cout<<"* 【1】输入学生成绩*"<<endl;cout«"*【2】显示学生成绩*"<<endl;cout<<"* 【3】查找学生成绩*"<<endl;cout<<"* 【4】修改学生成绩*"<<endl;cout<<"* 【5】插入学生成绩*"<<endl;cout«"*【6】排列管理成绩*"<<endl;cout<<"* 【7】显示班级学生成绩*"<<endl;cout«"*【0】退出本系统*"<<endl;cout<<"$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"<<end l; cout«"请你选择(0-7):"<<endl;c=getchar();/*读入选择*/}while(c<'0'||c>'8');return(c-'O');/*返回选择*/}voidmai n()/* 主函数*/{for(;;){switch(menu())/*选择判断*/{case1:Input(stud);/*输入学生成绩*/break;case2:Statistic(stud);/*输出学生统计数据*/break; case3:Lookup(stud);/* 查找学生成绩*/cout<<"\t\t\t";system("pause");break;case4:Modify(stud);/* 修改学生成绩*/cout<<"\t\t\t";system("pause");break;case5:Insert(stud);/*增加学生成绩*/cout<<"\t\t\t";system("pause");break;case6:Man age(stud);/*按平均分对成绩记录项进行降序排序*/cout<<"\t\t\t";system("pause");break;case7:Output(stud);/*显示全部学生成绩*/cout<<"\t\t\t";system("pause");break;case0:cout<<endl<<"=========================== 感谢您使用学生成绩管=========================\n"<<endl;/* 结束程序*/理系统cout<<"\t\t\t";system("pause");exit(0);}。

c语言程序设计 学 生 成 绩 管 理 系 统 源代码

c语言程序设计 学 生 成 绩 管 理 系 统 源代码
for(i=1;i<a+1;i++)
{
printf("\t\t\t%-16s%-15s%d\n",stu[i-1].num,stu[i-1].name,stu[i-1].score);
if(i>1&&i%10==0)/*每十个暂停*/
{ printf("\t\t\t---------------------------------\n");/*格式*/
printf("\n*****%d个同学的信息输入完毕!*****\n",i);
printf("\n按回车键返回主菜单!");
getchar();
}
void Display(Student stu[],int n)/*显示所有纪录*/
{ int i;
system("cls");
printf("\t\t\t");
system("pause");
printf("\t\t\t---------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
printf("\n***************************************************\n");
}
else j++;
if (j==MAX)
printf(" \n 数据不存在!!!\n");

c语言学生成绩信息管理系统源代码

c语言学生成绩信息管理系统源代码

C语言学生成绩信息管理系统源代码一、概述在学校教学管理工作中,学生成绩信息管理是一个至关重要的环节。

为了方便高效地进行学生成绩信息的录入、查询和管理,我们可以利用C语言编写一个学生成绩信息管理系统。

本文将介绍该系统的源代码,并对其进行详细的解释和讲解。

二、系统功能需求1. 录入学生成绩信息2. 查询学生成绩信息3. 修改学生成绩信息4. 删除学生成绩信息5. 显示所有学生成绩信息三、系统源代码实现```c#include <stdio.h>#include <stdlib.h>#include <string.h>// 定义学生结构体typedef struct student {int id; // 学号char name[20]; // 尊称float score; // 成绩} Student;// 全局变量int count = 0; // 记录学生数量Student students[100]; // 学生数组// 录入学生成绩信息void inputStudentInfo() {printf("请输入学生学号:");scanf("d", students[count].id);printf("请输入学生尊称:");scanf("s", students[count].name); printf("请输入学生成绩:");scanf("f", students[count].score); count++;}// 查询学生成绩信息void queryStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {printf("学生信息如下:\n");printf("学号:d\n", students[i].id);printf("尊称:s\n", students[i].name);printf("成绩:.2f\n", students[i].score);return;}}printf("未找到该学生信息!\n");}// 修改学生成绩信息void modifyStudentInfo(int id, char *name, float score) { for (int i = 0; i < count; i++) {if (students[i].id == id) {strcpy(students[i].name, name);students[i].score = score;printf("修改成功!\n");return;}}printf("未找到该学生信息!\n");}// 删除学生成绩信息void deleteStudentInfo(int id) {for (int i = 0; i < count; i++) {if (students[i].id == id) {for (int j = i; j < count - 1; j++) { students[j] = students[j + 1]; }count--;printf("删除成功!\n");return;}}printf("未找到该学生信息!\n");}// 显示所有学生成绩信息void displayAllStudentInfo() {if (count == 0) {printf("暂无学生信息!\n");return;}printf("学生成绩信息如下:\n");for (int i = 0; i < count; i++) {printf("学号:d,尊称:s,成绩:.2f\n", students[i].id, students[i].name, students[i].score);}}int m本人n() {int choice, id;char name[20];float score;while (1) {printf("欢迎使用学生成绩信息管理系统!\n");printf("1. 录入学生成绩信息\n");printf("2. 查询学生成绩信息\n");printf("3. 修改学生成绩信息\n");printf("4. 删除学生成绩信息\n");printf("5. 显示所有学生成绩信息\n");printf("6. 退出系统\n");printf("请选择操作:");scanf("d", choice);switch (choice) {case 1: // 录入学生成绩信息inputStudentInfo();break;case 2: // 查询学生成绩信息printf("请输入要查询的学生学号:"); scanf("d", id);queryStudentInfo(id);break;case 3: // 修改学生成绩信息printf("请输入要修改的学生学号:"); scanf("d", id);printf("请输入修改后的尊称:");scanf("s", name);printf("请输入修改后的成绩:");scanf("f", score);modifyStudentInfo(id, name, score); break;case 4: // 删除学生成绩信息printf("请输入要删除的学生学号:"); scanf("d", id);deleteStudentInfo(id);break;case 5: // 显示所有学生成绩信息displayAllStudentInfo();break;case 6: // 退出系统printf("感谢使用学生成绩信息管理系统!\n");exit(0);default:printf("请输入正确的操作!\n");}}return 0;}```四、系统运行效果1. 运行系统后,会出现一个菜单,根据需求选择相应的操作。

C语言程序设计学生成绩管理系统源码

C语言程序设计学生成绩管理系统源码
CompositorByTotalMark();
break;
case 11:
SaveLinkToFile();/*保存数据后再退出*/
free(headLink);
exit(1);
break;
default:
break;
}
DisplayMenu();/*递归调用*/
}
/************************************
void DisplayInfoBystudentName(void);
void DisplayInfoBystudentNumber(void);
void DisplayOneNode(struct STUDENT *t);
void InsertOneNode(struct STUDENT *t);
}
fclose(fp);
}
/************************************
函数功能:显示菜单,根据用户的输入
完成相应的功能
************************************/
void DisplayMenu(void)
{
STUDENT *p;
printf("-------请选择相应功能------------\n\n");
void CompositorByTotalMark(void);/*按总成绩排序*/
int choose;/*用于接受用户的选择*/
/*主函数*/
int main()
{
CreateHeadLink();
ReadInfoFormFile();
DisplayMenu();

学生成绩管理系统C语言课程设计源代码

学生成绩管理系统C语言课程设计源代码

#include<stdio.h>#include<string.h>#include<math.h>#include<conio.h>#include<stdlib.h>struct chengji /* 成绩结构体*/ {int point;char subject[20];};struct student /* 学生结构体*/ { int w;char name[20];int number;struct chengji cheng[30];float sum;float average;}stu[40];void pjun(); /*按平均分排序*/void pfen(); /*按总分排序*/ void addnew(); /*录入学生成绩*/void pall(); /*显示所有成绩*/ void check(); /*查询菜单*/ void pnum(); /*按学号排序*/ void pjing(); /*精确查找*//****************************************************************************** *************************//*主菜单*/main(){char choose;while(1){printf("\n\t\t**************************************");printf("\n\t\t* 欢迎使用成绩管理系统*");printf("\n\t\t* *");printf("\n\t\t* 请选择*");printf("\n\t\t* 1. 录入学生成绩*");printf("\n\t\t* 2. 查询学生成绩*");printf("\n\t\t* 3. 清屏*");printf("\n\t\t* 0. 退出程序*");printf("\n\t\t* *");printf("\n\t\t**************************************");printf("\n\n");printf("请选择:");scanf("%c",&choose);getchar();switch(choose){ case '1': addnew(); break;case '2': check(); break;case '3': system("cls"); break;case '0': exit(0); break;default: printf("输入错误,请从新输入!\n\n");}}}/****************************************************************************** **********************//*录入学生成绩*/void addnew(){int n,m,i,p;float sum;float average;FILE *file;sum=0.00000;average=0.00000;if((file=fopen("c:\\student.dat","rb"))==NULL){file = fopen("c:\\student.dat", "wb+"); /* 创建一个文件*/}printf("请输入需要录入的学生人数: ");scanf("%d",&n);for(i=0;i<n;i++){printf("输入第%d个同学信息:\n",i+1);printf("姓名:");scanf("%s",&stu[i].name);printf("学号:");scanf("%d",&stu[i].number);printf("输入科目个数:");scanf("%d",&m);stu[i].w=m;printf("按科目(回车)成绩(回车)……的顺序输入:\n"); /* 录入成绩*/for(p=0;p<m;p++){scanf("%s",&stu[i].cheng[p].subject);scanf("%d",&stu[i].cheng[p].point);stu[i].sum=stu[i].sum+stu[i].cheng[p].point;stu[i].average=stu[i].sum/m;}/* printf("总分%f , 平均分%f\n ",stu[i].sum,stu[i].average);*/fwrite(&stu[i],sizeof(stu),1,file); /* 把stu写入文件*/}fclose(file); /* 关闭文件*/fflush(stdin);system("cls");}/****************************************************************************** **********************//*查询菜单*/void check(){while(1){ char choose;printf("\n\t\t**************************************");printf("\n\t\t* 查询菜单*");printf("\n\t\t* *");printf("\n\t\t* 请选择*");printf("\n\t\t* 1. 按学号排列*");printf("\n\t\t* 2. 按总分排列*");printf("\n\t\t* 3. 按平均分排列*");printf("\n\t\t* 4. 精确查询*");printf("\n\t\t* 5. 显示所有学生成绩*");printf("\n\t\t* 6. 清屏*");printf("\n\t\t* 0. 返回*");printf("\n\t\t**************************************");printf("\n\n");printf("请选择:");scanf("%c",&choose);getchar();switch(choose){ case '1': pnum(); break;case '2': pfen(); break;case '3': pjun(); break;case '4': pjing(); break;case '5': pall(); break;case '6': system("cls"); break;case '0': main(); break;}}}/****************************************************************************** **********************//*显示所有成绩*/void pall(){int i=0,m;FILE *file;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error!!\n");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0)/* 循环整个文件*/{ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++)/*显示各科成绩*/{printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}i++;fread(&stu[i],sizeof(stu),1,file);}fclose(file);}/****************************************************************************** *************************//*按学号排序*/void pnum(){ FILE *file;int j;int i=0;int n=0;int m=0;struct student bm; /*创建一个‘中间’结构体,用于交换*/if((file=fopen("c:\\student.dat","rb"))==NULL) /* 打开文件*/ { printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].number>stu[i+1].number) /*对比学号,对换stu*/{ bm=stu[i]; /*交换位置*/stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++)/* 交换后从新排序*/{ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/****************************************************************************** *************************//*按总分排序*/void pfen(){ FILE *file;int j;int i=0;int n=0;int m;struct student bm;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].sum<stu[i+1].sum){ bm=stu[i];stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++){ printf("姓名----学号----总分----平均分\n"); /*显示到屏幕*/printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/*******************************************************************************************************//*按平均分排序*/void pjun(){ FILE *file;int j;struct student bm;int i=0;int n=0;int m;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){i++;fread(&stu[i],sizeof(stu),1,file);}n=i;for(j=n-1;j>0;j--){ for(i=0;i<j;i++){ if(stu[i].average<stu[i+1].average){ bm=stu[i];stu[i]=stu[i+1];stu[i+1]=bm;}}}for(i=0;i<n;i++){ printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}}fclose(file);fflush(stdin);}/****************************************************************************** *************************//*精确查找*/void pjing(){int n;int i=0;int m;FILE *file;if((file=fopen("c:\\student.dat","rb"))==NULL){ printf("Open error");getch();exit(0);}printf("请输入要查询的学生的学号:");scanf("%d",&n);getchar();fread(&stu[i],sizeof(stu),1,file);while(feof(file)==0){ if(n==stu[i].number) /*输出对应的学号的学生成绩*/{printf("姓名----学号----总分----平均分\n");printf("%s %5d %10.1f %8.1f\n",stu[i].name,stu[i].number,stu[i].sum,stu[i].average);printf(" 科目------成绩\n");for(m=0;m<stu[i].w;m++){printf("%40s %d \n",stu[i].cheng[m].subject,stu[i].cheng[m].point);}break;}i++;fread(&stu[i],sizeof(stu),1,file);}fclose(file);fflush(stdin);}/******************************************结束*******************************************************/。

学生成绩管理系统(C语言源码)

学生成绩管理系统(C语言源码)

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<time.h>#define N 1000 /*链表导入数组的长度,可以说是记录数*/#define LEN sizeof(struct student) /*用LEN代替结构体的长度*/#define IFORM "%s%s%d%d%d%d%d" /*输入数据的格式*/#define IFORM2 p1->number,p1->name,&p1->grade[0],&p1->grade[1],&p1->grade[2],&p1->grade[3],&p1->grad e[4] /*输入数据存放到链表的格式*/#define OFORM "%s %s %d %d %d %d %d" /*将数据输出到文件的格式*/#define OFORM1 "%-10s %-6s %-4d %-4d %-4d %-4d %-4d"/*将数据打印到屏幕上的格式*/#define OFORM2 p1->number,p1->name,p1->grade[0],p1->grade[1],p1->grade[2],p1->grade[3],p1->grade[4] /*输出引用结构体得格式*/#define SINFO "请输入学号、姓名、大学英语、高等数学、线性代数、政治、计算机导论\n" /*输入数据的提示符*/#define SINFO2 "学号\t 姓名大学英语高等数学线性代数政治计算机导论\n" /*打印在屏幕上的各数据项的属性*/struct student{char number[12];char name[10];int grade[5];struct student * next;}; /*定义存放学生基本信息的结构体*/FILE *fp; /*定义文件的指针*/int open=0; /*用于表示是否有文件处于打开状态*/struct student * head; /*定义链表的头*/struct student * p1,* p2; /*定义用于链表输入输出的两个变量*/char name[100],ch; /*name用于存放打开的文件名,ch用于销毁回车符。

C学生成绩管理系统源代码

C学生成绩管理系统源代码

C学生成绩管理系统源代码SANY标准化小组 #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN##i n c l u d e<>#include<>#include<>#include<>#include<>class Person{ public:char name[8];};class student:public Person lass_0<<" "<<stud[i].num<<""<<stud[i].name<<" "<<stud[i].c_program<<" "<<stud[i].english<<""<<stud[i].math<<" "<<stud[i].average<<endl;}();}int Read(student stud[])lass_0>>stud[i].num>>stud[i].name>>stud[i].c_program>>stud[i].english>>stud[ i].math >>stud[i].average;}();return count ;}void Input(student stud[]) lass_0;loop:cout<<"学号:";cin>>stud[i].num;int c=0;while(c<i){c++;if(stud[i].num==stud[i-c].num){cout<<"你输入的学号已经存在!请重新输入!"<<endl;goto loop;}}cout<<"姓名:";cin>>stud[i].name;do{flag=0;cout<<"C++成绩:";cin>>stud[i].c_program;if(stud[i].c_program>100 ||stud[i].c_program<1)cout<<"请输入1-100之间的数字!\n";elseflag=1;}while(flag==0);do{flag=0;cout<<"英语成绩:";cin>>stud[i].english;if(stud[i].english>100 ||stud[i].english<1)cout<<"请输入1-100之间的数字!\n";elseflag=1;}while(flag==0);do{flag=0;cout<<"数学成绩:";cin>>stud[i].math;if(stud[i].math>100 ||stud[i].math<1)cout<<"请输入1-100之间的数字!\n";elseflag=1;}while(flag==0);stud[i].average=(stud[i].c_program+stud[i].english+stud[i].math)/3;cout<<"平均分:"<<stud[i].average<<endl;cout<<"继续录入学生成绩(y/n)";cin>>sign; /*输入判断*/i++;}Write(stud,i);}void Statistic(student stud[])lass_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].average<<endl;system("pause");}void Lookup(student stud[]) 学号查找 2.按姓名查找"<<endl;cin>>p;if(p==1){system("cls"); /*运行前清屏*/int n=Read(stud);int s;int i=0;cout<<endl<<">>>>>>>> 查找学生成绩 <<<<<<<<\n"<<endl;cout<<"请输入查找学生的学号:"<<endl;cin>>s;while((stud[i].num-s)!=0&&i<n) i++; /*查找判断*/if(i==n){cout<<"没有该学生的信息!"<<endl; /*输入失败信息*/ }else{cout<<"---------------------------"<<endl;cout<<"班级:"<<stud[i].class_0<<endl; /*输出该学生信息*/cout<<"学号:"<<stud[i].num<<endl;cout<<"姓名:"<<stud[i].name<<endl;cout<<"C++:"<<stud[i].c_program<<endl;cout<<"英语:"<<stud[i].english<<endl;cout<<"数学:"<<stud[i].math<<endl;cout<<"平均分:"<<stud[i].average<<endl;}}if(p==2){system("cls"); /*运行前清屏*/int m=Read(stud);char t;int i=0;cout<<endl<<">>>>>>>> 查找学生成绩 <<<<<<<<\n"<<endl;cout<<"请输入查找学生的姓名:"<<endl;cin>>t;while(strcmp(stud[i].name-t,stud[i].name)==0&&i<m) i++; /*查找判断*/ {cout<<"---------------------------"<<endl;cout<<"班级:"<<stud[i].class_0<<endl; /*输出该学生信息*/cout<<"学号:"<<stud[i].num<<endl;cout<<"姓名:"<<stud[i].name<<endl;cout<<"C++:"<<stud[i].c_program<<endl;cout<<"英语:"<<stud[i].english<<endl;cout<<"数学:"<<stud[i].math<<endl;cout<<"平均分:"<<stud[i].average<<endl;}}}void Modify(student stud[]) um-s)!=0&&i<n) i++; /*查找判断*/ if(i==n){cout<<"没有该学生的成绩!"<<endl; /*输入失败信息*/}else{cout<<"----------该学生的信息----------\n"<<endl; /*格式头*/ cout<<"班级"<<"\t"<<"学号 "<<"\t"<<"姓名"<<"\t"<<"c++"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"平均分"<<endl;cout<<"---------------------------------"<<endl;cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i]. c_program<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].average< <endl;cout<<"---------------------------------"<<endl;cout<<"请输入要修改的课程号"<<endl;cout<<"语言 2.英语 3.数学"<<endl;cin>>a;cout<<"重新输入分数"<<endl;cin>>q;if(a==1) stud[i].c_program=q;if(a==2)stud[i].english=q;if(a==3)stud[i].math=q;stud[i].average=(stud[i].c_program+stud[i].english+stud[i].math)/3; cout<<"----------该学生的信息----------\n"<<endl; /*格式头*/ cout<<"班级"<<"\t"<<"学号 "<<"\t"<<"姓名"<<"\t"<<"c++"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"平均分"<<endl;cout<<"---------------------------------"<<endl;cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<st ud[i].c_program<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].av erage<<endl;char c;cout<<"是否保存数据(y/n)"<<endl;cin>>c;if(c!='n'&&c!='N')Write(stud,n);}}void Insert(student stud[]) lass_0;cout<<"学号:";cin>>stud[n].num;cout<<"姓名:";cin>>stud[n].name;cout<<"C++成绩:";cin>>stud[n].c_program;cout<<"英语成绩:";cin>>stud[n].english;cout<<"数学成绩:";cin>>stud[n].math;stud[n].average=(stud[n].c_program+stud[n].english+ stud[n].math)/3;cout<<"平均分"<<stud[n].average;n++;cout<<"插入成功!"<<endl; /*返回成功信息*/cout<<"是否继续输入(y/n)"<<endl;cin>>s;}Write(stud,n);}void Manage(student stud[]) verage<stud[j+1].average){strcpy(t,stud[j+1].class_0);strcpy(stud[j+1].class_0,stud[j].class_0);strcpy(stud[j].class_0,t);k=stud[j+1].num;stud[j+1].num=stud[j].num;stud[j].num=k;strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name);strcpy(stud[j].name,t);s=stud[j+1].c_program;stud[j+1].c_program=stud[j].c_program;stud[j].c_program=s;s=stud[j+1].english;stud[j+1].english=stud[j].english;stud[j].english=s;s=stud[j+1].math;stud[j+1].math=stud[j].math;s=stud[j+1].average;stud[j+1].average=stud[j].average;stud[j].average=s;}cout<<"-------------------------------------"<<endl; /*格式头*/cout<<"班级"<<"\t "<<"学号"<<"\t "<<"姓名"<<"\t"<<"C++"<<"\t"<<"英语"<<"\t"<<"数学"<<"\t"<<"平均分"<<"\t"<<"名次"<<endl;for(i=0;i<n;i++) /*循环输入*/{stud[i].order=i+1;cout<<stud[i].class_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<st ud[i].c_program<<"\t"<<stud[i].english<<"\t"<<stud[i].math<<"\t"<<stud[i].av erage<<"\t "<<stud[i].order<<endl;}Write(stud,n);}void Output(student stud[])lass_0<<"\t"<<stud[i].num<<"\t"<<stud[i].name<<"\t"<<stud[i].c_program<<"\t "<<stud[i].english<<"\t " <<stud[i].math<<"\t"<<stud[i].average<<endl;}cout<<"-------------------------------------------------------------------------"<<endl;}}int menu() /*菜单函数*/{char c;do{system("cls"); /*运行前清屏*/cout<<"*******************************************************\n"<<endl;cout<<" -----------------欢迎使用学生成绩管理系统-------------\n"<<endl;cout<<" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"<<endl; cout<<" * 【1】输入学生成绩 * "<<endl;cout<<" * 【2】显示学生成绩 *"<<endl;cout<<" * 【3】查找学生成绩 *"<<endl;cout<<" * 【4】修改学生成绩 *"<<endl;cout<<" * 【5】插入学生成绩 *"<<endl;cout<<" * 【6】排列管理成绩 *"<<endl;cout<<" * 【7】显示班级学生成绩 * "<<endl;cout<<" * 【0】退出本系统 * "<<endl;cout<<" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ "<<endl;cout<<"请你选择(0-7):"<<endl;c=getchar(); /*读入选择*/}while(c<'0'||c>'8');return(c-'0'); /*返回选择*/}void main() /*主函数*/{for(;;){switch(menu()) /*选择判断*/{case 1:Input(stud);/*输入学生成绩*/break;case 2:Statistic(stud); /*输出学生统计数据*/break;case 3:Lookup(stud); /*查找学生成绩*/cout<<"\t\t\t";system("pause");break;case 4:Modify(stud); /*修改学生成绩*/cout<<"\t\t\t";system("pause");break;case 5:Insert(stud);/*增加学生成绩*/cout<<"\t\t\t";system("pause");break;case 6:Manage(stud); /*按平均分对成绩记录项进行降序排序*/cout<<"\t\t\t";system("pause");break;case 7:Output(stud); /*显示全部学生成绩*/cout<<"\t\t\t";system("pause");break;case 0:cout<<endl<<" ===========================感谢您使用学生成绩管理系统==========================\n"<<endl; /*结束程序*/cout<<"\t\t\t";system("pause");exit(0);}}}。

成绩管理系统C语言_附完整源码

成绩管理系统C语言_附完整源码
成绩管理系统 C 语言_完整版
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "conio.h" #include "time.h" #define N 80 void menu(); struct student { int id; //学号 char name[50]; //姓名 int grade; //成绩 int Num; }stu[N],del; void Add(FILE *fp) { int i=0; char c[3]; int num; stu->Num = 0; for(i=0;i<30;i++) { printf("添加学生信息:\n"); printf("学号:"); scanf("%d",&stu[i].id); printf("姓名:"); scanf("%s",stu[i].name); printf("成绩:"); scanf("%d",&stu[i].grade); printf("是否继续输入学生信息<Y | N>: "); scanf("%s",&c); fprintf(fp,"%d\t%s\t%d\r\n",stu[i].id,stu[i].name,stu[i].grade); stu->Num++; num++;
ห้องสมุดไป่ตู้
if(!strcmp(c,"N") || !strcmp(c,"n")) { system("cls"); menu(); } } if(!strcmp(c,"N") || !strcmp(c,"n")) { system("cls"); menu(); } } void Search() { int i; int choice; int n,m; char name[50]; printf("1.按顺序查找\n"); printf("2.按姓名查找\n"); printf("3.显示所有学生\n"); printf("请选择:"); scanf("%d",&choice); if(choice==1) { loop: printf("查询 n-m 名学生的成绩,"); printf("请输入 n:"); scanf("%d",&n); printf("请输入 m:"); scanf("%d",&m); printf("学号\t 姓名\t 成绩\n"); for(i=0;i<stu->Num;i++) { if(i+1>=n&&i+1<=m) { printf("%d\t%s\t%d\r\n",stu[i].id,stu[i].name,stu[i].grade); } } }

学生成绩管理系统(数据结构C语言版源代码)

学生成绩管理系统(数据结构C语言版源代码)

学生成绩管理系统(数据结构C语言版源代码)-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII#include<stdio.h>#include<string.h>#include<stdlib.h>struct students{char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/struct students *next; /*用与构建连表指向下一结点*/};FILE *fp; /*定义全局变量fp*/void Revisemenu();/*修改菜单*/void Sortmenu();/*排序菜单*/void menu();/*主菜单*/void secret();/*安全验证*/struct students * Input();/*新建学生信息*/void fprint(struct students *head);/*将信息导入文件可追加*/void fprint_(struct students *head);/*将信息导入文件并覆盖*/void Browse(struct students *head);/*浏览全部学生信息*/struct students * create(struct students *head,int *n);/*从tushu_list中读取数据构建链表*/void FindofNum(struct students *head);/*按学号查询学生信息*/void FindofNname(struct students *head);/*按姓名查询学生信息*/void SortEnglish(struct students * head);/*按英语成绩排序*/void SortJava(struct students * head);/*按Java成绩排序*/void SortSjjg(struct students * head);/*按数据结构成绩排序*/void SortSzdl(struct students * head);/*按数字逻辑电路成绩排序*/void SortJsj(struct students * head);/*按计算机组成原理成绩排序*/struct students * Delete(struct students * head,char m[15]);/*按学号删除学生成绩信息*/struct students * Revise();/*修改学生信息(按编号修改)*//*主菜单*/void menu(){printf("\n\n");printf("***************************************************\n");printf(" 学生成绩管理系统 \n");printf("---------------------------------------------------\n");printf(" 1-添加新同学 2-浏览学生信息 \n");printf(" 3-按学号查询 4-按姓名查询 \n");printf(" 5-按成绩排序 6-修改学生信息 \n");printf(" 7-删除学生信息 0-退出系统 \n");printf("---------------------------------------------------\n");printf("___________________________________________________\n");}/*排序菜单*/void Sortmenu(){printf("\n\n");printf("***************************************************\n");printf(" 按成绩排序 \n");printf(" 1-大学英语 2-JAVA编程 \n");printf(" 3-数据结构 4-数字逻辑电路 \n");printf(" 5-计算机组成原理 0-返回上级菜单 \n");printf("***************************************************\n");}/*修改菜单*/void Revisemenu(){printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(" 1--修改学生姓名 2--修改学生学号 \n");printf(" 3--修改学生性别 4--修改英语成绩 \n");printf(" 5--修改JAVA成绩 6--修改数据结构 \n");printf(" 7--修改数字电路 8--修改计算计 \n");printf(" 0--返回上级菜单 \n");printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");}/*安全验证*/void secret(){char a[20];printf("**欢迎来到学生信息管理系统,进入系统前请先进行密码验证---");printf(" ");do{gets(a); /*输入密码*/system("cls"); /*调用库函数清屏*/printf("对不起!您输入的密码有误,请重新输入---");}while(strcmp(a,"0605")!=0); /*单一密码"0605"*/system("cls");}/*新建学生信息*/struct students * Input(){struct students *p1,*p2,*head; /*建立辅助结点及头结点*/char Name;int n=0,x;printf("\n请按对应项输入学生信息以#结束:\n");printf("姓名学号性别英语 Java 数据结构数字电路计算机组成原理\n");p1=(struct students *)malloc(sizeof(struct students));head=p2=p1;do{ /*使用do while语句输入学生信息*/scanf("%s",&p1->Name);if(strcmp(p1->Name,"#")==0)break; /*判断结束符*/elsescanf("%s%s%lf%lf%lf%lf%lf",p1->Num,p1->Sex,&p1->English,&p1->Java,&p1->Sjjg,&p1->Szdl,&p1->Jsj);Name='#';p1=(struct students *)malloc(sizeof(struct students));p2->next=p1;p2=p1;n++;}while(1);p1->next=NULL;printf("学生信息输入结束!\n");getchar();printf("是否保存学生信息(1.是/2.否):");scanf("%d",&x);if(x==1)fprint(head); /*调用函数保存至文件*/elseprintf("\n文件没有被保存!\n");return head; /*返回头指针*/}/*将信息导入文件可追加*/void fprint(struct students *head){struct students *p1;if((fp=fopen("students_list.txt","a"))==NULL){printf("File open error!\n");exit(0);}for(p1=head;p1->next!=NULL;p1=p1->next) /*遍历*/fprintf(fp,"%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", p1->Name,p1->Num,p1->Sex,p1->English,p1->Java,p1->Sjjg,p1->Szdl,p1->Jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/printf("\n学生信息已成功保存到文件 students_list.txt 中!\n");getchar();}/*将信息导入文件并覆盖*/void fprint_(struct students *head){struct students *p1;if((fp=fopen("students_list.txt","w"))==NULL){printf("File open error!\n");exit(0);}for(p1=head;p1!=NULL;p1=p1->next) /*遍历*/fprintf(fp,"%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", p1->Name,p1->Num,p1->Sex,p1->English,p1->Java,p1->Sjjg,p1->Szdl,p1->Jsj);/*将学生信息写入文件*/fclose(fp); /*关闭文件*/;getchar();}/*浏览全部学生信息*/void Browse(struct students *head){char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/if((fp=fopen("students_list.txt","a+"))==NULL){printf("File open error!\n");exit(0);}printf("-------------------------------------------------------------\n");printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(!feof(fp))/*读取并输出*/{fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",Name,Num,Sex,&English,&Java,&Sjjg,&Sz dl,&Jsj);printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",Name,Num,Sex,English,Java,Sjjg,Szdl,Jsj);};if(fclose(fp)){printf("Can not close the file!\n");exit(0);}}/*从tushu_list中读取数据构建链表*/struct students * create(struct students * head,int *n){FILE *fp;struct students*p,*p1,*p2;if((fp=fopen("students_list.txt","a+"))==NULL){printf("File open error!\n");exit(0);}while(!feof(fp)){(*n)++;p=(struct students *)malloc(sizeof(struct students));fscanf(fp,"%s%s%s%lf%lf%lf%lf%lf",p->Name,p->Num,p->Sex,&p->English,&p->Java,&p->Sjjg,&p->Szdl,&p->Jsj);if(head==NULL){head=p;p1=p;}else{p1->next=p;p2=p1;p1=p;}}p2->next=NULL;free(p);(*n)--;fclose(fp);return head;}/*按姓名查询学生信息*/void FindofName(struct students *head){int i=0,n=0;char b[20];struct students *p;head=create(head,&n);p=head;printf("\n请输入要查询的学生姓名:");scanf("%s",b);while(p!=NULL){if(strcmp(p->Name,b)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到名为“%s”的学生信息!\n",b);}/*按学号查询学生信息*/void FindofNum(struct students *head){int i=0,n;char b[20];struct students *p;head=create(head,&n);p=head;printf("\n请输入要查询的学生学号:");scanf("%s",b);while(p!=NULL){if(strcmp(p->Num,b)==0){printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);i++;}p=p->next;}if(i==0)printf("\n对不起!没有找到学号为“%s”学生信息!\n",b);}/*按英语成绩排序*/void SortEnglish(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double English;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;English=p->English; /*将链表中第一个成绩赋给English*/while(p!=NULL){if((p->English)>English)/*比较*/English=p->English;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->English==English){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->English==English){ /*分数相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按英语成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按JAVA成绩排序*/void SortJava(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Java;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Java=p->Java; /*将链表中第一个成绩赋给Java*/while(p!=NULL){if((p->Java)>Java)/*比较*/Java=p->Java;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Java==Java){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Java==Java){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按Java成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按数据结构排序*/void SortSjjg(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Sjjg;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Sjjg=p->Sjjg; /*将链表中第一个成绩赋给Sjjg*/while(p!=NULL){if((p->Sjjg)>Sjjg)/*比较*/Sjjg=p->Sjjg;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Sjjg==Sjjg){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Sjjg==Sjjg){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按数据结构成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按数字电路排序*/void SortSzdl(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Szdl;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Szdl=p->Szdl; /*将链表中第一个成绩赋给Szdl*/while(p!=NULL){if((p->Szdl)>Szdl)/*比较*/Szdl=p->Szdl;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Szdl==Szdl){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Szdl==Szdl){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按数字电路成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按计算机组成原理排序*/void SortJsj(struct students * head){struct students *p,*tail; /*定义中间变量*/int n;double Jsj;p=(struct students *)malloc(sizeof(struct students));head=create(head,&n);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");while(head->next!=NULL) /*利用选择法排序*/{tail=NULL;p=head;Jsj=p->Jsj; /*将链表中第一个成绩赋给Jsj*/while(p!=NULL){if((p->Jsj)>Jsj)/*比较*/Jsj=p->Jsj;tail=p;p=p->next;}tail=NULL;p=head;while(p->next!=NULL){if(p->Jsj==Jsj){printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);if(p==head)head=head->next;elsetail->next=p->next;}tail=p;p=p->next;}if(p->Jsj==Jsj){ /*成绩相同时无需比较*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);tail->next=NULL;}}p=head; /*将链表赋给结构体指针*/printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);/*浏览排序后的信息*/printf("按计算机组成原理成绩排序后输出如上(注:此过程不保存至文件):\n");return;}/*按学号删除学生成绩信息*/struct students * Delete(struct students * head,char m[15]){struct students *ptr1,*ptr2;int n;printf("\n所有学生信息如下:\n");Browse(head);printf("\n请输入想要删除的学生学号:");scanf("%s",m);head=create(head,&n);if(head==NULL){printf("无学生信息!\n");return head;}if((strcmp(head->Num,m)==0)&&head!=NULL){ptr2=head;head=head->next;free(ptr2);}if(strcmp(head->Num,m)!=0){ptr1=head;ptr2=head->next;while(ptr2!=NULL){if(strcmp(ptr2->Num,m)==0){ptr1->next=ptr2->next;free(ptr2);}elseptr1=ptr2;ptr2=ptr1->next;}}fprint_(head);printf("\n学号为' %s '学生信息已被删除,并保存至文件!\n",m);return head;}/*修改学生信息(按编号修改)*/struct students * Revise(){int n=0,t;char num[10];char Num[10]; /*字符型学生学号*/char Name[20]; /*字符型学生姓名*/char Sex[3]; /*字符型学生性别*/double English; /*双精度实型英语成绩*/double Java; /*双精度实型Java成绩*/double Sjjg; /*双精度实数据结构*/double Szdl; /*双精度实型数字电路*/double Jsj; /*计算机组成原理*/struct students *head=NULL;struct students *p;printf("\n所有学生信息如下:\n");Browse(head);head=create(head,&n);printf("\n输入需要修改的学生的学号:");scanf("%s",num);p=head;while(head!=NULL){if(strcmp(p->Num,num)==0){system("cls");Revisemenu();printf("编号为%s的学生信息如下:\n",num);printf("姓名学号性别英语 Java 数据结构数字电路计算机\n");printf("%s\t%s\t%s\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n",p->Name,p->Num,p->Sex,p->English,p->Java,p->Sjjg,p->Szdl,p->Jsj);while(1){printf("请选择需要修改的信息:");scanf("%d",&t);switch(t){case 1:printf("请输入新姓名:");scanf("%s",Name);strcpy(p->Name,Name);break;case 2:printf("请输入新学号:");scanf("%s",&Num);strcpy(p->Num,Num);break;case 3:printf("请输入新性别:");scanf("%s",Sex);strcpy(p->Sex,Sex);break;case 4:printf("请输入新英语成绩:");scanf("%lf",&English);p->English=English;break;case 5:printf("请输入新Java成绩:");scanf("%lf",&Java);p->Java=Java;break;case 6:printf("请输入新数据结构成绩:");scanf("%lf",&Sjjg);p->Sjjg=Sjjg;break;case 7:printf("请输入新数字电路成绩:");scanf("%lf",&Szdl);p->Szdl=Szdl;break;case 8:printf("请输入新计算机组成原理成绩:");scanf("%lf",&Jsj);p->Jsj=Jsj;break;case 0:system("cls");menu();goto lab;break;default:printf("对不起,输入有误!");break;}}}elsep=p->next;}lab:fprint_(head);printf("修改完成,并储存至文件!\n");return head;}/*主函数*/void main(){int choice,ch;char m[15];struct students *head=NULL;secret();menu();while(1){printf("请输入选项:");scanf("%d",&choice);switch(choice){case 1:Input();break;case 2:system("cls");menu();Browse(head);break;case 3:system("cls");menu();FindofNum(head);break;case 4:system("cls");menu();FindofName(head);break;case 5:system("cls");Sortmenu();do{printf("请输入您的选择:");scanf("%d",&ch);switch(ch){case 1:system("cls");Sortmenu();SortEnglish(head);break;case 2:system("cls");Sortmenu();SortJava(head);break;case 3:system("cls");Sortmenu();SortSjjg(head);break;case 4:system("cls");Sortmenu();SortSzdl(head);break;case 5:system("cls");Sortmenu();SortJsj(head);break;}}while(ch!=0);system("cls");menu();break;case 6:system("cls");menu();Revise();break;case 7:system("cls");menu();head=Delete(head,m);break;case 0:system("cls");printf("\t\t欢迎下次再来!");exit(0);default:printf("对不起,输入有误!");break;}}return ;}。

学生成绩管理系统(c语言源代码)

学生成绩管理系统(c语言源代码)
r=r->next; /*将指针移至于链表最末尾,准备添加记录*/
while(1) /*一次可输入多条记录,直至输入学号为0的记录结点添加操作*/
{
while(1) /*输入学号,保证该学号没有被使用,若输入学号为0,则退出添加记录操作*/
{
stringinput(num,10,"input number(press '0'return menu):"); /*格式化输入学号并检验*/
{
printf("\n=====>Not student record!\n");
getchar();
return;
}
printf("\n\n");
printheader(); /*输出表格头部*/
while(p) /*逐条输出链表中存储的学生信息*/
{
printdata(p);
{
Node *r;
if(strcmp(nameornum,"num")==0) /*按学号查询*/
{
r=l->next;
while(r)
{
if(strcmp(r->data.num,findmess)==0) /*若找到findmess值的学号*/
return r;
Hale Waihona Puke { flag=1; break;
}
s=s->next;
}
if(flag==1) /*提示用户是否重新输入*/
{ getchar();
printf("=====>The number %s is existing,try again?(y/n):",num);

学生成绩管理系统源代码C语言

学生成绩管理系统源代码C语言

学生成绩管理系统源代码C语言.txt不要为旧的悲伤而浪费新的眼泪!现在干什么事都要有经验的,除了老婆。

没有100分的另一半,只有50分的两个人。

#include<stdio.h>#include<string.h>#include<math.h>struct student{int num;char name[20];float pingshi;float shiyan;float kaoshi;double zongping;}stu[4];void main(){void a();void b();void c();void d();void e();int n;while(n!=6){ printf("\t大学计算机基础成绩管理系统\n");printf("1:输入一个班学生大学计算机基础成绩记录\n");printf("2:显示所有成绩记录\n");printf("3:计算并输出平均成绩,均方差\n");printf("4:输出成绩与排名\n");printf("5:结果存入文件chengji.txt\n");printf("6:退出系统\n");printf("输入选项代码:");scanf("%d",&n);switch(n){case 1:a();break;case 2:b();break;case 3:c();break;case 4:d();break;case 5:e();break;case 6:printf("\n*******************谢谢使用!*******************\n");break;break;}}getchar();}/* 子函数*/void a() /* 输入一个班的学生记录*/{int i;for(i=0;i<4;i++){printf("请输入学号姓名平时成绩实验成绩考试成绩:");scanf("%d%s%f%f%f",&stu[i].num,stu[i].name,&stu[i].pingshi,&stu[i].shiyan,&s tu[i].kaoshi);}for(i=0;i<4;i++)stu[i].zongping=0.1*stu[i].pingshi+0.3*stu[i].shiyan+0.6*stu[i].kaoshi;}void b()/* 显示所有记录*/{int i;printf("学号姓名平时成绩实验成绩考试成绩总评成绩\n");for(i=0;i<4;i++)printf("%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i].pi ngshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);}void c()/* 求出全班平均成绩,显示均方差*/{int a[4]={0,1,2,3};int i,j;double total=0,pfc=0,bzc=0;double ave;for(i=0;i<4;i++){total=total+stu[i].zongping;}ave=total/4.0;printf("总评平均成绩是%f\n",ave);for(i=0;i<4;i++){pfc=pow((stu[i].zongping-ave),2)/4;}bzc=sqrt(pfc);printf("\n平方差是%f\n",pfc);printf("\n标准差是%f\n",bzc);}void d(){int a[4]={0,1,2,3};int i,j,temp;for(j=0;j<3;j++){for(i=0;i<3-j;i++)if(stu[a[i]].zongping>stu[a[i+1]].zongping){temp=a[i];a[i]=a[i+1];a[i+1]=temp;}}printf("顺序为:\n");printf("学号姓名总评成绩\n");for(i=0;i<4;i++)printf("%d%10.2s%15.2f\n",stu[a[i]].num,stu[a[i]].name,stu[a[i]].zongping);printf("\n");}void e(){int i;FILE *fp;fp=fopen("chengji.txt","w");fprintf(fp,"学号姓名平时成绩实验成绩考试成绩总评成绩\n");for(i=0;i<4;i++)fprintf(fp,"%d%14.2s%14.2f%14.2f%14.2f%14.2f\n",stu[i].num,stu[i].name,stu[i ].pingshi,stu[i].shiyan,stu[i].kaoshi,stu[i].zongping);printf("\n\n*******************恭喜,保存完成!*******************\n\n");}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言编写的学生成绩管理系统源代码/***********xuesheng.c***********//******头文件(.h)***********/#include "stdio.h" /*I/O函数*/#include "stdlib.h" /*其它说明*/#include "string.h" /*字符串函数*/#include "conio.h" /*屏幕操作函数*/#include "mem.h" /*内存操作函数*/#include "ctype.h" /*字符操作函数*/#include "alloc.h" /*动态地址分配函数*/#define N 3 /*定义常数*/typedef struct z1 /*定义数据结构*/{char no[11];char name[15];int score[N];float sum;float average;int order;struct z1 *next;}STUDENT;/*以下是函数原型*/STUDENT *init(); /*初始化函数*/STUDENT *create(); /*创建链表*/STUDENT *delete(STUDENT *h); /*删除记录*/void print(STUDENT *h); /* 显示所有记录*/void search(STUDENT *h); /*查找*/void save(STUDENT *h); /*保存*/STUDENT *load(); /*读入记录*/void computer(STUDENT *h); /*计算总分和均分*/ STUDENT *insert(STUDENT *h); /*插入记录*/void append(); /*追加记录*/void copy(); /*复制文件*/STUDENT *sort(STUDENT *h); /*排序*/STUDENT *index(STUDENT *h); /*索引*/void total(STUDENT *h); /*分类合计*/int menu_select(); /*菜单函数*//******主函数开始*******/main(){int i;STUDENT *head; /*链表定义头指针*/head=init(); /*初始化链表*/clrscr(); /*清屏*/for(;;) /*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/{ /*值不同,执行的函数不同,break 不能省略*/ case 0:head=init();break; /*执行初始化*/case 1:head=create();break; /*创建链表*/case 2:head=delete(head);break; /*删除记录*/case 3:print(head);break; /*显示全部记录*/case 4:search(head);break; /*查找记录*/case 5:save(head);break; /*保存文件*/case 6:head=load(); break; /*读文件*/case 7:computer(head);break; /*计算总分和均分*/case 8:head=insert(head); break; /*插入记录*/case 9:copy();break; /*复制文件*/case 10:head=sort(head);break; /*排序*/case 11:append();break; /*追加记录*/case 12:head=index(head);break; /*索引*/case 13:total(head);break; /*分类合计*/case 14:exit(0); /*如菜单返回值为14程序结束*/}}}/*菜单函数,返回值为整数*/menu_select(){char *menu[]={"***************MENU***************", /*定义菜单字符串数组*/" 0. init list", /*初始化*/" 1. Enter list", /*输入记录*/" 2. Delete a record from list", /*从表中删除记录*/" 3. print list ", /*显示单链表中所有记录*/" 4. Search record on name", /*按照姓名查找记录*/" 5. Save the file", /*将单链表中记录保存到文件中*/" 6. Load the file", /*从文件中读入记录*/" 7. compute the score", /*计算所有学生的总分和均分*/" 8. insert record to list ", /*插入记录到表中*/" 9. copy the file to new file", /*复制文件*/" 10. sort to make new file", /*排序*/" 11. append record to file", /*追加记录到文件中*/" 12. index on nomber", /*索引*/" 13. total on nomber", /*分类合计*/" 14. Quit"}; /*退出*/char s[3]; /*以字符形式保存选择号*/int c,i; /*定义整形变量*/gotoxy(1,25); /*移动光标*/printf("press any key enter menu......\n"); /*压任一键进入主菜单*/getch(); /*输入任一键*/clrscr(); /*清屏幕*/gotoxy(1,1); /*移动光标*/textcolor(YELLOW); /*设置文本显示颜色为黄色*/textbackground(BLUE); /*设置背景颜色为蓝色*/gotoxy(10,2); /*移动光标*/putch(0xc9); /*输出左上角边框┏*/for(i=1;i<44;i++)putch(0xcd); /*输出上边框水平线*/putch(0xbb); /*输出右上角边框┓*/for(i=3;i<20;i++){gotoxy(10,i);putch(0xba); /*输出左垂直线*/gotoxy(54,i);putch(0xba);} /*输出右垂直线*/gotoxy(10,20);putch(0xc8); /*输出左上角边框┗*/for(i=1;i<44;i++)putch(0xcd); /*输出下边框水平线*/putch(0xbc); /*输出右下角边框┛*/window(11,3,53,19); /* 制作显示菜单的窗口,大小根据菜单条数设计*/clrscr(); /*清屏*/for(i=0;i<16;i++) /*输出主菜单数组*/{gotoxy(10,i+1);cprintf("%s",menu[i]);}textbackground(BLACK); /*设置背景颜色为黑色*/window(1,1,80,25); /*恢复原窗口大小*/gotoxy(10,21); /*移动光标*/do{printf("\n Enter you choice(0~14):"); /*在菜单窗口外显示提示信息*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整形数*/}while(c<0||c>14); /*选择项不在0~14之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/ }STUDENT *init(){return NULL;}/*创建链表*/STUDENT *create(){int i; int s;STUDENT *h=NULL,*info; /* STUDENT指向结构体的指针*/for(;;){info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/if(!info) /*如果指针info为空*/{printf("\nout of memory"); /*输出内存溢出*/return NULL; /*返回空指针*/}inputs("enter no:",info->no,11); /*输入学号并校验*/if(info->no[0]=='@') break; /*如果学号首字符为@则结束输入*/ inputs("enter name:",info->name,15); /*输入姓名,并进行校验*/ printf("please input %d score \n",N); /*提示开始输入成绩*/s=0; /*计算每个学生的总分,初值为0*/for(i=0;i<N;i++) /*N门课程循环N次*/{do{printf("score%d:",i+1); /*提示输入第几门课程*/scanf("%d",&info->score[i]); /*输入成绩*/if(info->score[i]>100||info->score[i]<0) /*确保成绩在0~100之间*/printf("bad data,repeat input\n"); /*出错提示信息*/}while(info->score[i]>100||info->score[i]<0);s=s+info->score[i]; /*累加各门课程成绩*/}info->sum=s; /*将总分保存*/info->average=(float)s/N; /*求出平均值*/info->order=0; /*未排序前此值为0*/info->next=h; /*将头结点做为新输入结点的后继结点*/h=info; /*新输入结点为新的头结点*/}return(h); /*返回头指针*/}/*输入字符串,并进行长度验证*/inputs(char *prompt, char *s, int count){char p[255];do{printf(prompt); /*显示提示信息*/scanf("%s",p); /*输入字符串*/if(strlen(p)>count)printf("\n too long! \n"); /*进行长度校验,超过count值重输入*/}while(strlen(p)>count);strcpy(s,p); /*将输入的字符串拷贝到字符串s中*/}/*输出链表中结点信息*/void print(STUDENT *h){int i=0; /* 统计记录条数*/STUDENT *p; /*移动指针*/clrscr(); /*清屏*/p=h; /*初值为头指针*/printf("\n\n\n****************************STUDENT******************** ************\n");printf("|rec|nO | name | sc1| sc2| sc3| sum | ave |order|\n");printf("|---|----------|---------------|----|----|----|--------|-------|-----|\n");while(p!=NULL){i++;printf("|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);p=p->next;}printf("**********************************end************************ *********\n");}/*删除记录*/STUDENT *delete(STUDENT *h){STUDENT *p,*q; /*p为查找到要删除的结点指针,q为其前驱指针*/char s[11]; /*存放学号*/clrscr(); /*清屏*/printf("please deleted no\n"); /*显示提示信息*/scanf("%s",s); /*输入要删除记录的学号*/q=p=h; /*给q和p赋初值头指针*/while(strcmp(p->no,s)&&p!=NULL) /*当记录的学号不是要找的,或指针不为空时*/{q=p; /*将p指针值赋给q作为p的前驱指针*/p=p->next; /*将p指针指向下一条记录*/}if(p==NULL) /*如果p为空,说明链表中没有该结点*/printf("\nlist no %s student\n",s);else /*p不为空,显示找到的记录信息*/{printf("*****************************havefound***************************\n");printf("|no | name | sc1| sc2| sc3| sum | ave |order|\n");printf("|----------|---------------|----|----|----|--------|-------|-----|\n");printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no, p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("********************************end************************** *****\n");getch(); /*压任一键后,开始删除*/if(p==h) /*如果p==h,说明被删结点是头结点*/h=p->next; /*修改头指针指向下一条记录*/elseq->next=p->next; /*不是头指针,将p的后继结点作为q的后继结点*/free(p); /*释放p所指结点空间*/printf("\n have deleted No %s student\n",s);printf("Don't forget save\n");/*提示删除后不要忘记保存文件*/}return(h); /*返回头指针*/}/*查找记录*/void search(STUDENT *h){STUDENT *p; /* 移动指针*/char s[15]; /*存放姓名的字符数组*/clrscr(); /*清屏幕*/printf("please enter name for search\n");scanf("%s",s); /*输入姓名*/p=h; /*将头指针赋给p*/while(strcmp(p->name,s)&&p!=NULL) /*当记录的姓名不是要找的,或指针不为空时*/p=p->next; /*移动指针,指向下一结点*/if(p==NULL) /*如果指针为空*/printf("\nlist no %s student\n",s); /*显示没有该学生*/else /*显示找到的记录信息*/{printf("\n\n*****************************havefound******************* ********\n");printf("|nO | name | sc1| sc2| sc3| sum | ave |order|\n");printf("|----------|---------------|----|----|----|--------|-------|-----|\n");printf("|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |\n", p->no, p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->orde r);printf("********************************end************************** *****\n");}}/*插入记录*/STUDENT *insert(STUDENT *h){STUDENT *p,*q,*info; /*p指向插入位置,q是其前驱,info指新插入记录*/char s[11]; /*保存插入点位置的学号*/int s1,i;printf("please enter location before the no\n");scanf("%s",s); /*输入插入点学号*/printf("\nplease new record\n"); /*提示输入记录信息*/info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/if(!info){printf("\nout of memory"); /*如没有申请到,内存溢出*/return NULL; /*返回空指针*/}inputs("enter no:",info->no,11); /*输入学号*/inputs("enter name:",info->name,15); /*输入姓名*/printf("please input %d score \n",N); /*提示输入分数*/s1=0; /*保存新记录的总分,初值为0*/for(i=0;i<N;i++) /*N门课程循环N次输入成绩*/{do{ /*对数据进行验证,保证在0~100之间*/printf("score%d:",i+1);scanf("%d",&info->score[i]);if(info->score[i]>100||info->score[i]<0)printf("bad data,repeat input\n");}while(info->score[i]>100||info->score[i]<0);s1=s1+info->score[i]; /*计算总分*/}info->sum=s1; /*将总分存入新记录中*/info->average=(float)s1/N; /*计算均分*/info->order=0; /*名次赋值0*/info->next=NULL; /*设后继指针为空*/p=h; /*将指针赋值给p*/q=h; /*将指针赋值给q*/while(strcmp(p->no,s)&&p!=NULL) /*查找插入位置*/{q=p; /*保存指针p,作为下一个p的前驱*/p=p->next; /*将指针p后移*/}if(p==NULL) /*如果p指针为空,说明没有指定结点*/if(p==h) /*同时p等于h,说明链表为空*/h=info; /*新记录则为头结点*/elseq->next=info; /*p为空,但p不等于h,将新结点插在表尾*/elseif(p==h) /*p不为空,则找到了指定结点*/{info->next=p; /*如果p等于h,则新结点插入在第一个结点之前*/h=info; /*新结点为新的头结点*/}else{info->next=p; /*不是头结点,则是中间某个位置,新结点的后继为p*/q->next=info; /*新结点作为q的后继结点*/}printf("\n ----have inserted %s student----\n",info->name); printf("---Don't forget save---\n"); /*提示存盘*/return(h); /*返回头指针*/}/*保存数据到文件*/void save(STUDENT *h){FILE *fp; /*定义指向文件的指针*/STUDENT *p; /* 定义移动指针*/char outfile[10]; /*保存输出文件名*/printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示文件名格式信息*/scanf("%s",outfile);if((fp=fopen(outfile,"wb"))==NULL) /*为输出打开一个二进制文件,如没有则建立*/{printf("can not open file\n");exit(1);}printf("\nSaving file......\n"); /*打开文件,提示正在保存*/p=h; /*移动指针从头指针开始*/while(p!=NULL) /*如p不为空*/{fwrite(p,sizeof(STUDENT),1,fp);/*写入一条记录*/p=p->next; /*指针后移*/}fclose(fp); /*关闭文件*/printf("-----save success!!-----\n"); /*显示保存成功*/}/* 从文件读数据*/STUDENT *load(){STUDENT *p,*q,*h=NULL; /*定义记录指针变量*/FILE *fp; /* 定义指向文件的指针*/char infile[10]; /*保存文件名*/printf("Enter infile name,for example c:\\f1\\te.txt:\n"); scanf("%s",infile); /*输入文件名*/if((fp=fopen(infile,"rb"))==NULL) /*打开一个二进制文件,为读方式*/{printf("can not open file\n"); /*如不能打开,则结束程序*/ exit(1);}printf("\n -----Loading file!-----\n");p=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/if(!p){printf("out of memory!\n"); /*如没有申请到,则内存溢出*/return h; /*返回空头指针*/}h=p; /*申请到空间,将其作为头指针*/while(!feof(fp)) /*循环读数据直到文件尾结束*/{if(1!=fread(p,sizeof(STUDENT),1,fp))break; /*如果没读到数据,跳出循环*/p->next=(STUDENT *)malloc(sizeof(STUDENT)); /*为下一个结点申请空间*/if(!p->next){printf("out of memory!\n"); /*如没有申请到,则内存溢出*/return h;}q=p; /*保存当前结点的指针,作为下一结点的前驱*/p=p->next; /*指针后移,新读入数据链到当前表尾*/}q->next=NULL; /*最后一个结点的后继指针为空*/fclose(fp); /*关闭文件*/printf("---You have success read data from file!!!---\n");return h; /*返回头指针*/}/*追加记录到文件*/void append(){FILE *fp; /*定义指向文件的指针*/STUDENT *info; /*新记录指针*/int s1,i;char infile[10]; /*保存文件名*/printf("\nplease new record\n");info=(STUDENT *)malloc(sizeof(STUDENT)); /*申请空间*/if(!info){printf("\nout of memory"); /*没有申请到,内存溢出本函数结束*/ return ;}inputs("enter no:",info->no,11); /*调用inputs输入学号*/inputs("enter name:",info->name,15); /*调用inputs输入姓名*/printf("please input %d score \n",N); /*提示输入成绩*/s1=0;for(i=0;i<N;i++){do{printf("score%d:",i+1);scanf("%d",&info->score[i]); /*输入成绩*/if(info->score[i]>100||info->score[i]<0)printf("baddata,repeat input\n");}while(info->score[i]>100||info->score[i]<0); /*成绩数据验证*/ s1=s1+info->score[i]; /*求总分*/}info->sum=s1; /*保存总分*/info->average=(float)s1/N; /*求均分*/info->order=0; /*名次初始值为0*/info->next=NULL; /*将新记录后继指针赋值为空*/printf("Enter infile name,for example c:\\f1\\te.txt:\n"); scanf("%s",infile); /*输入文件名*/if((fp=fopen(infile,"ab"))==NULL) /*向二进制文件尾增加数据方式打开文件*/{printf("can not open file\n"); /*显示不能打开*/exit(1); /*退出程序*/}printf("\n -----Appending record!-----\n");if(1!=fwrite(info,sizeof(STUDENT),1,fp)) /*写文件操作*/{printf("-----file write error!-----\n");return; /*返回*/}printf("-----append sucess!!----\n");fclose(fp); /*关闭文件*/}/*文件拷贝*/void copy(){char outfile[10],infile[10];FILE *sfp,*tfp; /*源和目标文件指针*/STUDENT *p=NULL; /*移动指针*/clrscr(); /*清屏*/printf("Enter infile name,for example c:\\f1\\te.txt:\n");scanf("%s",infile); /*输入源文件名*/if((sfp=fopen(infile,"rb"))==NULL) /*二进制读方式打开源文件*/ {printf("can not open input file\n");exit(0);}printf("Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示输入目标文件名*/scanf("%s",outfile); /*输入目标文件名*/if((tfp=fopen(outfile,"wb"))==NULL) /*二进制写方式打开目标文件*/{printf("can not open output file \n");exit(0);}while(!feof(sfp)) /*读文件直到文件尾*/{if(1!=fread(p,sizeof(STUDENT),1,sfp))break; /*块读*/fwrite(p,sizeof(STUDENT),1,tfp); /*块写*/}fclose(sfp); /*关闭源文件*/fclose(tfp); /*关闭目标文件*/printf("you have success copy file!!!\n"); /*显示成功拷贝*/}/*排序*/STUDENT *sort(STUDENT *h){int i=0; /*保存名次*/STUDENT *p,*q,*t,*h1; /*定义临时指针*/h1=h->next; /*将原表的头指针所指的下一个结点作头指针*/ h->next=NULL; /*第一个结点为新表的头结点*/while(h1!=NULL) /*当原表不为空时,进行排序*/{t=h1; /*取原表的头结点*/h1=h1->next; /*原表头结点指针后移*/p=h; /*设定移动指针p,从头指针开始*/q=h; /*设定移动指针q做为p的前驱,初值为头指针*/while(t->sum<p->sum&&p!=NULL) /*作总分比较*/{q=p; /*待排序点值小,则新表指针后移*/p=p->next;}if(p==q) /*p==q,说明待排序点值大,应排在首位*/{t->next=p; /*待排序点的后继为p*/h=t; /*新头结点为待排序点*/}else /*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/{t->next=p; /*t的后继是p*/q->next=t; /*q的后继是t*/}}p=h; /*已排好序的头指针赋给p,准备填写名次*/while(p!=NULL) /*当p不为空时,进行下列操作*/{i++; /*结点序号*/p->order=i; /*将名次赋值*/p=p->next; /*指针后移*/}printf("sort sucess!!!\n"); /*排序成功*/return h; /*返回头指针*/}/*计算总分和均值*/void computer(STUDENT *h){STUDENT *p; /*定义移动指针*/int i=0; /*保存记录条数初值为0*/long s=0; /*总分初值为0*/float average=0; /*均分初值为0*/p=h; /*从头指针开始*/while(p!=NULL) /*当p不为空时处理*/{s+=p->sum; /*累加总分*/i++; /*统计记录条数*/p=p->next; /*指针后移*/}average=(float)s/i;/* 求均分,均分为浮点数,总分为整数,所以做类型转换*/printf("\n--All students sum score is:%ld averageis %5.2f\n",s,average);}/*索引*/STUDENT *index(STUDENT *h){STUDENT *p,*q,*t,*h1; /*定义临时指针*/h1=h->next; /*将原表的头指针所指的下一个结点作头指针*/h->next=NULL; /*第一个结点为新表的头结点*/while(h1!=NULL) /*当原表不为空时,进行排序*/{t=h1; /*取原表的头结点*/h1=h1->next; /*原表头结点指针后移*/p=h; /*设定移动指针p,从头指针开始*/q=h; /*设定移动指针q做为p的前驱,初值为头指针*/while(strcmp(t->no,p->no)>0&&p!=NULL) /*作学号比较*/{q=p; /*待排序点值大,应往后插,所以新表指针后移*/p=p->next;}if(p==q) /*p==q,说明待排序点值小,应排在首位*/{t->next=p; /*待排序点的后继为p*/h=t; /*新头结点为待排序点*/}else /*待排序点应插入在中间某个位置q和p之间,如p为空则是尾部*/{t->next=p; /*t的后继是p*/q->next=t; /*q的后继是t*/}}printf("index sucess!!!\n"); /*索引排序成功*/return h; /*返回头指针*/}/*分类合计*/void total(STUDENT *h){STUDENT *p,*q; /*定义临时指针变量*/char sno[9],qno[9],*ptr; /*保存班级号的*/float s1,ave; /*保存总分和均分*/int i; /*保存班级人数*/clrscr(); /*清屏*/printf("\n\n *******************Total*****************\n");printf("---class---------sum--------------average----\n");p=h; /*从头指针开始*/while(p!=NULL) /*当p不为空时做下面的处理*/{memcpy(sno,p->no,8); /*从学号中取出班级号*/sno[8]='\0'; /*做字符串结束标记*/q=p->next; /*将指针指向待比较的记录*/s1=p->sum; /*当前班级的总分初值为该班级的第一条记录总分*/ ave=p->average; /*当前班级的均分初值为该班级的第一条记录均分*/ i=1; /*统计当前班级人数*/while(q!=NULL) /*内循环开始*/{memcpy(qno,q->no,8); /*读取班级号*/qno[8]='\0'; /*做字符串结束标记*/if(strcmp(qno,sno)==0) /*比较班级号*/{s1+=q->sum; /*累加总分*/ave+=q->average; /*累加均分*/i++; /*累加班级人数*/q=q->next; /*指针指向下一条记录*/}elsebreak; /*不是一个班级的结束本次内循环*/}printf("%s %10.2f %5.2f\n",sno,s1,ave/i);if(q==NULL)break; /*如果当前指针为空,外循环结束,程序结束*/elsep=q; /*否则,将当前记录作为新的班级的第一条记录开始新的比较*/}printf("---------------------------------------------\n");}。

相关文档
最新文档