C++学生管理系统课程设计-源代码_第1页
C++学生管理系统课程设计-源代码_第2页
C++学生管理系统课程设计-源代码_第3页
C++学生管理系统课程设计-源代码_第4页
C++学生管理系统课程设计-源代码_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业/=/student.h 定义了抽象类Person,派生了student(及为信息类)、定义了节点类Node、定义了链表类List/=#ifndef STUDATA_H#define STUDATA_H#include /=int GetID();class List;/-class Person /抽象类protected:int ID; /学号char Name15; /姓名public:virtual bool operator(Person&)=0; /=(Pe

2、rson&)=0; /=运算符重载;/-class Student:public Person /学生类int Score4; /成绩void SwapData(Student*); /交换数据public:Student(int =0,char* =NULL,int* =NULL); /构造函数bool operator(Person&); /=(Person&); /=运算符重载friend ofstream&operator(ofstream&,Student*); /(ifstream&,Student*); /运算符重载从文件输入 friend ostream_withassign&

3、 operator(ostream_withassign&,Student*); /(istream_withassign&,Student*); /运算符重载从键盘输入friend class List;/-class Node /结点类Student *Stup; /指向学生对象指针Node *Prev,*Next; /指向前后结点指针public:Node(); /构造函数Node(Student*); /构造函数Node(Node&); /拷贝构造函数Node(); /析构函数friend class List;/-class ListNode *Head,*Tail; /链表头尾指针

4、void InitList(); /初始化函数public:List(); /构造函数List(); /析构函数void ClearList(); /清空链表Node *FindID(int&); /根据学号寻找学生所在结点 指针型函数void Insert(Node*); /插入一个学生Node *CreateNode(Student*); /建立一个学生结点 指针型函数void Add(); /增加一个学生void Update(); /修改学生成绩void Delete(); /删除一个学生void Query(); /查找一个学生void SortID(); /按学号排序void So

5、rtScore(); /按学生总成绩排序void SaveBin(); /以二进制形式保存数据void PrintList(); /显示链表void PrintTitle(); /显示标题void PrintOne(Student*); /显示一个学生数据;#endif/=/student.cpp的实现/=#include #include #include #include student.h/=Student:Student(int id,char *name,int *score) /构造函数ID=id;if(name!=NULL)strcpy(Name,name);if(score!=

6、NULL)for(int i=0;i=3;i+)Scorei=scorei;bool Student:operator(Person& per) Student &stu=(Student&)per; return (Score3=(Person& per) return (!operator=stu.Score3)void Student:SwapData(Student* stup) /学生数据交换 this指针指向调用成员函数的对象 Student t=*this; *this=*stup; *stup=t;ifstream& operator(ifstream& in,Student*

7、 stup) /运算符重载从文件输入in.read(char*)stup,sizeof(Student); /从相应的流中提取sizeof(Student)个字节,并把它们放入stup所指的缓冲区中return in;ofstream& operator(ofstream& out,Student* stup) /(istream_withassign& in,Student *stup) /运算符重载从标准文件输入int i;coutInput Name,Score1-Score3endl;coutstup-Name;stup-Score3=0;for(i=0;i3;i+)coutScore

8、istup-Scorei;stup-Score3+=stup-Scorei;return in; /输入流对象in返回的到调用处ostream_withassign& operator(ostream_withassign& out,Student *stup) /运算符重载输出至标准文件 outIDsetw(8)Namesetw(8) Score0setw(10)Score1setw(10) Score2setw(10)Score3endl; outendl;return out; /输处流对象out返回的调用处/*int i;outIDtNamet ;for (i=0;i4;i+)outS

9、coreit;outendl;return out;*/=/node.cpp的实现/=#include#includestudent.h/-Node:Node()Stup=NULL;Prev=Next=NULL;Node:Node(Student *stup)/默认的构造函数,完成建立一个空节点Stup=stup;Prev=Next=NULL;Node:Node(Node &node) /复制构造函数的实现OKStup=node.Stup;Prev=node.Prev;Next=node.Next;Node:Node() /释放空间delete Stup; /=/list.cpp的实现/=#i

10、nclude #include #include student.h/=List:List() /构造函数Head=Tail=new Node(); /建立链表头结点 Head-Next=NULL;Head-Prev=NULL;InitList(); /从文件读取数据 在下面调用此函数List:List() /析构函数ClearList(); /在下面调用此函数delete Head; /释放空间void List:InitList() /从文件读取数据 ifstream inStudent;ofstream outStudent;inStudent.open(gx.dat,ios:binar

11、y); /打开学生文件if(!inStudent) /文件不存在,建立该文件inStudent.close();outStudent.open(gx.dat,ios:binary);outStudent.close(); /关闭文件else /文件存在,读取学生数据Student *stup=new Student();Node *nodep;inStudentstup;while(!inStudent.eof() /未达到文件尾端则执行循环,否则退出循环nodep=CreateNode(stup); /调用GreateNode()函数 建立一个学生结点 指针型函数Insert(nodep);

12、stup=new Student();inStudentstup;delete stup;inStudent.close();void List:Add() /增加一个学生Student *stup;Node *nodep;int id=GetID();if(nodep=FindID(id)!=NULL)throw(1); /输入学号相同,抛出异常stup=new Student();stup-ID=id;cinstup; /运算符重载nodep=CreateNode(stup);Insert(nodep);PrintTitle();PrintOne(stup);void List:Updat

13、e() /修改学生成绩 int id=GetID(); Node *nodep;if (FindID(id)!=NULL)nodep=FindID(id);elsecoutStup-Score3=0; for(int i=0;i3;i+)coutscoreinodep-Stup-Scorei;nodep-Stup-Score3+=nodep-Stup-Scorei;PrintTitle(); PrintOne(nodep-Stup);void List:Delete() /删除一个学生 int id=GetID();Node *nodep;if (nodep=FindID(id)!=NULL)

14、nodep-Prev-Next=nodep-Next;if(nodep=Tail)Tail=nodep-Prev;elsenodep-Next-Prev=nodep-Prev;delete nodep;PrintList();void List:Query() /查询学生数据int id=GetID();Node *nodep;if (FindID(id)!=NULL)nodep=FindID(id);PrintTitle();PrintOne(nodep-Stup);elsecoutNext!=NULL)nodep=Head-Next;Head-Next=Head-Next-Next;del

15、ete nodep;Tail=Head;Node*List:FindID(int& id) /查找学号Node *nodep=Head-Next;while(nodep!=NULL&nodep-Stup-ID!=id)nodep=nodep-Next;return nodep;void List:Insert(Node *nodep) /在链表尾插入一个学生 *我有问题* Tail-Next=nodep;nodep-Prev=Tail;Tail=nodep;void List:SortID() /按学号排序 *我有问题*Node *nodef,*nodel=Tail;if(Head!=Tail

16、)while(Head-Next!=nodel)nodef=Head-Next;while(nodef!=nodel)if(nodef-Stup-IDnodef-Next-Stup-ID)nodef-Stup-SwapData(nodef-Next-Stup);nodef=nodef-Next;nodel=nodel-Prev;PrintList();void List:SortScore() /按总成绩排序/学生设计 Node*nodef,*nodel=Tail; if(Head!=Tail)while(Head-Next!=nodel)nodef=Head-Next;while(nodef

17、!=nodel)if(nodef-Stup-Score3Next-Stup-Score3)nodef-Stup-SwapData(nodef-Next-Stup);nodef=nodef-Next;nodel=nodel-Prev;PrintList();void List:SaveBin() /链表数据保存在二进制文件 ofstream outStudent; outStudent.open(gx.dat,ios:binary); Node *nodep=Head-Next; while(nodep!=NULL) outStudentStup; nodep=nodep-Next; outSt

18、udent.close();Node*List:CreateNode(Student*stup) /建立一个学生对象Node *nodep=new Node(stup);return nodep;void List:PrintList() /显示链表中数据Node *nodep=Head-Next ;if(Head!=Tail)/学生设计PrintTitle();while(nodep!=NULL)PrintOne(nodep-Stup);nodep=nodep-Next;coutendl;elsecoutNo studentendl; void List:PrintTitle()coutID Name Score1 Score2 Score3 Scoreendl;void List:PrintOne(Student*stup)coutstup; /运算符重载/=/main.cpp主函数的实现/=#include #include student.h/=int EnterChoice(); /输入选项int GetID(); /输入学号enum ChoicesADD=1,UPDATE,DELETE,QUERY,DISPLAY,SORTID,SORTSCORE,END;void main()List ls;int choice;while(choice=EnterCho

温馨提示

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

评论

0/150

提交评论