C++课程设计报告6691514.docx

上传人:b****0 文档编号:17173369 上传时间:2023-07-22 格式:DOCX 页数:80 大小:33.37KB
下载 相关 举报
C++课程设计报告6691514.docx_第1页
第1页 / 共80页
C++课程设计报告6691514.docx_第2页
第2页 / 共80页
C++课程设计报告6691514.docx_第3页
第3页 / 共80页
C++课程设计报告6691514.docx_第4页
第4页 / 共80页
C++课程设计报告6691514.docx_第5页
第5页 / 共80页
C++课程设计报告6691514.docx_第6页
第6页 / 共80页
C++课程设计报告6691514.docx_第7页
第7页 / 共80页
C++课程设计报告6691514.docx_第8页
第8页 / 共80页
C++课程设计报告6691514.docx_第9页
第9页 / 共80页
C++课程设计报告6691514.docx_第10页
第10页 / 共80页
C++课程设计报告6691514.docx_第11页
第11页 / 共80页
C++课程设计报告6691514.docx_第12页
第12页 / 共80页
C++课程设计报告6691514.docx_第13页
第13页 / 共80页
C++课程设计报告6691514.docx_第14页
第14页 / 共80页
C++课程设计报告6691514.docx_第15页
第15页 / 共80页
C++课程设计报告6691514.docx_第16页
第16页 / 共80页
C++课程设计报告6691514.docx_第17页
第17页 / 共80页
C++课程设计报告6691514.docx_第18页
第18页 / 共80页
C++课程设计报告6691514.docx_第19页
第19页 / 共80页
C++课程设计报告6691514.docx_第20页
第20页 / 共80页
亲,该文档总共80页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++课程设计报告6691514.docx

《C++课程设计报告6691514.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告6691514.docx(80页珍藏版)》请在冰点文库上搜索。

C++课程设计报告6691514.docx

C++课程设计报告6691514

(此文档为word格式,下载后您可任意编辑修改!

一、设计目的3

二、环境配置要求:

3

三、设计题目3

题目1学生学籍管理系统3

题目2学生选修课系统6

四、课程设计文字资料要求9

五、总结报告9

六、考核9

七、实间安排10

附录:

参考代码11

学生学籍管理系统11

选修课系统26

《程序设计语言(C++)》课程设计

一、设计目的

1、进一步掌握利用C++进行类的定义和操作方法;

2、进一步掌握类的继承和派生方法;

3、进一步理解虚函数和多态;

4、综合利用上述知识,学习设计并编写面向对象的C++简单应用程序;

5、培养学生团结协作的能力。

二、环境配置要求:

硬件配置:

586以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于64MB,硬盘自由空间不少于200MB。

推荐配置为内存128MB或256MB(或以上),硬盘自由空间500MB以上。

操作系统:

Windows2000/NT/Xp、VisualC++集成开发环境。

三、设计题目

题目1学生学籍管理系统

(一)、系统的主要功能

1.添加

系统将提示用户输入新添加的职员的信息,插入在链表中。

2.删除

首先由用户输入要删除的学生的学号,然后调用删除函数,删除该名学生的资料。

3.查找

首先由用户输入要查找的学生的学号,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的学生资料。

4.修改

首先由用户输入要修改的学生的学号,然后系统用修改函数查找,显示该名学生的资料,然后系统提示用户输入需要修改的项目和新的资料。

5.其他功能

在上述功能的基础上进行进一步完善。

(二)、系统总框架图

(三)、系统数据结构定义

classlistNode{//这是数据节点!

public:

listNode(){}

listNode(Inform&);

listNode(listNode&);

listNode*create();//创建链表

listNode*insert(listNode*);//对链表进行插入操作;

listNode*del(listNode*,char*);//删除资料中含有char*的节点;

voidprintlistNode(listNode*);//打印链表;

~listNode();

voidsearch(char*,listNode*);//查找链表中含有char*的学生;

listNode*modify(listNode*);//修改

private:

Informdata;

staticintnum;

listNode*nextPtr;

};

****************************Inform.h**************************

classInform{

friendostream&operator<<(ostream&,Inform&);

friendistream&operator>>(istream&,Inform&);

public:

Inform();

Inform(Inform&);

intoperator==(constInform&);

intoperator==(char*);

intoperator!

=(char*);

Inform&operator=(Inform&);

~Inform();

private:

char*number;

char*id;

char*name;

char*sex;

achieveach;

char*phonenumber;

char*roomnumber;

};

************************achieve.h********************************************cclassachieve{

friendostream&operator<<(ostream&output,achieve&);

friendistream&operator>>(istream&input,achieve&);

public:

achieve();

voidcountaverage(subject*);

intoperator==(achieve&);

achieve&operator=(achieve&);

voidinstruction();

~achieve();

voidsetnum(inta);

intgetnum();

subject*TT;

private:

intnum;

floatsum;

floataverage;

};

*******************************subject.h*************************************

classsubject{

friendistream&operator>>(istream&,subject&);

friendostream&operator<<(ostream&,constsubject&);

public:

subject&operator=(constsubject&);

charname[MAX1];

floatachievement;

floatxuefen;

};

题目2学生选修课系统

(一)、系统的主要功能

1.选修课系统学生端

完成学生选课、学生情况、选课情况、退出系统等功能的设计与实现。

2.选修课系统管理端

完成增加学生、增加课程、删除学生、删除课程、填写成绩、更改学分、学生情况、选课情况、保存数据、退出系统等功能的设计与实现。

(二)、系统总框架图

(三)、系统数据结构定义

//定义课程

structcourse//某个学生所学的课程中的某一个

{

charcname[20];//课程名称

floatgrade;//课程成绩

course*Next;//指向下一个课程的指针

};

//学生类

classstudent

{

public:

student()

{

root=NULL;

constmaxcourse=5;

factcourse=0;

}

voidreadname(charN[]);//读入学生的姓名

voidgetname(charN[]);//得到学生的姓名

voidwrecourse(charN[],floatscore);//要据课程名写入学生课程的成绩

floataverage();//学生课程的平均成绩

voidaddcourse(charN[],floatg);//给学生增加一门课

intfindcourse(charN[]);//查找是否已有此课程,如果有返回1,如果没有返回0

intretfactcourse()

{

returnfactcourse;

}//得到所学的课程数目

course*retroot()

{

returnroot;//利用键表将所有的课程保存起来

}

intretmaxcourse()

{

return5;//得到最多可学的课程数目

}

voidclrroot()//清零

{

root=NULL;

factcourse=0;

}

private:

charsname[20];//学生的姓名

intmaxcourse;//学生最多可以学五门课程

intfactcourse;//学生实际所学的课程数目

course*root;//课程的根结点指针

};

structstudentdb

{

studentstu;

studentdb*Next;

};

structstudentname

{

chartname[20];//学生的名字

floatresult;//学生所得的该课程分数

studentname*Next;

};

//课程类

classsubject

{

public:

subject()

{

first=NULL;

maxstudent=30;

activestudnet=0;

}

floatreadcredit();//得到课程的学分

voidgetcredit(floata);//设置学分

floatgetaverage();//得到学生的平均成绩

floatgetresult(charN[]);//查找某个学生的成绩

voidgetkname(charN[]);//读出课程的名称

voidsetkname(charN[]);//读入课程的名称

voidfindstudent(studentdb*P);//根据该课程的名称,寻找选这课程的学生

studentname*retfirst()

{

returnfirst;//返回根结点

}

intretactivestudent()

{

returnactivestudnet;//返回实际学生数

}

intretmaxstudent()

{

return30;//返回最多学生数30

}

voidclractivestudnet()

{

activestudnet=0;//从文件中读出来后将实际学生数清零

}

private:

intmaxstudent;//最多学生数

intactivestudnet;//实际学生数

studentname*first;//学生名单

floatcredit;//该课程的学分

floataveragerusult;//该课程的平均成绩

charkname[20];//该课程的名称

};

四、课程设计文字资料要求

(1)每个同学必须独立完成自己任务的软件课程设计说明书,字数不少于2000字;

(2)不得少于300行有效代码;

(3)说明书书写规范、语句通顺、图表清晰。

(4)说明书正文前附《课程设计任务书》,《课程设计指导情况表》(此内容不在2000字范围中),一律用A4纸打印或使用学校统一的课程设计报告纸;

(5)说明书要求文字打印,统一格式,封面规范,装订成册,一式一份。

五、总结报告

学生对课程设计的全过程做出系统总结报告(《课程设计说明书》)。

课程设计说明书(正文)应包括的主要内容有:

需求分析、系统总框图、UML类图、每个模块的设计分析、列出所有定义的函数及说明、举例说明1、2个比较有特点的算法、存在的问题与不足及对策、使用说明(操作手册)、课程设计的心得和体会等,再报告的最后附上程序源代码。

六、考核

学生完成课程设计后,采用设计答辩的形式,评定学生设计水平。

每位学生必须在规定时间内完成课程设计。

指导教师要从以下几个方面加以考察:

学生软件开发基础知识掌握的程度、选定的方案及设计是否正确、独立分析问题和解决问题的能力、学生的创新精神、总结报告水平、学习态度(可从平时指导过程中考察)、科学作风、思想表现等。

对雷同报告均记为不合格报告,成绩也不合格。

教师对每一个学生做出评语,并根据以上几方面给出具体的成绩。

答辩时需提交程序源代码文档。

(提交的电子文档文件的命名方式为:

学号+姓名)

七、实间安排

1.13周星期一1、2节在

203下达课程指导书,宣布纪律;

2.辅导时间:

13~15周星期一下午、星期五上午,地点:

2号机房。

其他时间网上答疑:

zhangxiaorong.;

3.报告提交时间:

15周星期五下午,地点:

2号机房。

附录:

参考代码

学生学籍管理系统

//程序源代码

*****************************listNode.h**************************************

#ifndeflistNode_h

#definelistNode_h

#defineLENsizeof(listNode)

#include

#include

#include

#include

#include

#include"Inform.h"

#defineMAX24

classlistNode{

public:

listNode(){}

listNode(Inform&);

listNode(listNode&);

listNode*create();

listNode*insert(listNode*);//对链表进行插入操作;

listNode*del(listNode*,char*);//删除资料中含有char*的节点;

voidprintlistNode(listNode*);//打印链表;

~listNode();

voidsearch(char*,listNode*);//查找链表中含有char*的学生;

listNode*modify(listNode*);

private:

Informdata;

staticintnum;

listNode*nextPtr;

};

#endif

*********************listNode.cpp*********************************

#include"listNode.h"

intlistNode:

:

num=0;

listNode:

:

listNode(Inform&da)

{

data=da;

nextPtr=newlistNode[LEN];

}

listNode:

:

listNode(listNode©)//拷贝构造函数。

{

data=copy.data;

nextPtr=newlistNode[LEN];

assert(nextPtr!

=0);

nextPtr=copy.nextPtr;

}

listNode*listNode:

:

create()//从文件f3.txt中读入链表数据;

{

listNode*head=NULL;

listNode*p1,*p2;

p1=p2=newlistNode[LEN];

charch;

cout<<"\t输入第一个学生的情况:

"<

do

{

cin>>p1->data;

num=num+1;

if(num==1)

head=p1;

else

p2->nextPtr=p1;

p2=p1;

p1=newlistNode[LEN];

cout<<"\t要继续输入吗?

(y/n):

";

cin>>ch;

}while(ch=='y');

p2->nextPtr=NULL;

cout<<"\t输入学生个数为:

"<

return(head);

}

listNode*listNode:

:

insert(listNode*head)//将Inform类的一个对象DATA插入链表头。

{

cout<<"\t输入要插入的学生资料:

"<

Informinsertdata;

cin>>insertdata;

listNode*p0,*p1;

p0=newlistNode[LEN];

assert(p0!

=0);

p0->data=insertdata;

p0->nextPtr=NULL;

p1=newlistNode[LEN];

assert(p1!

=0);

p1=head;

head=p0;

p0->nextPtr=p1;

num+=1;

cout<<"TheDATAhavebeeninsertedintothelist."<

returnhead;

}

listNode*listNode:

:

del(listNode*head,char*DELDATA)//删除链表中数据为DELDATA的节点。

{

listNode*p1,*p2;

cout<<"确定要删除该生的资料吗?

(y/n):

";

charch;

cin>>ch;

if(ch=='y')

{

if(head==NULL)

{

cout<

abort();

}

p1=head;

while(p1->data!

=DELDATA&&p1->nextPtr!

=NULL)

{

p2=p1;

p1=p1->nextPtr;

}

if(p1->data==DELDATA)

{

if(p1==head)

head=p1->nextPtr;

else

p2->nextPtr=p1->nextPtr;

cout<

"<

num-=1;

}

else

cout<

"<

returnhead;

}

else

returnhead;

}

voidlistNode:

:

printlistNode(listNode*head)//打印以head为头指针的链表。

{

listNode*p;

if(num==0)

cout<<"\t没有学生资料。

"<

p=head;

if(head!

=NULL)

do{

cout<data<

p=p->nextPtr;

}while(p!

=NULL);

}

voidlistNode:

:

search(char*sea,listNode*head)

{

listNode*p=newlistNode[LEN];

listNode*t[MAX2];

intn=0,j=0;

for(inti=0;i

{

if(head->data==sea)

{

n+=1;

while(j

{

t[j]=head;

j++;

break;

}

}

head=head->nextPtr;

}

if(n==0)

cout<

"<

elseif(n==1)

{

cout<<"找到一个学生资料,要输出吗?

(y/n)."<

charc;

cin>>c;

if(c=='y')

{

cout<<"\t该学生学生资料是:

"<

cout<<(*t)->data<

}

}

else

{

cout<<"\t找到"<

cout<<"要输出这些学生资料(y/n)."<

charc;

if((c=getchar())!

='y')

exit

(2);

else

for(intj=n-1;j>=0;j--)

cout<data<

}

}

listNode*listNode:

:

modify(listNode*head)

{

cout<<"输入要修改的学生的一项资料(姓名,学号,电话号,身份证号或寝室号):

";

charch[20];

cin>>ch;

search(ch,head);

cout<<"\t即将删除该生的资料,确定吗?

(y/n)";

charc;cin>>c;

if(c=='y')

{

head=del(head,ch);

cout<<"\t输入修改的学生资料:

"<

Informinsertdata;

cin>>insertdata;

head=insert(head);

returnhead;

}

else

returnhead;

}

listNode:

:

~listNode()

{

delete[]nextPtr;

}

****************************Inform.h**************************

#ifndefInform_h

#defineInform_h

#include

#include

#include

#include

#include

#include

#include

#include"achieve.h"

classInform{

friendostream&operator<<(ostream&,Inform&);

friendistream&operator>>(istream&,Inform&);

public:

Inform();

Inform(Inform&);

intoperator==(constInform&);

intoperator==(char*);

intoperator!

=(char*);

Inform&operator=(Inform&);

~Inform();

private:

char*number;

char*id;

char*name;

char*sex;

achieveach;

char*phonenumber;

char*roomnumber;

};

#endif

******************************Inform.cpp************************************

#include

#include"Inform.h"

ostrea

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

当前位置:首页 > 人文社科 > 哲学历史

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

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