C++课程设计报告6691514.docx
- 文档编号:17173369
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:80
- 大小:33.37KB
C++课程设计报告6691514.docx
《C++课程设计报告6691514.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告6691514.docx(80页珍藏版)》请在冰点文库上搜索。
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< 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< } } 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 报告 6691514