《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc

上传人:聆听****声音 文档编号:941972 上传时间:2023-04-29 格式:DOC 页数:18 大小:425KB
下载 相关 举报
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第1页
第1页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第2页
第2页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第3页
第3页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第4页
第4页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第5页
第5页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第6页
第6页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第7页
第7页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第8页
第8页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第9页
第9页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第10页
第10页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第11页
第11页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第12页
第12页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第13页
第13页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第14页
第14页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第15页
第15页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第16页
第16页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第17页
第17页 / 共18页
《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc

《《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc》由会员分享,可在线阅读,更多相关《《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc(18页珍藏版)》请在冰点文库上搜索。

《面向对象程序设计》课程设计-学生成绩管理系统Word文档格式.doc

charName[10];

//姓名

public:

virtualbooloperator<

(Person&

)=0;

//>

运算符重载

virtualbooloperator>

=(Person&

//<

=运算符重载

2)定义派生数据类student,基类为person类。

Private:

intScore[4];

//成绩

voidSwapData(Student*);

//交换数据

Student(int=0,char*=NULL,int*=NULL);

//构造函数

booloperator<

);

//>

booloperator>

//<

friendofstream&

operator<

<

(ofstream&

Student*);

//<

运算符重载输出到文件

friendifstream&

operator>

>

(ifstream&

//>

运算符重载从文件输入

friendostream_withassign&

(ostream_withassign&

//<

算符重载输出到显示器

friendistream_withassign&

(istream_withassign&

//>

运算

符重载从键盘输入

friendclassList;

//List为友元类

3)定义设计结点类Node

private:

Student*Stup;

//指向学生对象指针

Node*Prev,*Next;

//指向前后结点指针

Node();

//构造函数

Node(Student*);

//构造函数

Node(Node&

//复制构造函数

~Node();

//析构函数

//List为友元类

4)定义带有头结点链表类List,私有数据成员为Node*Head,*Tail分别,指向链表头尾:

voidInitList();

//初始化函数

List();

//构造函数

~List();

voidClearList();

//清空链表

Node*FindID(int&

//根据学号寻找学生所在结点

voidInsert(Node*);

//插入一个学生

Node*CreateNode(Student*);

//建立一个学生结点

voidAdd();

//增加一个学生

voidUpdate();

//修改学生成绩

voidDelete();

//删除一个学生

voidQuery();

//查找一个学生

voidSortID();

//按学号排序

voidSortScore();

//按学生总成绩排序

voidSaveBin();

//以二进制形式保存数据

voidPrintList();

//显示链表

voidPrintTitle();

//显示标题

voidPrintOne(Student*);

//显示一个学生数据

2.student类的实现:

student.cpp

3.node类的实现:

node.cpp

4.list类的实现:

list.cpp

5.主函数:

main.cpp

(二)各模块(函数)的功能

1.实现类和函数声明;

2.实现派生类student的各函数;

3.实现结点类Node的各函数;

4.实现结点类List的各函数。

程序结束运行前,调用SaveBin()函数以二进制形式保存学生数据到文件student.dat中;

5.设计主函数。

主函数中显示功能菜单,通过菜单调用类的成员函数实现系统各项功能。

(三)采用自定义的数据类型

自定义的数据类型:

#ifndefSTUDATA_H

#defineSTUDATA_H

#include<

fstream.h>

intGetID();

classList;

classPerson{//抽象类

};

classStudent:

publicPerson{

intScore[4];

friendostream_withassign&

classNode{

Student*Stup;

classList{

Node*Head,*Tail;

voidInitList();

#endif

三.程序运行流程图

开始

输入选项

输入选项!

=END

保存数据SaveBin()

增加学生、修改成绩、删除学生、查询数据、显示数据、按学号排序、按总成绩排序

注:

在主函数中,输入选项,判断是否等于END,如等于END则保存数据;

如不等于则实行switch中增加学生、修改成绩、删除学生、查询数据、显示数据、按学号排序、按总成绩排序。

增加学生

学号是否相同

抛出异常

显示链表

保存数据

结束

增加学生,判断学号是否有相同,有相同是抛出异常,无相同则继续增加,并显示链表、保存数据。

修改数据

是否存在

修改并显示列表

是否删除最后一个结点

nodep->

Next->

Prev=nodep->

Prev;

Prev->

Next=nodep->

Next;

Tail=nodep->

Prev

删除结点并显示剩余链表

删除学生

查询学生

显示列表

按学号排序

按总成绩排序

运行程序,先实现链表数据,再按执行。

修改成绩:

输入学号,判断是否存在,存在则对该学生的成绩进行修改;

不存在则抛出异常。

删除学生:

输入学号,判断是否存在,存在则继续判断要求删除的学生的结点所在位置,根据学生的结点所在位置不同,做不同的操作;

查询数据:

输入学号,判断是否存在,存在则显示该学生信息;

显示数据:

显示链表中所有的数据。

按学号排序:

比较学号大小,学号小的在前,大的在后。

按总成绩排序:

比较总成绩大小,总成绩大的在前,总成绩小的在后。

四.程序设计过程、调试过程中所用的测试用例、测试方法,程序运行的结果

(一)程序设计过程

1.student.cpp中所要设计的程序:

boolStudent:

:

operator<

per){

returnScore[3]<

((Student&

)per).Score[3];

//学生设计

}

operator>

returnScore[3]>

=((Student&

//学生设计

voidStudent:

SwapData(Student*stup){//学生数据交换(学生设计)

Studentt=*this;

*this=*stup;

*stup=t;

ofstream&

(ofstream&

out,Student*stup)//<

运算符重载输出至文件

out.write((char*)stup,sizeof(Student));

returnout;

ostream_withassign&

out,Student*stup){//<

运算符重载输出至标准文件

inti;

//学生设计

out<

stup->

ID<

"

\t"

Name<

;

for(i=0;

i<

4;

i++)

out<

Score[i]<

out<

endl;

returnout;

2.node.cpp中要求设计的程序:

Node:

Node(Student*stup){

Stup=stup;

//学生设计

Prev=Next=NULL;

Node(Node&

node){

//*Stup=*Prev=*Next;

//学生设计

~Node(){

deleteStup;

//学生设计

3.list.cpp中要求设计的程序:

voidList:

Update(){//修改学生成绩

// Student*stup;

//学生设计

Node*nodep;

intid=GetID();

inti;

if((nodep=FindID(id))==NULL)

throw

(1);

nodep->

Stup->

Score[3]=0;

3;

{

cout<

Score"

i;

cin>

Score[i];

nodep->

Score[3]+=nodep->

}

PrintTitle();

PrintOne(nodep->

Stup);

Delete(){//删除一个学生

//学生设计

Node*nodep;

if((nodep=FindID(id))==NULL)

if(Tail!

=nodep){

//删除中间的结点

else

//删除最后一个结点

Tail=nodep->

deletenodep;

PrintList();

Query(){//查询学生数据

Insert(Node*nodep){//在链表尾插入一个学生

Tail->

Next=nodep;

//学生设计

nodep->

Prev=Tail;

Tail=nodep;

SortScore(){//按总成绩排序

Node*nodef,*nodel=Tail;

//学生设计

if(Head!

=Tail){

while(Head->

Next!

=nodel){

nodef=Head->

while(nodef!

if(*(nodef->

Stup)<

*(nodef->

Stup))

nodef->

SwapData(nodef->

nodef=nodef->

}

nodel=nodel->

}

PrintList();

SaveBin(){//链表数据保存在二进制文件

Node*nodep=Head->

//学生设计

ofstreamoutStudent;

outStudent.open("

Student.dat"

ios:

binary);

while(nodep){

outStudent<

Stup;

nodep=nodep->

outStudent.close();

PrintList(){//显示链表中数据

Node*nodep=Head->

if(Head!

PrintTitle();

//学生设计

while(nodep!

=NULL){

PrintOne(nodep->

nodep=nodep->

}

}

else

cout<

Nostudent"

}

4.main.cpp中要设计的程序:

caseUPDATE:

//修改学生成绩

try{//学生设计

ls.Update();

}

catch(int){

cout<

Wrong!

ThisScoreisNULL"

break;

caseDELETE:

//删除一个学生

try{//学生设计

ls.Delete();

ThisStudentisNULL"

caseQUERY:

//查询一个学生数据

ls.Query();

ThisDataisNULL"

caseSORTSCORE:

//根据总成绩排序

ls.SortScore();

(二)调试过程中所用的测试用例

1.自动生成测试函数:

无须手

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2