《面向对象程序设计》课程设计报告书模板.docx
《《面向对象程序设计》课程设计报告书模板.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》课程设计报告书模板.docx(18页珍藏版)》请在冰点文库上搜索。
![《面向对象程序设计》课程设计报告书模板.docx](https://file1.bingdoc.com/fileroot1/2023-6/26/f9e12c7f-357e-4eb3-ba97-66af5fb9cef4/f9e12c7f-357e-4eb3-ba97-66af5fb9cef41.gif)
《面向对象程序设计》课程设计报告书模板
河南城建学院
《面向对象程序设计》课程设计报告书
设计题目:
指导老师:
学生学号:
学生姓名:
同组人员:
时间:
2015年月日
第1章选题
1.1题目背景
随着信息时代的到来和全社会信息化、网络化建设的兴起,传统的图书管理模式和操作方法越来越不能满足用户的需要.智能化、网络化、信息化的图书管理系统应用势在必行。
1.2系统实现的具体分工
系统分为读者类、读者类库、图书类以及主函数等几大模块,其中读者类实现对读者信息的描述,读者类库实现建立读者的个人资料,图书类实现对图书信息的描述,main()函数实现对程序主界面的引导。
1.2.1标题
高校图书管理系统
1.3开发环境
VisualC++6.0
机型:
方正电脑
处理器名称:
Intel(R)Core(TM)2DuoCPUE7200@2.53GHz
硬盘驱动器:
WDCWD1600AAJS-22WAAO
系统内存:
金士顿内存2GB
显示卡:
NVIDIAGeFORCE9400GT
显示器:
方正科技FG981-W9
操作系统:
MicrosoftWindowsXPProfessional第2章设计内容
2.1实现功能
系统主要包括读者服务、借还图书和退出功能。
用户只需先进入读者服务中注册一下就可以进行借阅、查询。
2.2概要设计(涉及类的框图)
2.3界面设计
界面设计在工作流程上分为结构设计、交互设计、视觉设计三个部分。
结构设计StructureDesign
结构设计也称概念设计(ConceptualDesign),是界面设计的骨架。
该图书管理系统运行时界面上的目录体系和词语定义易于用户理解和操作,例如主界面的目录体系包括1读者服务、2借还图书、0退出。
其中读者服务又下分目录1新增、2更改、3查找、4显示、5删除、0退出。
借还图书一栏中详细列出了书库中所存书本的编号及书名,即1大学英语、2高等数学、3高级语言程序设计。
充分体现了结构化的界面设计理念。
交互设计InteractiveDesign
交互设计的目的是使产品让用户能简单使用。
任何产品功能的实现都是通过人和机器的交互来完成的。
该图书管理系统中包含1)清楚的错误提示,误操作后,系统提供有针对性的提示。
例如读者输入的姓名或编号错误时,系统会给出相应的提示,以指导读者进行正确的操作。
2)使用用户的语言,而非技术的语言。
3)方便退出。
4)导航功能。
随时转移功能,很容易从一个功能跳到另外一个功能。
例如读者所需各服务间功能转换。
人的因素被作为设计的核心体现出来。
视觉设计VisualDesign
该管理系统界面清晰明了,在结构设计的基础上,参照目标群体的心理模型和任务达成进行了视觉设计。
第3章系统实现
3.1涉及知识点
类封装、面向对象程序设计、数组的应用、循环语句的使用、过程化设计的思想等
3.2系统运行(主要运行界面抓图)
主界面
读者服务
借还图书
退出
3.3源程序清单(关键代码)
#include
#include
#include
#include//新的,模版化的版本
#include
usingnamespacestd;
//读者类,实现对读者的信息的描述
classReader
{
private:
inttag;//删除标记1:
已删0:
未删
intno;//读者编号
charname[10];//读者姓名
intborbook[5];//所借图书
public:
Reader(){}
char*getname(){returnname;}//获取姓名
intgettag(){returntag;}//获取删除标记
intgetno(){returnno;}//获取读者编号
voidsetname(charna[])//设置姓名
{
strcpy(name,na);//strcpy()是字符串函数,用来进行字符串的复制;strcpy(x,y)把Y的数据复制到X中
}
voidaddreader(intn,char*na)//增加读者
{
tag=0;
no=n;
strcpy(name,na);
for(inti=0;i<100;i++)
borbook[i]=0;
}
voiddisp()//读出读者信息
{
cout<"<}
};
//------------------------------------------------------------------------------------
//读者类库,实现建立读者的个人资料
classRDatabase
{
private:
inttop;//读者记录指针
Readerread[100];//读者记录
public:
RDatabase()//构造函数,将reader.txt读到read[]中
{
Readers;
top=-1;
fstreamfile("reader.txt",ios:
:
in);//打开一个输入文件
while
(1)
{
((char*)&s,sizeof(s));//sizeof返回一个对象或者类型所占的内存字节数
if(!
;
top++;
read[top]=s;
}
();//关闭reader.txt
}
voidclear()//删除所有读者信息
{
top=-1;
}
intaddreader(intn,char*na)//添加读者时先查找是否存在
{
Reader*p=query(n);
if(p==NULL)
{
top++;
read[top].addreader(n,na);
return1;
}
return0;
}
Reader*query(intreaderid)//按编号查找
{
for(inti=0;i<=top;i++)
if(read[i].getno()==readerid&&
read[i].gettag()==0)
{
return&read[i];
}
returnNULL;
}
voiddisp()//输出所有读者信息
{
for(inti=0;i<=top;i++)
read[i].disp();
}
voidreaderdata();//读者库维护
~RDatabase()//析构函数,将read[]写到reader.txt文件中
{
fstreamfile("reader.txt",ios:
:
out);
for(inti=0;i<=top;i++)
if(read[i].gettag()==0)
((char*)&read[i],sizeof(read[i]));//sizeof()当操作数具有数组类型时,其结果是数组的总字节数
();
}
};
voidRDatabase:
:
readerdata()
{
charchoice;
charrname[20];
intreaderid;
Reader*r;
while(choice!
='0')
{
cout<<"\n\n\t\t\t读者服务\n\n\n\t\t\t1新增\n\n\t\t\t2更改\n\n\t\t\t3查找\n\n\t\t\t4显示\n\n\t\t\t5删除\n\n\t\t\t0退出"<cout<<"请输入您的选择:
";
cin>>choice;
switch(choice)
{
case'0':
return;
case'1':
cout<<"输入读者编号:
";
cin>>readerid;
cout<<"输入读者姓名:
";
cin>>rname;
addreader(readerid,rname);
break;
case'2':
cout<<"输入读者编号:
";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"该读者不存在"<break;
}
cout<<"输入新的姓名:
";
cin>>rname;
r->setname(rname);
break;
case'3':
cout<<"读入读者编号:
";
cin>>readerid;
r=query(readerid);
if(r==NULL)
{
cout<<"该读者不存在"<break;
}
r->disp();
break;
case'4':
disp();
break;
case'5':
clear();
break;
default:
cout<<"输入错误,请重新输入:
";
break;
}
}
};
//-----------------------------------------------------------------------------------------------------
classBook
{
public:
voidsetBook(char*,int);
voidborrow();
voidrestore();
voiddisplay();
voidT();
private:
charbookname[40];
intnumber;
charflag;
};
//在类外定义Book类的成员函数
voidBook:
:
T()
{
cout<<"请输入借阅或归还标志(b/r):
";
cin>>flag;
switch(flag)
{case'b':
borrow();break;
case'r':
restore();
}
}
voidBook:
:
setBook(char*name,intnum)
{
strcpy(bookname,name);
number=num;
}
voidBook:
:
borrow()
{
if(number==0)
{cout<<"已没存书,退出!
"<abort();
}
number=number-1;
cout<<"借一次,现存书量为:
"<}
voidBook:
:
restore()
{
number=number+1;
cout<<"还一次,现存书量为:
"<}
voidBook:
:
display()
{
cout<<"存书情况:
"<"<"<};
//main()函数的实现,程序的主界面的引导
intmain()
{
charchoice;
intbookid,readerid;
RDatabaseR;
Reader*r;
BookB;
while(choice!
='0')
{
cout<cout<<"\t\t\t1读者服务\n\n\t\t\t2借还图书\n\n\t\t\t0退出"<cout<<"请输入您的选择:
";
cin>>choice;
switch(choice)
{
case'0':
cout<<"谢谢使用"<return0;
case'1':
R.readerdata();
break;
case'2':
cout<<"\n\n\n\t\t\t借还图书\n\n\n";
cout<<"\t\t\t书库中现存三种图书:
\n\n\t\t\t1大学英语\n\n\t\t\t2高等数学\n\n\t\t\t3高级语言程序设计"<cout<<"请输入读者编号:
"<cin>>readerid;
cout<<"请输入图书编号:
";
cin>>bookid;
r=R.query(readerid);//按编号查找
if(NULL==r)
{
cout<<"不存在该读者,不能借书"<break;
}
switch(bookid)
{
case1:
B.setBook("大学英语",1000);
B.display();
B.T();
break;
case2:
B.setBook("高等数学",1000);
B.display();
B.T();
break;
case3:
B.setBook("高级程序语言设计",1000);
B.display();
B.T();
break;
default:
cout<<"输入错误,请重新输入:
";
break;
}
}
}
}
第4章结束语
这次课程设计历经一个星期左右,通过这一个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,也有很多闻所未闻的东西,理解实践的能力急需提高。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.它为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生运用所学知识解决实际问题的能力。
这次的课程设计也让我看到了团队的力量,我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。
刚开始的时候,大家就按照分配好了的任务进行,并且经常聚在一起讨论各个方案的可行性。
在课程设计中只有一个人的知识是远远不够的,必须要结合每个人的知识,否则一个人的错误,就有可能导致整个工作失败。
团结协作是我们成功的一项非常重要的保证。
而这次设计也正好锻炼我们这一点,这也是非常宝贵的。
回顾起此次课程设计,至今我仍感慨颇多,起初在选题时,做出决定是非常困难的,若选择简单的题目,很有可能会很早就做完了,那样岂不是浪费了许多宝贵的时间;若选择比较难的题目,感觉自己的能力可能不够,不能完成课程设计,最后,在我们组的商量之下选了高校图书管理系统这个课题。
定下了我们的目标。
接着我们都开始做了,我们明确的分了一下任务,然后每个人都去干自己的了,对于不会的,不太清楚的我们都会在一起讨论,研究。
通过本次课程设计,我深刻认识到了“理论联系实际”的这句话的重要性及真实性,我不但知道了以前不知道的理论知识,而且也巩固了以前知道的知识。
最重要的是在实践中理解了书本上的知识,明白了学以致用的真谛。
也明白老师为什么要求我们做好这个课程设计的原因。
他是为了教会我们如何运用所学的知识去解决实际的问题,提高我们的动手能力。
在整个设计到按各种功能输出以及调试过程中,我个人感觉调试部分是最难的,我们把运行错误和不能运行的部分一遍遍的修改直到达到预期的效果。
初拿到题目觉得很沮丧,虽然学了这么久的C++语言,但还是觉得它很深奥,对它几乎是一无所知。
如何着手?
在接下来的时间里大家集思广益,在一起认真讨论,不甚理解的问题去查阅一些资料。
然后写代码,运行调试……虽然在这个过程中遇到了很多问题,有时候甚至为某个地方而茶饭不思。
但程序编辑成功后那种激动,问题解决中遇到挑战自己亲自动手,终于解决那种成就感,几个人一起讨论,一起分析,同悲同喜那种患难及共的感觉,都使我们深深地体会到了感到学习的快乐和团结的力量,也让我们真正学习到了一些的知识,使我们感到前途是光明的、充满挑战及趣味的。
计算机专业是一个需要紧密合作的工作,只有在一起合作才能高做出好的程序,但在其中也有一些的问题是我们都不能理解的,有很多是我们上课没有碰到的一些的问题真的是很让人头疼的。
通过这次编程使我们认识到在以后的学习中要多做练习增加自己的知识面才能更好的适应自己的工作,在其中由最初的沮丧中出来,充满信心地去解决问题。
通过这次课程设计使我懂得了理论及实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识及实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说return的用法……通过这次课程设计之后,我决定一定把以前所学过的知识重新温故。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在崔老师的辛勤指导下,以及同学们的帮助下,最终迎刃面解。
在此我向崔老师和那些帮助过我的同学们表示最衷心的感谢!
参考文献
[1]钱能.C++程序设计教程(第一版).清华大学出版社
[2]钱能.C++程序设计教程(第二版).清华大学出版社
[3]C++入门经典(清华大学出版)