首页 用链表与文件实现一个简单的学生成绩管理

用链表与文件实现一个简单的学生成绩管理

举报
开通vip

用链表与文件实现一个简单的学生成绩管理用链表与文件实现一个简单的学生成绩管理 *** 《用链表和文件实现一个简单的学生成绩管理》 第1页 共27页 *** *** 摘 要 本课程设计主要解决在一个学校中,对学生成绩信息进行管理的问题, 通过建立一个相容,一致,易查和全面的学生成绩管理系统,实现对学生成绩信息的插 入,删除,显示和查询。在本课程设计中,系统开发平台为Windows2000,程序设计语言 为Visual C++6.0,程序运行平台为Windws 98/2000/XP。在程序设计中采用了单链表和文件相结合的方法实现对学生成绩管理。程序...

用链表与文件实现一个简单的学生成绩管理
用链表与文件实现一个简单的学生成绩管理 *** 《用链表和文件实现一个简单的学生成绩管理》 第1页 共27页 *** *** 摘 要 本课程 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 主要解决在一个学校中,对学生成绩信息进行管理的问题, 通过建立一个相容,一致,易查和全面的学生成绩管理系统,实现对学生成绩信息的插 入,删除,显示和查询。在本课程设计中,系统开发平台为Windows2000,程序设计语言 为Visual C++6.0,程序运行平台为Windws 98/2000/XP。在程序设计中采用了单链表和文件相结合的方法实现对学生成绩管理。程序通过调试运行,初步实现了设计目标,并且 经过适当完善后,将可以应用在实际中解决问题。 关键词 程序设计;学生成绩管理; Visual C++6.0;单链表与文件 1 对于一个学校来说,学生成绩管理是一个很重要的问题,学生基本信息和成绩管理 问题的解决决定了一个学校在管理方面的运转效率。一个好的成绩管理系统可以大大的 提高学校的管理效率。 1.1 随着信息时代的到来,各种信息日益丰富,信息迅速膨胀,加之学校规模的扩大, 对学生成绩信息的管理已经成为学校中重要的一环。在信息化未到来之前,都是采用人 工管理学生成绩的相关信息。但是随着市场经济的飞速发展,各种信息越来越繁杂。人 工管理学生成绩信息已经远远不能满足学校的需求。特别是对一些规模大的学校来说, 实现对学生成绩高效、准确的管理是十分重要的。人工管理不仅速度慢而且容易出错。 这些大大的降低了学校管理的效率,甚至会因一些错误造成不必要的麻烦。所以通过建 立一个完整,透明,一致,高效,易查的学生成绩管理系统可以实现对学生成绩的有效 管理,大大的提高学校的管理效率。 数据结构是指相互之间存在一定关系的数据元素的集合。按照视点的不同,数据结 *** 《用链表和文件实现一个简单的学生成绩管理》 第2页 共27页 构分为逻辑结构和存储结构。数据的逻辑结构(logical structure)是指数据元素之间逻辑关系的整体。所谓逻辑关系是指数据元素之间的关联方式或邻接关系。根据数据元素之间 逻辑关系的不同,数据结构分为四类:集合;线性结构;树结构;图结构。数据的逻辑 结构属于用户视图,是面向问题的,反映了数据内部的构成方式。为了区别于数据的存 储结构,常常将数据的逻辑结构称为数据结构。数据的存储结构(storage structure)又称为 物理结构,是数据及其逻辑结构在计算机中的表示,换言之,存储结构除了数据元素之 外,必须隐式或显示地存储数据元素之间的逻辑关系。通常有两种存储结构:顺序存储 [1]结构和链接存储结构。 线性表是一种最基本、最简单的数据结构,简称表,是具有零个或多个具有相同类 型的数据元素的优先序列,这些数据元素之间仅具有单一的前驱和后继关系。线性表中 的元素具有抽象(即不确定)的数据类型,在设计具体的应用程序时,数据元素的抽象 类型将被具体的数据类型所取代。线性表的存储结构主要有顺序存储结构和链接存储结 [1]构(即顺序表和单链表)。 单链表是用一组任意的存储单元存放线性表的元素,这组存储单元可以连续也可以 不连续,甚至可以零散分布在内存中的任意位置,因此单链表中元素的逻辑次序和物理 次序不一定相同。为了能正确表示元素之间的逻辑关系,每个存储单元在存储数据元素 的同时,还必须存储其后继元素所在的地址信息,这个地址信息称为指针,这两部分组 [1]成了数据元素的存储映像,称为节点(node)。节点结构如图1所示: data next 图1节点结构 文件是程序设计中的一个重要概念。所谓“文件”,一般是指存储在外部介质上的 数据的集合。一批数据是以文件的形式存放在外部介质上的。操作系统是以文件为单位 对数据进行管理的。要向外部介质上存储数据也必须先建立一个文件(以文件名为标识), 才能向它输出数据。对用户来说,常用到的文件有两大类,一类是程序文件(program file), 如C++的源程序文件、目标文件、可执行文件等。一类是数据文件,在程序运行时,常 常需要将一些数据(运行的最终结果或中间数据)输出到磁盘上存放起来,以后需要时 再从磁盘中输入到计算机内存。这种磁盘文件就是数据文件。程序中的输入和输出的对 [2]象就是数据文件。 1.2 *** 《用链表和文件实现一个简单的学生成绩管理》 第3页 共27页 学生成绩管理系统是为了实现学校人力资源优化和学生成绩的科学管理而设计的, 通过建立一个相容,一致,易查和全面的学生成绩管理系统,使得学校学生成绩管理更 加高效,准确。更加科学化和正规化。 经过调试运行,可以更加有效的管理学生成绩信 息,其中包括学生的基本信息(学号、姓名、性别),成绩信息(数学成绩、英语成绩、 计算机成绩)。并且具有信息的添加,查询,删除和显示的功能。 本课程设计主要是用链表和文件实现的,通过程序的编写、调试和运行可以进一步 掌握数据结构及算法的程序实现的基本方法。理解线性表的连接存储结构,单链表的基 本操作的实现,同时加深对文件的概念的理解,掌握在程序中如何打开和关闭文件。 1.3 本课程设计是用链表和文件完成学生成绩管理,其中学生的基本信息包括:学号、 姓名、性别;学生的成绩信息包括:数学成绩、英语成绩、计算机成绩。如图2所示 : 学号 性别 姓名 学生成绩管理 计算机成绩 英语成绩 数学成绩 图2学生成绩管理信息 程序的功能是实现对学生成绩信息的添加,查询,删除和显示。如图3所示: 学生成绩管理 学学学学 生 生生生 成成成成 绩绩绩绩 录查删显 入 询 除 示 图3功能模块图 *** 《用链表和文件实现一个简单的学生成绩管理》 第4页 共27页 2 2.1 类是所有面向对象语言的共同特征,因此类是C++中十分重要的概念,是实现面向对象程序设计的基础。是C++的灵魂。 C++支持面向过程的程序设计,也支持基于对象的程序设计,又支持面向对象的程 序设计。基于对象就是基于类,与面向过程的程序不同,基于对象的程序是以类和对象 为基础的,程序的操作是围绕对象进行的。在此基础上利用了继承机制和多态性,就成 为面向对象的程序设计。 C++中对象的类型称为类,类代表了某一批对象的共性和特征,类是对象的抽象, 而对象是类的具体实例。在类体中是类的成员列表,列出类中的全部成员。它是一种广 义的数据类型,除了数据部分以外,还包括了对这些数据操作的函数。这体现了把数据 和操作封装在一起。 2.2 学生成绩管理问题中,操作对象是每个学生的成绩信息,各信息之间的关系可以用 线性表的顺序存储结构来实现,也可以用线性表的链接存储结构来实现。考虑到学生成 绩登记表一经建立,需要经常录入学生成绩,删除已经毕业的学生的成绩,同时学生要 对自己的成绩进行频繁的查询。而在单链表中进行插入和删除操作不需要移动元素,所 需的时间仅为O(1)。在顺序表中进行插入和删除操作需要移动表长一半的元素,需要的 平均时间为O(n)。所以采用链接存储结构来实现。 在程序中需要把学生成绩信息的 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 面形式转化为具体的类。在本课程设计中总共定 义了三个类来实现学生成绩管理。第一、定义Student类,用带参数的构造函数并用参数初始化列表对数据成员进行初始化。在类中重载流插入运算符、流提取运算符和双目运 算符(”==”)分别用来输出Student类的对象的信息、输入Student类的对象的信息、进 行比较。 第二、定义Menu类,用来显示菜单,实现对学生成绩的插入,删除,查询和显示。第 三、定义单链表类cjguanli,实现单链表的各个操作。cjguanli类的定义如下所示: class cjguanli { *** 《用链表和文件实现一个简单的学生成绩管理》 第5页 共27页 public: cjguanli(); //建立只有头节点的空链表 cjguanli(T a[ ],int n); //建立有n个元素的单链表 ~cjguanli( ) { }; //析构函数 void Insert(int i,T x); //在单链表第i个位置插入元素值为x的节点 T Delete(int i); //在单链表中删除第i个节点 T Get(int i); //取单链表中第i个节点的元素值 int GetLength() const; //求单链表的长度 void Printcj(); //遍历单链表,按序号依次输出各元素 int Find(const T& x); //求单链表中值为x的元素序号 private: Node *first; int length; }; 3 3.1score.txt 建立一个score.txt文件,在程序运行时,选择操作4,就会显示出文件中已经存储的学生成绩信息的内容。score.txt文件内容如下表1所示: 学号 姓名 性别 数学成绩 英语成绩 计算机成绩 2001 85 89 84 程云 女 2002 89 82 96 孟军 男 2003 88 76 83 陈刚 男 2004 96 82 90 胡凡 女 2005 85 78 88 刘珊 女 2006 84 87 78 武明 男 表1 score.txt文件 3.2 *** 《用链表和文件实现一个简单的学生成绩管理》 第6页 共27页 定义学生类Student的对象stu, 输入对象stu的信息,调用单链表中的插入函数,插 入stu对象的信息,链表长度增加1. 单链表插入操作的流程图如下图所示: 指针p初始化,累加器j 清零 查找第i-1个节点且使p 指向改节点 N 判断插入位置抛出位置异常 是否合理 Y 将元素值x插入 图4 单链表插入操作流程图 3.3 首先定义字符串学号,输出提示信息”输入学号”,然后输入学号,再调用单链表中 的Find函数进行查找,找出要删除学生在单链表中的位置,判断位置是否为0,若否,再调用单链表中的Delete 函数,删除该学生的成绩信息。本操作的流程图如下所示: 输入要删除学生的学号 查找该学生在链表中的位置 Y 判断位置是否输出没有该成员 为0 N 删除学生成绩信息 *** 《用链表和文件实现一个简单的学生成绩管理》 第7页 共27页 图5 学生成绩删除流程图 3.4 输出提示信息”输入学号”,输入要查询学生成绩的学号,调用单链表中的Find函数,查找该学生在单链表中的位置,如果位置异常,输出提示信息”没有该成员”,否则,调用单链表中的Get函数,求出该节点的值并输出。操作流程图如下所示: 输入要查询学生的学号 查找该学生在链表中的位置 Y 判断位置是否为输出没有该成员 0 N 输出该学生的成绩信息 图6 学生成绩查询流程图 3.5 输出提示信息”输出学生成绩信息”,然后调用单链表中的函数Printcj。依次输出单链表中所有数据元素。单链表中的输出操作流程图如下所示: 工作指针p初始化 Y 退出 判断p是否为空 N 输出节点数据,p指针后移 *** 《用链表和文件实现一个简单的学生成绩管理》 第8页 共27页 图7 单链表输出操作流程图 4 4.1 在本课程设计中,系统开发平台为Windows2000,程序设计语言为Visual C++6.0,程序的运行环境为Visual C++ 6.0。Visual C++一般分为三个版本:学习版、专业版和企业 版,不同的版本适合于不同类型的应用开发。实验中可以使用这三个版本的任意一种, 在本课程设计中,以Visual C++ 6.0为编程环境。 Microsoft Visual C++ 6.0是Microsoft公司的Microsoft Visual Studio 6.0开发工具箱中的一个C++程序开发包。Visual C++包中除包括C++编译器外,还包括所有的库、例子 和为创建Windows应用程序所需要的文档。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。 Visual C++从最早期的1.0版本,发展到最新的7.0版本,Visual C++已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。最新的7.0版本在编译器、MFC类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。 虽然微软公司推出了Visual C++.NET(Visual C++7.0),但它的应用的很大的局限性, 只适用于Windows 2000,Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为平台。 Visual C++ 6.0是Microsoft公司推出的目前使用最广泛的基于Windows平台的可视化编程环境。Visual C++ 6.0是在以往版本不断更新的基础上形成的,由于其功能强大, 灵活性好,完全课扩展以及具有强大的Internet支持,因而在各种C++语言开发工具中脱颖而出,成为目前最为流行的C++语言集成开发环境。 Visual C++ 6.0秉承Visual C++以前版本的优异特性,为用户提供了一套良好的可视 化开发环境:主要包括文本编辑器、资源编辑器、工程创建工具、Debugger调试器等等。用户可以在集成开发环境中创建工程、打开工程、建立、打开和编辑文件、编译、链接、 运行、调试应用程序。 4.2 (1)在程序开始运行时,按照提示输入磁盘文件名score.txt。就会显示出功能选择菜单,提示用户是对学生成绩进行插入、删除、查询、输出还是退出操作。如下图8所 *** 《用链表和文件实现一个简单的学生成绩管理》 第9页 共27页 示。在输入命令后面选择命令4,就会依次显示出score.txt文件中学生的学号、姓名、 性别、数学成绩,英语成绩、计算机成绩。如下图9所示. 图8 功能选择菜单 *** 《用链表和文件实现一个简单的学生成绩管理》 第10页 共27页 图9 显示文件中存储的数据 (2)在选择1后,程序执行插入学生成绩的操作。结果如下图10所示: *** 《用链表和文件实现一个简单的学生成绩管理》 第11页 共27页 图10 执行插入操作后的结果 (3)选择功能2,提示输入要删除的学生学号。输入学号后程序执行删除学生成绩的操 作。结果如下图11所示: 图11 执行删除操作 再次选择功能4进行输出时可以看到没有学号为2005的学生的成绩 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 。如下图12所示: *** 《用链表和文件实现一个简单的学生成绩管理》 第12页 共27页 图11 执行删除操作后的结果 如果输入的要删除的学生的学号不存在,就会提示没有该成员。如下图12所示: 图12 提示删除不成功 (3)选择命令3,提示要查询学生成绩的学号,输入学号后,显示该学生的信息和各科 成绩。如下图13所示: 图13 查询学生成绩 如果输入的学生学号不存在,就会显示提示信息。如下图14所示: *** 《用链表和文件实现一个简单的学生成绩管理》 第13页 共27页 图14 提示查询不成功 (4)选择命令4,依次显示出各个学生的成绩信息(含新插入的信息)。如下图15所示: 图15 显示学生成绩信息 *** 《用链表和文件实现一个简单的学生成绩管理》 第14页 共27页 (5) 选择命令5,退出程序。如下图16所示: 图16 退出程序 5 这次的课程设计的内容是用链表和文件实现学生成绩管理,这对我来说是个很具有 挑战性的任务,虽然只做了一个很简单的成绩管理模块,但通过两个星期的设计也从中 学到了不少东西,更深刻的理解了课本中的内容。《数据结构》是一门实践性较强的课程, 为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。同时再次深刻理解了 C++中类的思想和实现,文件的概念和相关操作,单链表和顺序表在时间性能及空间性 能方面的优缺点。根据实际问题的需要,对个方面的优缺点加以综合平衡,从中选择比 较适宜的实现方法。在本次课程设计中,我明白了理论与实际相结合的重要性,并提高 了自己组织数据及编写程序的能力,培养了基本的,良好的程序设计技能。提高综合运 用所学知识的能力。 在这次课程设计中曾遇到了不少问题,就单凭我一个人的能力很难准时有效的完成 这次的课程设计,在此,我忠心感谢我的指导老师——肖增良。肖老师对工作认真负责, 耐心辅导,知识丰富。在这次课程设计中给了我很大的帮助。他严谨的治学精神和深厚 的理论水平都使我获益非浅。同时还要感谢我的同学,他们为我提出了很多有用的建议, 帮助我完成了这次的课程设计。最后也要感谢我们学校为我们提供良好的编程环境,使 我们能够按时完成任务。 [1] 王红梅,胡明,王涛. 数据结构(C++版) . 北京:清华大学出版社,2007 [2] 王红梅,胡明,王涛. 数据结构(C++版) 学习辅导与实验指导. 北京:清华大学出版, 2007 [3] 谭浩强 . C++程序设计. 北京:清华大学出版社, 2004 [4] 郑阿奇,丁有和. Visual C++教程.北京:机械工业出版社,2006 *** 《用链表和文件实现一个简单的学生成绩管理》 第15页 共27页 附录:源程序代码 // 程序名称:cjguanli.h // 程序功能:用类定义单链表的数据类型,实现链表的插入,删除,查找等基本操作 // 程序作者:程芳芳 // 最后修改日期:2008-9-7 #ifndef cjguanli_h #define cjguanli_h #include using namespace std; template struct Node { T data; Node *next; }; template< class T> //定义模板类cjguanli class cjguanli { public: cjguanli(); //建立只有头节点的空链表 cjguanli(T a[ ],int n); //建立有n个元素的单链表 ~cjguanli( ) { }; //析构函数 void Insert(int i,T x); //在单链表第i个位置插入元素值为x的节点 T Delete(int i); //在单链表中删除第i个节点 T Get(int i); //取单链表中第i个节点的元素值 int GetLength() const; //求单链表的长度 void Printcj(); //遍历单链表,按序号依次输出各元素 int Find(const T& x); //求单链表中值为x的元素序号 private: Node *first; int length; // this }; *** 《用链表和文件实现一个简单的学生成绩管理》 第16页 共27页 #endif // 程序名称:Menu.h // 程序功能:定义菜单类,实现学生成绩的插入,删除,查询和输出 // 程序作者:程芳芳 // 最后修改日期:2008-9-7 #ifndef _Menu_h #define _Menu_h #include #include #include #include "cjguanli.cpp" #include "Student.h" using namespace std; class Menu { public: Menu(); //构造函数 ~Menu(); //析构函数 void Display(); //显示菜单 void AddStu(); //将学生成绩插入到单链表中 void DeleteStu(); //删除学生成绩 void SelectStu(); //查询学生成绩 void OutPut(); //依次输出学生成绩 public: cjguanli list; string filename; }; #endif // _Menu_h // 程序名称:Student.h *** 《用链表和文件实现一个简单的学生成绩管理》 第17页 共27页 // 程序功能:定义Student类,用来输出和输入Student类的对象的信息 // 程序作者:程芳芳 // 最后修改日期:2008-9-7 #ifndef _Student_h #define _Student_h #include using namespace std; class Student { public: Student(string number="",string na="",string s="女",double ma=0,double eng=0,double com=0) :num(number),name(na),sex(s),math(ma),english(eng),computer(com){} //定义 带参数的构造函数并用参数初始化列表对数据成员进行初始化 //定义运算符"<<"重载函数 friend std::ostream& operator <<(std::ostream& os,const Student& stu) //重载流插入运算符,用来输出Student类的对象的信息 { os<<"学号:"<>"重载函数 friend std::istream& operator >>(std::istream& in,Student& stu) //重载流提取运算符,输入自定义类型对象的信息 { cout<<"学号:"; *** 《用链表和文件实现一个简单的学生成绩管理》 第18页 共27页 in>>stu.num; //输入学号 cout<<"姓名:"; in>>stu.name; //输入姓名 cout<<"性别:"; in>>stu.sex; //输入性别 cout<<"数学成绩:"; in>>stu.math; //输入数学成绩 cout<<"英语成绩:"; in>>stu.english; //输入英语成绩 cout<<"计算机成绩:"; in>>stu.computer; //输入计算机成绩 return in; } friend bool operator ==(const Student & lf,const Student & rf) //重载双目运算符"=="用 来进行比较 { bool flag=true; if(lf.num!=rf.num) flag=false; return flag; } string GetNum() { return num;} string GetName() { return name; } string GetSex() { return sex; } double GetMath() { return math; } double GetEng() { return english;} double GetCom() { return computer;} private: string num; //学号 string name; //姓名 string sex; //性别 *** 《用链表和文件实现一个简单的学生成绩管理》 第19页 共27页 double math; //数学成绩 double english; //英语成绩 double computer; //计算机成绩 }; #endif //_Student_h // 程序名称:cjguanli.cpp // 程序功能:定义cjguanli类中的成员函数 // 程序作者:程芳芳 // 最后修改日期:2008-9-7 #ifndef _cjguanlicpp_h #define _cjguanlicpp_h #include "cjguanli.h" template int cjguanli::GetLength() const //求单链表的长度 { return length; } template cjguanli::cjguanli() //建立只有头节点的空链表 { first=new Node; first->next=NULL; length=0; } /* *用头插法构造有n个元素的单链表 */ template cjguanli::cjguanli(T a[ ],int n) { *** 《用链表和文件实现一个简单的学生成绩管理》 第20页 共27页 // Node *first; // here first=new Node; first->next=NULL; for(int i=0;i *s=new Node; s->data=a[i]; s->next=first->next; first->next=s; } } /* *插入函数Insert,将x插入到单链表第i个位置 */ template void cjguanli::Insert(int i,T x) { Node *p=first; //工作指针p初始化 int j=0; while(p&&jnext; //工作指针p后移 j++; } if(!p) throw"位置"; //若插入位置错误,显示提示信息 else { Node *s; s=new Node; s->data=x; s->next=p->next; //将节点s插入到节点p之后 *** 《用链表和文件实现一个简单的学生成绩管理》 第21页 共27页 p->next=s; } length++; //链表长度增加1 } /* *删除函数Delete,删除单链表中第i个元素 */ template T cjguanli::Delete(int i) { T x; if(i<=0||i>length) throw "Error!"; Node *p;int j; p=first;j=0; //工作指针p初始化 while(p&&jnext; j++; } if(!p||!p->next) //节点p不存在或者节点p的后继节点不存在 throw"位置"; else { Node *q; q=p->next; x=q->data; //暂存被删除节点 p->next=q->next; //摘链 delete q; } length--; //链表长度减1 *** 《用链表和文件实现一个简单的学生成绩管理》 第22页 共27页 return x; } /* *求单链表中第i个元素节点的值 */ template T cjguanli::Get(int i) { Node *p; int j; p=first->next; j=1; //或者p=first, j=0 while(p&&jnext; //工作指针p后移 j++; } if(!p) throw "位置"; else return p->data; } /* * 遍历输出函数Printcj,输出单链表中所有元素 */ template void cjguanli::Printcj( ) { Node *p; p=first->next; while(p) *** 《用链表和文件实现一个简单的学生成绩管理》 第23页 共27页 { cout<data<next; } } /* * 取单链表中第i个节点的元素值 */ template int cjguanli::Find(const T& x) { Node *p=first->next; int k=1; while(p) { if(p->data==x) return k; else k++; p=p->next; } if(k>length) k=0; return k; } #endif// _cjguanlicpp_h // 程序名称:Menu.cpp // 程序功能:定义Menu类中的成员函数 // 程序作者:程芳芳 // 最后修改日期:2008-9-7 *** 《用链表和文件实现一个简单的学生成绩管理》 第24页 共27页 #include "Menu.h" #include #include #include using namespace std; void Menu::Display() //显示功能选项 { cout <<"************ 学生成绩管理 **************"<>stu; list.Insert(list.GetLength()+1,stu); //将学生信息插入到单链表中,链表长度增加1 } void Menu::DeleteStu() //删除单链表中的学生信息 { string num; cout<<"输入学号:"; cin>>num; Student stu(num); int k=list.Find(stu); //在链表中查找学生所在的位置 if(k==0) cout<<"没有该成员!"<>num; int k=list.Find(Student(num)); //查找学生在链表中的位置 if(k==0) cout<<"没有该成员!"<>filename; fstream file; file.open(filename.c_str()); if(!file.is_open()) { cout<<"文件打开失败!"; exit(0); } string num; string name; string sex; double math; double english; double computer; *** 《用链表和文件实现一个简单的学生成绩管理》 第26页 共27页 while(!file.eof()) { file>>num>>name>>sex>>math>>english>>computer; if(num=="") break; list.Insert(list.GetLength()+1,Student(num,name,sex,math,english,computer)); } file.close(); } Menu::~Menu() //定义析构函数 { fstream file; file.open(filename.c_str(),ios::trunc|ios::out); if(!file.is_open()) { cout<<"文件打开失败!"; exit(0); } for(int i=1;i<=list.GetLength();i++) { file< #include #include "Menu.h" using namespace std; void main() { Menu m; //在此输入已经存在的学生信息的文件名 score.txt,该文件放在该工程下 注意输入 的格式要保持一致 char c; while(1) { m.Display(); //显示功能选项 cin>>c; switch(c) { case '1': //添加学生成绩信息 m.AddStu(); break; case '2': //删除学生成绩信息 m.DeleteStu(); break; case '3': m.SelectStu(); //查询学生成绩信息 break; case '4': *** 《用链表和文件实现一个简单的学生成绩管理》 第28页 共27页 m.OutPut(); //输出学生成绩信息 break; case '5': //退出 return ; default: cout<<"输入命定错误!"<
本文档为【用链表与文件实现一个简单的学生成绩管理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_594886
暂无简介~
格式:doc
大小:335KB
软件:Word
页数:39
分类:生活休闲
上传时间:2018-10-12
浏览量:87