学生成绩管理系统(链表版)_第1页
学生成绩管理系统(链表版)_第2页
学生成绩管理系统(链表版)_第3页
学生成绩管理系统(链表版)_第4页
学生成绩管理系统(链表版)_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C语言应用》实验报告题目学生成绩管理系统〔链表版〕目录第1章需求分析 3第2章总体设计 32.1系统的程序流程图 3 3 3第3章详细设计 33.1主函数设计 33.2录入函数设计 43.3排序函数设计 43.4查找函数设计 4 4 43.7删除函数设计 43.8保存函数设计 43.9显示函数设计 43.10退出函数设计 4第4章测试 5总结 5参考文献 5附录程序源代码 5第1章需求分析(1)能完成学生成绩的插入、查询、修改、删除、输出等功能;(2)采用单链表存储结构实现;(3)所有数据以外部文件方式保存第2章总体设计2.1系统的程序流程图绘制一个系统的总体程序流程图,主要展示系统从开始以后,可以经过哪些流程,最后结束。按姓名修改某位同学的成绩按姓名修改某位同学的成绩输出链表内容输出链表内容进入系统进入系统浏览初始学生信息按姓名修改某位同学的成绩输入同学的相关信息查找按姓名删除某位同学的成绩初始学生成绩排序浏览所有同学的信息及排名插入新的成绩查看初始学生总分及平均分保存最终结果到可浏览文件退出系统主菜单统计学生信息录入系统全局变量intn;chara;头文件:#include"stdio.h"#include"time.h"#include"string.h"#include"stdlib.h"#include"conio.h"把系统中的每个函数的原型列出来,解释一下函数的返回值及形式参数的含义;最后,再介绍一下每个函数的功能。voidCreate(intn)//创立链表voidList()//输出链表内容voidlist()//输出链表所有内容voidsave()//文件保存voidsave1()//文件保存voidread()//文件读取voidread1()//文件读取voidSAVE(){//保存到可浏览文件voidSAVE1()//保存到可浏览文件voidsort_data_copy(Lstu*p,Lstu*s)//交换排序时的值voidsort()//对初始成绩进行排序voidsort1()//对所有数据进行排序voidsearch_print(Lstu*p)//输出查找信息voidsearch_choose()//选择按分数段查找方式voidsearch()//查找voidmodify_choose(Lstu*p,intn)//选择修改方式voidmodify()//按姓名修改voidInsert()//按序号插入voiddel()//按姓名删除voidstatistics()//成绩统计intmenu()//菜单〔主界面〕第3章详细设计按函数,写出函数的原型声明,并画出每个函数的程序流程图。3.1主函数设计函数3.2录入函数设计添加的信息包括学号(不允许重复)、姓名(不允许重复)、语文成绩、数学成绩和英语成绩,如流程图所示:开始插入数据开始插入数据输入学生成绩信息调用类成员函数采用单链表保存数据结束调用类成员函数保存数据到文件中本程序采用的是尾插法,就是每次将新申请的结点插在终端结点的后面,其执行过程如下图。尾插法建立单链表操作示意图3.3排序函数设计可按照学号、语文成绩、数学成绩、英语成绩和平均分分别排序。如下图:结束结束输入排序编号判断抱歉,没有此排序输出学生的信息排序开始NY3.4查找函数设计按姓名、学号和分数段查找学生成绩的流程图分别如下列图4.3所示。结束结束输入要查找姓名判断抱歉没有该学生输出该学生的信息按姓名查找开始NY在单链表中,即使知道被访问结点的位置i,也不能像顺序表那样直接按序号访问,而只能从头指针出发,设置一个工作指针p,顺next域逐个结点往下搜索。当p指向某个结点时判断是否为第i个结点,假设是那么查找成功;否那么,将工作指针p后移,即将p指向原来所指结点的后继结点。直到p为NULL时查找失败。单链表查找过程如图4.4所示。按学号查询学生成绩信息同按姓名查找学生成绩信息,此处不再详细列出。(3)学生成绩修改模块首先要查找与要修改数据相匹配的信息,假设没有那么返回失败。否那么把相应的信息输出,然后再重新输入新的数据并保存到单链表。返回主菜单开始修改操作返回主菜单开始修改操作输入姓名姓名一致执行修改功能NY首先要确定插入数据的位置,执行插入操作,然后再输入数据并保存到单链表。开始插入操作开始插入操作选择要插入的位置判断插入的位置执行插入功能NY返回主菜单3.7删除函数设计中选择删除功能时,首先输入要删除的同学的姓名,然后输入要删除的同学的学号,如果该同学存在并且姓名与学号匹配的上,那么进行删除操作,否那么返回失败。其流程图如下:开始删除操作开始删除操作输入姓名姓名姓名一致执行删除功能返回主菜单NY删除操作定义为将单链表的第i个结点删去。因为在单链表中结点ai存储地址在其前驱结点ai-1的指针域,所以必须首先找到ai-1的存储地址p,然后令p的next域指向ai的后继结点,即把结点ai从链上摘下来,最后释放结点ai的存储空间,如图4.6所示。在单链表中删除结点指针的变化情况3.8保存函数设计输入学生信息应保存到学生根本信息文件中,修改后的信息将可保存到可浏览的文件,如下图:开始保存操作开始保存操作输入保存到文件名判断文件名的格式执行删除功能返回主菜单NY3.9显示函数设计从单链表表头遍历整个单链表,将所有数据输出。其局部代码如下:voidread(){//文件读取FILE*fp;Lstu*p,*p1;if((fp=fopen("初始值二进制.txt","rb"))==NULL){printf("Cannotopenthefile\n");exit(0);}head=(Lstu*)malloc(sizeof(Lstu));p1=head;while(!feof(fp)){p=(Lstu*)malloc(sizeof(Lstu));if(fread(p,sizeof(Lstu),1,fp)==1){p1->next=p;p1=p1->next;}}head=head->next;fclose(fp);}3.10退出函数设计第4章测试主要进行功能性测试,即验证各个功能模块是否正确运行。可以采用运行系统进行截图的方法来验证系统结果的正确性。在完成了系统各方面的设计后,并不是可以运行就完成的,为了保证系统性能的稳定性跟平安性等,就要对系统做测试。测试环境如下:硬件:P4C2.4GHz,500GB硬盘,2内存;软件:Windows7PersonalSP1,分辨率1366*768。运行的主界面如下图:点击1输入学生相关信息,如下图:浏览初始学生信息,如下图:查看初始学生总分及平均分,如下图:查找,如下图:按姓名查找:初始学生成绩排序,如下图:按平均成绩进行排序:插入新成绩,如下图:按姓名修改某位学生的成绩,如下图:选择修改数学成绩:按姓名删除某位学生的成绩,如下图:浏览所有学生的信息及排名,如下图:保存最终结果到可浏览的文件中,如下图:⑾统计,如下图:总结写这次实验课的收获和感想。参考文献附录程序源代码//程序名称:xsglxt.CPP//程序功能:采用链表与文件实现一个简单的学生成绩管理系统。#include"stdio.h"#include"time.h"#include"string.h"#include"stdlib.h"#include"conio.h"#defineNULL0typedefstructLstu{intcla,ID;longnum;charname[20];charsex[20];floatchinese,math,english;floatsum,ave;Lstu*next;}Lstu;Lstu*head;voidCreate(intn){//创立链表 Lstu*p,*s; inti; for(i=0;i<n;i++){if(i==0){ p=(Lstu*)malloc(sizeof(Lstu)); printf("请输入第%d个人的信息\n",i+1); printf("请输入班级:");scanf("%d",&p->cla); printf("请输入学号:");scanf("%ld",&p->num);printf("请输入姓名:");scanf("%s",p->name); printf("请输入性别:");scanf("%s",p->sex); printf("请输入语文成绩:");scanf("%f",&p->chinese); printf("请输入数学成绩:");scanf("%f",&p->math); printf("请输入英语成绩:");scanf("%f",&p->english); p->sum=p->chinese+p->math+p->english; p->ave=p->sum/3; head=p; if(n==1){ p->next=NULL;}} else{ s=(Lstu*)malloc(sizeof(Lstu)); printf("请输入第%d个人的信息\n",i+1); printf("请输入班级:");scanf("%d",&s->cla); printf("请输入学号:");scanf("%ld",&s->num);printf("请输入姓名:");scanf("%s",s->name); printf("请输入性别:");scanf("%s",s->sex); printf("请输入语文成绩:");scanf("%f",&s->chinese); printf("请输入数学成绩:");scanf("%f",&s->math); printf("请输入英语成绩:");scanf("%f",&s->english); s->sum=s->chinese+s->math+s->english; s->ave=s->sum/3; p->next=s; p=s; s->next=NULL;} }}voidList(){//输出链表内容 Lstu*p; inti=0;p=head; if(p==NULL){ printf("Sorry,It'saEmptyList\n");} else{ printf("\n\n\t------------------------------------------------------------------\n"); printf("\t%-5s%-5s%-10s%-8s%-7s%-10s%-10s%-10s\n","序号","班级","学号","姓名","性别","语文成绩","数学成绩","英语成绩"); printf("\t------------------------------------------------------------------\n"); while(p){i++;p->ID=i; printf("\t%-4d%-5d%-7d%-8s%-7s%%%\n",p->ID,p->cla,p->num,p->name,p->sex,p->chinese,p->math,p->english); printf("\t------------------------------------------------------------------\n");p=p->next; }}}voidlist(){//输出链表所有内容 Lstu*p; inti=0;p=head; if(p==NULL){ printf("Sorry,It'saEmptyList\n");} else{ printf("\n----------------------------------------------------------------------------------\n"); printf("%-5s%-5s%-7s%-8s%-7s%-10s%-10s%-10s%-8s%-8s\n","序号","班级","学号","姓名","性别","语文成绩","数学成绩", "英语成绩","总分","平均分"); printf("----------------------------------------------------------------------------------\n"); while(p){i++;p->ID=i; printf("%-4d%-6d%-12d%-8s%-7s%%-%%%\n",p->ID,p->cla,p->num,p->name,p->sex, p->chinese,p->math,p->english,p->sum,p->ave); printf("----------------------------------------------------------------------------------\n");p=p->next; }}}voidsave(){//文件保存FILE*fp;Lstu*p;p=head;if((fp=fopen("初始值二进制.txt","wb"))==NULL){printf("Cannotopenthefile");exit(0);}while(p){fwrite(p,sizeof(Lstu),1,fp);p=p->next;}fclose(fp);}voidsave1(){//文件保存FILE*fp;Lstu*p;p=head;if((fp=fopen("初始值二进制备用.txt","wb"))==NULL){printf("Cannotopenthefile");exit(0);}while(p){fwrite(p,sizeof(Lstu),1,fp);p=p->next;}fclose(fp);}voidread(){//文件读取FILE*fp;Lstu*p,*p1;if((fp=fopen("初始值二进制.txt","rb"))==NULL){printf("Cannotopenthefile\n");exit(0);}head=(Lstu*)malloc(sizeof(Lstu));p1=head;while(!feof(fp)){p=(Lstu*)malloc(sizeof(Lstu));if(fread(p,sizeof(Lstu),1,fp)==1){p1->next=p;p1=p1->next;}}head=head->next;fclose(fp);}voidread1(){//文件读取FILE*fp;Lstu*p,*p1;if((fp=fopen("初始值二进制备用.txt","rb"))==NULL){printf("Cannotopenthefile\n");exit(0);}head=(Lstu*)malloc(sizeof(Lstu));p1=head;while(!feof(fp)){p=(Lstu*)malloc(sizeof(Lstu));if(fread(p,sizeof(Lstu),1,fp)==1){p1->next=p;p1=p1->next;}}head=head->next;fclose(fp);}voidSAVE(){//保存到可浏览文件FILE*fp;Lstu*p;inti=0;p=head;if((fp=fopen("初始值可浏览文件.txt","w+"))==NULL){printf("Cannotopenthefile");exit(0);}fprintf(fp,"\n\n\t------------------------------------------------------------------\n");fprintf(fp,"\t%-5s%-5s%-10s%-8s%-7s%-10s%-10s%-10s\n","序号","班级","学号","姓名","性别","语文成绩","数学成绩","英语成绩");fprintf(fp,"\t------------------------------------------------------------------\n\n");while(p){i++;p->ID=i; fprintf(fp,"\t%-4d%-5d%-7d%-8s%-7s%%%\n",p->ID,p->cla,p->num,p->name, p->sex,p->chinese,p->math,p->english); fprintf(fp,"\t------------------------------------------------------------------\n");p=p->next;}fclose(fp);}voidSAVE1(){//保存到可浏览文件FILE*fp;charfilename[20];Lstu*p;inti=0;p=head;printf("请输入保存到可浏览文件的文件名:");scanf("%s",filename);if((fp=fopen(filename,"w+"))==NULL){printf("Cannotopenthefile");exit(0);}fprintf(fp,"\n----------------------------------------------------------------------------------\n");fprintf(fp,"%-5s%-5s%-7s%-8s%-7s%-10s%-10s%-10s%-8s%-8s\n","序号","班级","学号","姓名","性别","语文成绩","数学成绩", "英语成绩","总分","平均分");fprintf(fp,"----------------------------------------------------------------------------------\n");while(p){i++;p->ID=i; fprintf(fp,"%-4d%-5d%-7d%-8s%-7s%%%%%\n",p->ID,p->cla,p->num,p->name,p->sex, p->chinese,p->math,p->english,p->sum,p->ave); fprintf(fp,"-------------------------------------------------------------------------------\n");p=p->next;}fclose(fp);}voidsort_data_copy(Lstu*p,Lstu*s){//交换排序时的值 intcla1; cla1=p->cla;p->cla=s->cla;s->cla=cla1; longnum1; num1=p->num;p->num=s->num;s->num=num1; charname1[20]; strcpy(name1,p->name);strcpy(p->name,s->name);strcpy(s->name,name1); charsex1[20]; strcpy(sex1,p->sex);strcpy(p->sex,s->sex);strcpy(s->sex,sex1); floatchinese1; chinese1=p->chinese;p->chinese=s->chinese;s->chinese=chinese1; floatmath1; math1=p->math;p->math=s->math;s->math=math1; floatenglish1; english1=p->english;p->english=s->english;s->english=english1; floatsum1; sum1=p->sum;p->sum=s->sum;s->sum=sum1; floatave1; ave1=p->ave;p->ave=s->ave;s->ave=ave1;}voidsort(){//对初始成绩进行排序 Lstu*p,*s; intn;chara; read();p=head; if(p==NULL){ printf("Sorry,It'saEmptyList\n"); printf("\n按Enter键继续\n");a=getch();} else{while(1){system("cls");printf("\n排序前结果为:\n");read();list(); printf("\t*=*=*=*=*=*=*=*=*=*=*=按学号排序(1)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按语文成绩排序(2)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按数学成绩排序(3)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按英语成绩排序(4)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按平均分排序(5)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=回主菜单(0)\n\n"); printf("\t请输入选择:"); scanf("%d",&n); for(p=head;p->next!=NULL;p=p->next) for(s=p->next;s!=NULL;s=s->next) switch(n){ case1:if(p->num>s->num){sort_data_copy(p,s);}break; case2:if(p->chinese<s->chinese){sort_data_copy(p,s);}break; case3:if(p->math<s->math){sort_data_copy(p,s);}break; case4:if(p->english<s->english){sort_data_copy(p,s);}break; case5:if(p->ave>s->ave){sort_data_copy(p,s);}break; case0:break; default:printf("chooeerror!");break;} if(n==0){printf("\n按Enter键回主菜单\n");a=getch();break;} else{printf("排序后结果为:\n"); list();SAVE1();printf("\n按Enter键继续\n");a=getch();}}}}voidsort1(){//对所有数据进行排序 Lstu*p,*s; intn;chara; read1();p=head; if(p==NULL){ printf("Sorry,It'saEmptyList\n"); printf("\n按Enter键继续\n");a=getch();} else{while(1){system("cls");printf("\n排序前结果为:\n");read1();list(); printf("\t*=*=*=*=*=*=*=*=*=*=*=按学号排序(1)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按语文成绩排序(2)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按数学成绩排序(3)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按英语成绩排序(4)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按平均分排序(5)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=回主菜单(0)\n\n"); printf("\t请输入选择:"); scanf("%d",&n); for(p=head;p->next!=NULL;p=p->next) for(s=p->next;s!=NULL;s=s->next) switch(n){ case1:if(p->num>s->num){sort_data_copy(p,s);}break; case2:if(p->chinese<s->chinese){sort_data_copy(p,s);}break; case3:if(p->math<s->math){sort_data_copy(p,s);}break; case4:if(p->english<s->english){sort_data_copy(p,s);}break; case5:if(p->ave>s->ave){sort_data_copy(p,s);}break; case0:break; default:printf("chooeerror!");break;} if(n==0){printf("\n按Enter键回主菜单\n");a=getch();break;} else{printf("排序后结果为:\n"); list();SAVE1();printf("\n按Enter键继续\n");a=getch();}}}}voidsearch_print(Lstu*p){//输出查找信息 printf("\t-------------------------------------------------------------\n"); printf("\t%-5s%-7s%-8s%-7s%-10s%-10s%-10s\n","班级","学号","姓名","性别","语文成绩","数学成绩","英语成绩"); printf("\t-------------------------------------------------------------\n"); printf("\t%-5d%-7d%-8s%-7s%%%\n",p->cla,p->num,p->name,p->sex,p->chinese,p->math,p->english); printf("\t-------------------------------------------------------------\n");}voidsearch_choose(){//选择按分数段查找方式 Lstu*p; intn,i=1,flag=0; floata,b; p=head; printf("\t*=*=*=*=*=*=*=*=*=*=*=按语文分数段查找(1)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按数学分数段查找(2)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按英语分数段查找(3)\n\n"); printf("\t请输入选择:"); scanf("%d",&n); printf("请输入分数下限(包括输入的分数):");scanf("%f",&a); printf("请输入分数上限(包括输入的分数):"); scanf("%f",&b);switch(n){ case1:while(p){ if((p->chinese)>=a&&(p->chinese)<=b){ flag=1;}p=p->next; } if(flag==0){ printf("没有此分数段的同学!\n");} else{printf("您所查找的同学信息如下:\n"); printf("\t-------------------------------------------------------------\n"); printf("\t%-5s%-7s%-8s%-7s%-10s%-10s%-10s\n","班级","学号","姓名","性别","语文成绩","数学成绩","英语成绩"); p=head; printf("\t-------------------------------------------------------------\n"); while(p){ if((p->chinese)>=a&&(p->chinese)<=b){ printf("\t%-5d%-7d%-8s%-7s%%%\n",p->cla,p->num,p->name,p->sex,p->chinese,p->math,p->english); printf("\t-------------------------------------------------------------\n");} p=p->next; }}break; case2:while(p){ if((p->chinese)>=a&&(p->math)<=b){ flag=1;}p=p->next; } if(flag==0){ printf("没有此分数段的同学!\n");} else{printf("您所查找的同学信息如下:\n"); printf("\t-------------------------------------------------------------\n"); printf("\t%-5s%-7s%-8s%-7s%-10s%-10s%-10s\n","班级","学号","姓名","性别","语文成绩","数学成绩","英语成绩"); printf("\t-------------------------------------------------------------\n"); p=head; while(p){ if((p->chinese)>=a&&(p->math)<=b){ printf("\t%-5d%-7d%-8s%-7s%%%\n",p->cla,p->num,p->name,p->sex,p->chinese,p->math,p->english); printf("\t-------------------------------------------------------------\n");} p=p->next;}}break; case3:while(p){ if((p->chinese)>=a&&(p->english)<=b){ flag=1;}p=p->next; } if(flag==0){ printf("没有此分数段的同学!\n");} else{printf("您所查找的同学信息如下:\n"); printf("\t--------------------------------------------------------------\n"); printf("\t%-5s%-7s%-8s%-7s%-10s%-10s%-10s\n","班级","学号","姓名","性别","语文成绩","数学成绩","英语成绩"); printf("\t-------------------------------------------------------------\n"); p=head; while(p){ if((p->chinese)>=a&&(p->english)<=b){ printf("\t%-5d%-7d%-8s%-7s%%%\n",p->cla,p->num,p->name,p->sex,p->chinese,p->math,p->english); printf("\t-------------------------------------------------------------\n");} p=p->next;}}break; default:printf("chooeerror!");break;}}voidsearch(){//查找 Lstu*p; intn;longm; charstr[20]; p=head; if(p==NULL){ printf("Sorry,It'saEmptyList\n");} else{ printf("\n\n\t*=*=*=*=*=*=*=*=*=*=*=按学号查找(1)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=按姓名(2)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=分数段查找(3)\n\n"); printf("\t请输入选择:"); scanf("%d",&n); switch(n){ case1:printf("请输入学号:"); scanf("%ld",&m); if(p->num==m){ printf("您所查找的同学信息如下:\n"); search_print(p);} else{ while(p->next!=NULL&&p->next->num!=m){p=p->next;} if(p->next==NULL){printf("Ithaven'tthisnumber\n");} else{ printf("您所查找的同学信息如下:\n"); search_print(p->next);}}break; case2:printf("请输入姓名:"); scanf("%s",str); if(strcmp(p->name,str)==0){ printf("您所查找的同学信息如下:\n"); search_print(p);} else{ while(p->next!=NULL&&strcmp(p->next->name,str)!=0){p=p->next;}if(p->next==NULL){printf("Ithaven'tthisname\n");} else{ printf("您所查找的同学信息如下:\n"); search_print(p->next);}}break;case3:search_choose();break; default:printf("chooeerror!");break;} }}voidmodify_choose(Lstu*p,intn){//选择修改方式 Lstu*s; printf("\t*=*=*=*=*=*=*=*=*=*=*=修改语文成绩(1)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=修改数学成绩(2)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=修改英语成绩(3)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=修改所有成绩(4)\n"); printf("\t*=*=*=*=*=*=*=*=*=*=*=回主菜单(0)\n\n"); printf("\t请输入选择:"); scanf("%d",&n); s=(Lstu*)malloc(sizeof(Lstu)); switch(n){ case1:printf("请输入新的语文成绩:"); scanf("%f",&s->chinese); p->chinese=s->chinese;break; case2:printf("请输入新的数学成绩:"); scanf("%f",&s->math); p->math=s->math;break; case3:printf("请输入新的英语成绩:"); scanf("%f",&s->english); p->english=s->english;break; case4:printf("请输入新的语文成绩:"); scanf("%f",&s->chinese); printf("请输入新的数学成绩:"); scanf("%f",&s->math); printf("请输入新的英语成绩:"); scanf("%f",&s->english); p->chinese=s->chinese;p->math=s->math; p->english=s->english;break; default:printf("chooeerror!");break;}}voidmodify(){//按姓名修改 Lstu*p; intn; charstr[20]; p=head; if(p==NULL){ printf("Sorry,It'saEmptyList\n");} else{ printf("修改前信息如下:\n");List(); printf("请输入你将修改成绩人的姓名:"); scanf("%s",str); if(strcmp(p->name,str)==0){ modify_choose(p,n); printf("修改后信息如下:\n"); List();} else{ while(p->next!=NULL&&strcmp(p->next->name,str)!=0){p=p->next;}if(p->next==NULL){printf("It'saerrorname\n");} else{modify_choose(p->next,n); printf("修改后信息如下:\n"); List();}} }}voidInsert(){//按序号插入 intn,i=0;Lstu*p,*s; p=head; if(p==NULL){ printf("Sorry,It'saEmptyList\n");} else{ printf("插入前信息如下:\n");List(); printf("请输入你将插入信息放置位置的序号:");scanf("%d",&n); while(p){p=p->next;i++;} if(n>i+1){printf("输入位置序号错误!!\n");} else{ printf("请输入你要插入的信息\n"); s=(Lstu*)malloc(sizeof(Lstu));printf("请输入班级:");scanf("%d",&s->cla); printf("请输入学号:");scanf("%ld",&s->num);printf("请输入姓名:");scanf("%s",s->name);printf("请输入性别:");scanf("%s",s->sex);printf("请输入语文成绩:");scanf("%f",&s->chinese); printf("请输入数学成绩:");scanf("%f",&s->math); printf("请输入英语成绩:");scanf("%f",&s->english);s->sum=s->chinese+s->math+s->english; s->ave=s->sum/3; if(n==1){p=head;head=s;s->next=p; printf("插入后信息如下:\n");List(); } else{p=head; while(p->next!=NULL&&p->next->ID!=n){p=p->next;} s->next=p->next;p->next=s; printf("插入后信息如下:\n");List();}} }}voiddel(){//按姓名删除 charstr[20];Lstu*p,*q; p=head; printf("\n\n请输入你要删除人的姓名\n"); scanf("%s",str);if(p==NULL){ printf("Sorry,It'saEmptyList\n");} if(strcmp(p->name,str)==0){ printf("您要删除人信息如下:\n");search_print(p);head=p->next; printf("删除后信息如下:\n");List();} else{p=head; while(p->next!=NULL&&strcmp(p->next->name,str)!=0){p=p->next;}if(p->next==NULL){printf("It'saerrorname\n");} else{printf("您要删除人信息如下:\n");search_print(p->next);q=p->next;p->next=q->next; free(q); printf("删除后信息如下:\n");List();} }}voidstatistics(){ system("cls"); printf("\n\n全部成绩统计如下:\n\n"); Lstu*p=head; intn=0,i; floatsum,average,a; while(p){n++;p=p->next;} printf("\t全部共有%d个人\n\n\n",n); p=head;sum=0;i=0; while(p){sum=sum+p->chinese; if(p->chinese<60){i++;}p=p->next;} average=sum/n;a=(float(n)-float(i))/float(n); printf("\t语文平均分为:%\n\n",average); printf("\t共有%d个人语文不及格\n\n",i); printf("\t及格率为%.2f%s\n\n\n",a*100,"%"); p=head;sum=0;i=0; while(p){sum=sum+p->math; if(p->math<60){i++;}p=p->next;} average=sum/n;a=(float(n)-float(i))/float(n); printf("\t数学平均分为:%\n\n",average); printf("\t共有%d个人数学不及格\n\n",i); printf("\t及格率为%.2f%s\n\n\n",a*100,"%"); p=head;sum=0;i=0; while(p){sum=sum+p->english; if(p->english<60){i++;}p=p->next;} average=sum/n;a=(float(n)-float(i))/float(n); printf("\t英语平均分为:%\n\n",average); printf("\t共有%d个人英语不及格\n\n",i); printf("\t及格率为%.2f%s\n\n\n",a*100,"%");}intmenu(){//菜单 inta; time_trawtime;structtm*timeinfo;time(&rawtime);timeinfo=localtime(&rawtime);system("cls");/*运行前清屏*/printf("\n");printf("\t=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论