图书管理系统 数据结构 课程设计 下载本文

《数据结构》

课程设计报告书

一.课程设计题目

图书借阅管理系统

二.课程设计内容

实现图书管理信息系统的设计

(一)管理员功能:

①登录:输入管理员密码,若密码错误则不得执行管理员操作。

②添加新书:增加新的图书资料,同时需检查新书的图书编号是否已存在于原图书资料中, 若已存在则应取消添加或提示重新输入。

③修改图书:通过编号查询该图书资料,若该编号存在,则显示已有信息,允许修改,否则提示 无该图书信息。

④删除图书:通过编号查询该图书资料,若该编号存在,则显示已有信息,允许删除,否则提示无该图书信息。删除对象包括该图书资料以及“图书状态”和“借阅人”中与此书相关的所有记录。

⑤查找图书:

A.按书号查找:通过编号查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

B.按书名查找:通过书名查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

C.按作者查找:通过作者查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

⑥查看全部图书:显示所有图书资料,包括书号、书名、作者、状态和借阅人等信息。

⑦修改读者:通过姓名查询该读者信息,若该姓名存在,则显示已有信息,允许修改,否则提示无该读者信息。

⑧删除读者:通过姓名查询该读者信息,若该姓名存在,则显示已有信息,允许删除,否则提示无该读者信息。删除对象包括该读者姓名、班级、电话以及“图书状态”和“借阅人”中与此人相关的所有记录。

⑨查看所有读者:显示所有读者资料,包括姓名、班级、电话等信息。

(二)读者功能:

①登录:输入读者姓名,若未经注册则不得进入读者服务界面。 ②注册:新用户经注册方可登录系统并使用读者服务功能。 ③借书:

A.输入所需图书编号,判断该编号是否存在,若不存在则提示重新输入。

B.若所输入图书编号存在,则判断该书籍是否已被借出,若已借则不允许执行借书操作。

C.若所输入图书未借,则提示输入读者姓名,判断所输入读者姓名是否存在,若不存在则提示重新输入。

D.若读者姓名存在,则允许执行借书操作。

E.借书处理包括在“图书状态”中加上“已借”标记。 ④还书:

A.输入所借书编号,判断该编号是否存在,若不存在则提示重新输入。 B.判断该书是否已借出,若未借则不允许执行还书操作。 C.借书处理包括在“图书状态”中加上“未借”标记。 ⑤查询图书:

A.按书号查找:通过编号查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

B.按书名查找:通过书名查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

C.按作者查找:通过作者查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。

⑥查看借阅情况:输入读者姓名,若该姓名不存在则提示重新输入,若该姓名存在则显示该读者借阅信息。

三.算法设计

1. 流程图(部分示例)

①管理员登录

②读者登录

③读者借阅图书

④管理员或读者按书名查找图书

2.代码实现

#include

#include #include

#include //文件流 #include

#define BookFile \ //将字符串BookFile替换原文件中的宏名称book #define ReaderFile %using namespace std;

//**********读者结构体,用于存放读者基本信息********** class Reader {

private:

char rname[10]; char rclass[10]; char rtel[10]; public:

Reader() //构造函数,实现数据初始化

{strcpy(rname,\初始化 void set_rname(char *rn) //设置读者姓名

{strcpy(rname,rn);} //将rn的字符复制给rname char * get_rname() //获得读者姓名 {return rname;} //返回rname的值 void set_rclass(char *rc) //设置班级 {strcpy(rclass,rc);}

char *get_rclass() //获得班级 {return rclass;}

void set_rtel(char *rt) //设置电话 {strcpy(rtel,rt);} char *get_rtel() //获得电话 {return rtel;}

void copy(Reader m) //读者Reader结构体copy函数

{strcpy(rname,m.get_rname());strcpy(rclass,m.get_rclass());strcpy(rtel,m.get_rtel());} };

//*********读者管理结构体,实现对读者用户的管理********* class ReaderManage

{ Reader readers[50]; //定义读者结构体数组对象,最多50位 int length;

void readFile() //读取读者文件函数 { ifstream fread; //定义输入文件流对象fread length=0; //计数 if(!fread)