《面向对象程序设计》课程设计报告书(模板)

更新时间:2023-08-27 19:49:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1

河南城建学院

《面向对象程序设计》课程设计报告书

设 计 题 目: 指 导 老 师: 学 生 学 号: 学 生 姓 名: 同 组 人 员:

时 间:2011年 月 日

1

目 录

第1章 选 题 ............................................................................................................................... 2 1.1 题目背景 .............................................................................................................................. 2 1.2系统实现的具体分工 ........................................................................................................... 2 1.2.1 标题 ............................................................................................................................... 2 1.3开发环境 ............................................................................................................................... 2 第2章 设计内容 ........................................................................................................................... 3 2.1实现功能 ............................................................................................................................... 3 2.2 概要设计(涉及类的框图) .............................................................................................. 3 2.3 界面设计 .............................................................................................................................. 4 第3章 系统实现 ........................................................................................................................... 5 3.1 涉及知识点 .......................................................................................................................... 5 3.2 系统运行(主要运行界面抓图) ...................................................................................... 5 3.3 源程序清单(关键代码) .................................................................................................. 6 第4章 结束语 ............................................................................................................................. 16

1

第1章 选 题

1.1 题目背景

随着信息时代的到来和全社会信息化、网络化建设的兴起,传统的图书管理模式和操作方法越来越不能满足用户的需要.智能化、网络化、信息化的图书管理系统应用势在必行。

1.2系统实现的具体分工

系统分为读者类、读者类库、图书类以及主函数等几大模块,其中读者类实现对读者信息的描述,读者类库实现建立读者的个人资料,图书类实现对图书信息的描述,main() 函数实现对程序主界面的引导。 1.2.1 标题

学生成绩管理系统

1.3开发环境

Visual C++ 6.0

机型: 方正电脑

处理器名称:Intel(R)Core(TM)2 Duo CPU E7200 @ 2.53GHz 硬盘驱动器:WDC WD1600AAJS-22WAAO 系统内存: 金士顿内存2GB 显示卡: NVIDIA GeFORCE 9400 GT 显示器: 方正科技FG981-W9

操作系统: Microsoft Windows XP Professional

1

第2章 设计内容

2.1实现功能

系统主要包括读者服务、借还图书和退出功能。用户只需先进入读者服务中注册一下就可以进行借阅、查询。

2.2 概要设计(涉及类的框图)

1

2.3 界面设计

界面设计在工作流程上分为结构设计、交互设计、视觉设计三个部分。

结构设计 Structure Design

结构设计也称概念设计 (Conceptual Design),是界面设计的骨架。该图书管理系统运行时界面上的目录体系和词语定义易于用户理解和操作,例如主界面的目录体系包括1 读者服务、2 借还图书、0 退出。其中读者服务又下分目录1 新增、2 更改、3 查找、4 显示、5 删除、0 退出。借还图书一栏中详细列出了书库中所存书本的编号及书名,即1 大学英语、2 高等数学、3 高级语言程序设计。充分体现了结构化的界面设计理念。

交互设计 Interactive Design

交互设计的目的是使产品让用户能简单使用。 任何产品功能的实现都是通过人和机器的交互来完成的。该图书管理系统中包含1)清楚的错误提示,误操作后,系统提供有针对性的提示。例如读者输入的姓名或编号错误时,系统会给出相应的提示,以指导读者进行正确的操作。2) 使用用户的语言,而非技术的语言。 3)方便退出。4)导航功能。随时转移功能,很容易从一个功能跳到另外一个功能。例如读者所需各服务间功能转换。人的因素被作为设计的核心体现出来。

视觉设计 Visual Design

该管理系统界面清晰明了,在结构设计的基础上,参照目标群体的心理模型和任务达成进行了视觉设计。

1

第3章 系统实现

3.1 涉及知识点

类封装、面向对象程序设计、数组的应用、循环语句的使用、过程化设计的思想等

3.2 系统运行(主要运行界面抓图)

主界面

读者服务

1

借还图书

退出

3.3 源程序清单(关键代码)

#include <iostream> #include <iomanip>

1

#include <string>

#include <cstdlib> //新的,模版化的版本 #include <fstream> using namespace std;

//读者类,实现对读者的信息的描述 class Reader { private:

int tag; //删除标记 1:已删 0:未删 int no; //读者编号 char name[10]; //读者姓名 int borbook[5];//所借图书 Reader() {}

char *getname() {return name;} //获取姓名 int gettag() {return tag;} //获取删除标记 int getno() {return no;} //获取读者编号 void setname(char na[]) //设置姓名 {

strcpy(name,na); //strcpy()是字符串函数,用来进行字符串的复制;

public:

strcpy(x,y)把Y的数据复制到X中

}

void addreader(int n,char *na)//增加读者 {

tag=0; no=n;

strcpy(name,na); for(int i=0;i<100;i++) borbook[i]=0; }

void disp()//读出读者信息

1

{

cout << setw(5) << no <<setw(10) << name<<"已成功借阅一本图书!"<<endl;

};

//------------------------------------------------------------------------------------ //读者类库,实现建立读者的个人资料 class RDatabase { private:

int top; //读者记录指针 Reader read[100];//读者记录

}

public:

RDatabase() //构造函数,将reader.txt读到read[]中 {

Reader s; top=-1;

fstream file("reader.txt",ios::in);//打开一个输入文件 while (1) {

file.read((char *)&s,sizeof(s));//sizeof返回一个对象或者类型所占

的内存字节数

}

void clear()//删除所有读者信息 {

}

file.close(); //关闭 reader.txt

if (!file)break; top++; read[top]=s;

1

}

int addreader(int n,char *na)//添加读者时先查找是否存在 { }

Reader *query(int readerid)//按编号查找 { }

void disp() //输出所有读者信息 { }

void readerdata();//读者库维护

~RDatabase() //析构函数,将read[]写到reader.txt文件中 {

fstream file("reader.txt",ios::out); for (int i=0;i<=top;i++)

read[i].disp(); for (int i=0;i<=top;i++)

if (read[i].getno()==readerid && { }

return NULL;

return &read[i]; read[i].gettag()==0)

Reader *p=query(n); if (p==NULL) { } return 0;

top++;

read[top].addreader(n,na); return 1;

1

if (read[i].gettag()==0)

file.write((char *)&read[i],sizeof(read[i]));//sizeof()当操作数具

有数组类型时,其结果是数组的总字节数

file.close(); }

};

void RDatabase::readerdata() {

char choice; char rname[20]; int readerid; Reader *r; while (choice!='0') {

cout <<"\n\n\t\t\t读 者 服 务\n\n\n\t\t\t 1 \n\n\t\t\t 2 更 改\n\n\t\t\t 3 查 找\n\n\t\t\t 4 \n\n\t\t\t 5 删 除\n\n\t\t\t 0 退 出"<<endl;

cout<<"请输入您的选择:"; cin >> choice; switch (choice) { case '0':

return; case '1': cout << "输入读者编号:"; cin >> readerid;

cout << "输入读者姓名:"; cin >> rname;

addreader (readerid,rname);

break;

case '2':

新 增显 示

1

cout << "输入读者编号:"; cin >> readerid; r=query(readerid); if (r==NULL) { }

cout << "输入新的姓名:"; cin >> rname; r->setname(rname); break;

cout << " 该读者不存在 "<<endl; break;

case '3':

cout << "读入读者编号:"; cin >> readerid; r=query(readerid); if (r==NULL) { } r->disp(); break; disp(); break; clear(); break;

cout <<"该读者不存在"<< endl; break;

case '4':

case '5':

default:

cout<<"输入错误,请重新输入:"; break;

}

1

} };

//-----------------------------------------------------------------------------------------------------

class Book { public: };

//在类外定义Book类的成员函数 void Book::T() { }

void Book::setBook(char *name,int num) {

strcpy(bookname,name); number=num;

cout<<"请输入借阅或归还标志(b/r):"; cin>>flag; switch (flag)

{case 'b':borrow();break; case 'r':restore(); }

void setBook(char*,int); void borrow(); void restore(); void display(); void T();

char bookname[40]; int number; char flag;

private:

1

}

void Book::borrow() { }

void Book::restore() { }

void Book::display() { };

//main() 函数的实现,程序的主界面的引导 int main() {

char choice; int bookid,readerid; RDatabase R; Reader *r;

Book B;

while(choice!='0') {

cout <<endl<<endl<<" ★★★★★★欢迎进入高校图书管理cout<<"

number=number+1;

cout<<"还一次,现存书量为:"<<number<<endl; if (number==0)

{cout<<"已没存书,退出!"<<endl; abort(); }

number=number-1;

cout<<"借一次,现存书量为:"<<number<<endl;

"<<endl<<"bookname:"<<bookname<<endl<<"number:"<<number<<endl;

1

系统★★★★★★\n\n\n";

cout <<"\t\t\t1 读者服务 \n\n\t\t\t2 借还图书 \n\n\t\t\t0

退 出"<<endl;

cout<<"请输入您的选择:"; cin >> choice; switch (choice) { case '0':

cout <<" 谢谢使用"<<endl; return 0; R.readerdata(); break;

case '1':

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 高级语言程序设计"<<endl;

cout<<"请输入读者编号:"<<endl; cin >>readerid;

cout <<"请输入图书编号: "; cin >>bookid;

r=R.query(readerid);//按编号查找 if (NULL==r) { }

switch(bookid) { case 1:

B.setBook("大学英语",1000); B.display();

cout <<" 不存在该读者,不能借书"<< endl; break;

1

B.T(); break;

case 2: }

}

}

B.setBook("高等数学",1000); B.display(); B.T();

break;

case 3: B.setBook("高级程序语言设计",1000); B.display(); B.T();

break;

default:cout<<"输入错误,请重新输入:"; break;

}

1

第4章 结束语

这次课程设计历经一个星期左右,通过这一个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,也有很多闻所未闻的东西,理解实践的能力急需提高。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程. 它为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生运用所学知识解决实际问题的能力。

这次的课程设计也让我看到了团队的力量,我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。刚开始的时候,大家就按照分配好了的任务进行,并且经常聚在一起讨论各个方案的可行性。在课程设计中只有一个人的知识是远远不够的,必须要结合每个人的知识,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们成功的一项非常重要的保证。而这次设计也正好锻炼我们这一点,这也是非常宝贵的。

回顾起此次课程设计,至今我仍感慨颇多,起初在选题时,做出决定是非常

困难的,若选择简单的题目,很有可能会很早就做完了,那样岂不是浪费了许多宝贵的时间;若选择比较难的题目,感觉自己的能力可能不够,不能完成课程设计,最后,在我们组的商量之下选了高校图书管理系统这个课题。定下了我们的目标。接着我们都开始做了,我们明确的分了一下任务,然后每个人都去干自己的了,对于不会的,不太清楚的我们都会在一起讨论,研究。通过本次课程设计,我深刻认识到了“理论联系实际”的这句话的重要性与真实性,我不但知道了以前不知道的理论知识,而且也巩固了以前知道的知识。最重要的是在实践中理解了书本上的知识,明白了学以致用的真谛。也明白老师为什么要求我们做好这个课程设计的原因。他是为了教会我们如何运用所学的知识去解决实际的问题,提高我们的动手能力。在整个设计到按各种功能输出以及调试过程中,我个人感觉调试部分是最难的,我们把运行错误和不能运行的部分一遍遍的修改直到达到预期的效果。初拿到题目觉得很沮丧,虽然学了这么久的C++语言,但还是觉得它很深奥,对它几乎是一无所知。如何着手?在接下来的时间里大家集思广益,在一起认真讨论,不甚理解的问题去查阅一些资料。然后写代码,运行调试 虽然在这个过程中遇到了很多问题,有时候甚至为某个地方而茶饭不思。但程序编辑成功后那种激动,问题解决中遇到挑战自己亲自动手,终于解决那种成就感,几个人一起讨论,一起分析,同悲同喜那种患难与共的感觉,都使我们深深地体会到了感到学习的快乐和团结的力量,也让我们真正学习到了一些的知识,使我们感到前途是光明的、充满挑战与趣味的。计算机专业是一个需要紧密合作的工

1

作,只有在一起合作才能高做出好的程序,但在其中也有一些的问题是我们都不能理解的,有很多是我们上课没有碰到的一些的问题真的是很让人头疼的。通过这次编程使我们认识到在以后的学习中要多做练习增加自己的知识面才能更好的适应自己的工作,在其中由最初的沮丧中出来,充满信心地去解决问题。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说return的用法 通过这次课程设计之后,我决定一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在崔老师的辛勤指导下,以及同学们的帮助下,最终迎刃面解。在此我向崔老师和那些帮助过我的同学们表示最衷心的感谢!

参考文献

[1] 钱能. C++程序设计教程(第一版).清华大学出版社 [2] 钱能. C++程序设计教程(第二版).清华大学出版社 [3] C++入门经典(清华大学出版)

本文来源:https://www.bwwdw.com/article/s3ji.html

Top