网站首页 公文大全 个人文档 实用范文 讲话致辞 实用工具 心得体会 哲学范文 总结范文 范文大全 报告 合同 文书 信函 实用
  • 个人工作总结
  • 年终工作总结
  • 班主任工作总结
  • 教学工作总结
  • 财务工作总结
  • 政务工作总结
  • 党团工作总结
  • 百花范文网 > 总结范文 > 教学工作总结 > 图书馆程序设计程序设计综合课程设计报告|

    图书馆程序设计程序设计综合课程设计报告|

    时间:2021-11-13 01:16:42来源:百花范文网本文已影响

    XX学院计算机科学与技术系 信息管理与信息系统专业 《程序设计综合课程设计》报告 (2010/2011学年 第一学期) 学生姓名:
    学生班级:
    信息管理与信息系统 学生学号:
    指导教师:
    2010年 月 日 目 录 课程设计的目的.......................................... 3 课程设计实任务内容.......................................3 课程设计要求.............................................3 系统功能模块图...........................................3 详细设计说明.............................................4 部分函数流程图 ..........................................6 程序调试.................................................7 课程设计心得与体会......................................11 附录:源程序代码........................................12 一、 课程设计的目的 加深对C语言课程所学知识的理解,进一步巩固C语言算法规则.学会编制结构清晰.风格良好.数据结构适当的C程序,从而具备解决综合性问题的能力. 二、 课程设计实任务内容:图书馆 图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。

    三、 课程设计要求 (1)每种书的登记内容至少包括书号、书名、著者、现存量和总库量等五项 (2)作为演示系统,不必使用文件,全部数据可以都内存存放。但是由于上述四项基本业务活动都是通过书号(关键码)进行的,所以要用B树(2-3阶数)对书号建立索引,以获得高效率。

    (3)系统应实现的操作及定义如下:
    A、采编入库:新购入一种书,经分类和确定书号之后登记到图书帐目中去。如果这种书在帐中已有,则只将总库存量增加。

    B、清除库存:某种书已无保留价值,将它从图书帐目中注销。

    C、借阅:如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。

    D、归还:注销对借阅者的登记,改变该书的现存量。

    E、显示:用凹入表的形式显示B树。

    四、 系统功能模块图 五、 详细设计说明 书籍结构体(Book) ①私有数据 char bnum[10]; //书号 char bname[20]; //书名 char bauthor[10]; //作者 char rname[10]; //借阅人 ②公有数据及公有函数 int tag; //状态标记判断指标(已借/在架) 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_tag(int t) //状态设置 void set_rname(char *rn) //设置借阅人 char *get_rname() //获得借阅人姓名 void show_tag() //显示图书状态 void copy(Book m) //Book结构体copy函数 书籍管理结构体(BookManage) ① 私有数据及函数 Book books[100]; //定义Book书籍结构体数组对象,最大容量100本 int length; //计数 void saveFile() //保存书籍文件 void readFile() //读取书籍文件 ②公有数据及函数 BookManage() //构造函数,读取磁盘文件 ~BookManage() //析构函数,保存磁盘文件 bool add(Book book) //添加图书资料 int bnu_search(char *bnu) //按书号查找书籍 int bna_search(char *bna) //按书名查找书籍 int bau_search(char *bau) //按作者查找书籍 int rn_search(char *rn) //按借阅人查找书籍 void revise(Book book,int i)//带参的修改书籍函数 void deleteBook(int index)//带参的删除书籍资料函数 void show_book()//不带参的显示书籍函数 void show_book(int i)//带参的显示书籍函数 void br_book()//读者借、还书功能函数 bool in(int i) //判断图书是否在架函数 读者结构体(Reader) ①私有数据及函数 char rname[10]; //读者姓名 char rclass[10]; //班级 char rtel[10]; //电话 ②公有数据及函数 Reader() //构造函数,实现数据初始化 void set_rname(char *rn) //设置读者姓名 char * get_rname() //获得读者姓名 void set_rclass(char *rc) //设置班级 char *get_rclass() //获得班级 void set_rtel(char *rt) //设置电话 char *get_rtel() //获得电话 void copy(Reader m) //读者Reader结构体copy函数 读者管理结构体(ReaderManage) ①私有数据及函数 Reader readers[50]; //定义读者结构体数组对象,最多50位 int length; //计数 void readFile() //读取读者文件函数 void saveFile() //保存读者文件 ②公有数据及函数 ReaderManage() //构造函数,读取读者文件 ~ReaderManage() //析构函数,保存读者文件 void add_reader(Reader r) //添加读者用户函数 int search(char *rn) //按姓名查找读者函数 bool revise(Reader reader,int i) //修改读者资料函数 void delete_reader(int index) //删除读者函数 bool log_reader(Reader r) //登录时判断读者用户是否存在函数 void reg_reader() //注册用户函数 void show_reader() //不带参的显示读者信息函数 void show_reader(int i) //带参的显示读者信息函数 菜单结构体(Menu) ①私有数据及函数 BookManage bm; //定义书籍管理结构体对象bm ReaderManage rm; //定义读者管理结构体对象rm Reader r; //定义读者结构体对象r int choice; //菜单序号选择 int key; //管理员密码 ②公有数据及函数 void header() //页眉 void log_menu() //主界面登录菜单 void admin_menu() //管理员管理菜单 void reader_menu() //读者服务菜单 void bsearch_menu() //读者查找书籍菜单 void absearch_menu() //管理员查找书籍菜单 void reader_lr() //读者登录或注册菜单 void log_admin() //管理员登录 void rn_search() //按书号查找函数 void bnu_search() //按书号查找函数 void bna_search() //按书名查找函数 void bau_search() //按作者查找函数 void addBook() //新增书籍函数 void reviseBook() //修改书籍函数 void delBook() //删除书籍函数 void reviseReader()//修改读者用户函数 void delReader() //删除读者用户函数 主函数(main) int main() 六、 部分函数流程图 ①管理员登录 ②读者登录 ③读者借阅图书 ④管理员或读者按书名查找图书 七、 程序调试 各界面菜单显示 ①主登录界面 ②系统管理界面 ③读者登录界面 ④读者服务界面 ⑤书籍查找界面 登录验证 ①管理员登录 A. 输入错误密码 B.输入正确密码 ②读者登录 A. 输入已注册姓名 B.输入未注册姓名 注册新读者用户 添加新的图书资料 ①输入已存在图书书号 ②输入未存在图书书号 修改已有图书资料 ①输入不存在图书书号 ②输入已存在图书书号 删除已有图书资料 ①输入不存在图书书号 ②输入已存在图书书号 查找已有图书资料(以按书号查找为例) ①输入不存在图书书号 ②输入已存在图书书号 2.4.8显示所有图书资料 八、 课程设计心得与体会 经过近三个星期的努力,前后修修改改,调试又调试,我的C++图书管理系统终于得以诞生!在这个过程中,我发现自己还有很多很多知识都没有学好,看别人的例子的时候好像很简单,自己一上机操作就有问题。调试的时候系统总是报错,还有很多警告,每添加一个函数,往往都要要调试很久,有时候仅仅只是少了一个大括号,却花上近半个小时才找到问题的瓶颈所在。系统虽然完成了,也可以运行,一些基本的功能也能够实现,但我知道,还有很多的不足。另外,我发现帮助文件真的很有用,每当我看别人例子看不懂的时候,都是去帮助文件搜索,如果里面的信息不够完整,再利用各大网站的搜索引擎来寻找答案,比如更改背景颜色的问题,之前试了很多次都不行,后来偶然发现一个MS-DOS命令大全,然后再去网上搜索color命令的使用语法,原来以为很复杂的代码,只需一句system(color fd),问题就迎刃而解了。以后还会有很多课程设计,一定要吸取这次的教训,知识不是看过就可以了,而是要把知识学透、学精,才能够真正做到为我所用。

    九、 附录 #include <iostream> #include <iomanip> #include <string> #include <fstream> #include <conio.h> #define BookFile “book.txt“ //将字符串BookFile替换原文件中的宏名称book #define ReaderFile “reader.txt“ using namespace std; //**********读者结构体,用于存放读者基本信息********** class Reader { private: char rname[10]; char rclass[10]; char rtel[10]; public: Reader() //构造函数,实现数据初始化 {strcpy(rname,““);strcpy(rclass,““);strcpy(rtel,““);} 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) {cout<<“读取磁盘文件失败!“<<endl;exit(1);} fread.open(ReaderFile,ios::binary);//使文件流与文件关联,以二进制方式打开 int i=0; while((fread.read((char *)&readers[i],sizeof(Reader))))//计算并返回所占字节数 i++; length=i; fread.close();//关闭磁盘文件 } void saveFile() //保存读者文件 { ofstream fwrite; //定义输出文件流对象fwrite if(!fwrite) {cout<<“文件保存失败!\n“; exit(1); } fwrite.open(ReaderFile,ios::binary);//使文件流与文件关联,以二进制方式打开 fwrite.write((char *)readers,length*sizeof(Reader));//计算并返回所占字节数 fwrite.close(); //关闭磁盘文件 } public: ReaderManage() //构造函数,读取读者文件 {readFile();} ~ReaderManage() //析构函数,保存读者文件 {saveFile();} void add_reader(Reader r) //添加读者用户函数 { if(length>=50) {cout<<“对不起,注册人数已满!\n“;return ;} readers[length].copy(r); //调用读者结构体copy函数 length++; } int search(char *rn) //按姓名查找读者函数 { for(int i=0;i<length;i++) if(strcmp(readers[i].get_rname(),rn)==0)//判断是否相等 return i; return -1; } bool revise(Reader reader,int i) //修改读者资料函数 { readers[i].copy(reader); //调用读者结构体cpoy函数 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) //登录时判断读者用户是否存在函数 { 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 char c[10]; //班级class char t[10]; //电话tel Reader reader; cout<<“\n\t请输入您的姓名:“; cin>>n; cout<<“\n\t请输入您的所在班级:“; cin>>c; cout<<“\n\t请输入您的联系电话:“; cin>>t; reader.set_rname(n); //调用读者结构体设置读者姓名函数 reader.set_rclass(c); //调用读者结构体设置读者班级函数 reader.set_rtel(t); //调用读者结构体设置联系电话函数 add_reader(reader); //调用读者结构体添加读者函数 cout<<“\n\t注册成功!“; } void show_reader() //不带参的显示读者信息函数 { 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(); 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“; cout<<readers[i].get_rname(); cout<<“\t\t\t“<<readers[i].get_rclass(); cout<<“\t\t\t“<<readers[i].get_rtel()<<“\n“; } }; //********书籍结构体,用于存放书籍基本信息******** class Book { private: char bnum[10]; //书号 char bname[20]; //书名 char bauthor[10]; //作者 char rname[10]; //借阅人 public: int tag; //状态标记判断指标(已借/在架) Book() //构造函数初始化信息 {strcpy(bnum,““);strcpy(bname,““);strcpy(bauthor,““);strcpy(rname,““);tag=0;} 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_tag(int t) //状态设置 {tag=t;} void set_rname(char *rn) //设置借阅人 {strcpy(rname,rn);} char *get_rname() //获得借阅人姓名 {return rname;} void show_tag() //显示图书状态 { if(tag==1) {cout<<“已借“;} else {cout<<“在架“;} } void copy(Book m) //Book结构体copy函数 { strcpy(bnum,m.get_bnum()); //将获得书号函数里的返回值里的字符复制到bnum strcpy(bname,m.get_bname()); strcpy(bauthor,m.get_bauthor()); tag=0; } }; //**********书籍管理结构体,实现管理书籍功能********** class BookManage { private: Book books[100]; //定义Book书籍结构体数组对象,最大容量100本 int length; void saveFile() //保存书籍文件 { ofstream fwrite; //定义输出文件流ofstream结构体对象fwrite if(!fwrite) {cout<<“文件保存失败!\n“; exit(1); } fwrite.open(BookFile,ios::binary);//使文件流与文件建立关联,以二进制方式打开 fwrite.write((char *)books,length*sizeof(Book)); //计算并返回所占字节数 fwrite.close(); //关闭磁盘文件 } void readFile() //读取书籍文件 { ifstream fread; //定义输入文件流对象fread length=0; if(!fread) {cout<<“文件读取失败!“<<endl;exit(1);} Book temp; //定义书籍结构体临时对象temp int i=0; fread.open(BookFile ,ios::binary);//使文件流与文件建立关联,以二进制方式打开 while((fread.read((char *)&books[i],sizeof(Book)))) i++; //每读完一次,指针后移一位,直到不能读出正确结果为止 length=i; fread.close(); } public: BookManage() //构造函数,读取磁盘文件 { length=0; //从头读起,计数,最大100 readFile(); //调用读取文件函数 } ~BookManage() //析构函数,保存磁盘文件 { saveFile(); //调用保存文件函数 } bool 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<length;i++) if(strcmp(books[i].get_bnum(),bnu)==0) //字符串比较,判断是否相等 return i; return -1; } int bna_search(char *bna) //按书名查找书籍 { for(int i=0;i<length;i++) if(strcmp(books[i].get_bname(),bna)==0) //判断 return i; return -1; } int bau_search(char *bau) //按作者查找书籍 { for(int i=0;i<length;i++) if(strcmp(books[i].get_bauthor(),bau)==0)//判断 return i; return -1; } int rn_search(char *rn) //按借阅人查找书籍 { for(int i=0;i<length;i++) if(strcmp(books[i].get_rname(),rn)==0)//判断 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-1;i++) books[i].copy(books[i+1]);//用后面的地址将当前的地址覆盖 length--; } void show_book()//不带参的显示书籍函数 { cout<<“ **********************书****籍****信****息****列****表**********************\n\n“; cout<<“书号“; cout.width(10); cout<<“书名“; cout.width(20); cout<<“作者“; cout.width(10); cout<<“状态“; cout.width(10); cout<<“借阅人\n“; for(int i=0;i<length;i++) { cout<<books[i].get_bnum(); cout.width(10); cout<<books[i].get_bname(); cout.width(20); cout<<books[i].get_bauthor();; cout.width(10); books[i].show_tag(); cout.width(10); cout<<books[i].get_rname()<<“\n“; } } void show_book(int i)//带参的显示书籍函数 { cout<<“ **********************书****籍****信****息****列****表**********************\n\n“; cout<<“书号“; cout.width(10); cout<<“书名“; cout.width(20); cout<<“作者“; cout.width(10); cout<<“状态“; cout.width(10); cout<<“借阅人\n“; cout<<books[i].get_bnum(); cout.width(10); cout<<books[i].get_bname(); cout.width(20); cout<<books[i].get_bauthor();; cout.width(10); books[i].show_tag(); cout.width(10); cout<<books[i].get_rname()<<“\n“; } void br_book()//读者借、还书功能函数 { ReaderManage reader; int choi; //选择 int a; //图书状态指标(1已借2在架) char sh[10]; //需要还书的书号 char dz[10]; //读者姓名 cin>>sh; int index=bnu_search(sh); //定义一个变量等于查找到的书号 if(index>=0) { if(books[index].tag==1) //已借 a=1; if(books[index].tag==0) //在架 a=2; switch(a) { case 1: cout<<“\n\t该书目前状态为<已借出>\n“; cout<<“\n\t请选择您需要的服务:1:还书 0:返回\n“; cin>>choi; cin.ignore(); //清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响 if(choi!=1&&choi!=0) { cout<<“\n\t操作有误,请重新选择(0/1)!\n“; return; } else if(choi==1) { cout<<“\n\t请输入您的姓名:“; cin>>dz; cin.ignore(); int index1=reader.search(dz); if(index1==-1) { cout<<“\n\t对不起,系统无该读者记录,新用户请先注册!“; return; } else { strcpy(dz,““);//将读者姓名已空白代替 books[index].set_rname(dz);//借阅人一项变为空白 books[index].set_tag(0);//图书状态变为在架 cout<<“\n\t还书成功!“<<endl; } }break; case 2: cout<<“\n\t该书目前状态为<在馆>\n“; cout<<“\n\t请您需要的服务:1:借书 0:返回\n“; cin>>choi; cin.ignore(); if(choi!=1&&choi!=0) { cout<<“\n\t操作有误,请重新选择(0/1)!\n“; return; } else if(choi==1) { cout<<“\n\t请输入您的姓名:“; cin>>dz; int index1=reader.search(dz); if(index1==-1) { cout<<“\n\t对不起,系统无改读者记录,新用户请先注册!“; return; } else { books[index].set_rname(dz); books[index].set_tag(1); cout<<“\n\t借书成功!“<<endl; } }break; } } else { cout<<“\n\t对不起,系统无该书记录!“;} } bool in(int i) //判断图书是否在架函数 { if(books[i].tag==1) return false; return true; } }; //**********菜单结构体,实现界面引导********** class Menu { BookManage bm; //定义书籍管理结构体对象bm ReaderManage rm; //定义读者管理结构体对象rm Reader r; //定义读者结构体对象r private: int choice; //菜单序号选择 int key; //管理员密码 public: void header() //页眉 { system(“color fd“); cout<<“\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ 图 书 借 阅 管 理 系 统 ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n“; } void log_menu() //主界面登录菜单 { system(“color fd“); header(); cout<<“\n\t\t\t< 请 选 择 登 录 身 份 >\n“; cout<<“\n\t\t\t\t1: 管理员\n\n\t\t\t\t2: 读 者\n\n\t\t\t\t0: 退 出\n\t您的选择是:
    “; choice: cin>>choice; cin.ignore(); //清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响 switch(choice) { case 1: log_admin(); //管理员登录,需密码验证 break; case 2: reader_lr(); //读者登录或注册 break; case 0: exit(1); //退出系统 break; default: cout<<“\n\t您的操作有误,请重新选择(0→2): “; goto choice; } } void admin_menu() //管理员管理菜单 { system(“cls“); system(“color f9“); cout<<“\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※****************系**统**管**理**界**面**************※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ 1: 添加新的图书资料 2: 修改已有图书资料 ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ 3: 删除已有图书资料 4: 查找已有图书资料 ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ 5: 查看所有图书资料 6: 修改读者用户信息 ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ 7: 删除读者用户信息 8: 查看所有读者信息 ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ 9: 返回系统登录界面 0: 退出图书管理系统 ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n“; cout<<“\n\t请选择您需要的服务序号:
    “; choice: cin>>choice; cin.ignore(); switch(choice) { 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_book(); cout<<“\n\t显示完毕!“; system(“pause“); admin_menu(); break; case 6: //修改读者 reviseReader(); rm.~ReaderManage(); break; case 7: //删除读者 delReader(); rm.~ReaderManage(); break; case 8: //查看所有读者 rm.show_reader(); cout<<“\n\t显示完毕!“; system(“pause“); admin_menu(); break; case 9: //返回系统登录界面 system(“cls“); log_menu(); case 0: //退出系统 exit(1); break; default: cout<<“\n\t您的操作有误,请重新选择(0→7): “; goto choice; } } void reader_menu() //读者服务菜单 { system(“cls“); system(“color f9“); cout<<“\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※****************读**者**服**务**界**面**************※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ 1: 借 阅 图 书 2: 归 还 图 书 ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ 3: 查 找 图 书 4: 借 阅 情 况 ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ 5: 返 上 一 级 0: 退 出 系 统 ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※ ※\n“; cout<<“\t ※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n“; cout<<“\n\t请选择您需要的服务序号:
    “; choice: cin>>choice; cin.ignore(); switch(choice) { case 1: cout<<“\n\t请输入您欲借阅的图书书号: “; bm.br_book(); bm.~BookManage(); break; case 2: cout<<“\n\t请输入您欲归还的图书书号: “; bm.br_book(); bm.~BookManage(); break; case 3: bsearch_menu(); break; case 4: rn_search(); break; case 5: system(“cls“); reader_lr(); break; case 0: exit(1); break; default: cout<<“\n\t您的操作有误,请重新选择(0→5): “; goto choice; } } void bsearch_menu() //读者查找书籍菜单 { system(“cls“); system(“color f2“); cout<<“\t\t\t※※※※※※※※※※※※※※※※※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※****书**籍**查**找**界**面****※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※ 1: 按 书号查找 ※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※ 2: 按 书名查找 ※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※ 3: 按 作者查找 ※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※ 4: 返 回 上 级 ※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※ 0: 退 出 系 统 ※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※※※※※※※※※※※※※※※※※\n“; int bsc; //book search choice cout<<“\n\t请输入您需要的服务序号:
    “; cin>>bsc; cin.ignore(); switch(bsc) { case 1: bnu_search(); break; case 2: bna_search(); break; case 3: bau_search(); break; case 4: reader_menu(); break; case 5: exit(1); default: cout<<“\n\t操作有误,请重新选择<0→4>“; break; } } void absearch_menu() //管理员查找书籍菜单 { system(“cls“); system(“color f2“); cout<<“\t\t\t※※※※※※※※※※※※※※※※※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※****书**籍**查**找**界**面****※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※ 1: 按 书号查找 ※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※ 2: 按 书名查找 ※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※ 3: 按 作者查找 ※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※ 4: 返 回 上 级 ※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※ 0: 退 出 系 统 ※\n“; cout<<“\t\t\t※ ※\n“; cout<<“\t\t\t※※※※※※※※※※※※※※※※※\n“; int bsc; //book search choice cout<<“\n\t请输入您需要的服务序号:
    “; cin>>bsc; cin.ignore(); switch(bsc) { case 1: bnu_search(); break; case 2: bna_search(); break; case 3: bau_search(); break; case 4: admin_menu(); break; case 5: exit(1); default: cout<<“\n\t操作有误,请重新选择<0→4>“; break; } } void reader_lr() //读者登录或注册菜单 { system(“cls“); header(); system(“color f1“); cout<<“\n\t\t\t< 读 者 登 录 界 面 >\n“; cout<<“\n\t\t\t 1: 登 录\t2: 注 册\n\n\t\t\t 3: 返 回\t0: 退 出\n\t您的选择是:
    “; int rlc; //reader login choice choice: cin>>rlc; cin.ignore(); switch(rlc) { case 1: //已注册读者登录 cout<<“\n\t请输入您的姓名: “; char rn[10]; //reader name cin>>rn; r.set_rname(rn); if(rm.log_reader(r)) { cout<<“\n\t登录成功!“; system(“pause“); reader_menu(); } else cout<<“\n\t登录失败!新用户请先注册!“; system(“pause“); reader_lr(); break; case 2: //新用户注册 rm.reg_reader(); rm.~ReaderManage(); system(“pause“); reader_lr(); break; case 3: system(“cls“); log_menu(); case 0: exit(1); break; default: cout<<“\n\t您的操作有误,请重新选择(0→2): “; goto choice; } } void log_admin() //管理员登录 { cout<<“\n\t请输入管理员密码:“; int key; cin>>key; if(key==2009) { cout<<“\n\t登录成功!\n\n\t“; system(“pause“); admin_menu(); //管理员操作菜单 } else {cout<<“\n\t登录失败!原因是密码错误!\n“; cout<<“\n\t请选择 <1:返回上一级菜单 0:退出系统> “; cin>>choice; cin.ignore(); switch(choice) { case 1: system(“cls“); log_menu(); break; case 0: exit(1); break; default: cout<<“\n\t操作有误,请重新选择(0/1)“; } } } void rn_search() //按书号查找函数 { char rn[10]; //reader name cout<<“\n\t请输入您的姓名:“; cin>>rn; int index=bm.rn_search(rn); if(index>=0) bm.show_book(index); else cout<<“\n\t对不起,系统无您的借阅记录!“; cout<<“\n\t“; system(“pause“); reader_menu(); } void bnu_search() //按书号查找函数 { char bnu[10]; cout<<“\n\t请输入您要查找的书号:“; cin>>bnu; int index=bm.bnu_search(bnu); if(index>=0) bm.show_book(index); else cout<<“\n\t对不起,系统无该书籍记录!“; cout<<“\n\t“; system(“pause“); bsearch_menu(); } void bna_search() //按书名查找函数 { cout<<“\n\t请输入您要查找的书名:“<<endl; char bna[20]; cin>>bna; int index=bm.bna_search(bna); if(index>=0) bm.show_book(index); else cout<<“\n\t对不起,系统无该书籍记录!“; cout<<“\n\t“; system(“pause“); bsearch_menu(); } void bau_search() //按作者查找函数 { cout<<“\n\t请输入您要查找的作者:“<<endl; char bau[10]; cin>>bau; int index=bm.bau_search(bau); if(index>=0) bm.show_book(index); else cout<<“\n\t对不起,系统无该书籍记录!“; cout<<“\n\t“; system(“pause“); bsearch_menu(); } void addBook() //新增书籍函数 { char numb[10]; //书号 char nameb[20]; //书名 char authorb[10]; //作者 Book book; //书籍结构体对象book int tag1; input1:cout<<“\n\t请输入新书书号:“; cin>>numb; int index=bm.bnu_search(numb); if(index==-1) { cout<<“\n\t系统目前尚无该书记录,您可以继续操作!\n“; cout<<“\n\t请输入新书书名:“; cin>>nameb; cout<<“\n\t请输入新书作者:“; cin>>authorb; tag1=0; book.set_bnum(numb); book.set_bname(nameb); book.set_bauthor(authorb); book.set_tag(tag1); bm.add(book); cout<<“\n\t恭喜您!新书资料录入成功!“; } else { cout<<“\n\t对不起,该书号纪录已存在!请重新输入!“; goto input1; } system(“pause“); admin_menu(); } void reviseBook() //修改书籍函数 { char numb[10]; char nameb[20]; char authorb[10]; Book book; int index=-1; input2: cout<<“\n\t请输入您要修改书籍的书号:“; cin>>numb; index=bm.bnu_search(numb); if(index==-1) { cout<<“\n\t对不起,您输入的书号不存在,请重新输入!“<<endl; goto input2; return; } bool sta=bm.in(index); //判断是否在馆 if(sta) { cout<<“\n\t该书目前处于<在架>状态,您可以继续操作!“; cout<<“\n\t请输入更改后的书名:“; cin>>nameb; cout<<“\n\t请输入更改后的作者:“; cin>>authorb; book.set_bnum(numb); book.set_bname(nameb); book.set_bauthor(authorb); bm.revise(book,index); cout<<“\n\t恭喜您!书籍资料修改成功!“;} else cout<<“\n\t该书已被借出,请于读者归还后再进行相关操作!“<<endl; system(“pause“); admin_menu(); } void delBook() //删除书籍函数 { char numb[10]; cout<<“\n\t请输入您要删除书籍的书号:“; cin>>numb; int index=bm.bnu_search(numb); if(index>=0) { cout<<“\n\t您确定要删除该书记录吗(y/n) “; char y; cin>>y; if(y=='y'||y=='Y') { bm.deleteBook(index); cout<<“\n\t删除成功!“; } else cout<<“\n\t删除取消!“; } else cout<<“\n\t对不起,系统没有该图书记录!“; system(“pause“); admin_menu(); } void reviseReader()//修改读者用户函数 { char namer[10]; Reader reader; get1: cout<<“\n\t请输入你要修改读者用户的姓名: “; cin>>namer; int index=rm.search(namer); if(index==-1) { cout<<“\n\t对不起,系统无改读者记录,重新输入请按1,返回请按0: “; int a; cin>>a; get2: cin.ignore(); switch(a) { case 1: goto get1; break; case 0: system(“pause“); admin_menu(); break; default: cout<<“\n\t您的操作有误,请重新选择(0/1): “; goto get2; } return; } else { char namer[10]; char classr[10]; char telr[10]; Reader reader; cout<<“\n\t请输入更改后的读者姓名:“; cin>>namer; cout<<“\n\t请输入更改后的班级名称:“; cin>>classr; cout<<“\n\t请输入更改后的联系电话:“; cin>>telr; reader.set_rname(namer); reader.set_rclass(classr); reader.set_rtel(telr); cout<<“\n\t是否真的修改该记录(y/n?):“; char y; cin>>y; if(y=='y'||y=='Y') { rm.revise(reader,index); cout<<“\n\t修改成功!\n“; } else cout<<“\n\t操作取消!\n“; } system(“pause“); admin_menu(); } void delReader() //删除读者用户函数 { cout<<“\n\t请输入您要删除的读者用户的姓名:“<<endl; char namer[10]; cin>>namer; int index=rm.search(namer); if(index>=0) { cout<<“\n\t是否真的删除该记录(y/n?): “; char y; cin>>y; if(y=='y'||y=='Y') { rm.delete_reader(index); cout<<“\n\t删除成功!\n“; } else cout<<“\n\t操作取消!\n“; } else cout<<“\n\t对不起,系统尚无该读者记录!“; system(“pause“); admin_menu(); } }; //********主函数******** int main() { system(“color fd“); Menu menu; //定义菜单结构体对象menu cout<<“\t\t\t 当前日期:“;system(“DATE [/T]“); cout<<“\t\t\t 当前时间:
    “;system(“TIME [/T]“); cout<<“\n\t\t\t ★ 欢 “;_sleep(600);cout<<“★ 迎 “;_sleep(600); cout<<“★ 进 “;_sleep(600);cout<<“★ 入 ★\n\n“; menu.log_menu(); return 0; }

    相关热词搜索:程序设计 课程设计 图书馆 图书馆程序设计程序设计综合课程设计报告 程序设计课程设计报告 图书馆管理系统设计报告

    • 范文大全
    • 说说大全
    • 学习资料
    • 语录
    • 生肖
    • 解梦
    • 十二星座

    推荐访问

    图书馆 图书馆20XX年度工作总结 图书馆个人工作小结 图书馆个人工作总结 图书馆个人工作总结500字 图书馆个人工作总结范文5篇 图书馆个人工作计划 图书馆个人工作计划范文 图书馆个人年度总结 图书馆借阅系统流程图 图书馆借阅规则 图书馆免费开放资金自查报告 图书馆入馆须知 图书馆公约二年级 图书馆创意活动方案 图书馆创意温馨提示语 图书馆员、幼儿园园长个人工作述职报告 图书馆员个人工作总结 图书馆员工转正申请书 图书馆员述职 图书馆咖啡店创业计划书 图书馆图书管理系统课程设计 图书馆实践心得体会800 图书馆工会心得体会 图书馆工会活动 图书馆工作总结1000字 图书馆工作总结1500 图书馆工作总结范文 图书馆工作计划 图书馆工作计划书 图书馆工作计划范文 图书馆年度工作总结 图书馆年度工作总结报告 图书馆年度工作计划 图书馆年终个人工作总结 图书馆开馆仪式方案 图书馆开馆活动 图书馆志愿活动 图书馆志愿活动的意义 图书馆志愿者活动总结范文 图书馆技术部人员工作总结 图书馆文明阅读倡议书 图书馆文献传递怎么用 图书馆期刊阅览室工作计划 图书馆标语 图书馆活动策划方案 图书馆流通部个人工作总结 图书馆流通部工作总结 图书馆流通部工作职责 图书馆流通部工作计划 图书馆班子述职报告