CC++语言程序设计实验教材.docx

上传人:b****2 文档编号:11528578 上传时间:2023-06-01 格式:DOCX 页数:27 大小:602.76KB
下载 相关 举报
CC++语言程序设计实验教材.docx_第1页
第1页 / 共27页
CC++语言程序设计实验教材.docx_第2页
第2页 / 共27页
CC++语言程序设计实验教材.docx_第3页
第3页 / 共27页
CC++语言程序设计实验教材.docx_第4页
第4页 / 共27页
CC++语言程序设计实验教材.docx_第5页
第5页 / 共27页
CC++语言程序设计实验教材.docx_第6页
第6页 / 共27页
CC++语言程序设计实验教材.docx_第7页
第7页 / 共27页
CC++语言程序设计实验教材.docx_第8页
第8页 / 共27页
CC++语言程序设计实验教材.docx_第9页
第9页 / 共27页
CC++语言程序设计实验教材.docx_第10页
第10页 / 共27页
CC++语言程序设计实验教材.docx_第11页
第11页 / 共27页
CC++语言程序设计实验教材.docx_第12页
第12页 / 共27页
CC++语言程序设计实验教材.docx_第13页
第13页 / 共27页
CC++语言程序设计实验教材.docx_第14页
第14页 / 共27页
CC++语言程序设计实验教材.docx_第15页
第15页 / 共27页
CC++语言程序设计实验教材.docx_第16页
第16页 / 共27页
CC++语言程序设计实验教材.docx_第17页
第17页 / 共27页
CC++语言程序设计实验教材.docx_第18页
第18页 / 共27页
CC++语言程序设计实验教材.docx_第19页
第19页 / 共27页
CC++语言程序设计实验教材.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

CC++语言程序设计实验教材.docx

《CC++语言程序设计实验教材.docx》由会员分享,可在线阅读,更多相关《CC++语言程序设计实验教材.docx(27页珍藏版)》请在冰点文库上搜索。

CC++语言程序设计实验教材.docx

CC++语言程序设计实验教材

C/C++语言程序设计

实验教材

 

浙江工业大学软件学院

二零零八年十一月

第一部分基础部分

第1章概述

1.1实验意义

本实验教材通过引导的方式一步一步帮助学生分析并实现一个简单的系统(以图书管理系统为例),让学生从一个参与项目开发的角度全新的体验项目开发的全过程。

帮助学生独立完成一个简单的系统的开发,真正的学到程序设计的实战知识,更为重要的是能够体验开发的乐趣并培养程序开发的兴趣。

选择图书管理系统作为实验素材的目的是因为图书管理系统学生能经常接触到,对其功能有一定的了解,能够在使用中提出自己的一些需求的系统。

图书管理系统虽然简单,但是随着需求功能的不断增加,开发的难度也不断增加,不仅能满足初学编程的需求,也能让更高年级的学生通过将学到的知识直接用于该系统的开发而巩固和提高编程水平。

1.2说明

本教材分为三个部分,第一部分为基础部分,介绍C/C++的实验基本情况以及对图书管理系统的功能描述;第二部分为C语言部分,用C语言实现功能相对简单的图书管理系统,采用文本文件记录简单的图书和读者的基本信息,并能够进行简单的数据维护;第三部分为C++语言部分,采用C++语言的类技术实现功能相对复杂的图书管理系统,采用文本文件记录数据,数据结构更为复杂,涉及到书与读者之间的数据关联。

1.3要求

1、开发一个基于DOS界面的图书馆管理系统,通过命令的方式进行借书还书等图书馆需要的功能;

2、用户界面友好,让非计算机人员通过简短的培训即可使用;

3、系统的可扩展性良好,可以在此基础上方面的增加其他的功能模块。

第2章VC6.0工具介绍

2.1打开VC6.0

点左下角“开始”“所有程序”,在弹出框中鼠标选择MicrosoftVisualStudio6.0,弹出对话框,在选择MicrosoftVisualC++6.0打开VC6.0系统(如下图)

图21打开VC6菜单

图22VC6.0界面

2.2建立LMS工程

第二部分C语言部分

第3章简单LMS功能及设计思路

3.1功能描述

简单图书管理系统只包含的一些基本的功能,对图书管理的大致流程进行演示。

其功能模块包括:

读者管理、图书管理、图书流程等三个部分。

图31系统总体功能图

3.1.1读者管理模块功能

3.1.1.1读者信息添加

根据提示依次在DOS界面上输入读者号、姓名等内容,按回车进行信息的添加。

并提示是否继续添加。

3.1.1.2读者信息查询

根据提示选择查找的方式(如下图选择1或者2),然后输入查找的内容,按回车以列表的方式显示符合查询条件的读者信息。

并提示是否继续查询。

3.1.2图书管理模块功能

3.1.2.1图书信息输入

根据提示依次在DOS界面上输入图书编号、图书名称等内容,按回车完成图书信息的添加。

并提示是否继续添加。

3.1.2.2图书信息查询

根据提示选择查找的方式(如下图选择1、2、3、4),然后输入查找的内容,按回车以列表的方式显示符合查询条件的图书内容。

并提示是否继续查询。

3.1.3图书流通模块功能

3.1.4借书处理

输入欲借的书的书号,按回车完成借书的流程。

如藏书量>0,实现将该书的藏书量减1,借出量加1。

3.1.5还书处理

输入欲还的书的书号,按回车完成还书的流程。

实现将该书的藏书量加1,借出量减1。

3.2基本设计思路

利用文本文件保存数据,设置图书数据文件保存图书信息,读者信息文件保存读者信息。

设置图书信息链表,和读者信息链表。

在进入系统时,将文本中的所有信息读出并分别保存到图书链表和读者信息链表中。

系统运行过程中,所有的操作都是对这两个链表的操作,在退出系统时将链表的数据写会文本文件中。

第4章新建LMS工程

步骤一:

点击菜单中的“File”,弹出子菜单中选择“New”,打开新建工程的选择界面。

图41VC6.0文件菜单

图42新建工程界面

步骤二:

如图,在新建工程的界面的标签栏中选择“Projects”(如标识1);在左边项目列表中选择“Win32ConsoleApplication”(如标识2),该项目可建立一个DOS窗口的应用程序;Location标签下的编辑框中选择系统存放的地址(如标识3);ProjectName标签下的编辑框中输入本系统的名称“LMS”(如标识4)。

点击“OK”按钮进入下一个页面。

图43工程类型选择图

步骤三:

在“工程类型选择图”中选择第三个“A”Hello,World”application”按“Finish”按钮。

完成新建系统工程。

步骤四:

查看新建的工程。

1、进入系统存放地址,查看新建的文件,可以看到如下图的文件。

2、进入VC6.0界面,看到如下图所示。

此时已经可以按“F5”运行。

图44完成新建工程界面

第5章建立数据操作文件

建立文件夹“DB”,在该目录下存放数据文件(如:

书本数据book.dat)保存系统所有的所有数据。

读、存、查找、删除数据的函数全部写在DBManage.h和DBManage.cpp文件中。

DBManage.h放所有的数据操作函数的声明,在DBManage.cpp文件中放置数据操作函数的实现。

当main函数需要调用数据操作函数时需要在文件的开头添加#incluce“DBManage.h”。

5.1数据存储文件说明

因为采用文本文件存储数据,需要设计数据存储的格式和存储的方式。

一个结构实例保存一条数据(如一本书的数据),在打开程序运行该系统时把所有的数据读出来保存到链表中,方便进行增、删、改、查的操作,考虑到查找的效率问题,建立的链表是根据关键字段排序。

在退出程序前保存链表中的所有数据到数据文件中。

[参考“文件处理”章中的“在随机访问文件中写入和读取数据”部分]

5.1.1书籍数据文件(book.dat)

5.1.1.1字段设计

表1book.dat字段设计表

字段名称

中文名

类型

备注

bno

书号

Char(5)

bname

书名

Char(21)

author

作者

Char(9)

press

出版社

Char(21)

storenum

藏书量

Int

borrownum

借出数

Int

5.1.1.2对应C代码结构描述

StructBookRecType{

charbno[5];

charbname[21];

charauthor[9];

charpress[11];

intstorenum;

intborrownum;

};

5.1.1.3对应链表组织

BookRecType*BookHead;//串联起所有的book数据的链表头

IntBookStruNum;//记录该链表中所具有的BookRecType结构实例的数量

图51Book数据链表示意图

5.1.1.4添加代码

1、打开DBManage.h文件,在最上面添加如下代码:

说明:

#ifndef…#define…#endif为一组宏定义。

意思为:

如果没有定义DBSTRUCT这个名称的宏,则系统编译#ifndef…#endif之间的代码(1、定义一个名称为DBSTRUCT的宏2、声明结构),否则系统就跳过编译。

这样做防止了当DBManage.h被多次引用的情况下代码被重复编译的情况。

BookRecType*next用于建立链表时用

2、打开LMS.cpp文件,mian函数中添加如下代码:

5.1.2人员数据操作文件(reader.dat)

5.1.2.1字段设计

表2reader.dat字段设计表

字段名称

中文名

类型

备注

rno

读者号

Char(5)

rname

读者姓名

Char(21)

5.1.2.2对应C代码结构描述

StructReaderInfo{

charrno[8];

charrname[10];

};

5.1.2.3添加代码

1、打开DBManage.h文件,在#ifndefDBSTRUCT#defineDBSTRUC和#endif之间添加如下代码:

5.2数据操作文件说明

5.2.1创建文件

步骤一:

点击菜单中的“File”,弹出子菜单中选择“New”,打开新建工程的选择界面。

图52添加新文件界面

步骤二:

如上图,选择标签“Files”(见标识1);在左边文件类型选择框中选择“C++SourceFile”(见标识2);确保界面右上角“AddtoProject:

”的复选框打勾(见标识3);在文件名输入框中输入DBManage.cpp(见标识4);按“OK”按钮即可成功添加一个DBManage.cpp文件。

步骤三:

参考步骤二,如图选择“C/C++HeaderFile”(如标识2);文件名输入框中输入“DBManage.h”;按“OK”按钮即可成功添加一个DBManage.h文件。

图53文件浏览(Fileview)界面

步骤四:

检查文件是否创建成功,并开始编写代码。

VC6的菜单中选择视窗(View)工作区(Workspace),打开VC6的工作区窗口,选择文件浏览(FileView)标签,可见如上图。

查看是否存在DBManage.h和DBManage.cpp文件。

双击这两个文件可以分别打开文件并编写代码。

5.2.2添加代码

1、打开DBManage.h文件,添加如下代码

说明:

head用二维指针,以上函数的调用方法如下:

声明BookRecType*BookHead=0;调用readfile(&BookHead);和writefile(&BookHead);

2、打开DBManage.cpp文件,添加如下代码

第6章

读者管理模块

6.1读者信息输入

6.1.1处理流程

调用CreateReaderInfo()函数,该函数处理流程如下:

1、根据提示输入一本读者的信息,并生成一个ReaderInfo节点;

2、链表以“读者号”为索引字段进行排序,将新节点放置在链表里相应的位置;因为链表始终保持按照顺序排列,所以此处不需要对链表进行重新排序;

3、选择是否继续输入。

6.1.2添加代码

1、创建ReaderInfo.h和ReaderInfo.cpp文件(参考4.1.1节)

2、打开ReaderInfo.h文件,添加如下代码:

3、打开ReaderInfo.cpp文件,添加如下代码:

说明:

头文件#include包含C++语言的输入(cin)输出(cout)函数。

4、在LMS.cpp文件加上#include"ReaderInfo.h",使得main可以调用CreateReaderInfo()函数。

6.2读者信息查询

6.2.1处理流程

调用SearchReaderInfo()函数,该函数处理流程如下:

1、选择查找读者信息方式,分别可以根据读者号、读者姓名进行查找;

2、遍历ReaderInfo链表,对每一个节点进行比较,如符合查询条件,则输出。

6.2.2添加代码

1、打开ReaderInfo.h文件,添加如下代码:

2、打开ReaderInfo.cpp文件,添加如下代码:

6.2.3相关知识点介绍

intstrcmp(constchar*string1,constchar*string2);//比较字符串,字符串的比较先比第一个字符,第一个字符相等则比第二个,直到比出大小。

[添加#include]

返回值值

string1和string2的关系

<0

string1

0

string1和string2相等

>0

string1>string2

char*strcpy(char*strDestination,constchar*strSource);//字符串拷贝。

第7章

图书管理模块

进入系统后要求先读取book.dat中的数据到链表中,图书管理模块的相关操作只在链表(链表头:

BookHead)中进行。

7.1图书信息输入

7.1.1处理流程

调用CreateBook()函数,该函数处理流程如下:

4、根据提示输入一本书的信息,并生成一个BookRecType节点;

5、链表以“书号”为索引字段进行排序,将新节点放置在链表里相应的位置;因为链表始终保持按照顺序排列,所以此处不需要对链表进行重新排序;

6、选择是否继续输入。

7.1.2添加代码

1、创建BookManage.h和BookManage.cpp文件(参考4.1.1节)

2、打开BookManage.h文件,添加如下代码:

3、打开BookManage.cpp文件,添加如下代码:

4、在LMS.cpp文件加上#include"BookManage.h",使得main可以调用CreateBook()函数。

7.1.3相关知识点介绍

intatoi(constchar*string);//把string类型(由数字组成)转化成int类型。

如“1234”1234。

[添加#include]

7.2图书信息查询

7.2.1处理流程

调用SearchBook()函数,该函数处理流程如下:

3、选择查找图书方式,分别可以根据书号、书名、作者、出版社进行查找;

4、遍历BookRecType链表,对每一个节点进行比较,如符合查询条件,则输出。

7.2.2添加代码

1、打开BookManage.h文件,添加如下代码:

2、打开BookManage.cpp文件,添加如下代码:

第8章

代码打到这里图书流通模块

8.1借书处理

8.1.1处理流程

图81借书流程图

8.1.2添加代码

1、创建BookDeal.h和BookDeal.cpp文件(参考4.1.1节)

2、打开BookDeal.h文件,添加如下代码:

3、打开BookDeal.cpp文件,添加如下代码:

4、在LMS.cpp文件加上#include"BookDeal.h",使得main可以调用BorrowBook()函数

8.2还书处理

8.2.1还书流程

图82还书流程图

8.2.2添加代码

1、打开BookDeal.h文件,添加如下代码:

2、打开BookDeal.cpp文件,添加如下代码:

第三部分C++部分

第9章总体说明

9.1需求说明

9.1.1功能介绍

图书管理系统(LMS)用于图书馆进行图书的管理,主要的功能包括借书、还书、查找等。

不同的使用对象具有不同的权限,详细见下表:

表3系统功能表

使用对象

功能

详细功能

读者

查看/修改个人信息

查找馆藏图书信息

工作人员

查询读者信息(个人信息和读者借书情况)

还书

借书

查询图书信息(根据id号查找图书,显示基本信息和是否被借阅)

管理人员

维护图书信息

添加、删除、编辑图书信息

维护读者信息

添加、删除、编辑读者信息

维护人员信息(包括下级管理员)

添加、删除、编辑工作人员信息

查询图书信息

9.1.2详细功能

9.1.2.1登录

选择登录身份(读者、工作人员、管理员),输入用户名和密码,成功后进行相应的功能模块。

9.1.2.2读者模块

读者可以查找馆藏书目,了解图书馆有哪些书,是否可借。

读者可以查看个人借书情况和修改基本个人信息、修改密码。

9.1.2.3工作人员模块

可以查找馆藏书目,了解图书馆有哪些书,是否可借。

根据读者号查询读者信息,显示该读者基本信息,和借书情况(借了哪里书)。

读者信息高级查找可以根据姓名等其他信息进行查找(可选功能)

借书功能:

首先输入读者号,在该状态下依次输入该读者借的书,完成图书的借阅工作。

还书功能:

直接输入图书ID号,将该书的信息改为入库,并修改读者的借书记录。

9.1.2.4管理员模块

可以查找馆藏书目,了解图书馆有哪些书,是否可借。

维护图书信息:

添加:

进入添加状态,根据提示依次输入图书的基本信息,默认状态下为继续输入,当输入-1回到上一层。

修改:

首先进行查找,列出所有符合条件的图书,根据列出的需要选择要修改的图书,如果只有一条记录则直接进入修改。

根据提示选择该图书需要修改的字段,并进行修改。

选择“完成”回到上一层。

删除:

9.2设计思路

采用面向对象的方式实现图书管理系统,根据不同的使用权限,使用对象分为读者、工作人员和管理员。

图91系统主要类结构图

分别设计读者类、工作人员类、管理员类(如上图),人员类为基类实现通用的功能。

用文本文件进行数据的保存,需要保存的数据主要包括图书数据、用户数据(包括读者、工作人员、管理员)、借阅索引表。

设置数据操作类,实现所有的文本操作相关的功能。

9.3创建工程

重新创建一个工程,工程名为LMS_Class。

第10章建立数据操作机制

10.1数据存储说明

采用文本文件存储系统的各类数据,模仿关系数据库的形式,用字段描述文件(*.field)和数据文件(*.dat)来模拟关系数据库中的表。

如:

图书数据表包含book.field(图书数据字段描述)和book.dat(存所有图书数据)两个文件。

字段描述文件(*.field)

用于描述表的属性,主要描述该表的每个字段的字段名、类型、长度。

该文件有固定的格式,可以用一个结构进行读和存。

对应结构为

StructDBFiledProperty{

CharFieldName[21];

CharFieldType[9];//暂时支持int,float,char*,bool四种格式

IntFieldLength;

}

数据文件(*.dat)

实际存放数据的文件。

该文件的数据存储没有固定的格式,其格式有*.field文件中描述决定。

10.1.1图书数据设计

表4book文件字段设计表

字段名称

中文名

类型

备注

bno

书号

Char(5)

bname

书名

Char(21)

author

作者

Char(9)

press

出版社

Char(21)

storenum

藏书量

Int

borrownum

借出数

Int

10.1.2读者数据设计

表5reader文件字段设计

字段名称

中文名

类型

备注

rno

读者号

Char(5)

rname

读者姓名

Char(21)

Password

密码

Char(21)

10.1.3借阅索引表设计

表6R_BIndex文件字段设计

字段名称

中文名

类型

备注

bno

图书号

Char(5)

通过两个字段记录所有的图书借阅信息

rno

读者号

Char(5)

10.1.4用户表设计

表7Users文件字段设计

字段名称

中文名

类型

备注

UserName

用户名

Char(9)

登录用户名<=8

Password

登录密码

Char(9)

<=8

Name

真实姓名

Char(20)

Sex

性别

Char

(2)

男or女

Depart

部门

Char(30)

10.2数据操作类(DBFile类)设计

10.2.1类说明

该类的每个对象操作一个数据文件,类中需要一个保存文件名的变量m_TableName。

该类的主要功能是操作*.field文件和*.dat文件。

以操作“读者”数据为例:

(参考“读者数据设计”)

1、将以下数据存入reader.field文件

DBFiledPropertyreader[2];//读者数据有两个字段

reader[0].FieldName=”rno”;

reader[0].FieldType=“char*”;

reader[0].FieldLength=5;

reader[0].FieldName=”rname”;

reader[0].FieldType=“char*”;

reader[0].FieldLength=21;

2、reader.dat文件保存形式

在类中设置char**m_data;变量可以保存一位读者的全部信息。

根据读者字段动态创建指针数组的空间。

m_data=new(char*)[2]

m_data[0]=“1001”;

m_data[1]=”readername1”;

将这组数据存到reader.dat文件

10.2.1.1主要数据成员

charm_TableName[40];//表名

char**m_data;//用一个二维指针存放一条数据。

如date[0]="1001"书号date[1]="XXXXX"姓名……

DBFieldPropertydbProperty;//字段属性结构。

10.2.1.2主要成员函数

10.2.2添加类代码

切换到ClassView鼠标右键LMS_Classclasses弹出对话框,选择NewClass,弹出以下对话框。

图102添加新类界面2

输入类名DBFile按“OK”,添加类成功,在ClassView中新增DBFile类,在工程目录下新增DBFile.h和DBFile.cpp两个文件。

第11章

人员相关类

11.1人员类

该类为其他人员相关类的基类,实现通用功能。

11.1.1登录Login

11.1.2退出Logout

11.2读者类

11.3工作人员类

11.4管理员类

参考文献

[1]苏仕华等编著.数据结构课程设计.合肥:

机械工业出版社,2005

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

当前位置:首页 > 农林牧渔 > 林学

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

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