数据结构课程设计-《学生成绩管理系统》《参考版》

合集下载

(2023)数据结构课设报告学生成绩管理系统(一)

(2023)数据结构课设报告学生成绩管理系统(一)

(2023)数据结构课设报告学生成绩管理系统(一)数据结构课设报告学生成绩管理系统一、背景介绍为了方便教师管理学生的成绩,提高数据处理的效率和准确性,我们团队开发了一款可以管理学生成绩的系统。

二、需求分析•教师可以登录系统,并进行学生信息的录入、修改、查询和删除。

•教师可以录入、修改、查询和删除学生的成绩。

•学生也可以登录系统,并查看自己的成绩。

•教师和学生的密码需要进行加密存储,并能够找回密码。

三、设计方案1. 数据结构设计我们采用链表的数据结构,实现学生信息和成绩的存储。

- 学生信息:学号、姓名、密码。

- 学生成绩:科目、成绩。

2. 模块划分•登录模块:实现教师和学生的登录、密码加密和找回密码。

•学生信息管理模块:实现学生信息的录入、修改、查询和删除。

•成绩管理模块:实现成绩的录入、修改、查询和删除。

•学生成绩查询模块:实现学生查看自己成绩的功能。

3. 界面设计我们采用Java Swing库实现图形化界面,美观易用。

四、开发过程1. 环境配置我们使用Java语言进行开发,并采用MySQL数据库存储数据。

开发工具为Eclipse和Navicat。

2. 实现过程在开发过程中,我们分别完成了登录模块、学生信息管理模块、成绩管理模块和学生成绩查询模块。

同时,我们进行了严格的测试和优化,保证了系统的稳定性和用户体验。

五、总结通过本次课设,我们学习到了如何设计、实现一款简单的大型软件。

同时,我们也深入理解了数据结构的应用和开发过程中需要注意的问题。

未来,我们将继续学习和提升自己的技术水平,为社会创造更多有用的产品。

六、存在的问题和改进计划1. 学生信息和成绩输入需要更为便捷目前的输入方式需要逐一输入每个学生的信息以及成绩,如果要录入多个学生的信息,效率不高。

我们计划实现批量导入的功能,可以通过Excel表格导入学生信息和成绩。

2. 安全性还需要更高的保障目前我们只是简单使用密码加密保护了教师和学生的账户信息,如果系统被攻击者入侵,那么所有的账户信息和成绩信息都会暴露,对学生隐私和数据安全造成极大威胁。

数据结构课程设计-《学生成绩管理系统》《参考版》#精选.

数据结构课程设计-《学生成绩管理系统》《参考版》#精选.

淮阴工学院数据结构课程设计报告选题名称:学生成绩管理系统系(院):数理学院专业:信息与计算科学班级:计科1102班姓名:徐连喜学号: 1104101233指导教师:周海岩学年学期:2011 ~ 2012 学年第 1 学期2012 年06 月06 日【摘要】21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的讯速发展和广泛应用,对社会的政治,经济,军事,文化等领域产生越来越深刻。

学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。

本论文叙述到的学生成绩管理系统是用IIS+ASP网页编程+ACCESS数据库+DREAMWEAVER MX 2004+SQL查询语言实现的。

重点介绍了学生成绩管理系统的实现过程:包括系统分析,系统调查,功能设计,数据库设计,系统实现,系统测试和调试等。

本系统主要功能有查询学生成绩、单个添加学生成绩、批量添加学生成绩、删除学生成绩、管理页面和修改管理员密码等内容。

【关键词】成绩管理;成绩查询;C++目录中文摘要。

1 1绪论。

4 1.1 选题背景。

5 1.2 需求分析。

6 2总体设计。

7 2.1程序设计组成框图。

8 2.2 模块功能说明。

9 2.3 程序流程图。

102.4 主要函数之间相互调用。

113 在设计过程中的感受。

12 致谢。

13 参考文献。

14附录:源程序清单。

151.绪论1.1 选题背景为了提高高校学生信息的管理效率,方便对学生信息进行管理、学校里面的学生和管理员方便去管理和查询学生信息,如再要进行查询,就得在众多的学生信息中查找自己的成绩信息,面对学院大量的学生信息,怎么可以即时而方便的管理,学生只要登录本系统就可以查找到自己的成绩信息,而管理员也方便去管理每学期的学生的成绩信息。

建立一个学生信息管理系统,使学生信息管理工作规范化,系统化,程序化,避免学生管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生信息是必须而且十分迫切的工作。

数据结构课程设计__学生成绩管理系统

数据结构课程设计__学生成绩管理系统

数据结构课程设计报告学生成绩管理系统学院:信息与工程学院专业:计算机科学与技术班级:090412姓名:邓军学号:09041220指导老师:谢老师日期:2011-06-22目录第一章需求分析1.1课程设计题目及要求1.2课程设计思想及开发环境第二章概要设计2.1总体方案2.2 模板功能分析及其外部设计2.3主要数据结构第三章详细设计第四章调试与操作说明4.1主要模板调试4.2 系统缺陷及原因第五章课程设计总结与体会第六章参考文献第一章 需求分析1.1课程设计题目及要求 题目:学生成绩管理系统 学生成绩表:要求如下:1) 实现对两个文件数据进行合并,生成新文件3.txt2) 抽取出三科成绩中有补考的学生并保存在一个新文件4.txt 3) 对合并后的文件3.txt 中的数据按总分降序排序(至少采用两种排序方法实现)4) 输入一个学生姓名后,能查找到此学生的信息并输出结果(至少采用两种查找方法实现)5) 要求使用结构体,链或数组等实现上述要求.1.2课程设计思想及开发环境设计思想:本课题的实质是完成对学生成绩表的合并、提取、排序、查询等功能,可以首先定义项目的数据结构,然后将每个功能写学生成绩信息文件1(1.txt ),内容如下 姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04 56 45 77 陈东明 05 67 38 47…. .. .. ..学生成绩信息文件2(2.txt ),内容如下:姓名 学号 语文 数学 英语 陈果 31 57 68 82 李华明 32 88 90 68 张明东 33 48 42 56 李明国 34 50 45 87 陈道亮 35 47 58 77…. .. .. ..成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运行结果。

可将此系统分为如下模块,合并两个信息表、从表中提取信息、降序排序模块、按条件进行查询、退出系统。

数据结构-学生成绩管理系统课程设计

数据结构-学生成绩管理系统课程设计

“数据结构与算法”课程设计报告*课程设计题目;要求:完成学生成绩的录入、统计、查询、修改、删除、输出。

(一)需求和规格说明1、软件其本身应是一个大的分支系统,每个分支都对应系统的一项功能。

在数据通过系统主功能输入完成后,通过调用各个子功能对数据进行相应的处理,达到相应的目的。

2、系统中首相要解决的问题就是信息的存储,学生的信息包含多方面的内容,必须用类或结构体去存储。

原题目中要求学生学号num用int类型的变量来存储,但实际情况下此设计并不妥,所以在系统设计的过程中,我用了一个长度为10的char类型的数组来存储学号,基本满足了实际应用的基本要求。

实际设计时系统的数据表如下3、由于系统本身为一个管理系统,所以设计过程中应采用交互式的方式方便操作者的使用,由于没有采用图形界面,所以可以通过循环弹出功能菜单的方式实现。

4、在系统各项子功能实现的过程中,需要通过编写函数,调用库函数等方式以实现字符串操作、指针操作、文件操作等,以达到系统中各项功能的不同要求。

(二)设计1、设计思路(1)、结构体的定义代码如下:struct data{char Name[n]; //姓名char Class[n]; //班级char Number[n]; //学号float cprog,media,eng,math,sport; //各科成绩float sum; //总分float ave; //平均数int order; //名次};typedef data *Infor;通过以上定义,将单个学生的各项基本信息封装到了一个名为Infor的结构体变量中。

另外,为了在系统中方便实现排序、查询、删除等功能,在头文件func.h 中又定义了一个Infor类型的数组stu[maxnum](maxnum为宏变量,大小为999),该数组默认可以存储999名学生的信息,如此一来,便大大简化了排序等功能的实现难度。

(2)、系统框架此系统大体框架由三个层次构成,依次为系统主菜单,主功能下设的子菜单及最底层菜单下的功能实现。

(完整word版)数据结构课程设计(学生成绩管理系统)(word文档良心出品)

(完整word版)数据结构课程设计(学生成绩管理系统)(word文档良心出品)

目录一、运行环境 0一、运行环境 (1)二、设计目的和意义 (1)2.1设计目的 (1)2.2设计意义 (1)三、算法思想 (1)四、模块划分 (4)五、数据结构 (5)六、程序流程图 (6)七、程序源代码 (8)八、程序调试过程分析 (18)九、测试数据 (18)十、测试结果及分析 (19)十一、小结 (23)参考文献 (24)一、运行环境硬件环境:电脑软件环境:vc++6.0二、设计目的和意义2.1设计目的此次课程设计的目的是让学生在学习完C、数据结构等课程基础上,进一步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。

2.2设计意义此次设计意义在于让我们更好的去掌握C的基本语法、函数以及Visual C++集成编译环境。

掌握树、图、链表等基本数据结构及其应用。

掌握程序流程以及基本应用方法。

应用软件工程方面的知识,熟悉软件开发的流程。

通过本课程设计,培养学生进行软件设计能力。

首先进行需求分析,针对目标对象完成程序结构设计、对象设计、主要数据结构设计、输入输出设计、人机界面设计等。

三、算法思想整个系统除了主函数外,另外还有12个函数,实现十大功能:菜单选择、输入功能、显示功能、查找功能、删除功能、排序功能、插入功能、保存功能、读取功能、修改。

各个函数的详细设计说明分别如下:1、主函数 main()利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入的数字选项来调用相应的函数。

2、初始化函数 STUDENT *init()这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使head的值为NULL。

比如:没有这个函数的话,在你没有输入任何数据的情况下,去执行显示功能的时候会显示一些乱码!3、菜单选择函数 int menu_select();这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显示系统的九大功能,根据每个功能前面的序号进行选择,中间还显示系统当前的时间。

数据结构课程设计-《学生成绩管理系统》《参考版》

数据结构课程设计-《学生成绩管理系统》《参考版》

淮阴工学院数据结构课程设计报告选题名称:学生成绩管理系统系(院):ﻩ数理ﻩ学院ﻩﻩ专业:信息与计算科学ﻩﻩ班级:计科1102班姓名:徐连喜学号:1104101233指导教师:ﻩ周海岩ﻩﻩ学年学期:201ﻩ1~ 2012 学年第 1 学期2012年06月06日【摘要】21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的讯速发展和广泛应用,对社会的政治,经济,军事,文化等领域产生越来越深刻。

学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。

本论文叙述到的学生成绩管理系统是用IIS+ASP网页编程+ACCESS数据库+DREAMWEAVER MX 2004+SQL 查询语言实现的。

重点介绍了学生成绩管理系统的实现过程:包括系统分析,系统调查,功能设计,数据库设计,系统实现,系统测试和调试等。

本系统主要功能有查询学生成绩、单个添加学生成绩、批量添加学生成绩、删除学生成绩、管理页面和修改管理员密码等内容。

【关键词】成绩管理;成绩查询; C++ﻬ目录中文摘要。

1 1绪论。

41.1 选题背景。

51.2 需求分析。

62总体设计。

72.1程序设计组成框图。

82.2 模块功能说明。

92.3 程序流程图。

102.4 主要函数之间相互调用。

113 在设计过程中的感受。

12致谢。

13参考文献。

14附录:源程序清单。

151.绪论1.1 选题背景为了提高高校学生信息的管理效率,方便对学生信息进行管理、学校里面的学生和管理员方便去管理和查询学生信息,如再要进行查询,就得在众多的学生信息中查找自己的成绩信息,面对学院大量的学生信息,怎么可以即时而方便的管理,学生只要登录本系统就可以查找到自己的成绩信息,而管理员也方便去管理每学期的学生的成绩信息。

建立一个学生信息管理系统,使学生信息管理工作规范化,系统化,程序化,避免学生管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生信息是必须而且十分迫切的工作。

数据结构课程设计学生成绩管理系统

数据结构课程设计学生成绩管理系统

课程设计报告课程设计题目:1:学生成绩管理系统2:joseph环3:猴子选大王姓名洪军学号201420180706班级1421807指导教师邹国华2015年12月17日1:学生成绩管理系统1, 问题分析;定义一个学生管理系统实现对学生基本数据的管理,录入:输入每位学生的信息;输出:输出每位学生的信息;查询:可以按3学号和4姓名查询某个学生的信息;修改:可以修改学生(按1学号修改,按2成绩修改)的信息;插入:可以插入一个学生的信息;删除:可以删除(按1学号删除,按2成绩删除)满足条件的学生信息;排序:可以按学生的总成绩排序。

2 结构分析首先分析结果我采用的是单链表的存储结构通过此系统可以实现如下功能:定义一个学生类型student(学号,姓名,四门课程成绩),学生链表student,含有学生数组和学生数。

3 实现流程分析定义数据类型typedef struct student⇩初始化结构体并输入学生的数据inputstu(stu &s,int n)⇩重载运算符便于输入输出学生的成绩⇩输出函数输出全部学生的信息output(stu s)⇩查找学生3按学号查找getstu1(stu s,char i[]) 4按姓名查找getstu2(stu s,char c[])⇩插入学生insetstu(stu &s,int i,char nu[],char na[],char se[],int sc[])⇩1按学号删除学生deletestu1(stu &s),2按姓名删除学生deletestu2(stu &s)⇩1按学号修改学生的信息update1(stu &s) 2按姓名修改学生的信息update2(stu &s)⇩对总成绩排序sort(stu &s,struct shu shuzu[])⇩CPP文件实现所有功能4 算法实现头文件status.htypedef int status;#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define N 10typedef struct student{ //学生结构体(链表)char num[9];char name[15];char sex[2];int score[4];student *next;}student,*stu;struct shu{ //辅助结构体数组存储学生总成绩和学号便于排序float allscore;char num[9];}shuzu[10];ostream &operator<<(ostream &os,stu &s); //运算符的重载istream &operator>>(istream &is,stu &s); //运算符的重载void inputstu(stu &s,int n) //初始化并且输入函数{student *p,*r;int i;s=(stu)malloc(sizeof(student)); //申请头节点r=s;for(i=0;i<n;i++){p=(student *)malloc(sizeof(student)); //申请链表空间}status insetstu(stu &s,int i,char nu[],char na[],char se[],int sc[]) //插入学生{student *p=s,*q;int j=0,m;while(j<i-1&&p->next) //找到学生的位置{p=p->next;j++;}if(j==i-1){q=(student*)malloc(sizeof(student)); //申请新结点if(!q)return OVERFLOW; //申请失败返回错误{strcpy(q->name,na); //赋值strcpy(q->num,nu);for(m=0;m<4;m++)q->score[m]=sc[m];strcpy(q->sex,se);q->next=p->next;p->next=q;return OK;}}elsereturn ERROR;}status deletestu1(stu &s) //按学号删除学生{char i[10];cout<<"请输入你要删除学生的学号"<<endl;cin>>i;student *p=s,*r;while(strcmp(p->next->num,i)!=0) //找到修改学生{p=p->next;}if(p) //存在就删除不存在就返回错误{r=p->next;p->next=r->next;free(r);return 0;}elsereturn ERROR;}status deletestu2(stu &s) //按姓名删除学生{char i[10];cout<<"请输入你要删除学生的姓名"<<endl;cin>>i;student *p=s,*r;while(strcmp(p->next->name,i)!=0) //找到修改学生{p=p->next;}if(p){r=p->next;p->next=r->next;free(r);return 0;}elsereturn ERROR;}status update1(stu &s) //按学号修改学生的信息{char i[10];cout<<"请输入你要修改学生的学号"<<endl;cin>>i;student *p=s;while(strcmp(p->num,i)!=0) //找到修改学生{p=p->next;}if(p){cin>>p;return 0;}elsereturn ERROR;}status update2(stu &s) //按姓名修改学生的信息{char i[10];cout<<"请输入你要修改学生的姓名"<<endl;cin>>i;student *p=s;while(strcmp(p->name,i)!=0) //找到修改学生{p=p->next;}if(p){cin>>p;return 0;}elsereturn ERROR;}void sort(stu &s,struct shu shuzu[]) //对总成绩排序{int n=0,i,j,k;student *p=s->next;while(p){ //获取多少个人数n++;p=p->next;};p=s->next;for(i=1;i<=n;i++) //对结构体进行赋值{ shuzu[i].allscore=0;for(j=0;j<4;j++)shuzu[i].allscore=shuzu[i].allscore+p->score[j];strcpy(shuzu[i].num,p->num);p=p->next;}for(i=1;i<n;i++){ //对结构体进行排序k=i;for(j=i+1;j<=n;j++)if(shuzu[j].allscore>shuzu[k].allscore)k=j;if(k!=j){shuzu[0].allscore=shuzu[i].allscore;strcpy(shuzu[0].num,shuzu[i].num);shuzu[i].allscore=shuzu[k].allscore;strcpy(shuzu[i].num,shuzu[k].num);shuzu[k].allscore=shuzu[0].allscore;strcpy(shuzu[k].num,shuzu[0].num);}}for(i=1;i<=n;i++){ //对总成绩从大到小输出p=s->next;while(strcmp(p->num,shuzu[i].num)!=0) //按学号查找相对应的学生信息{p=p->next;}cout<<p<<" 总成绩为:"<<shuzu[i].allscore<<endl;}}ostream &operator<<(ostream &os,stu &s) //输出函数的重载{os<<"学号:"<<s->num<<" 姓名:"<<s->name<<" 性别:"<<s->sex<<"科目 1 "<<s->score[0]<<"科目 2 "<<s->score[1]<<"科目3 "<<s->score[2]<<"科目4 "<<s->score[3]<<endl;return os;}istream &operator>>(istream &is,stu &s) //输入函数的重载{ cout<<""<<"学号"<<"姓名"<<"性别"<<"科目1 "<<"科目2 "<<"科目3 "<<"科目4 "<<endl; is>>s->num>>s->name>>s->sex>>s->score[0]>>s->score[1]>>s->score[2]>>s->score[3];return is;}CPP文件#include<iostream.h>#include<stdio.h>#include<string.h>#include<stdlib.h>#include"Status.h"void menu(){cout<<"* * * * * * * *学生管理系统* * * * * * *"<<endl;cout<<"* * * 1:添加学生* * *"<<endl;cout<<"* * * 2:显示信息* * *"<<endl;cout<<"* * * 3:按学号查找* * *"<<endl;cout<<"* * * 4:按姓名查找* * *"<<endl;cout<<"* * * 5: 插入学生* * *"<<endl;cout<<"* * * 6: 删除学生* * *"<<endl;cout<<"* * * 7: 修改学生* * *"<<endl;cout<<"* * * 8: 学生总成绩排序* * *"<<endl;cout<<"* 其他:返回主菜单"<<endl;cout<<"请选择";}int main(){ stu s;struct shu shuzu[10];int i,k[4],j;char c[9],p[9];char x[20],o[20];char l[3];menu();while(1){static int n;scanf("%d",&n);switch(n){case 1:cout<<"输入多少个学生"<<endl;cin>>n;inputstu(s,n);break;case 2:output(s);break;case 3:cout<<"请输入你要找的学生学号:";cin>>c;getstu1(s,c);break;case 4:cout<<"请输入你要找的学生姓名:";cin>>x;getstu2(s,x);break;case 5:cout<<"需要插入位置,学号,姓名,性别,科目1,科目2,科目3,科目4"<<endl;cin>>i>>p>>o>>l;for(j=0;j<4;j++)cin>>k[j]; insetstu(s,i,p,o,l,k);break;case 6:cout<<"1:按学号删除学生的信息;2:按姓名删除学生的信息"<<endl;cin>>j;switch(j){case 1:deletestu1(s);break;case 2:deletestu2(s);break;};break;case 7:cout<<"1:按学号修改学生的信息;2:按姓名修改学生的信息"<<endl;cin>>j;switch(j){case 1:update1(s);break;case 2:update2(s);break;};break;case 8:sort(s,shuzu);break;default:return 0;}}调试结果5 课程小结我采用的是链表来存储学生的信息,最大的难点就是总成绩的排序,其他的功能实现还是比较简单,总成绩排序我用啦一个辅助结构体struct shu 来存储每个学生的学号char num来记录学生以及便于排序的时候查找,还有总成绩float allscore,且用结构体数组来存储首先对每个学生的学号及总成绩赋值给结构体数组shuzu[],然后对结构体数组进行从大到小排序(选择排序)然后对结构体一一查找相应的信息。

数据结构课程设计学生成绩管理系统【范本模板】

数据结构课程设计学生成绩管理系统【范本模板】

辽宁科技大学课程设计报告设计题目: 学生成绩管理学院、系:电子与信息工程学院专业班级:计算机11-2 班学生姓名:赵月指导教师:龙艳彬成绩:2013年1 月8 日目录一、需求分析---——-————----—-—--—-------—-————-——--———---—-—-3二、概要设计-—---——---——————-——-—---—-—-—---—-—-—--—-——-————3三、详细设计-—-—-—-——--—-———-—-—----—--—-—————--—-—---——----53.1系统流程图———--—--——-—---—-—-————-—---—---———---——--—————----—-53.2界面设计—--—-—----—--——-—----—-——---—---————-—--————-—--—-——-—-63。

3各功能模块的设计----—-----—--—---———-——--—--—-———---——————-———7四、测试与分析—--——------———---————--—-—-—--—---——-—-——--—-9五、总结--——--—-—-----——--—-—-——----—--—-————-——————----————-15六、附录(源代码)--—--—--------—--—-—---—----———-------161.需求分析1.1问题描述本系统实现了学生成绩管理的功能,具有学生成绩的输入、读取、查询、修改、插入、删除、排序,统计等功能.1.2基本要求(1) 输入的形式和输入值的范围;首先输入学生个数,按回车键。

按照提示选择,将学生信息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中。

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

淮阴工学院数据结构课程设计报告选题名称:学生成绩管理系统系(院):数理学院专业:信息与计算科学班级:计科1102班姓名:徐连喜学号: 1104101233指导教师:周海岩学年学期:2011 ~ 2012 学年第 1 学期2012 年06 月06 日【摘要】21世纪,科学技术突飞猛进,经济知识和信息产业初见端倪,特别是信息技术和网络技术的讯速发展和广泛应用,对社会的政治,经济,军事,文化等领域产生越来越深刻。

学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要。

本论文叙述到的学生成绩管理系统是用IIS+ASP网页编程+ACCESS数据库+DREAMWEAVER MX 2004+SQL查询语言实现的。

重点介绍了学生成绩管理系统的实现过程:包括系统分析,系统调查,功能设计,数据库设计,系统实现,系统测试和调试等。

本系统主要功能有查询学生成绩、单个添加学生成绩、批量添加学生成绩、删除学生成绩、管理页面和修改管理员密码等内容。

【关键词】成绩管理;成绩查询;C++目录中文摘要。

1 1绪论。

4 1.1 选题背景。

5 1.2 需求分析。

6 2总体设计。

7 2.1程序设计组成框图。

8 2.2 模块功能说明。

9 2.3 程序流程图。

102.4 主要函数之间相互调用。

113 在设计过程中的感受。

12 致谢。

13 参考文献。

14附录:源程序清单。

151.绪论1.1 选题背景为了提高高校学生信息的管理效率,方便对学生信息进行管理、学校里面的学生和管理员方便去管理和查询学生信息,如再要进行查询,就得在众多的学生信息中查找自己的成绩信息,面对学院大量的学生信息,怎么可以即时而方便的管理,学生只要登录本系统就可以查找到自己的成绩信息,而管理员也方便去管理每学期的学生的成绩信息。

建立一个学生信息管理系统,使学生信息管理工作规范化,系统化,程序化,避免学生管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改学生信息是必须而且十分迫切的工作。

2.1 需求分析学生管理系统功能的信息量大,数据安全性和保密性要求最高。

本功能实现对专业信息、学生信息、教师信息情况信息的管理和统计、课程信息和成绩信息查看及维护。

系统管理员可以浏览、查询、学生的基本信息,能添加、删除和修改学生信息,这部分功能应该由系统管理员执行,但是,删除某条专业基本信息记录时,应实现对该专业的相关信息也级联删除。

并且还应具有查询,并打印输出的功能设计不同用户的操作权限和登陆方法、对所有用户开放的用户提供学生成绩信息查询、由于本系统功能实现方面并不太复杂,所以上面只是相关的学生信息管理查询的总体分析,具体实现就主要体现在学生管理,教师的管理和课程的管理这一块,也就是重点实现查询与添加学生信息,以及对成绩信息管理。

2.总体设计(1)程序设计组成框图(2)模块功能说明1 输出功能:完成全部学生记录的显示。

2 查询功能:输入姓名可以查询学生的详细信息。

3 增加功能:增加新学生的信息。

4 删除功能:删除学生信息。

5 修改功能:修改学生的错误信息。

6保存功能:保存已输入信息。

7读取功能:读取已输入信息。

8显示功能:按要求显示学生记录。

9 排序功能:按要求完成对学生信息的排序。

10 退出系统。

(3)程序流程图(4)主要函数之间相互调用如下:总结首先经过一周的编程实习,并在后一段的报告总结,我对数据结构这门科有新的认识,本人实在是获益不浅!要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。

这次设计,让我重新掌握了数据结构,而且还得到了用数据结构解决实际问题的宝贵经验。

其次, 通过此次编程我也发现了自己在学习中的错误和不足,复习了以前学过的知识。

同时也学到了一些没学过的知识,让我从中收益非浅,也为期末考试准备了一下!更重要的是培养了独立思考问题和解决问题的能力,熟悉了一些基本操作和解决问题的方法!致谢因为初次接触等原因此次设计遇到了许多问题,我深刻体会到老师发挥的重要作用, 数据结构程序对我们来说比较难,在匆忙的学习中更是难上加难,似乎觉得自己仅是个匆匆过客,但在老师的帮助下我学会了如何调试,如何查找系统没有提示的错误,最后终于排除万难把程序搞定,体会到原来编程也挺有意思的快感.我想没有老师的帮助我很难在短期内把程序设计做的这样好,在此特地感谢老师的帮助。

参考文献[1] 李丽娟 . C语言程序设计教程(第二版). 北京:人民邮电出版社 2009[2] 刁成嘉 . C语言程序设计论文 [D].北京:清华大学出版社2004[3] 杨文军,杨柳 . C语言程序设计教程[M]. 北京:清华大学出版社 2010[4] 周启海 . C语言程序设计报告[R].北京:中国水利工程出版社 2005[5] 谭浩强 . C程序设计(第三版)[M].北京:清华大学出版社 2005附录源程序清单#include<stdio.h>#include<conio.h>#include<malloc.h>#include<string.h>typedef struct STUDENT{char studentNumber[10];/*学生学号*/ char studentName[20];/*学生姓名*/ char className[20];/*班级名称*/char yearName[20];/*学期名称*/float mark1;/*第1门成绩*/float mark2;/*第2门成绩*/float mark3;/*第3门成绩*/struct STUDENT *next;}STUDENT;STUDENT *headLink;/*链表表头指针*//*以下是函数声明*/void ReadInfoFormFile(void);void DesplayMenu(void);void CreateHeadLink(void);STUDENT *MallocNode(void);void GetInformation(STUDENT *t);void OutputInformation(void);void DesplayInfoBystudentName(void); void DesplayOneNode(STUDENT *t);void InsertOneNode(STUDENT *t);void DeleteNodeBystudentNumber(void); void ChangeMarkByName(void);void ChangeMarkByNumber(void);void SaveLinkToFile(void);void DesplayMarkSegment(void);void CompositorByTotalMark(void);int choose;/*用于接受用户的选择*//*主函数*/void main(){CreateHeadLink();ReadInfoFormFile();DesplayMenu();}/************************************函数功能:从文件中读学生信息到链表中************************************/void ReadInfoFormFile(void){FILE *fp;STUDENT *p;fp=fopen("student.txt","r");if(!fp){printf("文件不存在\n");return;}p=MallocNode();while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->cl assName,&(p->mark1),&(p->mark2),&(p->mark3))>0){InsertOneNode(p);p=MallocNode();}fclose(fp);}/************************************函数功能:显示菜单,根据用户的输入完成相应的功能************************************/void DesplayMenu(void){STUDENT *p;printf("-------请选择相应功能------------\n\n");printf("| 1 按班级输出学生成绩单 |\n");printf("| 2 按姓名查询 |\n");printf("| 3 增加学生 |\n");printf("| 4 删除学生 |\n");printf("| 5 按班级修改学生成绩 |\n");printf("| 6 按学期修改学生成绩 |\n");printf("| 7 保存所有学生信息 |\n");printf("| 8 显示不及格学生成绩 |\n");printf("| 9 按平均成绩排序并输出绩 |\n");printf("| 10 退出 |\n\n");scanf("%d",&choose);/*取得用户的选择*/switch(choose){case 1:OutputInformation();/*显示所有学生的信息*/break;case 2:DesplayInfoBystudentName();break;case 3:p=MallocNode();/*先申请一个新结点*/GetInformation(p);/*要求用户输入信息到新结点中*/ InsertOneNode(p);/*将新结点加到链表中*/break;case 4:DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/ break;case 5:ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/ break;case 6:ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/ break;case 7:SaveLinkToFile();/*保存数据*/break;case 8:DesplayMarkSegment();/*显示不及格的学生成绩*/break;case 9:CompositorByTotalMark();/*按平均成绩排序*/break;case 10:SaveLinkToFile();/*保存数据后再退出*/free(headLink);break;default:break;}DesplayMenu();/*递归调用*/}/************************************函数功能:建立链表表头************************************/void CreateHeadLink(void){STUDENT *p;p=(STUDENT*)malloc(sizeof(STUDENT));headLink=p;p->next=NULL;}/************************************ 函数功能:申请一个新结点,并将其初始化************************************/ STUDENT *MallocNode(void){STUDENT *p;int i;p=(STUDENT*)malloc(sizeof(STUDENT)); if(p==NULL)return NULL;for(i=0;i<10;i++)p->studentNumber[i]='\0';for(i=0;i<20;i++)p->studentName[i]='\0';for(i=0;i<20;i++)p->className[i]='\0';p->mark1=0.0;p->mark2=0.0;p->mark3=0.0;p->next=NULL;return p;}/************************************ 函数功能:取得用户输入的学生信息************************************/ void GetInformation(STUDENT *t){printf("请输入学生学号:\n");scanf("%s",t->studentNumber);printf("请输入学生姓名:\n");scanf("%s",t->studentName);printf("请输入该生所在班级:\n"); scanf("%s",t->className);printf("请输入第1门成绩:\n");scanf("%f",&(t->mark1));printf("请输入第2门成绩:\n");scanf("%f",&(t->mark2));printf("请输入第3门成绩:\n");scanf("%f",&(t->mark3));}/************************************函数功能:在链表的结尾处增加一个结点************************************/void InsertOneNode(STUDENT *t){STUDENT *p;p=headLink;while(p->next){p=p->next;}p->next=t;}/************************************函数功能:根据用户输入的学生姓名显示该学生的信息************************************/void DesplayInfoBystudentName(void){STUDENT *p;char studentName[20];char flag=0;p=headLink->next;printf("请输入学生姓名:\n");scanf("%s",studentName);while(p){if(strcmp(p->studentName,studentName)==0){printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n");DesplayOneNode(p);flag=1;break;}p=p->next;}if(!flag)printf("对不起,不存在姓名为 %s 的学生\n",studentName);}/************************************函数功能:输出一个结点的信息************************************/void DesplayOneNode(STUDENT *t){printf("%s\t",t->studentNumber);printf("%s\t",t->studentName);printf("%s\t",t->className);printf("%.2f\t",t->mark1);printf("%.2f\t",t->mark2);printf("%.2f\t",t->mark3);printf("%.2f\t",t->mark1+t->mark2+t->mark3);printf("%.2f\t\n",(t->mark1+t->mark2+t->mark3)/3); }/************************************函数功能:根据用户输入的学号删除该学生************************************/void DeleteNodeBystudentNumber(void){char studentNumber[10];STUDENT *p,*q;char flag=0;printf("请输入要删除的学生学号:");scanf("%s",studentNumber);p=headLink;q=headLink->next;while(q){if(strcmp(q->studentNumber,studentNumber)==0) {p->next=q->next;free(q);flag=1;break;}p=p->next;q=q->next;}if(!flag){printf("不存在该学号的学生\n");return;}printf("成功删除\n");}/************************************函数功能:显示所有学生的信息************************************/void OutputInformation(void){STUDENT *p;p=headLink->next;if(p==NULL){printf("现在没有学生信息,请先输入学生信息\n\n");return;}printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n");while(p){DesplayOneNode(p);p=p->next;}}/************************************函数功能:根据输入的班级修改成绩************************************/void ChangeMarkByName(void){STUDENT *p;int a;char studentName[20];char flag=0;float mark1,mark2,mark3;p=headLink->next;printf("请输入学生班级:\n");scanf("%d",&a);printf("请输入学生姓名:\n");scanf("%s",studentName);while(p){if(strcmp(p->studentName,studentName)==0){printf("请输入新的第1门成绩:\n");scanf("%f",&mark1);printf("请输入新的第2门成绩:\n");scanf("%f",&mark2);printf("请输入新的第3门成绩:\n");scanf("%f",&mark3);p->mark1=mark1;p->mark2=mark2;p->mark3=mark3;flag=1;printf("修改成功\n");break;}p=p->next;}if(!flag)printf("对不起,不存在班级为 %s 的学生\n",studentName); }/************************************函数功能:根据输入的学期修改成绩************************************/void ChangeMarkByNumber(void){STUDENT *p;int b;char studentNumber[20];char flag=0;float mark1,mark2,mark3;p=headLink->next;printf("请输入学生所在学期:\n");scanf("%d",&b);printf("请输入学生学号:\n");scanf("%s",studentNumber);while(p){if(strcmp(p->studentNumber,studentNumber)==0){printf("请输入新的第1门成绩:\n");scanf("%f",&mark1);printf("请输入新的第2门成绩:\n");scanf("%f",&mark2);printf("请输入新的第3门成绩:\n");scanf("%f",&mark3);p->mark1=mark1;p->mark2=mark2;p->mark3=mark3;flag=1;printf("修改成功\n");break;}p=p->next;}if(!flag)printf("对不起,不存在学期为 %s 的学生\n",studentNumber);}/************************************函数功能:保存链表数据到文件中************************************/void SaveLinkToFile(void){STUDENT *p;FILE *fp;p=headLink->next;if(p==NULL){printf("现在没有学生信息,请先输入学生信息\n\n");return;}fp=fopen("student.txt","w+");if(!fp){printf("文件不存在\n");return;}while(p){fprintf(fp,"%s %s %s %f %f %f\n",p->studentNumber,p->studentName,p-> className,p->mark1,p->mark2,p->mark3);p=p->next;}fclose(fp);}/************************************函数功能:不及格学生成绩************************************/void DesplayMarkSegment(void){STUDENT *p;int count=0;p=headLink->next;printf("60分以下(不及格)的学生成绩如下:\n");printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n");while(p){if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p-> mark3/10))))/*只要有一科不及格就认为该生不及格*/{count++;DesplayOneNode(p);}p=p->next;}printf("不及格的学生一共有%d人\n",count);}/************************************函数功能:按平均成绩排序************************************/void CompositorByTotalMark(void){STUDENT exchange,*r,*p,*q;r=headLink->next;if(r==NULL){printf("现在还没学生信息,请先输入学生信息\n");return;}while(r)/*两层while循环实现排序*/{p=r;q=r->next;while(q){if((q->mark1+q->mark2+q->mark3)>(p->mark1+p->mark2+p->mark3)){strcpy(exchange.studentNumber,q->studentNumber);/*先复制q结点信息到exchange*/strcpy(exchange.studentName,q->studentName);strcpy(exchange.className,q->className);exchange.mark1=q->mark1;exchange.mark2=q->mark2;exchange.mark3=q->mark3;strcpy(q->studentNumber,p->studentNumber);/*再复制p结点信息到q*/ strcpy(q->studentName,p->studentName);strcpy(q->className,p->className);q->mark1=p->mark1;q->mark2=p->mark3;q->mark3=p->mark3;strcpy(p->studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/strcpy(p->studentName,exchange.studentName);strcpy(p->className,exchange.className); p->mark1=exchange.mark1;p->mark2=exchange.mark2;p->mark3=exchange.mark3;}q=q->next;}r=r->next;}OutputInformation();}修改程序如下:/*2015年12月7日编制丹白工作室*/#include<stdio.h>#include<conio.h>#include<malloc.h>#include<string.h>typedef struct STUDENT{char studentNumber[10];/*学生学号*/char studentName[20];/*学生姓名*/char className[20];/*班级名称*/char yearName[20];/*学期名称*/float mark1;/*第1门成绩*/float mark2;/*第2门成绩*/float mark3;/*第3门成绩*/struct STUDENT *next;}STUDENT;STUDENT *headLink;/*链表表头指针*//*以下是函数声明*/void ReadInfoFormFile(void);void DesplayMenu(void);void CreateHeadLink(void);STUDENT *MallocNode(void);void GetInformation(STUDENT *t);void OutputInformation(void);void DesplayInfoBystudentName(void);void DesplayOneNode(STUDENT *t);void InsertOneNode(STUDENT *t);void DeleteNodeBystudentNumber(void);void ChangeMarkByName(void);void ChangeMarkByNumber(void);void SaveLinkToFile(void);void DesplayMarkSegment(void);void CompositorByTotalMark(void);int choose;/*用于接受用户的选择*//*主函数*/int main(void){CreateHeadLink();ReadInfoFormFile();DesplayMenu();return 0;}/************************************函数功能:从文件中读学生信息到链表中************************************/void ReadInfoFormFile(void){FILE *fp;STUDENT *p;fp=fopen("student.txt","r");if(!fp){printf("\t\t数据结构课程设计《编制:丹白工作室》\t\t\n");printf("\t\t\t调试:丹白工作室\t\t\n");printf("\n");printf("\t\t\t***学生成绩管理系统***\t\t\n");printf("\n");return;}p=MallocNode();while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mar k1),&(p->mark2),&(p->mark3))>0){InsertOneNode(p);p=MallocNode();}fclose(fp);}/************************************函数功能:显示菜单,根据用户的输入完成相应的功能************************************/void DesplayMenu(void){STUDENT *p;printf("\t\t-------请选择相应功能------------\n\n");printf("\t\t\t| 0 输入相应学生信息|\n");printf("\t\t\t| 1 按班级输出学生成绩单|\n");printf("\t\t\t| 2 按姓名查询|\n");printf("\t\t\t| 3 增加学生|\n");printf("\t\t\t| 4 删除学生|\n");printf("\t\t\t| 5 按班级修改学生成绩|\n");printf("\t\t\t| 6 按学期修改学生成绩|\n");printf("\t\t\t| 7 保存所有学生信息|\n");printf("\t\t\t| 8 显示不及格学生成绩|\n");printf("\t\t\t| 9 按平均成绩排序并输出绩|\n");printf("\t\t\t| 10 退出|\n\n");printf("\t\t-----------------------------------\n\n");printf("\t\t请您输入您所选序号:\n");scanf("%d",&choose);/*取得用户的选择*/switch(choose){case 0:p=MallocNode();/*先申请一个新结点*/GetInformation(p);/*要求用户输入信息到新结点中*/ InsertOneNode(p);/*将新结点加到链表中*/break;case 1:OutputInformation();/*显示所有学生的信息*/break;case 2:DesplayInfoBystudentName();break;case 3:p=MallocNode();/*先申请一个新结点*/GetInformation(p);/*要求用户输入信息到新结点中*/ InsertOneNode(p);/*将新结点加到链表中*/break;case 4:DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/ break;case 5:ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/ break;case 6:ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/ break;case 7:SaveLinkToFile();/*保存数据*/break;case 8:DesplayMarkSegment();/*显示不及格的学生成绩*/break;case 9:CompositorByTotalMark();/*按平均成绩排序*/break;case 10:SaveLinkToFile();/*保存数据后再退出*/free(headLink);break;default:break;}DesplayMenu();/*递归调用*/}/************************************函数功能:建立链表表头************************************/void CreateHeadLink(void){STUDENT *p;p=(STUDENT*)malloc(sizeof(STUDENT));headLink=p;p->next=NULL;}/************************************函数功能:申请一个新结点,并将其初始化************************************/STUDENT *MallocNode(void){STUDENT *p;int i;p=(STUDENT*)malloc(sizeof(STUDENT));if(p==NULL)return NULL;for(i=0;i<10;i++)p->studentNumber[i]='\0';for(i=0;i<20;i++)p->studentName[i]='\0';for(i=0;i<20;i++)p->className[i]='\0';p->mark1=0.0;p->mark2=0.0;p->mark3=0.0;p->next=NULL;return p;}/************************************ 函数功能:取得用户输入的学生信息************************************/ void GetInformation(STUDENT *t){printf("请输入学生学号:\n");scanf("%s",t->studentNumber);printf("请输入学生姓名:\n");scanf("%s",t->studentName);printf("请输入该生所在班级:\n");scanf("%s",t->className);printf("请输入第1门成绩:\n");scanf("%f",&(t->mark1));printf("请输入第2门成绩:\n");scanf("%f",&(t->mark2));printf("请输入第3门成绩:\n");scanf("%f",&(t->mark3));}/************************************ 函数功能:在链表的结尾处增加一个结点************************************/ void InsertOneNode(STUDENT *t){STUDENT *p;p=headLink;while(p->next){p=p->next;}p->next=t;}/************************************函数功能:根据用户输入的学生姓名显示该学生的信息************************************/void DesplayInfoBystudentName(void){STUDENT *p;char studentName[20];char flag=0;p=headLink->next;printf("请输入学生姓名:\n");scanf("%s",studentName);while(p){if(strcmp(p->studentName,studentName)==0){printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n"); DesplayOneNode(p);flag=1;break;}p=p->next;}if(!flag)printf("对不起,不存在姓名为%s 的学生\n",studentName);}/************************************函数功能:输出一个结点的信息************************************/void DesplayOneNode(STUDENT *t){printf("%s\t",t->studentNumber);printf("%s\t",t->studentName);printf("%s\t",t->className);printf("%.2f\t",t->mark1);printf("%.2f\t",t->mark2);printf("%.2f\t",t->mark3);printf("%.2f\t",t->mark1+t->mark2+t->mark3);printf("%.2f\t\n",(t->mark1+t->mark2+t->mark3)/3);}/************************************函数功能:根据用户输入的学号删除该学生************************************/void DeleteNodeBystudentNumber(void){char studentNumber[10];STUDENT *p,*q;char flag=0;printf("请输入要删除的学生学号:");scanf("%s",studentNumber);p=headLink;q=headLink->next;while(q){if(strcmp(q->studentNumber,studentNumber)==0){p->next=q->next;free(q);flag=1;break;}p=p->next;q=q->next;}if(!flag){printf("不存在该学号的学生\n");return;}printf("成功删除\n");}/************************************函数功能:显示所有学生的信息************************************/void OutputInformation(void){STUDENT *p;p=headLink->next;if(p==NULL){printf("现在没有学生信息,请先输入学生信息\n\n");return;}printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n"); while(p){DesplayOneNode(p);p=p->next;}}/************************************函数功能:根据输入的班级修改成绩************************************/void ChangeMarkByName(void){STUDENT *p;int a;char studentName[20];char flag=0;float mark1,mark2,mark3;p=headLink->next;printf("请输入学生班级:\n");scanf("%d",&a);printf("请输入学生姓名:\n");scanf("%s",studentName);while(p){if(strcmp(p->studentName,studentName)==0){printf("请输入新的第1门成绩:\n");scanf("%f",&mark1);printf("请输入新的第2门成绩:\n");scanf("%f",&mark2);printf("请输入新的第3门成绩:\n");scanf("%f",&mark3);p->mark1=mark1;p->mark2=mark2;p->mark3=mark3;flag=1;printf("修改成功\n");break;}p=p->next;}if(!flag)printf("对不起,不存在班级为%s 的学生\n",studentName); }/************************************函数功能:根据输入的学期修改成绩************************************/void ChangeMarkByNumber(void){STUDENT *p;int b;char studentNumber[20];char flag=0;float mark1,mark2,mark3;p=headLink->next;printf("请输入学生所在学期:\n");scanf("%d",&b);printf("请输入学生学号:\n");scanf("%s",studentNumber);while(p){if(strcmp(p->studentNumber,studentNumber)==0){printf("请输入新的第1门成绩:\n");scanf("%f",&mark1);printf("请输入新的第2门成绩:\n");scanf("%f",&mark2);printf("请输入新的第3门成绩:\n");scanf("%f",&mark3);p->mark1=mark1;p->mark2=mark2;p->mark3=mark3;flag=1;printf("修改成功\n");break;}p=p->next;}if(!flag)printf("对不起,不存在学期为%s 的学生\n",studentNumber); }/************************************函数功能:保存链表数据到文件中************************************/void SaveLinkToFile(void){STUDENT *p;FILE *fp;p=headLink->next;if(p==NULL){printf("现在没有学生信息,请先输入学生信息\n\n"); return;}fp=fopen("student.txt","w+");if(!fp){printf("文件不存在\n");return;}while(p){fprintf(fp,"%s %s %s %f %f %f\n",p->studentNumber,p->studentName,p->className,p->mark1, p->mark2,p->mark3);p=p->next;break;}printf("\t\t\t保存成功!\n");fclose(fp);}/************************************函数功能:不及格学生成绩************************************/void DesplayMarkSegment(void){STUDENT *p;int count=0;p=headLink->next;printf("60分以下(不及格)的学生成绩如下:\n");printf("学号\t姓名\t班级\t成绩1\t成绩2\t成绩3\t总成绩\t平均成绩\n\n");while(p){if((6>((int)(p->mark1/10)))||(6>((int)(p->mark2/10)))||(6>((int)(p->mark3/10))))/*只要有一科不及格就认为该生不及格*/{count++;DesplayOneNode(p);}p=p->next;}printf("不及格的学生一共有%d人\n",count);}/************************************函数功能:按平均成绩排序************************************/void CompositorByTotalMark(void){STUDENT exchange,*r,*p,*q;r=headLink->next;if(r==NULL){printf("现在还没学生信息,请先输入学生信息\n");return;}while(r)/*两层while循环实现排序*/{p=r;q=r->next;while(q){if((q->mark1+q->mark2+q->mark3)>(p->mark1+p->mark2+p->mark3)){strcpy(exchange.studentNumber,q->studentNumber);/*先复制q结点信息到exchange*/ strcpy(exchange.studentName,q->studentName);strcpy(exchange.className,q->className);exchange.mark1=q->mark1;exchange.mark2=q->mark2;exchange.mark3=q->mark3;strcpy(q->studentNumber,p->studentNumber);/*再复制p结点信息到q*/strcpy(q->studentName,p->studentName);strcpy(q->className,p->className);q->mark1=p->mark1;q->mark2=p->mark3;q->mark3=p->mark3;strcpy(p->studentNumber,exchange.studentNumber);/*最后复制exchange结点信息到p*/ strcpy(p->studentName,exchange.studentName);strcpy(p->className,exchange.className);p->mark1=exchange.mark1;p->mark2=exchange.mark2;p->mark3=exchange.mark3;}q=q->next;}r=r->next;}OutputInformation();}。

相关文档
最新文档