课程设计报告学生成绩管理系统
- 格式:doc
- 大小:74.00 KB
- 文档页数:15
数据结构课程设计报告题目:学生成绩管理系统学生姓名:学号:班级:指导教师:课程设计评分表学生姓名:班级:学号:课程设计题目:学生成绩管理任务:本题对学生的某门课程成绩管理做一个简单的模拟,设计一个学生成绩管理系统。
假设学生信息包括:学号、姓名、性别,课程的成绩信息有平时成绩、实验成绩、期未成绩、总评成绩,总评成绩=平时成绩*0.4+实验成绩*0.3+期未成绩*0.3,用菜单选择方式完成下列功能:(1)登记学生成绩;(2)插入学生成绩;(3)修改学生成绩;(4)删除学生成绩;(5)查询学生成绩;(5)对学生成绩进行排序;(6)输出学生成绩。
在完成上术基本要求的操作后,要应用功能(6)进行测试。
一、设计思路二、设计说明与调试分析三、源程序代码四、测试结果五、设计心得六、参考文献一、设计思路本系统是一个学生成绩管理系统,输入数据类型主要是string等数据类型,输入内容包括:学生学号、姓名、平时成绩、实验成绩、期末成绩等数据。
用户在输入学生数据时要保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确。
输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,显示内容包括:学生学号、姓名、平时成绩、实验成绩、期末成绩,总评成绩。
用户运行程序后进入系统主界面在主界面用户可以输入所有学生的数据并保存到文件中,也可以读取文件中已有的学生数据。
本系统同时只能对一个数据文件进行相关操作。
当用户读取学生数据后可对其进行显示、文件尾增加、删除、查询、排序、修改等相关操作。
用户在操作过程中可随时对当前文件进行保存到文件操作,以防止修改的数据丢失。
二、设计说明与调试分析主要编写部分学生成绩管理系统学生成绩管理系统内,共有两个类,分别为学生类和管理类。
学生对象用vector容器来存放。
管理类共包含了7个不同的函数,而每一个函数是一个模块,并对它们具体编写,使之具有不同的功能,能实行相应的操作。
2.1 本程序中定义的类及其函数:1.Student 类class Student//定义一个Student类//{public:Student(string nu = "0", string na = "0", int ping = 0, int shi = 0, int qi = 0);void set_student(const string &Nu, const string &Na, int Ping, int Shi, int Qi);void set_pingshi(int ping) { pingshi = ping; }//类成员函数set_pingshi,设置平时成绩//void set_shiyan(int shi) {shiyan = shi; }//类成员函数set_shiyan,设置实验成绩//void set_qimo(int qi) { qimo = qi; } //类成员函数set_qimo,设置期末成绩//bool search(const string &num) { return number == num; }void display();//声明display显示函数//bool operator<(const Student&);//运算符重载//Student& swap(Student&);public:string number; //定义学生的学号//string name; //定义学生的姓名//int pingshi/*平时成绩*/,shiyan/*实验成绩*/, qimo/*期末成绩*/;};2. Manage 主要功能类class Manage//主要功能类//{private:vector <Student> stu;public:Manage() {}void Add(Student&s);//声明添加学生信息的函数//void Add2(Student&s);//声明登记学生信息的函数//void Chaxun(); //声明查询学生信息的函数//void Paixu();//声明将学生的成绩的平均数进行排序的函数//void Revise(); //声明修改学生信息的函数//void Delete(); //声明删除学生信息的函数//void Save(); //声明存储学生信息的函数//void Load(); //声明读取学生信息的函数//void Play(); //声明显示学生信息的函数//};2.2 管理类中各模块功能分析1、登记学生信息,登记大量学生信息包括增添学生的姓名、学号、平时成绩、实验成绩、期末成绩等用void Add2(Student&s)函数去实现。
学生成绩管理系统-课程设计报告学生成绩管理系统-课程设计报告一、引言学生成绩管理系统是一种能够方便高效地管理学生学业成绩的软件系统。
随着教育信息化的发展,学生成绩管理系统已经成为各个学校和教育机构不可或缺的一部分。
本课程设计报告旨在设计和实现一款学生成绩管理系统,以满足学校对学生成绩管理的需求。
二、系统需求分析1.学生信息管理:系统需要能够存储学生的基本信息,包括学号、姓名、性别、年级等。
2.课程管理:系统需要能够管理学校的各门课程信息,包括课程名称、授课教师、学分等。
3.成绩录入:系统需要能够录入学生的成绩信息,包括学生学号、课程名称、成绩等。
4.成绩查询:系统需要提供成绩查询功能,学生和教师能够通过系统查询学生的成绩。
5.成绩统计:系统需要能够对学生的成绩进行统计和分析,包括计算平均成绩、最高分、最低分等。
6.成绩报表:系统需要能够生成成绩报表,以便学校和教师能够查看学生成绩的总体情况。
三、系统设计1.数据库设计:设计一个学生表和一个课程表,学生表包括学生的学号、姓名、性别、年级等信息,课程表包括课程的名称、授课教师、学分等信息。
成绩信息通过学生表和课程表建立关联关系。
2.用户界面设计:设计一个用户友好的界面,包括学生登录界面、教师登录界面和管理员登录界面。
学生能够查询个人成绩和课程信息,教师能够录入学生成绩和查询学生成绩,管理员能够管理学生和课程信息。
3.功能模块设计:将系统划分为学生管理模块、课程管理模块、成绩录入模块、成绩查询模块、成绩统计模块和成绩报表模块。
每个模块实现相应的功能,模块之间通过接口进行数据交互。
四、系统实现本系统采用Java语言和MySQL数据库进行开发。
使用Java技术实现用户界面和功能模块,使用MySQL数据库存储学生、课程和成绩信息。
五、系统测试与调试进行系统测试,包括功能测试、性能测试和稳定性测试。
通过测试发现并修复系统中存在的问题,确保系统能够正常运行。
六、系统部署与维护将系统部署到学校的服务器上,并进行系统维护工作,包括定期备份数据、更新系统版本等。
学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
数据库系统原理及其应用教程课程设计报告题目名称:学生成绩管理系统任课教师:姓名:学号:一.概述1.设计背景学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,但是几年前,各个学校的学生成绩管理基本上都是靠手工进行,随着各个学校的规模增大,有关学生成绩管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。
这种管理方式存在着许多缺点,如:效率低、保密性差,另外所用其时间长,产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
如今学校的学生越来越多,成绩管理的工作量越来越大,手工管理成绩的弊端也越来越明显。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点。
例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生档案管理的效率。
所以我想借本次课程设计之际,设计一个简易的学生成绩管理系统。
2. 设计目的1、掌握运用数据库原理进行系统分析和设计的方法;2、掌握关系数据库的设计方法;3、掌握利用SQL Server 2000技术;4、加强C++的编程能力3. 设计内容1.设计一个简易学生成绩管理的数据库系统,包括数据库的建立的需求分析,数据的输入输出。
2.设计用户的操作界面,主要实现数据的查询,添加,修改,删除基本功能。
二.需求分析1.功能分析在成绩管理系统中最主要的是对学生成绩的管理,管理主要包括:对学生成绩的录入,修改,删除,以及按不同的方式对学生成绩进行查询。
系统中包括学生的基本信息(如:学号,姓名,专业等),学生的各科成绩信息,教师的基本信息(如:教师编号,姓名,性别,所教科目,学历等),学生所学科目科目的基本信息(如:科目编号,名称,出版社等),以便查询。
c语言成绩管理系统课程设计报告一、引言:成绩管理系统是一种可以有效管理学生课程成绩的工具。
通过该系统,教师可以方便地录入、修改和查询学生的成绩,而学生和家长也可以方便地查看自己的成绩情况。
本次课程设计旨在设计一个基于C语言的成绩管理系统,实现对学生课程成绩的录入、修改和查询等功能。
二、系统设计:1. 数据结构设计:为了实现成绩管理系统的各项功能,需要设计相关的数据结构。
对于学生信息,可以设计一个结构体,包含学号、姓名、性别等字段;对于课程成绩,可以设计一个结构体,包含学号、课程名称、成绩等字段。
2. 功能设计:(1) 学生信息录入功能: 教师可以通过输入学生的学号、姓名、性别等信息,将学生信息录入系统中。
(2) 成绩录入功能: 教师可以通过输入学生的学号和课程名称,将学生的课程成绩录入系统中。
(3) 成绩修改功能: 教师可以根据学生的学号和课程名称,修改学生的课程成绩。
(4) 成绩查询功能: 学生和家长可以通过输入学生的学号,查询学生的课程成绩。
三、系统实现:1. 用户界面设计:使用C语言中的控制台窗口,通过菜单的方式显示系统功能选项,用户可以通过键盘输入选择对应的功能。
2. 数据存储设计:使用文件存储学生信息和课程成绩。
通过读取和写入文件的方式,实现数据的持久化存储。
3. 功能实现:(1) 学生信息录入功能的实现: 用户输入学生的学号、姓名、性别等信息后,将学生信息写入文件。
(2) 成绩录入功能的实现: 用户输入学生的学号、课程名称和成绩后,将成绩信息写入文件。
(3) 成绩修改功能的实现: 用户输入学生的学号、课程名称和新的成绩后,根据学号和课程名称找到对应的成绩信息并修改。
(4) 成绩查询功能的实现: 用户输入学生的学号后,根据学号在文件中查找对应的成绩信息并显示在控制台窗口。
四、系统测试:对于每一个功能,设计相应的测试用例,验证系统的正确性和稳定性。
例如,录入一个学生信息后,查询该学生的信息是否正确;录入一门课程成绩后,修改该成绩并查询是否修改成功等。
《学生成绩管理系统》课程设计报告专业:信息科学与工程学院班级:电气信息类0916班姓名:曹坤指导教师:汤哲学号: 02课程设计报告一、课程设计题目学生成绩管理系统1、需要处理的基础数据学生基本信息:如班级、学号、姓名、性别、年龄等。
学生选修课程的基本信息:课程编号、课程名称、学分、考试成绩、平时成绩、综合成绩(考试成绩*+平时成绩*)等。
主菜单2、系统的基本功能数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息;数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其选修课程信息;数据的插入:插入某个学生信息;数据的查询:如按学号查询、按姓名查询等;数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息;平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从高到低的次序输出学生信息;列出不及格学生清单(学号、姓名、不及格的课程和成绩)。
考虑用文件把数据保存起来(可选)。
3、链表struct stu /*定义学生基本信息结构体*/{int i; /*以输入的顺序来确定的学生序号*/char num[11];char classnum[5];char name[128];char sex[32];int age;float ave;struct stu *next;};int n=0; /*学生人数*/struct stu *head=0;struct stu1 /*定义学生选修课信息结构体*/{char lessonnum[11];char lessonname[256];float score;float testgrade;float commongrade;float grade;struct stu1 *next;};int m;struct stu1 *a[max_num] ;/*定义一个指针数组来记住课程链表地址*/ /*---------------------- 数据的录入程序-----------------------*/void create(void) /*建立学生基本信息链表*/{n=0;struct stu *p1,*p2;char ch,ch1;struct stu1 *create1(void);do{n=n+1;a[n]=0;system("cls");p1=(struct stu *)malloc(LEN);printf("\n学号:");scanf("%s",p1->num);printf("\n班级:");scanf("%s",p1->classnum);printf("\n姓名:");scanf("%s",p1->name) ;printf("\n性别:");scanf("%s",p1->sex);printf("\n年龄:");scanf("%d",&p1->age);if(n==1)head=p1;else p2->next=p1;p2=p1;printf("\n是否输入选修课信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch1=getchar();if(ch1=='y'||ch1=='Y')a[n]=create1(); /*根据序号来记忆课程链表地址*/ p1->i=n;system("cls");printf("\n是否继续输入另一学生信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');p2->next=0;}struct stu1 *create1(void) /*建立课程链表*/{m=0;struct stu1 *p1,*p2;char ch;struct stu1 *head=0;do{m=m+1;system("cls");p1=(struct stu1 *)malloc(LEM);printf("\n课程编号:");scanf("%s",p1->lessonnum);printf("\n课程名称:");scanf("%s",p1->lessonname);printf("\n学分:");scanf("%f",&p1->score);printf("\n考试成绩:");scanf("%f",&p1->testgrade);printf("\n平时成绩:");scanf("%f",&p1->commongrade);p1->grade=p1->testgrade*+p1->commongrade*;printf("\n综合成绩:%-6.1f",p1->grade);if(m==1)head=p1;else p2->next=p1;p2=p1;printf("\n是否继续输入另一课程信息(y/n)\n");fflush(stdin); /*清空输入缓冲区*/ch=getchar();}while(ch=='y'||ch=='Y');p2->next=0;return(head);}二、设计思路界面:界面的显示由循环语句和switch语句来控制完成。
c语言课程设计学生成绩管理系统报告一、教学目标本课程旨在通过C语言编程实现一个学生成绩管理系统,让学生掌握C语言的基本语法、数据结构、函数、文件操作等知识,培养学生编写程序解决实际问题的能力。
具体目标如下:1.知识目标:(1)掌握C语言的基本语法和编程技巧;(2)了解数据结构的基本概念,学会使用数组、链表等数据结构;(3)熟悉函数的定义和调用,掌握函数的参数传递和返回值;(4)掌握文件操作,了解文件读写的原理和方法。
2.技能目标:(1)能够独立编写C语言程序,解决实际问题;(2)具备良好的编程习惯,代码结构清晰、可读性强;(3)掌握调试和优化程序的方法,提高程序的运行效率;(4)学会使用版本控制系统,如Git,进行代码管理和协作开发。
3.情感态度价值观目标:(1)培养学生的编程兴趣,激发学习C语言的积极性;(2)培养学生团队协作精神,提高沟通与协作能力;(3)培养学生的问题解决能力,培养创新意识和持续学习的态度;(4)培养学生具有良好的职业道德,遵守编程规范,尊重他人代码。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、文件操作等。
具体安排如下:1.C语言基本语法:介绍C语言的数据类型、运算符、表达式、控制语句等基本概念;2.数据结构:讲解数组、链表、栈和队列等数据结构的基本原理和应用;3.函数:讲解函数的定义、声明、调用,以及函数的参数传递和返回值;4.文件操作:介绍文件的概念、文件读写的方法和技巧。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:通过讲解C语言的基本语法、数据结构、函数和文件操作等知识,使学生掌握课程的基本概念和编程技巧;2.案例分析法:分析实际编程案例,让学生学会将理论知识应用于实际问题解决;3.实验法:安排上机实验,让学生动手编写程序,培养实际编程能力;4.小组讨论法:学生进行小组讨论,培养团队协作和沟通能力。
学生成绩管理系统c++课程设计报告一、引言学生成绩管理系统是一种在学校教学管理中广泛应用的软件系统,用于记录和管理学生的考试成绩、课程信息等。
本课程设计旨在利用C++语言设计并实现一个简单的学生成绩管理系统,以加深对C++编程语言的理解和应用。
二、系统设计1. 系统功能•添加学生信息:包括学生姓名、学号、班级等。
•删除学生信息:根据学号删除学生信息。
•查询学生成绩:输入学号查询学生的考试成绩。
•修改学生成绩:根据学号修改学生的考试成绩。
•显示所有学生信息:以表格形式展示所有学生的信息。
2. 类设计在设计学生成绩管理系统时,需要设计以下几个类:(1)学生类class Student {private:string name;int id;string className;float score;public:// 构造函数Student(string n, int i, string c, float s);// 获取学生信息void displayInfo();// 获取学生成绩float getScore();// 修改学生成绩void modifyScore(float s);};(2)学生管理类class StudentManager {private:vector<Student> students;public:// 添加学生信息void addStudent(Student s);// 删除学生信息void deleteStudent(int id);// 查询学生成绩void queryScore(int id);// 修改学生成绩void modifyScore(int id, float score);// 显示所有学生信息void displayAll();};三、系统实现1. 主函数主函数实现了与用户的基本交互,包括菜单的显示和选项的选择。
```cpp int main() { StudentManager sm; int choice; while (true) { // 显示菜单cout <<。
一、实践的目的和要求加深对《C语言》课程所学知识的理解,进一步巩固C语言语法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力。
二、实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用,包括时间函数、绘图函数,以及文件的读写操作等。
三、实践任务1.欢迎画面2.学生成绩管理系统(自己设计界面)3.异或加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容以字符形式读出,与密钥(用户从键盘输入)的对应字符进行异或操作即可,解密同样如此。
如:设原文为ab1234,密钥为56,则有ab1234565656按二进制进行异或操作即可得到密文(乱码)。
4.移位加密与解密(1)文件加密(2)文件解密说明:将某一已知文件的内容(限于英文字母)以字符形式读出,根据密钥k(用户从键盘输入)将对应字符进行移位操作即可,解密时移动方向相反。
如:设原文为abcdef,密钥为5,则有abcdef 每个字母按字母表向后移动位(注:z后接a)fghijkl 可得到密文(乱码)。
5.辅助运算(1)整数N模m的乘法逆t要求:输入整数N和m,求出t,若t不存在,给出信息。
提示:这三个数满足:N*t%m=1,使用穷举法。
例如:当N为11,m为26时,由于(11×19)%26=1,所以11模26的乘法逆为19。
(2)统计字母个数要求:输入一段英文字母,统计各个字母的个数,并按个数从大到小排序输出。
提示:字母大小写等价。
输出格式为:字母:个数。
(3)OTP加密要求:输入同等长度的原文x和密钥k(英文字母),根据公式c=(x+k) %26 得到密文,并输出。
提示:将26个字母按0~25编号,将原文字母和对应位置的密钥字母的编号按上述公式进行计算后得到一个新的字母。
课程设计课程程序设计基础题目院系名称计算机学院班级学生姓名学号组员指导教师时间2012-5-251 问题要求及任务描述1.1 题目要求学生成绩管理问题描述:设学生信息包括:学号、姓名、学期、每门课程的成绩(每学期的课程门数是不一样的) ,对学生的成绩信息进行管理。
实现要求:实现:学生信息的录入;修改;删除和查询,按学期、学号、成绩不及格等查询。
⑴输入学生的成绩信息,包含学号、姓名、性别等基本信息和各课成绩⑵显示全部学生各科成绩信息;⑶对各科成绩统计分析(总分、平均分、最高分、最低分、及格率等);⑷统计各科各分数段人数;⑸按学号或姓名查找并显示某个学生的各科成绩;⑹按课程成绩或总分由高到低排序显示;⑺更新某个学生的基本信息或课程成绩;⑻设计一个菜单,具有上述规定的操作要求、退出系统等最基本的功能。
1.2 解决问题的主要思路和方法2.1 关键问题关键问题描述2.2 拟采用解决问题的方法在此陈述解决问题的思路,准备使用的算法和数据结构等等2.3 主要算法和处理流程图关键的数据流程图3 程序实现3.2 主要源代码及说明#include<stdio.h>#include<stdlib.h>#include<string.h>int save=0;struct student /*构建结构体*/{char num[12];char name[20];char sex[4];int CYuYan;int Math;int English;int sum;int ave;};typedef struct node{struct student data;struct node *next;}Node,*Link;void Menu() /*界面主菜单*/{printf("********************************************************* ***********************");printf("\t1输入学生资料\t\t\t\t\t2删除学生资料\n");printf("\t3查询学生成绩\t\t\t\t\t4修改学生成绩\n");printf("\t5显示学生资料\t\t\t\t\t6统计学生资料\n");printf("\t7排序学生成绩\t\t\t\t\t8保存学生成绩\n");printf("\t9退出系统\n");printf("************************************************************ ********************");}void Print(){printf("--------------------------------------------------------------------------------");}void Wrong() /*错误警告*/{printf("\n警告:输入错误!!!\n");}void Nofind(){printf("\n警告:没有找到该学生!!!\n");}void Print1(){printf(" 学号\t 姓名性别 C语言成绩英语成绩数学成绩总分平均分\n");}void Print2(Node *p) /*打印学生成绩*/{printf("%-9s%s\t%3s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->data .name,p->data.sex,p->data.CYuYan,p->data.Math,p->data.English,p->dat a.sum,p->data.ave);}Node *Locate(Link h,char findmess[],char nameornum[])/*定位链表中符合要求的接点*/{Node *r;if(strcmp(nameornum,"num")==0) /*按学号查询*/{r=h->next;while(r!=NULL){if(strcmp(r->data.num,findmess)==0)return r;r=r->next;}}else if(strcmp(nameornum,"name")==0) /*按姓名查询*/{r=h->next;while(r!=NULL){if(strcmp(r->,findmess)==0)return r;r=r->next;}}return 0;}void Add(Link h) /*功能1:输入学生资料*/{Node *p,*r,*s;char num[12];r=h;s=h->next;while(r->next!=NULL)r=r->next;while(1){printf("请输入学号(按'0'返回上菜单):");scanf("%s",num);if(strcmp(num,"0")==0)break;p=(Node *)malloc(sizeof(Node)); /*申请一个结构体内存*/strcpy(p->data.num,num);printf("请输入姓名:");scanf("%s",p->);getchar();printf("请输入性别:");scanf("%s",p->data.sex);getchar();printf("请你输入c语言成绩:");scanf("%d",&p->data.CYuYan);getchar();printf("请输入数学成绩:");scanf("%d",&p->data.Math);getchar();printf("请输入英语成绩:");scanf("%d",&p->data.English);getchar();p->data.sum=p->data.English+p->data.CYuYan+p->data.Math;p->data.ave=p->data.sum / 3;p->next=NULL;r->next=p;save=1;}}void Del(Link h) /*功能2:删除学生资料*/{Node *p,*r;char findmess[20];printf("请输入要删除的学号:");scanf("%s",findmess);p=Locate(h,findmess,"num");if(p){r=h;while(r->next!=p)r=r->next;r->next=p->next;free(p); /*释放内存空间*/printf("\n提示:该学生已经成功删除!\n");save=1;}elseNofind();}void Cha(Link h) /*功能3:查询学生资料*/{int sel;char findmess[20];Node *p;printf("\n1按学号查找\n2按姓名查找\n");scanf("%d",&sel);if(sel==1) /*按学号查找*/{printf("请输入要查找的学号:");scanf("%s",findmess);p=Locate(h,findmess,"num");{printf("\t\t\t\t查找结果\n");Print();Print1();Print2(p);Print();}elseNofind();}else if(sel==2) /*按姓名查找*/{printf("请输入要查找的姓名:");scanf("%s",findmess);p=Locate(h,findmess,"name");if(p){printf("\t\t\t\t查找结果\n");Print();Print1();Print2(p);Print();}elseNofind();}elseWrong();}void Change(Link h) /*功能4:修改学生资料*/ {Node *p;char findmess[20];if(!h->next){printf("\n提示:没有资料可以修改!\n");return;}printf("请输入要修改的学生学号:");scanf("%s",findmess);p=Locate(h,findmess,"num");if(p){printf("请输入新学号(原来是%s):",p->data.num);scanf("%s",p->data.num);printf("请输入新姓名(原来是%s):",p->);scanf("%s",p->);getchar();printf("请输入新性别(原来是%s):",p->data.sex);scanf("%s",p->data.sex);printf("请输入新的c语言成绩(原来是%d分):",p->data.CYuYan);scanf("%d",&p->data.CYuYan);getchar();printf("请输入新的数学成绩(原来是%d分):",p->data.Math);scanf("%d",&p->data.Math);getchar();printf("请输入新的英语成绩(原来是%d分):",p->data.English);scanf("%d",&p->data.English);p->data.sum=p->data.English+p->data.CYuYan+p->data.Math;p->data.ave=p->data.sum/3;printf("\n提示:资料修改成功!\n");save=1;}elseNofind();}void Disp(Link h) /*功能5:显示学生资料*/{int count=0;Node *p;p=h->next;printf("\t\t\t\t显示结果\n");Print();Print1();printf("\n");while(p){Print2(p);p=p->next;}Print();printf("\n");}void Tongji(Link h) /*功能6:统计学生成绩*/{float jige1,jige2,jige3,i=0;intA1=0,A2=0,A3=0,B1=0,B2=0,B3=0,C1=0,C2=0,C3=0,D1=0,D2=0,D3=0,E1=0,E2= 0,E3=0;Node *pm,*pe,*pc,*ps,*pa; /*用于指向分数最高的接点*/Node *r=h->next;pm=pe=pc=ps=pa=r;while(r!=NULL){if(r->data.CYuYan>=pc->data.CYuYan)pc=r;if(r->data.Math>=pm->data.Math)pm=r;if(r->data.English>=pe->data.English)pe=r;if(r->data.sum>=ps->data.sum)ps=r;if(r->data.ave>=pa->data.ave)pa=r;r=r->next;}r=h;while(r!=NULL){switch(r->data.CYuYan/10){case 10:case 9:A1++;break;case 8:B1++;break;case 7:C1++;break;case 6:D1++;break;case 5:case 4:case 3:case 2:case 1:case 0:E1++;break;}i++;r=r->next;}jige1=(A1+B1+C1+D1)/(i-1);r=h,i=0;while(r!=NULL){switch(r->data.Math/10){case 10:case 9:A2++;break;case 8:B2++;break;case 7:C2++;break;case 6:D2++;break;case 5:case 4:case 3:case 2:case 1:case 0:E2++;break;}i++;r=r->next;}jige2=(A2+B2+C2+D2)/(i-1);r=h,i=0;while(r!=NULL){switch(r->data.English/10){case 10:case 9:A3++;break;case 8:B3++;break;case 7:C3++;break;case 6:D3++;break;case 5:case 4:case 3:case 2:case 1:case 0:E3++;break;}i++;r=r->next;}jige3=(A3+B3+C3+D3)/(i-1);printf("------------------------------统计结果--------------------------------\n");printf("总分最高者:\t%s %d分\n",ps->,ps->data.sum);printf("平均分最高者:\t%s %d分\n",pa->,pa->data.ave);printf("C语言最高者:\t%s %d分\n",pc->,pc->data.CYuYan);printf("英语最高者:\t%s %d分\n",pe->,pe->data.English);printf("数学最高者:\t%s %d分\n",pm->,pm->data.Math);printf("C语言分数段:\tA:%d人 B:%d人 C:%d人 D:%d人 E:%d人\n",A1,B1,C1,D1,E1);printf("数学分数段:\tA:%d人 B:%d人 C:%d人 D:%d人 E:%d人\n",A2,B2,C2,D2,E2);printf("英语分数段:\tA:%d人 B:%d人 C:%d人 D:%d人 E:%d人\n",A3,B3,C3,D3,E3);printf("C语言及格率:%3.2f%%\n",jige1*100);printf("数学及格率:%3.2f%%\n",jige2*100);printf("英语及格率:%3.2f%%\n",jige3*100);printf("备注:A:90—100;B:80—89;C:70—79;D:60—69;E:0—59\n");Print();}void Sort(Link h) /*功能7:排序学生成绩*/{Link hh;Node *p,*rr,*s;hh=(Link)malloc(sizeof(Node)); /*用于做新的链表*/ hh->next=NULL;if(h->next==NULL){printf("\n提示:没有资料可以排序!\n");return ;}p=h->next;while(p){s=(Node*)malloc(sizeof(Node)); /*新建接点用于保存信息*/s->data=p->data;s->next=NULL;rr=hh;while(rr->next!=NULL && rr->next->data.sum>=p->data.sum) rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(h); /*释放内存*/h->next=hh->next;printf("\n提示:排序已经完成!\n");}void Save(Link h) /*功能8:保存学生资料*/{FILE* fp; /*文件指针*/Node *p;int flag=1,count=0;fp=fopen("c:\\student","wb"); /*以只读方式打开文件*/if(fp==NULL){printf("\n提示:重新打开文件时发生错误!\n");exit(1);}p=h->next;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next;count++;}else{flag=0;break;}}if(flag){printf("\n提示:文件保存成功(有%d条记录已经保存)\n",count);save=0;}fclose(fp); /*关闭文件*/}void main(){Link h;FILE *fp; /*文件指针*/int sel;char ch;char chuangjian;int count=0;Node *r;printf("\t\t\t\t学生成绩管理系统\n");h=(Node*)malloc(sizeof(Node)); /*申请内存*/h->next=NULL;r=h;fp=fopen("C:\\student","rb"); /*以只读方式打开文件*/if(fp==NULL) /*创建新文件*/{printf("\n提示:文件还不存在,是否创建?(y/n)\n");scanf("%c",&chuangjian);if(chuangjian=='y'||chuangjian=='Y')fp=fopen("C:\\student","wb");elseexit(0);}printf("\n提示:文件已经打开,正在导入记录......\n");printf("\n提示:记录导入完毕,共导入%d条记录\n",count);while(1){Menu();printf("请选择操作:");scanf("%d",&sel);if(sel==9){if(save==1){getchar();printf("\n提示:资料已经改动,是否将改动保存到文件中(y/n)?\n");scanf("%c",&ch);if(ch=='y'||ch=='Y')Save(h);}printf("\n提示:你已经退出系统!\n");break;}switch(sel){case 1:Add(h);break;case 2:Del(h);break;case 3:Cha(h);break;case 4:Change(h);break;case 5:Disp(h);break;case 6:Tongji(h);break;case 7:Sort(h);break;case 8:Save(h);break;default:Wrong();getchar();break;}}}。