图书管理系统 数据结构 课程设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{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函数
char * get_bauthor() //获得作者姓名
{return bauthor;}
void set_tag(int t) //状态设置
{tag=t;}
void set_rname(char *rn) //设置借阅人
{strcpy(rname,rn);}
char *get_rname() //获得借阅人姓名
reader.set_rclass(c); //调用读者结构体设置读者班级函数
reader.set_rtel(t); //调用读者结构体设置联系电话函数
add_reader(reader); //调用读者结构体添加读者函数
cout<<"\n\t注册成功!";
}
void show_reader() //不带参的显示读者信息函数
int length;
void readFile() //读取读者文件函数
{ ifstream fread; //定义输入文件流对象fread
length=0; //计数
if(!fread)
{cout<<"读取磁盘文件失败!"<<endl;exit(1);}
fread.open(ReaderFile,ios::binary);//使文件流与文件关联,以二进制方式打开
char c[10]; //班级class
char t[10]; //电话tel
Reader reader;
cout<<"\n\t请输入您的姓名:";
cin>>n;
cout<<"\n\t请输入您的所在班级:";
cin>>c;
cout<<"\n\t请输入您的联系电话:Hale Waihona Puke Baidu;
cin>>t;
reader.set_rname(n); //调用读者结构体设置读者姓名函数
if(strcmp(readers[i].get_rname(),rn)==0)//判断是否相等
return i;
return -1;
}
bool revise(Reader reader,int i) //修改读者资料函数
{ readers[i].copy(reader); //调用读者结构体cpoy函数
{
cout<<"\n☆☆☆☆☆☆☆☆☆☆☆☆读★★者★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆☆\n\n";
cout<<"姓名\t\t\t班级\t\t\t电话\n";
for(int i=0;i<length;i++)
{ cout<<readers[i].get_rname();
cout<<"\t\t\t"<<readers[i].get_rclass();
无该图书信息。
④删除图书:通过编号查询该图书资料,若该编号存在,则显示已有信息,允许删除,否则提示无该图书信息。删除对象包括该图书资料以及“图书状态”和“借阅人”中与此书相关的所有记录。
⑤查找图书:
A.按书号查找:通过编号查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
B.按书名查找:通过书名查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
void set_rname(char *rn) //设置读者姓名
{strcpy(rname,rn);} //将rn的字符复制给rname
char * get_rname() //获得读者姓名
{return rname;} //返回rname的值
void set_rclass(char *rc) //设置班级
return true;
}
void delete_reader(int index) //删除读者函数
{ for(int i=index;i<length-1;i++)
readers[i].copy(readers[i+1]); //用后面的地址覆盖前面的地址
length--;
}
bool log_reader(Reader r) //登录时判断读者用户是否存在函数,相当于遍历
{strcpy(rname,m.get_rname());strcpy(rclass,m.get_rclass());strcpy(rtel,m.get_rtel());}
};
//*********读者管理结构体,实现对读者用户的管理*********
class ReaderManage
{ Reader readers[50]; //定义读者结构体数组对象,最多50位
fwrite.close(); //关闭磁盘文件
}
public:
ReaderManage() //构造函数,读取读者文件
{readFile();}
~ReaderManage() //析构函数,保存读者文件
{saveFile();}
void add_reader(Reader r) //添加读者用户函数
{ return bnum;} //返回值为bnum
void set_bname(char *n) //设置书名
{strcpy(bname,n);}
char *get_bname() //获得书名
{return bname;}
void set_bauthor(char *a) //设置作者
{strcpy(bauthor,a);}
{ for(int i=0;i<length;i++)
if(strcmp(readers[i].get_rname(),r.get_rname())==0)
return true;
return false;
}
void reg_reader() //注册用户函数
{ char n[10]; //姓名name
C.借书处理包括在“图书状态”中加上“未借”标记。
⑤查询图书:
A.按书号查找:通过编号查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
B.按书名查找:通过书名查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
C.按作者查找:通过作者查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
⑨查看所有读者:显示所有读者资料,包括姓名、班级、电话等信息。
(
①登录:输入读者姓名,若未经注册则不得进入读者服务界面。
②注册:新用户经注册方可登录系统并使用读者服务功能。
③借书:
A.输入所需图书编号,判断该编号是否存在,若不存在则提示重新输入。
B.若所输入图书编号存在,则判断该书籍是否已被借出,若已借则不允许执行借书操作。
if(!fwrite)
{cout<<"文件保存失败!\n"; exit(1); }
fwrite.open(ReaderFile,ios::binary);//使文件流与文件关联,以二进制方式打开
fwrite.write((char *)readers,length*sizeof(Reader));//计算并返回所占字节数
C.若所输入图书未借,则提示输入读者姓名,判断所输入读者姓名是否存在,若不存在则提示重新输入。
D.若读者姓名存在,则允许执行借书操作。
E.借书处理包括在“图书状态”中加上“已借”标记。
④还书:
A.输入所借书编号,判断该编号是否存在,若不存在则提示重新输入。
B.判断该书是否已借出,若未借则不允许执行还书操作。
class Reader
{
private:
char rname[10];
char rclass[10];
char rtel[10];
public:
Reader() //构造函数,实现数据初始化
{strcpy(rname,"");strcpy(rclass,"");strcpy(rtel,"");} //初始化
{return rname;}
void show_tag() //显示图书状态
{ if(tag==1)
{cout<<"已借";}
else
{cout<<"在架";}
}
void copy(Book m) //Book结构体copy函数
class Book
{
private:
char bnum[10]; //书号
char bname[20]; //书名
char bauthor[10]; //作者
char rname[10]; //借阅人
public:
int tag; //状态标记判断指标(已借/在架)
Book() //构造函数初始化信息
C.按作者查找:通过作者查询该图书资料,若该编号存在,则显示图书信息,否则提示无该图书信息。
⑥查看全部图书:显示所有图书资料,包括书号、书名、作者、状态和借阅人等信息。
⑦修改读者:通过姓名查询该读者信息,若该姓名存在,则显示已有信息,允许修改,否则提示无该读者信息。
⑧删除读者:通过姓名查询该读者信息,若该姓名存在,则显示已有信息,允许删除,否则提示无该读者信息。删除对象包括该读者姓名、班级、电话以及“图书状态”和“借阅人”中与此人相关的所有记录。
cout<<readers[i].get_rname();
cout<<"\t\t\t"<<readers[i].get_rclass();
cout<<"\t\t\t"<<readers[i].get_rtel()<<"\n";
}
};
//********书籍结构体,用于存放书籍基本信息********
#include <conio.h>
#define BookFile "book.txt" //将字符串BookFile替换原文件中的宏名称book
#define ReaderFile "reader.txt"
using namespace std;
//**********读者结构体,用于存放读者基本信息**********
int i=0;
while((fread.read((char *)&readers[i],sizeof(Reader))))//计算并返回所占字节数
i++;
length=i;
fread.close();//关闭磁盘文件
}
void saveFile() //保存读者文件
{ ofstream fwrite; //定义输出文件流对象fwrite
{strcpy(bnum,"");strcpy(bname,"");strcpy(bauthor,"");strcpy(rname,"");tag=0;}
void set_bnum(char *no) //设置书号
{strcpy(bnum,no);} //把字符串no中的字符复制到字符串bnum中
char *get_bnum() //获得书号
《数据结构》
课程设计报告书

图书借阅管理系统
二.课程设计内容
实现图书管理信息系统的设计
①登录:输入管理员密码,若密码错误则不得执行管理员操作。
②添加新书:增加新的图书资料,同时需检查新书的图书编号是否已存在于原图书资料中, 若已存在则应取消添加或提示重新输入。
③修改图书:通过编号查询该图书资料,若该编号存在,则显示已有信息,允许修改,否则提示
⑥查看借阅情况:输入读者姓名,若该姓名不存在则提示重新输入,若该姓名存在则显示该读者借阅信息。
三.算法设计
1.
①管理员登录
②读者登录
③读者借阅图书
④管理员或读者按书名查找图书
2.
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream> //文件流
cout<<"\t\t\t"<<readers[i].get_rtel()<<"\n";
}
}
void show_reader(int i) //带参的显示读者信息函数
{
cout<<"\n☆☆☆☆☆☆☆☆☆☆☆☆读★★者★★信★★息★★列★★表☆☆☆☆☆☆☆☆☆☆\n\n";
cout<<"姓名\t\t\t班级\t\t\t电话\n";
{ if(length>=50)
{cout<<"对不起,注册人数已满!\n";return ;}
readers[length].copy(r); //调用读者结构体copy函数
length++;
}
int search(char *rn) //按姓名查找读者函数
{ for(int i=0;i<length;i++)
相关文档
最新文档