1、 综合实践报告-1-课程名称: 程序设计综合实训设计题目: 图书管理系统 姓 名:学 号:专业班级:指导老师:完成日期:综合实践报告-2-1 设计任务1.1 设计目的运用所学知识,完成图书馆管理系统,通过实践加强对所学知识的理解和巩固1.2 设计内容建立图书馆管理系统,用户分为图书管理人员,读者。管理人员可以增加删除查看图书、读者。读者只能查看自身信息,和借还书1.3 设计指标或者要求管理人员可以访问任意图书和读者,而读者只能借还图书馆存在的图书和查看自己的信息。2 设计过程分析:由于管理系统用户有图书管理员和读者,但两者的权限不同,管理员有权访问所有图书信息和管理员信息,而读者只能访问所有图
2、书信息和自身的信息。所以他们的相同点:都能访问所有图书信息不同点:管理员能访问所有读者信息而管理员只能访问自身信息而不能访问其它读者信息;故此设计了三个类程序包含三个类:图书类(books) ,管理员类(manager) ,读者类 reader,books 类为抽象类,manager,和 reader 类为 books 类的派生类。为了能让管理员和读者访问所有图书信息,所有都继承了books 类;而为了分出两者的权限的不同,所以把所有读者的信息做为一个链表作为管理员的一个私有成员,而读者却只能放一个自身节点作为读者的私有成员,然后分别设计各个类的成员函数。2.1 程序功能Class books
3、 /虚基类 综合实践报告-3-protected:books_node *broot;public:books();/构造函数savebooks();/保存修改的内容search_book();/查找某一本书print_books();/输出所有书的信息virtual add_book()=0;/对于读者是还书,对于管理员添加书virtual delet_book()=0;/对于读者是借书,对于管理员是去掉某一本书;Class manager:public books /管理员类 protected:readers_node *rroot;public:manager(readers_node
4、*);savereaders();add_book();/添加图书信息delet_book();/删除图书search_reader();/查找读者信息add_reader();/添加读者delet_reader();/删除读者print_readers();/输出所有读者;class reader:public books/读者类private:readers_node* personnel;/存放读者自身信息public:reader(readers_node*);add_book();/还书reader_borrow();delet_book();reader_return();/借书p
5、rint_me();/查看自己借书情况save_readers(readers_node*);2.2 程序流程图综合实践报告-4-开始菜单管理员菜单 读者菜单添 删加 除图 图书 书添 删加 除读 读者 者借 还 查 查看 看所 自有 身图 信书 书 书 息 读者管理员图书维护 读者维护后退 后退后退后退后退综合实践报告-5-3 软件运行或者测试结果(1)管理员身份登录:综合实践报告-6-(2)读者身份登录:综合实践报告-7-综合实践报告-8-综合实践报告-9-4 软件设计过程中遇到的问题以及解决办法由于编写前期做了大量的设计工作,在编写过程中基本没有遇到难解决的问题提,倒是在设计类时有些茫然
6、,经过反复斟酌还是做了一些取舍,比如把读取读者文件放在了类的外面等。 。5 总结通过本次课程设计学到了很多东西,对于 c+对象的含义有了进一步的认识,从而对类的封装和设计有了一种新的认识,不只是停留在表面,为以后的学习积累了经验,设计不比编写容易,类设计好是整个程序写好的前提,只有一个好的规划才能写出好的程序。不过也通过本次发现了自己的不足之处。总是:本次课程设计受益匪浅,动手能力大大增强;附录(程序源代码)#include#include#include#include#include#define max 3 typedef struct Bookschar book_name15;int
7、 total_num;int borrow_num;char book_num15;Books *next;books_node;typedef struct Readerschar reader_name15;char reader_no15;int reader_borrow_num;struct Reader_borrow_bookschar borrow_books_name15;char borrow_books_no15;reader_borrow_bookmax;Readers *next;readers_node;class books protected:books_node
8、 *broot;public:books();综合实践报告-10-savebooks();search_book();print_books();virtual add_book()=0;virtual delet_book()=0;class manager:public books protected:readers_node *rroot;public:manager(readers_node*);savereaders();add_book();delet_book();search_reader();add_reader();delet_reader();print_readers(
9、);class reader:public booksprivate:readers_node* personnel;public:reader(readers_node*);add_book();reader_borrow();delet_book();reader_return();print_me();save_readers(readers_node*);books:books()books_node *r;broot=new books_node;r=new books_node;r-next=NULL;broot=r;ifstream inFile;inFile.open(“c:b
10、ooks.dat“,ios:binary);if(inFile.is_open()=-1)coutnext=r-next;r-next=node;inFile.close();if(inext;ofstream outFile;outFile.open(“c:books.dat“,ios:binary);while(L)outFile.write(char*)L,sizeof(books_node);L=L-next;outFile.close();books:search_book()char searchedbook15;coutsearchedbook;books_node *r;r=n
11、ew books_node;r=broot-next;while(r)if(strcmp(searchedbook,r-book_name)=0)coutbook_nametotal_numborrow_numbook_numnext;if(r=NULL)coutnext;while(r)coutbook_nametotal_numborrow_num book_numnext;delete r;manager:add_book()books_node *L;L=new books_node;L=broot;while(1)books_node *r;r=new books_node;r-ne
12、xt=NULL;coutr-book_name;coutr-book_num;r-borrow_num=0;coutr-total_num;r-next=L-next;L-next=r;coutsign;综合实践报告-13-if(sign=n|sign=N)break;broot=L;savebooks();manager:delet_book()char deleted15;coutdeleted;books_node *node,*L;node=new books_node;L=new books_node;node=broot;while(node-next)if(strcmp(dele
13、ted,node-next-book_name)=0)break;node=node-next;if(node-next=NULL) coutnext-borrow_num=0)node-next=node-next-next;savebooks()elsecoutnext;综合实践报告-14-ofstream outFile;outFile.open(“c:Readers.dat“,ios:binary);while(L)outFile.write(char*)L,sizeof(readers_node);L=L-next;outFile.close();manager:add_reader
14、()readers_node *L;L=new readers_node;L=rroot;int sign=0;while(1)readers_node *r;r=new readers_node;r-next=NULL;coutr-reader_name;coutr-reader_no;r-reader_borrow_num=0;r-next=L-next;L-next=r;coutsign;if(sign=n|sign=N)break;root=L;savereaders();manager:delet_reader()综合实践报告-15-char deleted15;coutdelete
15、d;readers_node node,*L;node=new readers_node;L=new readers_node;node=rroot;while(node-next)if(strcmp(deleted,node-next-reader_name)=0)break;node=node-next;if(node-next=NULL) coutnext=node-next-next;savereaders();manager:search_reader()readers_node *r;r=new readers_node;r=rroot-next;char reader15;cou
16、treader;while(r)if(strcmp(reader,r-reader_name)=0)coutreader_namereader_noreader_borrow_numreader_borrow_num;i+)coutreader_borrow_booki.borrow_books_namereader_borrow_booki.borrow_books_no;break;综合实践报告-16-else r=r-next;if(!r)coutnext;while(printL)coutreader_namereader_noreader_borrow_numreader_borro
17、w_num;i+)coutreader_borrow_booki.borrow_books_namereader_borrow_booki.borrow_books_no;printL=printL-next;delete printL;reader:reader(readers_node*node)(personnel)=new readers_node;personnel=node;reader:add_book()books_node*node;node=new books_node;node=broot-next;char returned15;coutreturned;for(int
18、 i=0;i=personnel-reader_borrow_num;i+)if(strcmp(returned,personnel-reader_borrow_booki.borrow_books_name)=0)break;if(i=personnel-reader_borrow_num+1)综合实践报告-17-printf(“不好意思,你没有此书“);system(“pause“);elsewhile(node)if(strcmp(node-book_name,returned)=0)break;else node=node-next;if(node)personnel-reader_b
19、orrow_num-;node-borrow_num-;savebooks();else coutreaderborrow_numnext;char borrowed15;coutborrowed;while(node)if(strcmp(node-book_name,borrowed)=0)break;else node=node-next;if(nodestrcpy(personel-reader_borrow_bookpersonnel-reader_borrw_num+.borrow_books_no,node-book_num);综合实践报告-18-node-borrow_num+;
20、savebooks();else coutreader_namereader_noreader_borrow_numreader_borrow_num;i+)printf(“书名:%s,书的编号:%s“,personnel-reader_borrow_booki.borrow_books_name,personnel-reader_borrow_booki.borrow_books_no)void Pause()getch();fflush(stdin);reader:reader_borrow()delet_book();reader:reader_return()add_book();re
21、ader:save_readers(readers_node *L)readers_node *root;root=new readers_node;root=L-next;ofstream outFile;outFile.open(“c:Readers.dat“,ios:binary);while(root)outFile.write(char)root,sizeof(readers_node);综合实践报告-19-root=root-next;outFle.close();readers_node* read_readers()readers_node *r;r=new readers_n
22、ode;r-next=NULL;int flag=0;ifstream inFile;inFile.open(“c:Readers.dat“,ios:binary);if(inFile.is_open()=-1) coutnext=r-next;r-next=node;inFile.close();if(flag2)printf(“你已经超过输入次数,系统将退出n“);getch();if(strcmp(a,b)=0)break;else coutN;switch (N)case 1: M.add_book();getch();break;case 2: M.delet_book();getc
23、h();break;综合实践报告-21-case 3: M.search_book();getch();break;case 4: M.print_books();getch();break;case 0: return;system(“cls“);void manager_menu_2(manager M)int N;while(1)coutN;switch (N)case 1: M.add_reader();getch();break;case 2: M.delet_reader();getch();break;case 3: M.search_reader();getch();break
24、;case 4: M.print_readers();getch();break;case 0: return;system(“cls“);void manager_menu(readers_node*L)system(“cls“);password();manager manager(L);int N;while(1)综合实践报告-22-coutN;switch (N)case 1: system(“cls“); manager_menu_1(Manager); break;case 2: system(“cls“); manager_menu_2(Manager);break;case 0
25、: return;system(“cls“);reader_menu(readers_node*L)char name15;coutname;readers_node* node;node=new readers_node;node=L-next;while(node)if(strcmp(nome,node-reader_name)=0)break;else node=node-next;if(node)reader Reader(node);int N;while(1)coutN;switch (N)case 1: system(“cls“) ;Reader.reader_borrow();
26、Reader.save_readers(L);break;case 2: system(“cls“); Reader.reader_return();Reader.save_readers(L);break;case 3: system(“cls“);Reader.search_book();system(“pls“);break;case 4: system(“cls“);Reader.print_books();getch();break;case 5: system(“cls“);Reader.print_me(); Pause();break;case 0: return;system(“cls“);elseprintf(“没有这个用户!按任意键继续“);getch();return;main()readers_node* Reader_root;Reader_root=new readers_node;Reader_root=read_readers();int N;while(1) system(“cls“);coutN;switch (N)case 1: manager_menu(Reader_root);break;case 2: reader_menu(Reader_root);break;case 0:exit(0);break;