《数据结构》
课程设计报告书
一.课程设计题目
图书借阅管理系统
二.课程设计内容
实现图书管理信息系统的设计
(一)管理员功能:
①登录:输入管理员密码,若密码错误则不得执行管理员操作。
②添加新书:增加新的图书资料,同时需检查新书的图书编号是否已存在于原图书资料中, 若已存在则应取消添加或提示重新输入。
③修改图书:通过编号查询该图书资料,若该编号存在,则显示已有信息,允许修改,否则提示 无该图书信息。
④删除图书:通过编号查询该图书资料,若该编号存在,则显示已有信息,允许删除,否则提示无该图书信息。删除对象包括该图书资料以及“图书状态”和“借阅人”中与此书相关的所有记录。
⑤查找图书:
A.按书号查找:通过编号查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
B.按书名查找:通过书名查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
C.按作者查找:通过作者查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
⑥查看全部图书:显示所有图书资料,包括书号、书名、作者、状态和借阅人等信息。
⑦修改读者:通过姓名查询该读者信息,若该姓名存在,则显示已有信息,允许修改,否则提示无该读者信息。
⑧删除读者:通过姓名查询该读者信息,若该姓名存在,则显示已有信息,允许删除,否则提示无该读者信息。删除对象包括该读者姓名、班级、电话以及“图书状态”和“借阅人”中与此人相关的所有记录。
⑨查看所有读者:显示所有读者资料,包括姓名、班级、电话等信息。
(二)读者功能:
①登录:输入读者姓名,若未经注册则不得进入读者服务界面。 ②注册:新用户经注册方可登录系统并使用读者服务功能。 ③借书:
A.输入所需图书编号,判断该编号是否存在,若不存在则提示重新输入。
B.若所输入图书编号存在,则判断该书籍是否已被借出,若已借则不允许执行借书操作。
C.若所输入图书未借,则提示输入读者姓名,判断所输入读者姓名是否存在,若不存在则提示重新输入。
D.若读者姓名存在,则允许执行借书操作。
E.借书处理包括在“图书状态”中加上“已借”标记。 ④还书:
A.输入所借书编号,判断该编号是否存在,若不存在则提示重新输入。 B.判断该书是否已借出,若未借则不允许执行还书操作。 C.借书处理包括在“图书状态”中加上“未借”标记。 ⑤查询图书:
A.按书号查找:通过编号查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
B.按书名查找:通过书名查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
C.按作者查找:通过作者查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
⑥查看借阅情况:输入读者姓名,若该姓名不存在则提示重新输入,若该姓名存在则显示该读者借阅信息。
三.算法设计
1. 流程图(部分示例)
①管理员登录
②读者登录
③读者借阅图书
④管理员或读者按书名查找图书
2.代码实现
#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)