课程设计报告--学生成绩管理系统(附源代码) 2
- 格式:doc
- 大小:814.00 KB
- 文档页数:31
数据结构课程设计报告题目:学生成绩管理系统学生姓名:学号:班级:指导教师:课程设计评分表学生姓名:班级:学号:课程设计题目:学生成绩管理任务:本题对学生的某门课程成绩管理做一个简单的模拟,设计一个学生成绩管理系统。
假设学生信息包括:学号、姓名、性别,课程的成绩信息有平时成绩、实验成绩、期未成绩、总评成绩,总评成绩=平时成绩*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)函数去实现。
学生成绩管理系统姓名:王一学号:200513理学院信息05-1班学生成绩管理系统概述学生成绩管理系统可以广泛应用于大专院校、职业学校、高中以及初中小学等。
该系统具有一些基本的学生查询、输入、修改等功能。
下图为系统的主界面系统工具部分提供了:初始化:用于清空各个数据表的数据。
密码修改:用于管理员修改密码。
退出输入编辑部分提供了:成绩输入:用于输入学生的成绩。
学生信息输入:用于添加新的学生信息。
专业信息输入:用于添加新的专业及成绩。
查询部分提供了:学生成绩查询:用于查询符合条件的学生的成绩。
专业查询:用于查询专业信息。
统计打印部分提供了:打印学生的成绩。
关于:提供本系统的信息以及作者的信息。
需求分析在学校的教学管理中老师的角色是管理员。
而学生只能查询因此系统应包含一下的功能:1.要求系统能够初始化,以便新学期输入新的学生信息,管理员权限管理,以便不同的老师能同一学期共同使用本系统。
2.要求系统提供学生的信息输入,成绩输入,专业信息输入,这是本系统能管理学生信息的基础。
3.要求系统提供学生的信息查询,专业查询功能,这是本系统的主要功能,使本系统能随时查询.4.要求系统提供打印学生成绩的功能,并能做成绩单以便学期末总结使用。
5.本系统的运行的要求,本软件的信息,便于维护软件;作者的联系信息,便于沟通。
6.系统运行时要有一个友好的系统界面,便于操作。
7.为了系统的安全以及学生信息的保密,系统进入时要核对用户名及密码。
系统配置运行稳定的数据库应用系统有一个相对最优的系统配置方案。
根据用户的实际情况以及维护水平来确定。
数据库设计在学生成绩管理系统中,首先要创建学生成绩管理系统的数据库概念模型,同时在上面的实体以及实体的关系的基础上,形成数据库中的表以及各表之间的关系。
本系统需要创建四个表系统数据表(xt)学生成绩管理系统的实体关系简图在需求分析,概念设计的基础上得到数据库的逻辑结构,创建一个数据库,包含上述三个表,首先创建一个项目保存为“学生成绩管理系统”给系统添加上述的三个表界面设计采用模块化思想可以大大提高设计的效率,减少不必要的错误。
学生成绩管理系统课程设计报告前言一、系统的设计需求1、整个系统均用C语言实现;2、利用指针、链表来实现学生成绩的数据结构设计;3、系统具有输入、显示、删除、排序、退出基本功能;4、系统的各个功能模块都用函数的形式来实现;5、可以将学生信息全部显示出来出来。
二、系统的功能模块划分每一条记录包括一个学生的姓名、成绩。
同时1、输入功能:一次可以完成一个学生成绩记录的输入。
2、显示功能:完成全部学生记录的显示。
3、删除功能:对指定学生的成绩进行删除.4、排序功能:按学生从大到小进行排序。
5、修改功能:对学生的成绩进行修改。
三、系统的整体设计1。
数据结构设计:A、输入功能的设计:void insert_func(void){char s_temp[4];ptr=(struct student *) malloc(sizeof(struct student));printf(” Student name :");gets(ptr—〉name);// gets从标准输入设备读取字符串// printf(” Student score:");gets(s_temp);ptr->score = atoi(s_temp);//把字符串转化为整数//B、删除功能的设计:void delete_func(void)//现在进入删除操作//{char del_name[20];printf(" Delete student name:");gets(del_name);prev = head;current = head-〉next;while ((current != NULL)&& (strcmp(current-〉name , del_name)!=0))//用到了strcmp 比较字符串{prev = current;current = current->next;}if (current != NULL){prev—〉next = current—〉next;free(current);//释放当前位置//printf(" %s student record deleted\n”,del_name);//输出被删除的姓名//}elseprintf(” Student %s not found\n",del_name);//否则此学生不存在//C、排序功能的设计:void sort_func(void)//插入数据//{prev = head;//把头指针所指的值付给prev//current = head—〉next;//把头指针的下一个指针值付给当前指针所指的位置// while ((current != NULL)&&(current—〉score 〉ptr—〉score)){prev = current;current = current->next;}ptr-〉next = current;prev—〉next = ptr;D、修改功能的设计:void modify_func(void){char n_temp[20],s_temp[4];//定义字符类型//printf(” Modify student name:”);gets(n_temp);//这样输入姓名current=head—>next;while ((current != NULL)&& (strcmp(current->name , n_temp)!=0)){prev = current;current = current-〉next;}if (current != NULL){printf(” **************************\n");printf(” Student name :%s\n”,current-〉name);printf(” Student score:%d\n”,current—>score);printf(” **************************\n");printf(" Please enter new score:”);gets(s_temp);current—〉score = atoi(s_temp);printf(" %s student record modified\n”,n_temp);}//输出被修改的成绩//elseprintf(” Student %s not found\n”,n_temp);//否则此学生不存在//anykey_func();E、显示功能的设计:void display_func(void)//定义显示//{int count=0;system(”cls”);if(head—〉next == NULL)//如果头指针所指数为空//{printf(” No student record\n”);//则输出学生记录为空//}else//否则输出学生姓名和成绩//{printf(” NAME SCORE\n”);printf(” —--——--—————-—-—-——-—-——-——\n”);current=head->next;while(current != NULL){printf(” %-20s %3d\n", current—〉name, current—〉score);count++;current=current—〉next;if(count % 20 == 0)getch();}printf(” --——————-—————————--—-—-—--\n”);printf(" Total %d record(s) found\n”, count);2.功能模块的具体设计整个系统除了主函数外,另外还有8个函数,实现5大功能:输入功能、显示功能、排序功能、删除功能、修改功能。
Python学生管理系统课程设计报告1. 引言学生管理系统是一种用于学校、教育机构或培训中心等教育场景的信息管理工具。
本文将介绍一个基于Python的学生管理系统的设计与实现。
该系统旨在简化学生信息管理的过程,提高学校教务工作的效率和准确性。
2. 设计目标本学生管理系统的设计目标如下: - 实现学生信息的录入、修改和删除功能; - 提供课程管理功能,包括课程录入和成绩管理; - 支持学生信息和课程信息的查询和统计; - 提供用户登录和权限管理功能。
3. 功能设计3.1 学生信息管理学生信息管理是系统的核心功能之一,包括学生信息的录入、修改和删除操作。
学生信息包括学号、姓名、性别、出生日期、班级等基本信息。
3.2 课程管理课程管理功能包括课程的录入和成绩管理。
课程信息包括课程代码、课程名称和授课教师等基本信息。
成绩管理功能允许教师录入学生的课程成绩。
3.3 信息查询与统计学生管理系统提供学生信息和课程信息的查询功能,用户可以根据学号、姓名或课程代码进行查询。
此外,系统还提供了学生信息和课程信息的统计功能,如统计某个班级的学生人数,或计算某门课程的平均成绩等。
3.4 登录和权限管理学生管理系统允许用户通过登录身份验证功能进入系统。
不同用户具有不同的权限,例如学生只能查询自己的信息,而教师可以进行成绩录入和修改等操作。
4. 系统架构学生管理系统采用三层架构,包括数据层、业务逻辑层和用户界面层。
4.1 数据层数据层负责与数据库进行交互,包括对学生信息和课程信息进行增删改查操作。
可以使用SQL语言或ORM(对象关系映射)框架进行数据操作。
4.2 业务逻辑层业务逻辑层负责处理系统的业务逻辑,包括学生信息管理、课程管理、成绩管理、信息查询与统计等功能的实现。
业务逻辑层将接收用户界面层的请求并调用数据层的接口进行数据操作。
4.3 用户界面层用户界面层是用户与系统交互的界面,可以通过命令行界面(CLI)或图形界面(GUI)来实现。
1。
概述1.1 简单介绍本系统实现的内容该学生成绩管理系统,实现简单的密码修改、成绩查询、课程查询、学生查询等操作,并能实现简单的数据统计。
此系统主要完成用户密码登录、用户密码的修改、成绩查询、课程查询、学生查询、具体成绩查询等基本功能.(一)用户密码登录:在登录程序之前会先弹出一个登录对话框,在正确的输入了数据库中存储的用户和密码后才能登录程序.(二)用户密码的修改在成功登录了程序之后用户可以根据自己的需要修改当前密码.(三)成绩查询1。
成绩修改前选中要修改的成绩信息,然后进行修改。
2.成绩添加直接弹出添加对话框,然后进行添加。
3.成绩删除前选中要删除的成绩信息,然后直接删除。
(四) 课程查询1。
课程修改实现对课程名、学时、学分的修改。
2.课程添加对一门新开设的课程进行录入,并存入数据库。
3。
课程删除对一门不再开设的课程进行删除,并从数据库中删除。
(五)学生查询1。
学生信息修改修改选中当前学生的信息。
2。
学生信息添加增加新学生的信息。
3。
学生信息删除删除选中当前学生信息。
1。
2 开发环境简介1)Microsoft visual c++ 6。
0Visual C++是一个功能强大的可视化软件开发工具。
自1993年Microsoft公司推出Visual C++1。
0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具.Visual C++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境(integrated development environment,IDE)。
Visual C++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具. 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。
2)Microsoft SQL Server 2000和与系统相关的SQL 语言介绍数据定义DDL(data definition language)数据定义语言是指对数据的格式和形态下定义的语言,他是每个数据库要建立时候时首先要面对的,举凡数据分哪些表格关系、表格内的有什么栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的.2。
附录一应用程序综合设计汇报——题目: 学生成绩管理系统2023年1月1.需求分析学生成绩管理系统是学生管理系统旳重要构成部分, 对学生旳德、智、体全面评估有很大旳作用, 因此学生成绩管理系统应当可认为顾客提供以便旳查询平台和数据存储功能。
老式是使用人工旳方式对学生旳信息进行存储, 对于个人旳学生成绩来说, 数据旳整顿和分析就显得很麻烦, 不利于查找、更新和维护。
因此, 顾客但愿制作一种学生成绩管理系统, 来提高老师旳工作效率, 同步予以老师便利。
根据与顾客旳交流, 一般对学生成绩管理系统有如下几点旳规定:A.可认为顾客提供以便旳数据查询功能, 满足复杂、多样旳数据查询需求。
一般我们所需要旳数据都不是可以从原始数据库中直接读取旳, 往往需要一定旳加工, 这样才能使老式复杂旳人工操作变得简朴又精确。
B、成绩管理要可以提供学校考试安排旳管理, 学生考试成绩旳管理, 以及学生单科和总成绩旳记录和分析等功能。
这些是一种学生成绩管理系统最重要旳功能构成, 包括数据旳集成、整合和分析。
上述是顾客对系统需求和功能需求旳两点规定, 我根据顾客对功能旳需求, 将整个学生成绩管理系统提成两个大旳模块, 即基本信息设置模块和成绩管理模块(如图1)。
为了能使本系统可以基本独立, 通过度析, 我又添加了学生基本信息添加功能和班级基本信息添加功能, 这样系统就可以实现本系统旳全面界面化。
2.概要设计根据需求分析, 成绩管理系统重要是实现对考试和学生成绩旳管理功能, 我设计旳整个学生成绩管理系统分为两个大旳模块, 分别为基本信息设置模块和成绩管理模块, 这两个模块包括了成绩管理系统旳所有数据存储和功能需求, 为了愈加清晰了分解学生成绩管理系统, 每个大模块又由几种子功能模块构成, 完毕顾客旳需求。
两个大模块旳子模块详细划分如图2所示:基本信息设置是成绩管理系统中某些基本数据旳添加和修改, 为了可以实现本学生成绩管理系统旳独立性, 我在基本信息设置模块中添加了学生和班级信息添加模块, 以便顾客能直接添加新增旳数据, 而不需要通过程序员来完毕。
课程设计说明书设计名称: C语言课程设计题目:学生成绩管理系统学生姓名:专业:网络工程班级: 12级1班学号: 2012394108指导教师:日期:年月日课程设计任务书网络工程专业 12 年级 1 班孙璐一、设计题目学生成绩管理系统二、主要内容数据库的数据项主要数据包括:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。
要求具有以下功能:(1)系统以菜单方式工作。
(2)显示、保存记录;添加、删除、修改任意个记录。
(3)排序功能:打开学生数据库,计算每个学生的平均成绩和总成绩,用冒泡法或选择排序法将平均成绩和总成绩排序后生成两个新文件(从大到小),存盘并显示这两个文件的全部记录。
(4)查询功能:打开总成绩排序文件,用折半查找法统计出给定分数的人数并显示。
并能按学号或姓名查找并显示某个学生的各科成绩。
(5)统计功能:对各科成绩统计分析(平均分、最高分、最低分、及格率等);统计各科各分数段人数。
三、具体要求围绕课程设计的目的和意义,基本要求如下:1、认真阅读《C语言课程设计》指导书,明确课程设计的目的、意义和要求;2、快速总结C程序设计语言的精髓,如:函数的概念、函数的设计和函数的调用;3、快速熟悉Tuber C 或C++的上机环境。
能熟练进行高级编辑操作(特别是字块操作);熟悉步进式、断点跟踪的程序调试方法,提高工作效率。
4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确"定时间进度。
如果是多人共一题,则要首先完成小组内的人员分工及安排,不允许重题现象。
5.学习并了解良好的程序设计风格。
按质、按量、并按时间完成课程设计的任务。
6.提供可运行的课程设计系统,参加上机面试答辩。
本次课程设计的重点是:学会设计并编写函数,掌握好各函数之间的调用关系;利用文件操作函数,建立数据库并完成对数据库的各种操作;掌握几种典型算法的应用(如:冒泡法、选择排序法和折半查找法)。
《学生成绩管理系统》课程设计报告专业:信息科学与工程学院班级:电气信息类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语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。
二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。
同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。
五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。
总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。
2、查询模块:可用stu *lookdata(stu *p1)来实现。
找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。
3、插入模块:可用insert( )函数来实现。
其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。
5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。
二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。
主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。
北华大学课程设计报告课程名称: C++语言程序设计学生姓名: (组长:陈希)(组员:丰小舜焦锦辉常凯威)学生班级:网络13-2班学号: 03、04、10、02起止时间: 2014.06.15---2014.06.23指导教师:张淑英目录一.目的与概述 --------------------------------2 二.设计内容------------------------------------3 三.过程与结果-----------------------------------4 四.设计总结 -----------------------------------10 五.成绩评定———————————-------------11 六.程序清单------------------------------------12 参考文献----------------------------------------30一、目的与要求通过本课程设计的实践,全面总结C++课程学习中的的数据类型、程序结构、数组、函数、指针、结构体、链表等基本概念,掌握其使用方法。
掌握面向对象程序设计中有关类、对象、继承、重载、多态性、输入输出流类体系、文件操作的基本概念,初步学会用类与对象这种面向对象的程序设计方法编写应用程序。
培养使用面向对象的程序设计方法编写计算机程序的能力。
通过设计一个《学生成绩统计管理》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。
了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。
程序设计是一门实践性很强的课程,必须十分重视实践环节。
许多实际的知识不是靠听课和看书学到的,而是通过长时间的实践积累的。
二、设计内容学生成绩管理系统1.基本功能:a)成绩的输入(学号、姓名、英语、数学、C++语言…);b)成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例);c)总成绩统计(学生的总成绩、平均成绩及成绩排名)d)成绩的统计结果显示。
2. 扩展功能:e)学生数据的添加、修改、与删除f)学生数据的读取与存储3.设计要求a)采用面向对象的思想和方法完成设计,最好能够基于windows图形界面。
b)至少设计四个类;学生类(描述学生基本信息);成绩类:班级类;课程类(描述课程信息:课程编号,科目名称(如高等数学,大学英语等);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入。
小组分工三、过程与结果主要内容如下:1.关键类的设计,继承层次关系,代码:首先,创建了一个student类.在student类的共有部分声明程序所需函数;然后就是student类的函数实现部分,其中定义student类的带参数及不带参数构造函数;再是常用函数的调用,并定义系统菜单函数及其界面;最后就是主函数文件。
Student类的声明如下:主要功能函数的设计:1. 关于计算总成绩和平均成绩以及评定成绩等级的函数,而用于成绩统计中优秀、良好、中等、及格、不及格的计算,不过为便于表达,此程序采用字母A,B,C,D,E来分别表达上述等级;代码如下:2.此函数为查找函数的实现过程,通过while switch和if语句以及制表格和setw的使用将输入的数据以表格的形式打印出来,等级一栏宽度略小;3.此函数为删除函数的实现部分,巧妙运用字母i,定义i的值0为数据不存在,1为数据存在的情况,删除时考虑数据存在与否的问题;4.排序函数中分四种情况排序,分别按学号,总分,平均分来排序,排序结果也能有升序或降序操作,通过while else语句以及制表格和case的使用将输入的数据排序出来;因函数体过于庞大,在后面代码清单罗列出来时会标示出来。
数据输入设计:数据输入以输出方式打开文件,通过this指针和地址引用把写入的数据加在文件末尾;程序测试结果:1运行程序.会出现如下画面,按照提示进行选择.2.首先选择1,然后按Enter键.按照提示对学生情况进行输入.如图:3.按任意键程序自动保存第一个同学的数据,并返回菜单,按照刚才的步骤继续输入第二个、第三个同学等等的数据;4.选择4, 然后按Enter键.对数据进行进行有目的性的排序.如图:5.譬如选择2按总分排序,按Enter键,再在接下来的提示框中选择降序排序类型,再按一次Enter键,排序结果如图:符合设计要求,但各科成绩“优秀”、“良好”、“中等”、“及格”、“不及格”的人数及其所占比例因个人能力有限未能设计出来;6.按任意键又返回菜单,继续接下来的操作;四、设计总结这次课程设计基本上涵盖了大学一年级学习到的C++ 语言知识点,课程设计题目要求不仅要求对课本知识有较深刻的了解,同时要求程序设计者有较强的思维和动手能力。
这次课设使我了解我编程思想和编程技巧,也认识了软件生命周期的各个环境,包括构思、设计、编写、调试、发布、文档化、维护和修订。
C++程序编译是一种要求特别精细的工作,小到一个分号(或点)都能影响整个程序的运行,这就要求我们编写程序时要特别细心,即使是一个符号,还是一个字母都不能乱用。
在这次的编写过程中,我就因为错把case序列语句里的变量中的p写成q使整个程序瘫痪。
它让我记住了学习需要认真、仔细、负责的态度对待。
这次课程设计虽说很辛苦,而且设计出来的程序不全具备课程所需的,不过扩展功能学生数据的添加、修改、与删除的函数嵌进去,而且排序功能关联升序和降序功能,正所谓鱼与熊掌不可得兼。
这次课程设计,在整个程序中,我们通过使用while循环,switch语句,冒泡排序法,表格设计中的setw()以及类的定义及使用来完成程序设计,使我提高了对C++中语句的使用能力和组合能力,进一步加强了我对使用C++编程的能力。
还让我掌握了高级程序设计语言的基本思想、基本概念、基本方法和基本技能,while语句,this指针,case作为程序的入口,一般结合switch使用等等。
一个星期以来的课程设计,感谢帮助我的同学和师长,通过和他们的交流,互相交流经验,我这次设计的程序中各大主函数体得以设计出来,感谢他们在我编程过程中为我做的提醒和指点,这真的很重要。
这次课程设计不仅让我修补了以前学习的漏洞,也让我知道一个道理:编程需要兴趣和实际动手。
这应该可以借鉴在同学或者师长们的编程经验上。
创新思维至关重要,相对于我这略感冗余却实现不了更多功能的程序来说,有必要写出精简的代码,也有助于开发出高效的程序。
虽说我编写的程序离专业人员设计的还有好大一段距离,但它已经是我目前的极限。
我相信,通过我的努力,在不久的将来,我会编出一组真正实用的程序的。
五、成绩评定六、附件程序源代码清单:#include<iostream>#include<string>#include<fstream>#include<iomanip>using namespace std;class student{private:string number;string name;double computer;double English;double math;double sum;double ave;char grade;student *head;student *curnode;student *next;public:student();//不带参数的构造函数student(string ,string ,double ,double ,double ,double =0.0,double =0.0,char =NULL);//带数据域参数的构造函数,用来动态建立节点void sum_score();//总分函数void ave_score();//平均分函数void grade_score();//成绩等级void cin_app();//修改用void app_score(string ,string ,double ,double ,double); //动态的建立节点void del_score(); //删除全部节点void displist(); //输出节点中的全部数据void lookup(int ,string ); //查找函数void del_score(int ,string ); //删除函数void compositor(int ,int ); //排序函数void rework(int ,string ); //修改函数};//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////student类的实现void err_char();//输入错误字符检测函数void score_err();//成绩范围检测函数,当输入成绩不在0到100之间时提示重新输入student::student():next(NULL)//不带参数的构造函数{head=curnode=this;}//带参数的构造函数student::student(string Number,string Name,double Computer,double ENglish,double Math,double Sum,double A ve,char Grade):next(NULL){number=Number;name=Name;computer=Computer;English=ENglish;math=Math;sum=Sum;ave=A ve;grade=Grade;}void student::sum_score()///////////////////////计算总成绩{sum=computer+English+math;}void student::ave_score()/////////////////////计算平均成绩{ave=(computer+English+math)/3.0;}void student::grade_score()///////////////////计算成绩等级{int i;i=ave;switch(i/10){case 10: grade='A'; break;case 9: grade='A'; break;case 8: grade='B'; break;case 7: grade='C'; break;case 6: grade='D'; break;default: grade='E';}}void student::app_score(string Number,string Name,double Computer,double ENglish,double Math)//动态建立节点{curnode->next=new student(Number,Name,Computer,ENglish,Math);curnode=curnode->next;}void student::del_score()//////////////////////删除表中的全部数据{student *p;curnode=head->next;while(curnode!=NULL){p=curnode->next;delete curnode;curnode=p;}head->next=NULL;curnode=head;cout<<"┏━━━━━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃!表中内容全部清空,现已是一个空表! ┃"<<endl;cout<<"┗━━━━━━━━━━━━━━━━━━━┛"<<endl;cout<<" ";system("pause");}void student::displist()////////////////////////输出表中的全部数据{if(head->next==NULL){cout<<"┏━━━━━━━━━┓"<<endl;cout<<"┃!这是一个空表! ┃"<<endl;cout<<"┗━━━━━━━━━┛"<<endl;cout<<" ";system("pause");return;}student *pw=curnode;curnode=head->next;cout<<"┏━━━━━┳━━━━━┳━━━┳━━━┳━━━┳━━━━┳━━━━┳━━┓"<<endl;cout<<"┃学号┃姓名┃计算机┃英语┃数学┃总分┃平均分┃等级┃"<<endl;cout<<"┣━━━━━╋━━━━━╋━━━╋━━━╋━━━╋━━━━╋━━━━╋━━┫"<<endl;while(curnode!=NULL){cout<<"┃"<<left<<setw(10)<<curnode->number;cout<<"┃"<<left<<setw(10)<<curnode->name;cout<<"┃"<<left<<setw(6)<<curnode->computer;cout<<"┃"<<left<<setw(6)<<curnode->English;cout<<"┃"<<left<<setw(6)<<curnode->math;curnode->sum_score();cout<<"┃"<<left<<setw(8)<<curnode->sum;curnode->ave_score();cout<<"┃"<<left<<setw(8)<<curnode->ave;curnode->grade_score();cout<<"┃"<<left<<setw(4)<<curnode->grade<<"┃"<<endl;if(curnode->next!=NULL)cout<<"┣━━━━━╋━━━━━╋━━━╋━━━╋━━━╋━━━━╋━━━━╋━━┫"<<endl;elsecout<<"┗━━━━━┻━━━━━┻━━━┻━━━┻━━━┻━━━━┻━━━━┻━━┛"<<endl;curnode=curnode->next;}curnode=pw;cout<<"┏━━━━━━━━━┓"<<endl;cout<<"┃!表中内容输出完毕!┃"<<endl;cout<<"┗━━━━━━━━━┛"<<endl;cout<<" ";system("pause");}////////////////////////////////////////输入数据void student::cin_app(){student *p=curnode;bool b=0;string Number;string Name;double Computer;double ENglish;double Math;while(1){cout<<" 学号:";cin>>Number;curnode=head->next;while(curnode!=NULL){b=(Number==curnode->number);curnode=curnode->next;}if(!b)break;else{cout<<"┏━━━━━━━━━━━━━━┓"<<endl;cout<<"┃出现了相同的学号,请重新输入┃"<<endl;cout<<"┗━━━━━━━━━━━━━━┛"<<endl;}}curnode=p;cout<<" 姓名:";cin>>Name;while(1){cout<<" 计算机:";cin>>Computer;while(cin.fail()){err_char();cout<<" 计算机:";cin>>Computer;}if(Computer>=0&&Computer<=100)break;elsescore_err();}while(1){cout<<" 英语:";cin>>ENglish;while(cin.fail()){err_char();cout<<" 英语:";cin>>ENglish;}if(ENglish>=0&&ENglish<=100)break;elsescore_err();}while(1){cout<<" 数学:";cin>>Math;while(cin.fail()){err_char();cout<<" 数学:";cin>>Math;}if(Math>=0&&Math<=100)break;elsescore_err();}this->app_score(Number,Name,Computer,ENglish,Math);cout<<"┏━━━━━━━━┓"<<endl;cout<<"┃!已添加一条记录!┃"<<endl;cout<<"┗━━━━━━━━┛"<<endl;cout<<" ";system("pause");}//////////////////////////////////////////查找函数的实现void student::lookup(int n,string str){student *p=curnode;bool b;//定义i=1,当找到数据时把i置为0.用于输出没有找到数据int i=1;if(!(curnode=head->next)){cout<<"┏━━━━━━━┓"<<endl;cout<<"┃!这是一个空表!┃"<<endl;cout<<"┗━━━━━━━┛"<<endl;curnode=p;cout<<" ";system("pause");return;}cout<<"┏━━━━━┳━━━━━┳━━━┳━━━┳━━━┳━━━━┳━━━━┳━━┓"<<endl;cout<<"┃学号┃姓名┃计算机┃英语┃数学┃总分┃平均分┃等级┃"<<endl;cout<<"┣━━━━━╋━━━━━╋━━━╋━━━╋━━━╋━━━━╋━━━━╋━━┫"<<endl;while(curnode!=NULL){switch(n){case 1: b=curnode->number==str;break;case 2: b=curnode->name==str;break;default: return;}if(b){i=0;cout<<"┃"<<left<<setw(10)<<curnode->number;cout<<"┃"<<left<<setw(10)<<curnode->name;cout<<"┃"<<left<<setw(6)<<curnode->computer;cout<<"┃"<<left<<setw(6)<<curnode->English;cout<<"┃"<<left<<setw(6)<<curnode->math;curnode->sum_score();cout<<"┃"<<left<<setw(8)<<curnode->sum;curnode->ave_score();cout<<"┃"<<left<<setw(8)<<curnode->ave;curnode->grade_score();cout<<"┃"<<left<<setw(4)<<curnode->grade<<"┃"<<endl;cout<<"┣━━━━━╋━━━━━╋━━━╋━━━╋━━━╋━━━━╋━━━━╋━━┫"<<endl;}curnode=curnode->next;}//当i=1是代表没有找到数据if(i){cout<<"┣━━━━━┻━━━━━┻━━━┻━━━┻━━━┻━━━━┻━━━━┻━━┫"<<endl;cout<<"┃没有匹配的数据┃"<<endl;cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"<<endl;}elsecout<<"┗━━━━━┻━━━━━┻━━━┻━━━┻━━━┻━━━━┻━━━━┻━━┛"<<endl;curnode=p;cout<<" 以上是本次查找的结果!"<<endl;cout<<" ";system("pause");}//////////////////////////////////////////删除函数的实现void student::del_score(int n,string str){student *p=curnode,*pw=head;bool b;//定义i=1,当找到数据时把i置为0.用于输出没有找到数据int i=1;if(!(curnode=head->next)){cout<<"┏━━━━━━━┓"<<endl;cout<<"┃!这是一个空表!┃"<<endl;cout<<"┗━━━━━━━┛"<<endl;curnode=p;cout<<" ";system("pause");return;}while(curnode!=NULL){switch(n){case 1: b=curnode->number==str;break;case 2: b=curnode->name==str;break;default: return;}if(b){i=0;pw->next=curnode->next;delete curnode;curnode=pw->next;}else{pw=curnode;curnode=curnode->next;}}//当i=1是代表没有找到数据if(i){cout<<"┏━━━━━━━┓"<<endl;cout<<"┃没有匹配的数据┃"<<endl;cout<<"┗━━━━━━━┛"<<endl;}else{cout<<"┏━━━━━━━┓"<<endl;cout<<"┃数据删除成功┃"<<endl;cout<<"┗━━━━━━━┛"<<endl;}curnode=head;while(curnode->next){curnode=curnode->next;}cout<<" ";system("pause");}//////////////////////////////////////排序函数的实现void student::compositor(int n,int m){if(head->next==NULL){cout<<"┏━━━━━━━━━━━┓"<<endl;cout<<"┃!这是一个空表不能排序!┃"<<endl;cout<<"┗━━━━━━━━━━━┛"<<endl;cout<<" ";system("pause");return;}if(head->next->next==NULL){cout<<"┏━━━━━━━━━━━┓"<<endl;cout<<"┃!只有一条记录不用排序!┃"<<endl;cout<<"┗━━━━━━━━━━━┛"<<endl;cout<<" ";system("pause");return;}student *s,*p,*q,*r;r=head;s=head->next;q=s;p=q->next;while(s!=NULL){while(p!=NULL){switch(n){case 1:{if(m==1){while(s->number<p->number){q->next=p->next;r->next=p;p->next=s;s=p;p=q->next;if(p==NULL)break;}}else{while(s->number>p->number){q->next=p->next;r->next=p;p->next=s;s=p;p=q->next;if(p==NULL)break;}}break;}case 2:{if(m==1){while(s->sum<p->sum){q->next=p->next;r->next=p;p->next=s;s=p;p=q->next;if(p==NULL)break;}}else{while(s->sum>p->sum){q->next=p->next;r->next=p;p->next=s;s=p;p=q->next;if(p==NULL)break;}}break;}case 3:{if(m==1){while(s->ave<p->ave){q->next=p->next;r->next=p;p->next=s;s=p;p=q->next;if(p==NULL)break;}}else{while(s->ave>p->ave){q->next=p->next;r->next=p;p->next=s;s=p;p=q->next;if(p==NULL)break;}}break;}default: return;}if(p==NULL){break;}q=p;p=p->next;}r=s;s=s->next;q=s;p=q->next;if(p==NULL){break;}}cout<<"┏━━━━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃!成功完成排序操作,即将输出排序结果!┃"<<endl;cout<<"┗━━━━━━━━━━━━━━━━━━┛"<<endl;cout<<" ";system("pause");displist();}////////////////////////////////////////修改函数的实现void student::rework(int n,string str){student *p=curnode;bool b;int i=1;if(!(curnode=head->next)){cout<<"┏━━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃!这是一个空表没有需要修改的数据!┃"<<endl;cout<<"┗━━━━━━━━━━━━━━━━┛"<<endl;curnode=p;cout<<" ";system("pause");return;}while(curnode!=NULL){switch(n){case 1: b=curnode->number==str;break;case 2: b=curnode->name==str;break;default: return;}if(b){i=0;string Number;string Name;double Computer;double ENglish;double Math;cout<<"┏━━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃!请在原数据后面输入要修改的数据!┃"<<endl; cout<<"┗━━━━━━━━━━━━━━━━┛"<<endl;cout<<" 学号:"<<curnode->number<<" ";cin>>Number;curnode->number=Number;cout<<" 姓名:"<<curnode->name<<" ";cin>>Name;curnode->name=Name;while(1){cout<<" 计算机:"<<curnode->computer<<"";cin>>Computer;while(cin.fail()){err_char();cout<<" 计算机:"<<curnode->computer<<"";cin>>Computer;}if(Computer>=0&&Computer<=100)break;elsescore_err();}curnode->computer=Computer;while(1){cout<<" 英语:"<<curnode->English<<" ";cin>>ENglish;while(cin.fail()){err_char();cout<<" 英语:"<<curnode->English<<" ";cin>>ENglish;}if(ENglish>=0&&ENglish<=100)break;elsescore_err();}curnode->English=ENglish;while(1){cout<<" 数学:"<<curnode->math<<"";cin>>Math;while(cin.fail()){err_char();cout<<" 数学:"<<curnode->math<<"";cin>>Math;}if(Math>=0&&Math<=100)break;elsescore_err();}curnode->math=Math;}curnode=curnode->next;}if(i){cout<<"┏━━━━━━━━━━━┓"<<endl;cout<<"┃!找不到需要修改的数据!┃"<<endl;cout<<"┗━━━━━━━━━━━┛"<<endl;}else{cout<<"┏━━━━━━━━━┓"<<endl;cout<<"┃!数据修改全部完成!┃"<<endl;cout<<"┗━━━━━━━━━┛"<<endl;}cout<<" ";system("pause");curnode=p;}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////常用函数调用void name_of_number();//选择姓名还是学号void menu()//系统菜单函数的定义{cout<<"┏━━━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃欢迎使用信管专业学生成绩管理系统┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃主菜单┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃(请按提示操作)┃"<<endl;cout<<"┃┃"<<endl;cout<<"┣━━━━━━━━━━━━━━━━━┫"<<endl;cout<<"┃┃"<<endl;cout<<"┃ 1 录入成绩 2 删除记录┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃ 3 修改记录 4 记录排序┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃ 5 查看记录 6 查找信息┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃7 删除全部┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃其他键退出┃"<<endl;cout<<"┃┃"<<endl;cout<<"┗━━━━━━━━━━━━━━━━━┛"<<endl;cout<<" 选择1-7数字进行操作"<<endl;cout<<" 你的选择是:";}//查找函数的调用void fun_lookup(student &a){int n;string str;name_of_number();cout<<" 你的选择是:";cin>>n;while(cin.fail()){err_char();cout<<" 你的选择是:";cin>>n;}if(n!=1&&n!=2)n=1;cout<<" 请输入查找关键字:";cin>>str;a.lookup(n,str);}//修改函数void fun_rework(student &a){int n;string str;name_of_number();cout<<" 你的选择是:";cin>>n;while(cin.fail()){err_char();cout<<" 你的选择是:";cin>>n;}if(n!=1&&n!=2)n=1;cout<<" 请输入修改关键字:";cin>>str;a.rework(n,str);}//删除函数的调用void fun_del(student &a){int n;string str;name_of_number();cout<<" 你的选择是:";cin>>n;while(cin.fail()){err_char();cout<<" 你的选择是:";cin>>n;}if(n!=1&&n!=2)n=1;cout<<" 请输入删除关键字:";cin>>str;a.del_score(n,str);}//排序函数的调用void fun_compositor(student &a){int n,m;cout<<"┏━━━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃请输入按什么排序┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃ 1 按学号排序 2 按总分排序┃"<<endl;cout<<"┃ 3 按平均分排┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃输入其它数字则按学号排序┃"<<endl;cout<<"┃输入其它不是数字重新输入┃"<<endl;cout<<"┗━━━━━━━━━━━━━━━━━┛"<<endl;cout<<" 你的选择是:";cin>>n;while(cin.fail()){err_char();cout<<" 你的选择是:";cin>>n;}if(n!=1&&n!=2&&n!=3){n=1;}cout<<"┏━━━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃请选择排序类型┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃ 1 按降序排序 2 按升序排序┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃输入其它数字则按降序排序┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃输入其它不是数字重新输入┃"<<endl;cout<<"┗━━━━━━━━━━━━━━━━━┛"<<endl;cout<<" 你的选择是:";cin>>m;while(cin.fail()){err_char();cout<<" 你的选择是:";cin>>m;}if(n!=1&&n!=2){m=1;}//输出排序后的结果positor(n,m);}//成绩范围检测函数void score_err(){cout<<"┏━━━━━━━━━━━━━━━┓"<<endl;cout<<"┃输入的成绩应该在0--100之间┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃请返回重新输入┃"<<endl;cout<<"┗━━━━━━━━━━━━━━━┛"<<endl;}//退出程序函数void fun_exit(){cout<<"┏━━━━━━━━━━┓"<<endl;cout<<"┃程序即将退出┃"<<endl;cout<<"┗━━━━━━━━━━┛"<<endl;cout<<" ";system("pause");exit(1);}//输入错误字符检测函数void err_char(){cout<<"┏━━━━━━━━━━━━━┓"<<endl;cout<<"┃输入了非法字符,请重新输入┃"<<endl;cout<<"┗━━━━━━━━━━━━━┛"<<endl;cin.clear ();cin.sync ();}//选择姓名还是学号void name_of_number(){cout<<"┏━━━━━━━━━━┓"<<endl;cout<<"┃请输入关键字类型┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃ 1 学号 2 姓名┃"<<endl;cout<<"┃┃"<<endl;cout<<"┃其它数字默认学号┃"<<endl;cout<<"┃输入非数字重新输入┃"<<endl;cout<<"┗━━━━━━━━━━┛"<<endl;}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////主函数文件void fun_lookup(student &a);//查找函数的调用定义void fun_del(student &a);//删除函数的调用定义void fun_compositor(student &a);//排序函数的调用定义void fun_rework(student &a);//修改函数的调用定义void fun_exit();//退出程序函数的定义void main(){student a;while(1){int i;system("cls"); //清屏功能menu();cin>>i;if(cin.fail()) //输入非法字符时退出fun_exit();switch (i){case 1: a.cin_app();break; //增加记录case 2: fun_del(a);break; //删除记录case 3: fun_rework(a);break; //修改记录case 4: fun_compositor(a);break; //记录排序case 5: a.displist();break; //查看记录case 6: fun_lookup(a);break; //查找记录case 7: a.del_score();break; //清空链表default: fun_exit(); //其它键退出}}}参考文献:《面向对象程序设计》--冯建华30。