学号:20104303
计算机实习报告
系 别:管理系
专 业:信息管理与信息系统专业 班 级:1043班 学生姓名:李 优 指导教师:徐 日
日 期:2012-09-03~2012-09-14
大全
标准文案
1需求分析
1.1 选题任务
图书借阅管理系统 (1) 编程工具
C++
(2) 要求
选题学生应具有端正的学习态度、正常的交流能力,应有积极主动、克服困难的学习意识
(3) 本题概述
以学院图书馆为例,图书借与管理是一项经常性工作,为使图书借阅管理工作准确高效,提供图书借阅记录的添加、修改、删除、查询、浏览、汇总等,用图书借阅关系软件,能有效提高工作效率,具有较强的实际意义。
(4) 功能描述
① 能度日外部提供的包含图书借阅信息的文本文件(TXT文件);
② 能在程序中录入图书借阅信息(可参考我院图书馆网上图书借阅信息的各个项
目),并将信息写入文本文件(TXT文件);
③ 能对所有图书借阅信息,按条件(按图书名、图书编号、借阅日期、借阅人、
超期与否、超期天数等)查询浏览,能汇总统计计算出符合某条件的图书借阅记录的数量并浏览这些借阅信息,能将查询、浏览、汇总的结果输出结果文本文件(TXT文件)
(5) 辅助说明
基础要求:①+② 扩展要求:①+②+③
1.2 输入数据和输出数据形式:
程序中包含的图书信息包括: char bnum[20]; //书号 char bname[20]; //书名
char bauthor[10]; //作者 char rname[10]; //借阅人
大全
标准文案
char bdays[10]; //借出日期 char bchao[10]; //超期天数
为了方便,我全部设置成了char型。
而程序中包含两种输入方式和两种输出方式,对应题目要求,分别是:单个图书信息的增删查改;TXT文档的导入(图书数据库.txt);屏幕的打印;TXT文档的导出(书籍信息.txt)。
1.3 测试数据及测试目的
字母测试,错误数据测试,重复数据测试 目的:产看本程序的纠错能力和是否人性化。
2程序设计
2.1 关键数据类型定义
//********书籍结构体,用于存放书籍基本信息********
class Book { private:
char bnum[20]; //书号 char bname[20]; //书名
char bauthor[10]; //作者 char rname[10]; //借阅人 char bdays[10]; //借出日期 char bchao[10]; //超期天数
public:
Book() //构造函数初始化信息 void set_bnum(char *no) //设置书号 char *get_bnum() //获得书号 void set_bname(char *n) //设置书名 char *get_bname() //获得书名 void set_bauthor(char *a) //设置作者
大全
标准文案
char *get_bauthor() //获得作者姓名 void set_bdays(char *d) //设置借出日期 char *get_bdays() //获得借出日期 void set_bchao(char *c) //设置超出天数 char *get_bchao() //获得超出天数 void set_rname(char *rn) //设置借阅人 char *get_rname() //获得借阅人姓名
void copy(Book m) //Book结构体copy函数 };//class book
//**********书籍管理结构体,实现管理书籍功能********** class BookManage { private:
Book books[100]; //定义Book书籍结构体数组对象,最大容量100本 public:
int length;
BookManage() //构造函数,读取磁盘文件 int add(Book book) //添加图书资料
int bnu_search(char *bnu) //按书号查找书籍 int bna_search(char *bna) //按书名查找书籍 int bau_search(char *bau) //按作者查找书籍 int rn_search(char *rn) //按借阅人查找书籍 int bd_search(char *bd) //按借出日期查找书籍 int bc_search(char *bc) //按超期天数查找书籍 void revise(Book book,int i) //修改书籍函数 void deleteBook(int index) //删除书籍资料函数 void show_bookhead() //显示输出列表,表头。 void show_book(int i)//显示书籍函数
void saveFileHead() ///保存书籍文件的表头到txt void saveFile(int i) //带参的输出书籍到txt
大全
标准文案
void readFile() //读取书籍文件 };// class BookManage
//**********菜单结构体,实现界面引导********** class Menu {
BookManage bm; //定义书籍管理结构体对象bm private:
int choice; //菜单序号选择 int key; //管理员密码 public:
void header() //首页欢迎界面 void log_menu() //主界面登录菜单 void admin_menu() //管理菜单 void absearch_menu() //查找书籍菜单 void log_admin() //密码登陆
void rn_search() //按借阅人姓名查找函数 void bnu_search() //按书号查找函数 void bna_search() //按书名查找函数 void bau_search() //按作者查找函数 void bd_search() //按借阅日期查找函数 void bc_search() //按超期天数查找函数 void addBook() //添加新的书籍信息函数 void reviseBook() //修改书籍函数 void delBook() //删除书籍函数 int main()
大全
标准文案
2.2 主程序流程图 输入 书号判断 书号是否 重复 输入要修改的书号判断存在 输入要删除的书号判断存在 按编号查找 按书名查找 按作者查找 按日期查找 按超期查找 退出系统 1:添加新的图书资料 2:修改已有图书资料 3:删除已有图书资料 4:查找已有图书资料 5:查看所有图书资料 6:读取指定位置 TXT 7: 写入指定位置TXT 8:返回系统登录界面 0: 退出图书管理系统 判断是否进入并输入密码 开始 添加书籍 重新 输入 新书 号 修改数据 重新输入书号 删除 书籍 重新输入书号
大全
标准文案
2.3 调用关系
1.书籍信息的录入:
void set_bnum(char *no) //设置书号
{strcpy(bnum,no);} //把字符串no中的字符复制到字符串bnum中 char *get_bnum() //获得书号 { return bnum;} //返回值为bnum void set_bname(char *n) //设置书名
{strcpy(bname,n);}
char *get_bname() //获得书名
{return bname;}
void set_bauthor(char *a) //设置作者
{strcpy(bauthor,a);}
char *get_bauthor() //获得作者姓名
{return bauthor;}
void set_bdays(char *d) //设置借出日期
{strcpy(bdays,d);}
char *get_bdays() //获得借出日期
{return bdays;}
void set_bchao(char *c) //设置超出天数 {strcpy(bchao,c);}
char *get_bchao() //获得超出天数
{return bchao;}
void set_rname(char *rn) //设置借阅人
{strcpy(rname,rn);}
char *get_rname() //获得借阅人姓名
{return rname;}
2.书籍信息的添加: int add(Book book)
判断length是否达到最大值,如果没有则进行添加。 3.书籍信息的查找:
大全
标准文案
无论是按照书号、书名、作者、借阅人、借出日期、超期天数来进行查找都是进行
挨个比较,如果遇到相同则返回书籍的i值,进行返回输出。 4.书籍信息的修改:
输入想要修改的书籍编号,按照查找的方法,找到i,然后进行覆盖。完成修改。
5.书籍的屏幕打印输出:
分两部分输出,首先打印一个头信息,相当于列表的头;然后利用循环语句带参输
出(i为参数,循环)。 6.保存信息到txt文件:
同分为两部分,类似屏幕打印的方法,先存入表头,然后带参循环存入书籍信息。
带参的意义就是,可以无限调用该语句,只要知道书的序号i。 7.从信息中读取txt文件: {
char numb[10]; //书号 char nameb[20]; //书名 char authorb[10]; //作者 char namer[10]; //借阅人 char daysb[10]; //借出日期 struct books
char chaob[10]; //超期天数 };
定义结构体。利用fscanf()语句讲读取的数据按顺序存入结构体中。然后直接利用书籍添加函数直接写入系统。
3调试分析
3.1主要问题及解决方案:
1.界面颜色设定:
一直抛弃黑底白字这种默认形式,换一种颜色给人特殊的感觉,在网上找到相关的
代码为system(\"color **\");语句。但是也是没有头绪不知道怎么调试,后来一不小心设置错误,系统就弹出了提示界面,我就明白了界面颜色的设置方法(图3.1):
大全
标准文案
图3.1
2.关于书籍的cout输出:
最开始设计输出模块时候,仅仅是想到了不带参的book信息输出,show_book()函
数中自带了一个for语句循环输出所有书籍信息,是为显示全部书籍设计的。但是后来发现如果要单显示筛选信息就要从新写一个带参show_book(int i),虽然函数重载允许这样做,但是却无意义的增加了代码长度。我选择删除了不带参的show_book(),把for语句循环写在外面。这样就增加了show_book(int i)函数的利用率,精简了函数的和长度。
3.书籍信息的txt写入:
综合了屏幕打印的经验,鉴于fwrite和cout使用方法和显示效果类似,我决定将txt的写入语句也设置成带参形式saveFile(int i),原理与show_book(int i)基本一致。完成这些就能实现。后来发现文件总是覆盖,每次写入都会将上一次的覆盖,也就是只有最后一行,后来才想起了ios::app追加模式,才最终算完整实现。 4.读取数据函数:
这个函数是我编辑最久的,因为使用的不熟练,我先查找了很多资料,并且写了一
些单独的小程序去测试效果,但是感觉都不理想。后来选择了一个最笨的方法,利用fseek函数一格一格的挑开空格和无用信息。但是这样做最大的缺点就是,我的txt导
大全
标准文案
入文档鼻息保持固定格式,一格空格都不能多,如果多了就会导致错位。后来与徐老师交流时,老师也说这种输入方法不可取,因为实现了功能但是意义不大。规格太死,不够人性化。于是我就退后开始,重新选择语句。最后决定定义结构体,把txt中信息读取之后直接存入结构体,随后就把结构体中的数据利用set_xxxx函数存入。 5.关于字母纠错及错误输入的处理:
字母输入原来都是用fflush(stdin);来清空缓存来防止程序进入死循环。但是我这
次编程想到了一个更加简单有效的方法:利用char 来存储选择,随后强转为int型,其实就是讲所有的字符转为了asc2码,因为acs2码的唯一性,我就可以用switch直接跳过了字母部分,比如我要判断i的输入是否唯1,我就将i-48写入switch判断就好了。
4使用说明
4.1 主要功能介绍及操作步骤:
1.主界面:
2.系统操作界面:
选择1登陆,密码为1043,按任意键进入系统。
大全
标准文案
直接输入数字选择功能。
2: 修改已有图书资料:
1: 添加新的图书资料:
3: 删除已有图书资料:
4: 查找已有图书资料:
大全
标准文案
根据序号选择功能:
按作者查找:
按超期天数查找:
大全
按书名查找:
按借出日期查找:
标准文案
5: 查看所有图书资料: 6: 读取指定位置TXT:
7: 写入指定位置TXT:
5测试结果
5.1 测试数据
1.A 4 asdfasdf(多字母):
大全
标准文案
1000 //目的为测试重复编号的问题
2.修改时候输入未知编号:
3.查找时
大全
标准文案
5.2 测试目的 1、测试学号重复
2、测试字母和特殊字符对输入的影响 3、测试筛选是否符合规格
5.3 测试结果 全部通过
6心得体会
经历了为期十天的编程实习,我觉得我变得更加成熟了,我从一开始的迷茫到后来的目标坚定,这都是一个改变的过程。因为是在暑假前就选好了题目,而且提前也知道了题目的要求。所以我在暑假就做好的了充分的准备。其实最开始想自学用VC++来编写一个可视化的程序。但是实施起来却没有那么容易,因为我学习的VC不系统不全面只是一些皮毛,改改别的还可以,但是要是真正想实现自己的思想就有点捉襟见肘。后决定还是先用比较熟悉的C++语言来编一个完整的系统。虽然以前有做过C++的实验。但是像这种完成的系统确实没有经历过。其实这也是一个挑战,也是一个开始,是我们接触完整系统的开始。
等快开学时候我已经完成了大部分代码:
但是有一些问题还是没有解决,我开学后就开始全力去解决这些问题。偏偏事与愿违,关于文件读取问题始终没有找到好的解决办法。最后还是从c++教科书上找到的灵
大全
标准文案
感来解决这些问题。收获很大。
本次学习中我有以下收获:
1、明确了c与c++的区别,运用了多种c++知识,包括一开始就没弄太明白的文件输入输出,这回事真正弄明白了。
2、复习了类和结构体的知识,但是继承类没有用到。以后还要多加复习。
3、第一次编写之后,运行之后有50多个错误,大多数都是因为马虎造成的。以后还要多加此类的练习熟能生巧。
4、多多利用网络资源,看网上的类似的代码能够开阔自己的思路,学习别人好的算法。 学习有很大帮助。
5、先写出流程图这样是非常好的一种习惯,可以为后面写程序打下好的基础。 6、养成好习惯,一个一个模块写,写好了立即执行看是否有错误,以防都写完了,错误却没法去改正。
10天的编程已经接近尾声,但是总觉得要完善我的选题仍有许多要做的工作。以后还要加强自己的学习。努力学习编程。感谢徐老师的指导。
大全
标准文案
7附录
#include //********书籍结构体,用于存放书籍基本信息******** class Book { private: char bnum[20]; //书号 char bname[20]; //书名 public: void set_bnum(char *no) //设置书号 } Book() //构造函数初始化信息 { strcpy(bnum,\"\"); strcpy(bname,\"\"); strcpy(bauthor,\"\"); strcpy(rname,\"\"); strcpy(bdays,\"\"); char bauthor[10]; //作者 char rname[10]; //借阅人 char bdays[10]; //借出日期 char bchao[10]; //超期天数 strcpy(bchao,\"\"); 大全 标准文案 {strcpy(bnum,no);} //把字符串no中的字符复制到字符串bnum中 char *get_bnum() //获得书号 void set_bname(char *n) //设置书名 {strcpy(bname,n);} { return bnum;} //返回值为bnum char *get_bname() //获得书名 {return bname;} void set_bauthor(char *a) // {strcpy(bauthor,a);} char *get_bauthor() // {return bauthor;} void set_bdays(char *d) // {strcpy(bdays,d);} char *get_bdays() // {return bdays;} void set_bchao(char *c) // {strcpy(bchao,c);} char *get_bchao() // {return bchao;} void set_rname(char *rn) // {strcpy(rname,rn);} char *get_rname() // {return rname;} void copy(Book m) //Book { 大全 设置作者 获得作者姓名 设置借出日期 获得借出日期 设置超出天数 获得超出天数 设置借阅人 获得借阅人姓名 结构体copy函数 标准文案 } }; //**********书籍管理结构体,实现管理书籍功能********** class BookManage { private: Book books[100]; //定义Book书籍结构体数组对象,最大容量100本 strcpy(bnum,m.get_bnum()); //将获得书号函数里的返回值里的字符复制到bnum strcpy(bname,m.get_bname()); strcpy(bauthor,m.get_bauthor()); strcpy(rname,m.get_rname()); strcpy(bdays,m.get_bdays()); strcpy(bchao,m.get_bchao()); public: BookManage() //构造函数,读取磁盘文件 { } length=0; //从头读起,计数,最大100 int length; ~BookManage() //析构函数,保存磁盘文件 { } 大全 标准文案 int add(Book book) //添加图书资料///////////// { if(length>=100) { cout<<\"对不起,储存已满,您无法继续添加!\\n\"; return -1; } else { books[length].copy(book); //调用书籍结构体copy函数 length++; return (length-1); } int bnu_search(char *bnu) //按书号查找书籍 } { for(int i=0;i int bna_search(char *bna) //按书名查找书籍 { for(int i=0;i int bau_search(char *bau) //按作者查找书籍 { for(int i=0;i 标准文案 if(strcmp(books[i].get_bauthor(),bau)==0)//判断 return i; return -1; } int rn_search(char *rn) //按借阅人查找书籍 { for(int i=0;i int bd_search(char *bd) //按借出日期查找书籍 { for(int i=0;i return i; return -1; } int bc_search(char *bc) //按超期天数查找书籍 { for(int i=0;i return i; return -1; } void revise(Book book,int i) //修改书籍函数 { books[i].copy(book); 大全 标准文案 } //调用Book结构体copy函数 void deleteBook(int index) //删除书籍资料函数 { for(int i=index;i length--; } void show_bookhead() //显示输出列表,表头。 { cout<<\" **********************书****籍****信****息****列****表 **********************\\n\\n\"; cout<<\"书号\"; cout.width(15); cout<<\"书名\"; cout.width(15); cout<<\"作者\"; cout.width(15); cout<<\"借阅人\"; cout.width(15); cout<<\"借出日期\"; cout.width(15); cout<<\"超期天数\\n\"; void show_book(int i)//显示书籍函数 } { cout< 标准文案 cout< cout< cout< fwrite<<\" **********************书****籍****信****息****列****表if(!fwrite) { } cout<<\"文件保存失败!\\n\"; exit(1); { ofstream fwrite(\"书籍信息.txt\ **********************\\n\\n\"; fwrite<<\"书号\"; fwrite.width(15); fwrite<<\"书名\"; fwrite.width(15); fwrite<<\"作者\"; fwrite.width(15); fwrite<<\"借阅人\"; fwrite.width(15); fwrite<<\"借出日期\"; fwrite.width(15); fwrite<<\"超期天数\\n\"; void saveFile(int i) //带参的输出书籍到txt fwrite.close(); //关闭磁盘文件 } { 大全 标准文案 ofstream fwrite(\"书籍信息.txt\ fwrite< fwrite< fwrite< } char numb[10]; //书号 char nameb[20]; //书名 char authorb[10]; //作者 char namer[10]; //借阅人 char daysb[10]; //借出日期 char chaob[10]; //超期天数 struct books { void readFile() //读取书籍文件 { }; Book book; //书籍结构体对象book books form[100]; FILE *fp; 大全 标准文案 }; if (NULL==(fp=fopen(\"图书数据库.txt\{ } printf(\"file not open!\\n\"); exit(0); fseek(fp,40,SEEK_SET); //跳开表头40字节 for(int i=0;i<5;i++) { } fscanf(fp, \"%s\fscanf(fp, \"%s\fscanf(fp, \"%s\fscanf(fp, \"%s\fscanf(fp, \"%s\fscanf(fp, \"%s\book.set_bnum(form[i].numb); book.set_bname(form[i].nameb); book.set_bauthor(form[i].authorb); book.set_rname(form[i].namer); book.set_bdays(form[i].daysb); book.set_bchao(form[i].chaob); BookManage::add(book); fflush(stdin); //总是溢出,终于想去了清空缓存,就好了,呵呵 } fclose(fp); //**********菜单结构体,实现界面引导********** 大全 标准文案 class Menu { BookManage bm; //定义书籍管理结构体对象bm private: char choice; //菜单序号选择 int key; //管理员密码 public: int check(int m) //检查语句 { /* int q; do{ while(!(q=scanf(\"%ld\ fflush(stdin); printf(\"输入错误,请重新输入:\"); } }while(q==0); (int) m;*/ return m; } void header() //首页欢迎界面 { // system(\"color A9\"); cout<<\"\ ┎════┰════┒\\n\"; cout<<\"\ ║﹎﹎﹎﹎┃﹎﹎﹎﹎║\\n\"; cout<<\"\ ║﹎﹎﹎﹎┃﹎﹎﹎﹎║\\n\"; cout<<\"\ ║﹎﹎╱╲┃ ﹎﹎﹎ ║\\n\"; 大全 { 标准文案 cout<<\"\ cout<<\"\ _sleep(1000); ║﹎﹎◣╱┃﹎﹎﹎﹎║\\n\"; ┖════┸════┚\\n\"; } cout<<\"\ ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n\"; cout<<\"\ ※ ※\\n\"; cout<<\"\ ※ BESTI 北 京 电 子 科 技 学 院 ※\\n\"; cout<<\"\ ※====================================================※\\n\"; cout<<\"\ ※ 图 书 借 阅 管 理 系 统 1.0 ※\\n\"; cout<<\"\ ※ ※\\n\"; cout<<\"\ ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n\"; _sleep(600); void log_menu() //主界面登录菜单 { // system(\"color fd\"); header(); cout<<\"\\n\\\< 请 选 择 是 否 进 入 >\\n\"; cout<<\"\\n\\\\1: 进 入 系 统\\n\\n\\\\0: 退 出\\n\您的选择是: \"; choice: cin>>choice; cin.ignore(); //清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入 的影响 switch(check-48) { case 1: log_admin(); //登录,需密码验证 break; int check(choice); //检查语句 大全 标准文案 case 0: exit(1); //退出系统 break; } default: } cout<<\"\\n\您的操作有误,请重新选择(0→1): \"; fflush(stdin); goto choice; void admin_menu() //管理菜单 { system(\"cls\"); // system(\"color f9\"); cout<<\"\ ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n\"; cout<<\"\ ※ ※\\n\"; cout<<\"\ ※****************系**统**管**理**界**面**************※\\n\"; cout<<\"\ ※ ※\\n\"; cout<<\"\ ※ 1: 添加新的图书资料 2: 修改已有图书资料 ※\\n\"; cout<<\"\ ※ ※\\n\"; cout<<\"\ ※ 3: 删除已有图书资料 4: 查找已有图书资料 ※\\n\"; cout<<\"\ ※ ※\\n\"; cout<<\"\ ※ 5: 查看所有图书资料 6: 读取指定位置TXT ※\\n\"; cout<<\"\ ※ ※\\n\"; cout<<\"\ ※ 7: 写入指定位置TXT 8:返回系统登录界面 ※\\n\"; cout<<\"\ ※ ※\\n\"; cout<<\"\ ※ 0: 退出图书管理系统 ※\\n\"; cout<<\"\ ※ ※\\n\"; cout<<\"\ ※ ※\\n\"; cout<<\"\ ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\\n\"; cout<<\"\\n\请选择您需要的服务序号: \"; 大全 标准文案 choice: cin>>choice; cin.ignore(); int check(choice); //检查语句 switch(check-48) { case 1: //添加图书 addBook(); bm.~BookManage(); break; case 2: //修改图书 reviseBook(); bm.~BookManage(); break; case 3: //删除图书 delBook(); bm.~BookManage(); break; case 4: //查找图书 absearch_menu(); break; case 5: //查看全部图书 { bm.show_bookhead(); for(int j=0;j 大全 标准文案 break; } case 6: { cout<<\"请将命名为图书数据库.txt的文件放置在程序所在目录下。\"< case 7: { cout<<\"讲程序保存在当前目录下,名为:书籍信息.txt\"< cout<<\"请稍后...系统正在处理中...\"< 标准文案 _sleep(2000); admin_menu(); } case 8: //返回系统登录界面 system(\"cls\"); log_menu(); case 0: //退出系统 exit(1); break; default: cout<<\"\\n\您的操作有误,请重新选择(0→8): \"; fflush(stdin); goto choice; } } void absearch_menu() //查找书籍菜单 { system(\"cls\"); // system(\"color f2\"); cout<<\"\\\※※※※※※※※※※※※※※※※※\\n\"; cout<<\"\\\※ ※\\n\"; cout<<\"\\\※****书**籍**查**找**界**面****※\\n\"; cout<<\"\\\※ ※\\n\"; cout<<\"\\\※ 1: 按 编号查找 ※\\n\"; cout<<\"\\\※ ※\\n\"; cout<<\"\\\※ 2: 按 书名查找 ※\\n\"; cout<<\"\\\※ ※\\n\"; 大全 标准文案 cout<<\"\\\※ 3: 按 作者查找 ※\\n\"; cout<<\"\\\※ ※\\n\"; cout<<\"\\\※ 4: 按 日期查找 ※\\n\"; cout<<\"\\\※ ※\\n\"; cout<<\"\\\※ 5: 按 超期查找 ※\\n\"; cout<<\"\\\※ ※\\n\"; cout<<\"\\\※ 6: 返 回 上 级 ※\\n\"; cout<<\"\\\※ ※\\n\"; cout<<\"\\\※ 0: 退 出 系 统 ※\\n\"; cout<<\"\\\※ ※\\n\"; cout<<\"\\\※※※※※※※※※※※※※※※※※\\n\"; char bsc; //book search choice cout<<\"\\n\请输入您需要的服务序号: \"; cin>>bsc; cin.ignore(); int check(bsc); //检查语句 switch(check-48) { case 1: bnu_search(); case 2: bna_search(); case 3: bau_search(); case 4: break; break; break; 大全 标准文案 bd_search(); break; case 5: bc_search(); break; case 6: admin_menu(); break; case 0: exit(1); default: cout<<\"\\n\操作有误,请重新选择<0→6>\"; fflush(stdin); break; } } void log_admin() // /////////////////////////////////////////////////////// { cout<<\"\\n\请输入登陆密码:\"; int key; cin>>key; if( key==1043) { cout<<\"\\n\登录成功!\\n\\n\\"; system(\"pause\"); admin_menu(); //操作菜单 大全 密 码 登 陆 标准文案 } else { cout<<\"\\n\登录失败!原因是密码错误!\\n\"; cout<<\"\\n\请选择 <1:返回上一级菜单 0:退出系统> \"; cin>>choice; cin.ignore(); int check(choice); //检查语句 switch(check-48) { case 1: cout<<\"\\n\请稍后,界面即将刷新...\\n\"; _sleep(600); system(\"cls\"); log_menu(); break; case 0: exit(1); break; } default: } } cout<<\"\\n\操作有误,请重新选择(0/1)\"; void rn_search() //按姓名查找函数 { char rn[10]; //reader name cout<<\"\\n\请输入您的姓名:\"; cin>>rn; int index=bm.rn_search(rn); 大全 标准文案 if(index>=0) { bm.show_bookhead(); bm.show_book(index); } else cout<<\"\\n\对不起,系统无您的借阅记录!\"; cout<<\"\\n\\"; system(\"pause\"); absearch_menu(); } void bnu_search() //按书号查找函数 { char bnu[10]; cout<<\"\\n\请输入您要查找的书号:\"; cin>>bnu; int index=bm.bnu_search(bnu); if(index>=0) { bm.show_bookhead(); bm.show_book(index); } else cout<<\"\\n\对不起,系统无该书籍记录!\"; cout<<\"\\n\\"; system(\"pause\"); absearch_menu(); } void bna_search() //按书名查找函数 { 大全 标准文案 cout<<\"\\n\请输入您要查找的书名:\"< int index=bm.bna_search(bna); if(index>=0) { bm.show_bookhead(); bm.show_book(index); } else cout<<\"\\n\对不起,系统无该书籍记录!\"; cout<<\"\\n\\"; system(\"pause\"); absearch_menu(); } void bau_search() //按作者查找函数 { cout<<\"\\n\请输入您要查找的作者:\"< int index=bm.bau_search(bau); if(index>=0) { bm.show_bookhead(); bm.show_book(index); } else cout<<\"\\n\对不起,系统无该书籍记录!\"; cout<<\"\\n\\"; system(\"pause\"); absearch_menu(); 大全 标准文案 } void bd_search() //按借阅日期查找函数 { char bd[10]; cout<<\"\\n\请输入您要查找的借出日期:\"; cin>>bd; int index=bm.bd_search(bd); if(index>=0) { bm.show_bookhead(); bm.show_book(index); } else cout<<\"\\n\对不起,系统无该借阅记录!\"; cout<<\"\\n\\"; system(\"pause\"); absearch_menu(); } void bc_search() //按超期天数查找函数 { char bc[10]; cout<<\"\\n\请输入您要查找超期多久的书籍:\"; cin>>bc; if(index>=0) { } bm.show_bookhead(); bm.show_book(index); int index=bm.bc_search(bc); else 大全 标准文案 cout<<\"\\n\对不起,系统无该书籍记录!\"; cout<<\"\\n\\"; system(\"pause\"); absearch_menu(); } void addBook() //添加新的书籍信息函数 { char numb[10]; //书号 char nameb[20]; //书名 char authorb[10]; //作者 char namer[10]; //借阅人 char daysb[10]; //借出日期 char chaob[10]; //超期天数 Book book; //书籍结构体对象book input1:cout<<\"\\n\请输入新的书号:\"; cin>>numb; int index=bm.bnu_search(numb); if(index==-1) { cout<<\"\\n\系统目前尚无该书记录,您可以继续操作!\\n\"; cout<<\"\\n\请输入新书书名:\"; cin>>nameb; cout<<\"\\n\请输入新书作者:\"; cin>>authorb; cout<<\"\\n\请输入借阅人:\"; cin>>namer; cout<<\"\\n\请输入借出日期:\"; cin>>daysb; cout<<\"\\n\请输入超期天数:\"; cin>>chaob; book.set_bnum(numb); book.set_bname(nameb); 大全 标准文案 book.set_bauthor(authorb); book.set_rname(namer); book.set_bdays(daysb); book.set_bchao(chaob); bm.add(book); cout<<\"\\n\恭喜您!新书资料录入成功!\"; } else void reviseBook() //修改书籍函数 system(\"pause\"); admin_menu(); } { cout<<\"\\n\对不起,该书号纪录已存在!请重新输入!\"; goto input1; } { char numb[10]; char nameb[20]; char authorb[10]; char namer[10]; //借阅人 char daysb[10]; //借出日期 char chaob[10]; //超期天数 Book book; int index=-1; input2: cout<<\"\\n\请输入您要修改书籍的书号:\"; cin>>numb; index=bm.bnu_search(numb); if(index==-1) { 大全 标准文案 cout<<\"\\n\对不起,您输入的书号不存在,请重新输入!\"< return; } cout<<\"\\n\请输入更改后的书名:\"; cin>>nameb; cout<<\"\\n\请输入更改后的作者:\"; cin>>authorb; cout<<\"\\n\请输入更改后的借阅人:\"; cin>>namer; cout<<\"\\n\请输入更改后的借出日期:\"; cin>>chaob; cout<<\"\\n\请输入更改后的超期时间:\"; cin>>authorb; book.set_bnum(numb); book.set_bname(nameb); book.set_bauthor(authorb); book.set_rname(namer); book.set_bdays(daysb); book.set_bchao(chaob); bm.revise(book,index); cout<<\"\\n\恭喜您!书籍资料修改成功!\"; system(\"pause\"); admin_menu(); } void delBook() //删除书籍函数 { char numb[10]; cout<<\"\\n\请输入您要删除书籍的书号:\"; 大全 标准文案 cin>>numb; int index=bm.bnu_search(numb); if(index>=0) { cout<<\"\\n\您确定要删除该书记录吗(y/n) \"; char y; cin>>y; if(y=='y'||y=='Y') { bm.deleteBook(index); cout<<\"\\n\删除成功!\"; } else cout<<\"\\n\删除取消!\"; } else cout<<\"\\n\对不起,系统没有该图书记录!\"; system(\"pause\"); admin_menu(); } }; //********主函数******** int main() { system(\"color f0\"); Menu menu; //定义菜单结构体对象menu cout<<\"\\\ 当前日期:\";system(\"DATE [/T]\"); cout<<\"\\\ 当前时间: \";system(\"TIME [/T]\"); cout<<\"\\n\\\ ★ 欢 \"; _sleep(600); cout<<\"★ 迎 \"; 大全 标准文案 } _sleep(600); cout<<\"★ 进 \"; _sleep(600); cout<<\"★ 入 ★\\n\\n\"; menu.log_menu(); return 0; 大全 因篇幅问题不能全部显示,请点此查看更多更全内容