C++个人书籍管理系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学与计算机学院C程序设计课程
设计报告
年级2012 学号2012110911 姓名刘怡然
成绩
专业电气
实验地点B3-401 指导教师许景山
实验项目简单个人书籍管理系统的设计与实现
实验日期2013年6月23日
一、实验题目
简单个人书籍管理系统的设计与实现
二、实验目的、要求
1、存储书籍各种相关信息。
2、提供查找功能,按照多种关键码查找需要的书籍,查找成功后可以修改记录的相关项。
3、提供排序功能,按照多种关键码对所有的书籍进行排序,例如按照购买日期进行排序。
4、其他辅助的维护工作。
三、数据结构及算法描述
1、使用C++中的类来实现,其中有DATE类和Book类,进行类的复合。数据均为私有数据。
class DATE
{
public:
friend ostream & operator<<(ostream &output, DATE &t); //友元函数重载流插入运算符
friend istream & operator>>(istream &input, DATE &t); //友元函数重载流提取运算符public:
DATE(int y=0,int m=0,int d=0); //初始化
virtual ~DATE();
DATE &operator=(DATE &); //重载时间等于运算符
int operator < (DATE &); //重载时间小于运算符
int operator ==(DATE &); //重载时间等于判断运算符
private:
int year,month,day;
};
----------------------------------------------------------------------------------------------------------
class Book
{
public:
Book(int t,char *n,char *a,float p,int y,int m,int d);
Book(){};
virtual ~Book();
int f_new(); //新建书籍信息
int f_save(); //保存书籍信息
int display(); //显示书籍信息
int e_delete(); //删除书籍信息
int e_update(); //修改书籍信息
int showInfo(); //显示个别书籍信息
int sort(); //排序书籍信息
Book &operator=(Book &); //重载等于运算符
private:
int type; //书籍类型
char name[MAX]; //书籍名称
char author[MAX]; //作者
float price; //书籍价格
DATE date; //购买日期
};
2、定义数组Book books[200]使用流提取、流插入方式进行数据读取和存储。
3、在排序函数int sort( )中使用冒泡算法排序:
for(i=0;i { for(j=i+1;books[i].date { ex=books[i]; books[i]=books[j]; books[j]=ex; } } 四、程序流程图 各个功能模块的含义如下: 1、“主函数”模块main() 此模块循环显示第一级操作命令菜单,接收键盘输入的命令,检查命令是否合法,若合法则调用相应下层函数。命令菜单中包含“退出系统”命令,当接收到该命令时立即终止整个程序的运行。 2、“新建”模块f_new(): 此模块清空books数组;进入输入状态,接收键盘输入的全部数据保存在books数组中,按“购买日期”顺序输入记录。 3、“打开”模块f_open(): 此模块清除books数组中原有数据,从A盘上已经存在的数据文件(books.dat)中读入全部数据到books数组中,并将全部数据按读入顺序显示在屏幕上。 4、“保存”模块f_save(): 此模块将books数组中全部有效数据保存到A盘books.dat文件中。 5、“删除”模块e_delele(): 此模块接收从键盘输入的一条记录的“购买日期”和“书名”,在books数组中查找,如找到则从books数组中删除该记录,否则显示“未找到”。 6、“更新”模块e_update(): 此模块接收键盘输入的一条记录的“购买日期”和“书名”,在books 数组中查找,如找到则显示该记录的原数据并提示键盘输入新数据用以替换原有数据,如未找到则显示“未找到”。 7、“显示”模块display(): 此模块显示类别名称和编号,提示用户输入类别编号,显示books数组中指定类别的书籍记录,或显示全部书籍记录。 8、“排序”模块sort(): 此模块对books数组中所有记录按“购买时间”排序。 五、源程序清单 文件DATE.h:类DATE的定义 // DATE.h: interface for the DATE class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_DATE_H__6B5CFDD0_60A3_4347_853E_4B83FD47F383__INCLUDED_) #define AFX_DATE_H__6B5CFDD0_60A3_4347_853E_4B83FD47F383__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include class DATE { public: friend ostream & operator<<(ostream &output, DATE &t); //友元函数重载流插入运算符friend istream & operator>>(istream &input, DATE &t); //友元函数重载流提取运算符public: DATE(int y=0,int m=0,int d=0); //初始化 virtual ~DATE(); DATE &operator=(DATE &); //重载时间等于运算符 int operator < (DATE &); //重载时间小于运算符 int operator ==(DATE &); //重载时间等于判断运算符 private: int year,month,day; }; #endif // !defined(AFX_DATE_H__6B5CFDD0_60A3_4347_853E_4B83FD47F383__INCLUDED_) ---------------------------------------------------------------------------------------------------------------------- DATE.cpp:类DATE的实现 // DATE.cpp: implementation of the DATE class.