C++图书管理系统实验报告
c图书管理系统实验报告

c图书管理系统实验报告C图书管理系统实验报告摘要:本实验报告通过对C图书管理系统的设计、实现和测试,展示了该系统的功能和性能。
实验结果表明,C图书管理系统具有良好的稳定性和高效性,能够满足图书管理的需求。
1. 引言图书管理系统是一个用于管理图书信息、借阅记录和读者信息的软件系统。
随着图书馆规模的扩大和信息化的发展,图书管理系统的重要性日益凸显。
C图书管理系统是一个基于C语言开发的图书管理软件,具有良好的稳定性和高效性。
2. 设计与实现C图书管理系统的设计和实现主要包括以下几个方面:(1)数据库设计:设计图书信息、读者信息和借阅记录等数据库表结构,确保数据存储的有效性和完整性。
(2)功能实现:实现图书信息的录入、查询和修改功能,实现读者信息的管理和借阅记录的管理功能。
(3)界面设计:设计用户友好的界面,方便用户进行操作和查询。
3. 功能测试在实验中,我们对C图书管理系统进行了功能测试,主要包括以下几个方面:(1)图书信息管理:测试图书信息的录入、查询和修改功能,确保信息的准确性和完整性。
(2)读者信息管理:测试读者信息的录入、查询和修改功能,确保信息的准确性和完整性。
(3)借阅记录管理:测试借阅记录的录入、查询和修改功能,确保记录的准确性和完整性。
4. 性能测试在实验中,我们对C图书管理系统进行了性能测试,主要包括以下几个方面:(1)系统稳定性:测试系统在长时间运行中是否会出现崩溃或卡顿现象,确保系统的稳定性。
(2)响应速度:测试系统在查询和操作时的响应速度,确保系统的高效性。
5. 实验结果经过功能测试和性能测试,我们得出了以下实验结果:(1)C图书管理系统具有良好的稳定性,长时间运行中未出现崩溃或卡顿现象。
(2)C图书管理系统具有较快的响应速度,在查询和操作时能够快速响应用户的需求。
6. 结论C图书管理系统在设计、实现和测试中表现出良好的功能和性能,能够满足图书管理的需求。
通过本实验报告的展示,我们相信C图书管理系统将会成为图书馆管理的重要工具,为图书馆的信息化建设提供有力支持。
c语言图书管理系统实践报告

北京师大学分校C程序设计实践报告题目:图书管理系统学院信息技术学院专业计算机科学与技术学生姓名龙海恩,少彬,鑫,麦淑玲指导教师姓名肖红玉指导教师单位信息技术学院2013 年 4 月11 日1、题目与要求编写一个图书管理系统,除了书上的功能之外,还要能做到读者借书还书,查看书籍排行榜,看到书籍的借阅记录和分类状况。
2、系统总体设计(要给出必要的文字说明及图示)本报告中蓝色字体为我们小组新增的图书信息。
2.1功能需求分析(明确系统的功能需求)(1)用户登录(2)系统主控平台(3)新增图书信息处理(4)浏览图书信息处理(5)查询图书信息处理(6)删除图书信息(7)保存图书信息处理(8)普通用户借书信息处理(9)普通用户还书信息处理(10)普通用户可查看已借书籍(11)查看排行榜(12)新增用户信息(13)查找用户(14)查看所有用户(15)保存用户信息(16)退出2.2系统功能模块划分(要给出系统功能模块图)(1)登录系统(2)增加图书信息(3)浏览图书信息(4)查找图书信息((1))按书名查找((2))按作者查找((3))按出版社查找((4))按出版日期查找((5))按ISBN查找((6))按图书类型查找(5)删除图书信息保存图书信息(6)图书排行榜(7)新增用户信息(8)查找用户信息(9)更新用户信息(10)删除用户信息(11)保存用户信息(12)退出系统((1))管理员退出系统((2))普通用户退出系统3、详细设计本系统包括图书信息管理和用户管理两大面,程序有三大模块,有三个源程序文件(management.c、book.c、user.c)和三个头文件(management.h、book.h、user.h)。
其中book.c完成的是图书信息的管理,包括新增图书、浏览图书、查询图书、删除图书、保存图书功能。
user.c完成的是用户信息的管理,包括新增用户、用户查询、保存用户等功能。
management.c完成的是用户登录,用户退出等功能。
C++图书管理系统大型实验报告

基于C++的图书馆管理系统实现方式图书馆管理系统为各大学校提供了方便。
从设计开始采用了以数据为中心的面向对象思想。
为了提高对数据操作的理解,提高自身的编程逻辑,采用链表保存所有信息,程序结束存放在文本文件中。
,C++作为一款面向对象的高级编译型语言,编写图书馆最基本的人员操作类:读者类,工作人员类,管理类以及对数据操作的DBFile类。
实验目的具体实现方式1.数据的存储方式所有人员都有:用户名,密码,真实姓名,性别,年龄读者特有:借书总数,所借书的书号图书:书号,书名,作者,出版社,馆藏量,借出数量。
用文本文件reader.dat存储读者信息,worker.dat存储工作人员信息,manager.dat存储管理员信息,book.dat存储所有书本信息。
运行时所有数据保存在内存中,其类型均为 string。
2.类的关系类的关系3.功能模块图3.1 读者模块读者功能图相关功能代码:1.查看个人信息void Reader::See_Infor(){Book* pbook=NULL;cout<<" 用户名: "<<Username<<endl;cout<<" 密码: "<<Password<<endl;cout<<" 真实姓名: "<<Name<<endl;cout<<" 性别: "<<Sex<<endl;cout<<" 年龄: "<<Age<<endl;cout<<" 总借图书数: "<<Totle_borrow<<endl;cout<<" 所借的书为: ";for(int i=0;i<Totle_borrow;++i){pbook=DB.book_by_number(borrowbooknum[i]);cout<<pbook->BookName<<" ";}cout<<endl;}2.修改个人信息void Reader::Edit_Infor(){Reader* reader=NULL;reader=DB.reader_by_username(Username);string username;// 更改用户名string password;// 密码、、string name;// 姓名string sex;// 性别。
c语言课程设计报告图书管理系统

c语言课程设计报告图书管理系统一、教学目标本课程的目标是使学生掌握C语言的基本语法,熟悉图书管理系统的开发流程,培养学生运用C语言解决实际问题的能力。
具体目标如下:1.知识目标:–掌握C语言的基本语法和数据结构。
–理解图书管理系统的需求和设计原理。
2.技能目标:–能够使用C语言编写简单的程序。
–学会使用C语言实现图书管理系统的功能。
3.情感态度价值观目标:–培养学生的团队协作意识和沟通能力。
–增强学生对计算机科学和编程的兴趣和热情。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构以及图书管理系统的开发。
具体安排如下:1.C语言的基本语法:–变量和数据类型–运算符和表达式–函数和数组–指针和引用2.数据结构:3.图书管理系统的开发:–系统测试和优化三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性。
具体方法如下:1.讲授法:用于讲解C语言的基本语法和数据结构。
2.案例分析法:通过分析具体的图书管理系统案例,使学生更好地理解系统设计和功能实现。
3.实验法:让学生动手编写程序,巩固所学知识,提高实际操作能力。
4.小组讨论法:鼓励学生分组讨论,培养团队协作意识和沟通能力。
四、教学资源本课程所需的教学资源包括:1.教材:《C语言程序设计》2.参考书:《C Primer Plus》、《数据结构与算法分析》3.多媒体资料:教学PPT、视频教程4.实验设备:计算机、网络设备以上教学资源将用于支持教学内容和教学方法的实施,丰富学生的学习体验。
五、教学评估本课程的评估方式包括平时表现、作业、考试等。
评估方式应客观、公正,能够全面反映学生的学习成果。
具体安排如下:1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。
2.作业:包括编程练习和理论作业,占总评的30%。
3.考试:包括期中和期末考试,占总评的50%。
期中和期末考试将涵盖C语言基本语法、数据结构以及图书管理系统的开发内容。
C++大型实验报告--图书管理系统

C/C++语言程序设计大型实验报告--图书管理系统浙江工业大学软件学院二零零九年五月目录第一章概述1.1 实验意义1.2 说明1.3 实验内容第二章简单的LMS功能及设计思路2。
1 功能描述2。
1。
1 读者管理模式功能2.1。
2 工作人员管理模式功能2.1。
3 管理员管理模式功能2.2 基本设计思路第三章用户类3.1 用户类的定义3.2 用户的登陆3.3 修改用户信息3。
4 查询图书信息第四章读者管理模式4。
1查看个人信息4。
2查找馆藏图书信息第五章工作人员管理模式5.1查询读者信息(个人信息和读者借书情况)5。
2还书5。
3借书5.4查询图书信息第六章管理员管理模式6.1添加、删除图书信息6.1.1 添加图书信息6。
1.2 删除图书信息6。
2添加、删除用户信息6。
3查询图书信息第七章图书类第八章建立数据库8.1 数据储存文件说明8.2 数据库操作说明第九章主程序结构附:在VC6环境下的测试截图第一章概述1。
1 实验意义本实验通过分析并实现一个简单的系统—-以图书管理系统,让学生从一个参与项目开发的角度全新的体验项目开发的全过程.学生在独立完成一个简单的系统的开发的过程中,不但真正的学到程序设计的实战知识,更为重要的是能够体验开发的乐趣并培养程序开发的兴趣。
选择图书管理系统作为实验的目的是因为图书管理系统学生能经常接触到,对其功能有一定的了解,能够在使用中提出自己的一些需求的系统。
图书管理系统虽然简单,但是随着需求功能的不断增加,开发的难度也不断增加,不仅能满足初学编程的需求,也能让更高年级的学生通过将学到的知识直接用于该系统的开发而巩固和提高编程水平。
1。
2 说明本实验报告分为三个部分,第一部分为概述,介绍图书管理系统的实验基本内容以及对图书管理系统的功能描述,以及基本设计思路;第二部分为具体的类定义及实现的介绍,是本实验报告的重点部分;第三部分为主程序设计部分,包括对数据库的操作以及主程序登录界面的说明。
c图书管理系统实验报告和源代码

课程名称:程序设计综合实训设计题目:图书管理系统姓名:学号:专业班级:指导老师:完成日期:1 设计任务设计目的运用所学知识,完成图书馆管理系统,通过实践加强对所学知识的理解和巩固设计内容建立图书馆管理系统,用户分为图书管理人员,读者。
管理人员可以增加删除查看图书、读者。
读者只能查看自身信息,和借还书设计指标或者要求管理人员可以访问任意图书和读者,而读者只能借还图书馆存在的图书和查看自己的信息。
2 设计过程分析:由于管理系统用户有图书管理员和读者,但两者的权限不同,管理员有权访问所有图书信息和管理员信息,而读者只能访问所有图书信息和自身的信息。
所以他们的相同点:都能访问所有图书信息不同点:管理员能访问所有读者信息而管理员只能访问自身信息而不能访问其它读者信息;故此设计了三个类程序包含三个类:图书类(books),管理员类(manager),读者类reader,books类为抽象类,manager,和reader类为books类的派生类。
为了能让管理员和读者访问所有图书信息,所有都继承了books类;而为了分出两者的权限的不同,所以把所有读者的信息做为一个链表作为管理员的一个私有成员,而读者却只能放一个自身节点作为读者的私有成员,然后分别设计各个类的成员函数。
程序功能Class booksorrow_books_name<<" "<<"书的编号:"<<r->reader_borrow_book[i].borrow_books_no;}break;}else r=r->next;}if(!r)cout<<"没有此人"<<endl;}manager::print_readers(){readers_node printL;printL=new readers_node;printL=rroot->next;while(printL){cout<<"姓名编号借书总数"<<endl;cout<<printL->reader_name<<" "<<printL->reader_no<<" "<<printL->reader_borrow_num<<endl;for(int i=0;i<printL->reader_borrow_num;i++){cout<<"书名:"<<printL->reader_borrow_book[i].borrow_books_name<<" "<<"书的编号:"<<printL->reader_borrow_book[i].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 returned[15];cout<<"输入要还书的名子:";cin>>returned;for(int i=0;i=personnel->reader_borrow_num;i++){if((strcmp(returned,personnel->reader_borrow_book[i].borrow_books_name))== 0)break;}if(i==personnel->reader_borrow_num+1){printf("不好意思,你没有此书");system("pause");}else{while(node){if((strcmp(node->book_name,returned)==0))break;else node=node->next;}if(node){personnel->reader_borrow_num--;node->borrow_num--;savebooks();}else cout<<"对不起,没有你要还的书或者所还书被删除"<<endl;}}reader::delet_book(){if(personnel->readerborrow_num<max){books_node*node;node=new books_node;node=broot->next;char borrowed[15];cout<<"输入要借书的名子:";cin>>borrowed;while(node){if((strcmp(node->book_name,borrowed)==0))break;else node=node->next;}if(node&&(node->total_num-node->borrow_num)>0){strcpy(personnel->reader_borrow_book[personnel->reader_borrow_num].borrow_ books_name,node->book_name);strcpy(personel->reader_borrow_book[personnel->reader_borrw_num++].borrow_ books_no,node->book_num);node->borrow_num++;savebooks();}else cout<<"对不起,没有你要借的书或者所要借的书已经借完!"<<endl;}else cout<<"对不起,你借书的数量已经超过最大借数量"<<endl;}reader::print_me(){cout<<"姓名"<<personnel->reader_name<<" 编号:"<<personnel->reader_no<<" 借书总数:"<<personnel->reader_borrow_num<<endl;for(int i=0;i<personnel->reader_borrow_num;i++){printf("书名:%s,书的编号:%s",personnel->reader_borrow_book[i].borrow_books_name,personnel->reader_bo rrow_book[i].borrow_books_no)}}void Pause(){getch();fflush(stdin);}reader::reader_borrow(){delet_book();}reader::reader_return(){add_book();}reader::save_readers(readers_node *L) {readers_node *root;root=new readers_node;root=L->next;ofstream outFile;("c:\\",ios::binary);while(root){((char)root,sizeof(readers_node));root=root->next;}();}readers_node* read_readers(){readers_node *r;r=new readers_node;r->next=NULL;int flag=0;ifstream inFile;("c:\\",ios::binary);if()==-1){cout<<"con't open "<<endl;return r;}else{while(1){flag++;readers_node *node;node=new readers_node;((char*)node,sizeof(readers_node));if()) break;node->next=r->next;r->next=node;}if(flag<2){cout<<"暂无读者 "<<endl; return r;}elsereturn r;}}password(){system("cls");char a[]="111111",b[10],c;int n=0,k;cerr<<"\n\n\n\n\t\t\t请输入密码,你将拥有3次机会:\n";while(1){k=0;cout<<"\t\t\t输入密码:";while(1){c=getch();if(c==13)break;b[k]=c;k++;cerr<<"*";}b[k]='\0';cout<<"\n";if(n>2){printf("你已经超过输入次数,系统将退出\n");getch();}if(strcmp(a,b)==0)break;else cout<<"密码错误,请重新输入\n";cerr<<"\n";}}void manager_menu_1(manager M){int N;while(1){cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";cout<<"┃图书管图书管理系统┃\n";cout<<"┃菜单┃\n";cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";cout<<"┃①增加图书┃\n";cout<<"┃②.删除图书┃\n";cout<<"┃③.查找图书┃\n";cout<<"┃④.输出所有┃\n";cout<<"┃退出请按0 ┃\n";cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";cout<<"请输入您的选择(0--4):( )\b\b";cin>>N;switch (N){case 1: ();getch();break;case 2: ();getch();break;case 3: ();getch();break;case 4: ();getch();break;case 0: return;}system("cls");}}void manager_menu_2(manager M){int N;while(1){cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";cout<<"┃图书管图书管理系统┃\n";cout<<"┃菜单┃\n";cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";cout<<"┃①增加读者┃\n";cout<<"┃②删除读者┃\n";cout<<"┃③查找读者┃\n";cout<<"┃④输出所有┃\n";cout<<"┃退出请按0 ┃\n";cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";cout<<"请输入您的选择(0--4):( )\b\b";cin>>N;switch (N)case 1: ();getch();break;case 2: ();getch();break;case 3: ();getch();break;case 4: ();getch();break;case 0: return;}system("cls");}}void manager_menu(readers_node*L){system("cls");password();manager manager(L);int N;{cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";cout<<"┃图书管图书管理系统┃\n";cout<<"┃菜单┃\n";cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";cout<<"┃①图书维护┃\n";cout<<"┃②读者维护┃\n";cout<<"┃退出请按0 ┃\n";cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";cout<<"请输入您的选择(0--2):( )\b\b";cin>>N;switch (N){case 1: system("cls"); manager_menu_1(Manager); break;case 2: system("cls"); manager_menu_2(Manager);break;case 0: return;}system("cls");}}reader_menu(readers_node*L){char name[15];cout<<"输入用户名:";cin>>name;readers_node* node;node=new readers_node;node=L->next;while(node){if((strcmp(nome,node->reader_name))==0)break;elsenode=node->next;}if(node){reader Reader(node);int N;while(1){cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";cout<<"┃图书管图书管理系统┃\n";cout<<"┃菜单┃\n";cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";cout<<"┃①借书┃\n";cout<<"┃②还书┃\n";cout<<"┃③查找书┃\n";cout<<"┃④.输出所有┃\n";cout<<"┃⑤自身信息┃\n";cout<<"┃退出请按0 ┃\n";cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";cout<<"请输入您的选择(0--5):( )\b\b";cin>>N;switch (N){case 1: system("cls") ;();(L);break;case 2: system("cls"); ();(L);break;case 3: system("cls");();system("pls");break;case 4: system("cls");();getch();break;case 5: system("cls");(); Pause();break;case 0: return;}system("cls");}}else{printf("没有这个用户!按任意键继续");getch();return;}}main(){readers_node* Reader_root;Reader_root=new readers_node;Reader_root=read_readers();int N;while(1){ system("cls");cout<<"┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n";cout<<"┃图书管图书管理系统┃\n";cout<<"┃菜单┃\n";cout<<"┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫\n";cout<<"┃①图书管理员┃\n";cout<<"┃②.读者┃\n";cout<<"┃推出请按0 ┃\n";cout<<"┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n";cout<<"请输入您的选择(0--2):( )\b\b";cin>>N;switch (N){case 1: manager_menu(Reader_root);break;case 2: reader_menu(Reader_root);break;case 0:exit(0);break;}}}}。
C语言图书管理系统实验报告完整版

C语言图书管理系统实验报告HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】课程报告课程名称:程序设计实践专业班级:信息类1110 学生姓名:学号:任课教师:学期:20101-2012学年第二学期课程报告任务书成绩评定教师:1 需求分析这是一个能简单管理图书的小型图书管理系统,其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。
通过这些信息使之提供以下功能:(1)图书信息创建功能。
其中图书信息包括:书名,作者名,书编号,分类,出版单位,出版时间,价格等。
(图书信息用文件保存)。
(2)图书信息查看功能。
用来查看各项图书信息。
(3)图书信息查找功能。
通过已知信息来查找想要的图书。
(4)图书信息的删除。
可以删除特定图书。
(5)图书信息的修改。
可以修改图书的各项信息。
(6)图书信息的排序功能。
按图书信息对录入的图书进行排序。
(7)菜单选择功能,此功能也是图书信息信息管理系统的入口,用户所要进行的各种操作均需在此模块中进行选择并进而调用其他模块实现相应的功能2 概要设计⑴数据结构图书管理系统中主要的数据结构包含书名、图书书号、作者名、分类、出版社、出版时间、价格等;在处理过程中各项可以作为一本图书的不同属性来进行处理。
菜单函数的原型:void menu()函数的功能:调用菜单,使用各项功能 程序: void menu(){printf("\n\n*******************************<图书信息管理系统>*******************************\n");printf("-------------------------------------主菜单------------------------------------- \n");printf("\t\t\t <1;创建图书信息 > \n");printf("\t\t\t <2;查找图书信息 > \n");printf("\t\t\t <3;删除图书信息 > \n");printf("\t\t\t <4;修改图书信息 > \n");printf("\t\t\t <5;显示图书信息 > \n");printf("\t\t\t <6;按出版时间排序> \n");printf("\t\t\t <0;退出 > \n");printf("-------------------------------------------------------------------------------- \n");}2.新建文件函数的原型:int ReadinfoFromFile()函数的功能:建立文件储存数据程序int ReadinfoFromFile() f",&p->price);fscanf(fp,"%d",&p->type);if(p->type==1){if(head==NULL){head=p;p->next=NULL;}else{p->next=head;head=p;}}else{if(head_==NULL){head_=p;p->next=NULL;}else{p->next=head_;head_=p;}}}fclose(fp);return 0;}3.创建图书信息函数的原型:int chuangjian()函数的功能:记录图书的各项信息程序:int chuangjian() 找图书信息函数的原型:void chazhao()函数的功能:通过书名查找、作者查找、组合查找三种方式查找图书信息。
图书管理系统C语言程序设计实验报告

books[i].price=f;
i++;
flushall();
printf("is Continue(y/n)?:");
scanf("%c",&isCon);
}
printf("\n --%d种图书信息输入完毕!--\n",i);
printf("\n按任意键返回主菜单!");
{
FILE*fp;
int i;
char filename[40];
//clrscr();
printf("\n input SAVE filename=");
scanf("%s",filename);
if ( (fp=fopen(filename, "w")) == NULL)
{
printf("\n %s file NOT open! press any key exit system.");
printf("\n input READ filename=");
scanf("%s",filename);
if ( (fp=fopen(filename, "r")) == NULL)
{
printf("\n %s file NOT open! press any key exit system.");
〔2〕执行编译操作,并根据提示调试此程序,排除所有的错误和警告。直到编译成功为止。
〔3〕执行运行操作,逐一对每个模块进行调试,直到全部程序运行成功为止。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序设计(C++语言)课程设计设计说明书图书管理系统的设计与实现起止日期:年月日至年月日学生姓名班级学号成绩指导教师(签字)计算机与通信学院年月日图书管理系统一.需求分析图书馆是目前生活中除了网络外的另一个获取知识的重要场所。
利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。
同时是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。
有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。
二.设计要求:1.图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。
试设计一图书信息管理系统,使之能提供以下功能:2.系统以菜单方式工作3.图书信息录入功能(图书信息用文件保存)--输入4.图书信息浏览功能--输出5.查询和排序功能:(至少一种查询方式)--算法6.按书名查询7.按作者名查询8.图书信息的删除与修改(可选项)三.概要设计1、类的设计①、Book类的设计(内部函数流程图):②、BDatabase类的设计:③、主函数流程图:4多态的实现class People{public:virtual void card(){cout<<"card people"<<endl;} };class Student:public People{public:virtual void card(){cout<<"card student"<<endl;} };四、详细设计:#define StrNum 20#define Type 20#include <iostream>#include <iomanip>#include <string>#include <fstream> //输入/输出文件流类using namespace std;const int Maxb=100; //最多可存储的图书class People{public:virtual void card(){cout<<"card people"<<endl;}};class Student:public People{public:virtual void card(){cout<<"card student"<<endl;} };class Book{private:int lab; //删除标记int num; //图书编号int add; //增加标记char number[StrNum]; //编号char bookname[StrNum]; //书名char bookkind[Type]; //图书类型public:Book(){}char getkind() //获取图书类型{return bookkind[Type];}char getname() //获取书名{return bookname[StrNum];}int getnum() //获取图书编号{return num;}int getlab() //获取删除标记{return lab;}void setname(char na[]) //设置书名{strcpy(bookname,na);}void setkind(char kin[]) //设置类型{strcpy(bookkind,kin);}void delbook() //删除图书{lab=1;}void addbook(int n,char *na,char *kin) //增加图书{lab=0;num=n;strcpy(bookname,na);strcpy(bookkind,kin);}void disp() //输出图书{cout.flags (ios::left); //设置对齐的标志位为左cout<<setw(15)<<num<<setw(20)<<bookname<<setw(15)<<bookkind<<endl;}};class BDatabase{private:int top;Book book[Maxb]; //图书记录public:BDatabase() //构造函数,将book.txt读到book[]中{Book b;top=-1;fstream file("book.txt",ios::in);while (1){file.read((char *)&b,sizeof(b));if (!file) break;top++;book[top]=b;}file.close();}void clear() //全删{top=-1;}int addbook(int n,char *na,char *kin) //增加图书{Book *p=query(n);if(NULL==p){top++;book[top].addbook(n,na,kin);return 1;}return 0;}Book *query(int bookid) //查找图书{for (int i=0;i<=top;i++)if (book[i].getnum()==bookid &&book[i].getlab()==0){return &book[i];}return NULL;}void disp() //图书库{for (int i=0;i<=top;i++)if (book[i].getlab()==0)book[i].disp();}~BDatabase() //析构函数,将book[]写到book.txt文件中,实现文本的写入{fstream file("book.txt",ios::out);for (int i=0;i<=top;i++)if (book[i].getlab()==0)file.write((char *)&book[i],sizeof(book[i]));file.close();}};void main(){BDatabase BookDB;char choice;char bname[40];char bkind[40];char newType[20];int bookid;Book *b;while (choice!='0'){cout<<"\t******************************************************************\n";cout<<" \n\n";cout<<"\t\t\t图书管理系统\n\n";cout<<"\t\t\t1 新增图书记录\n";cout<<"\t\t\t2 更改图书记录\n";cout<<"\t\t\t3 删除图书记录\n";cout<<"\t\t\t4 查找图书记录\n";cout<<"\t\t\t5 显示图书记录\n";cout<<"\t\t\t6 清空全部记录(慎用)\n";cout<<"\t\t\t0 退出系统\n";cout<<"\t\t\t7 人员\n";cout<<" \n\n";cout<<"\t******************************************************************\ n";cout<<"请选择(1,2,3,4,5,6,0):";cin>>choice;switch (choice){case '1':cout<<"输入图书编号:"<<endl;cin>>bookid;cout<<"输入图书类型:"<<endl;cin>>newType;cout<<"输入图书书名:"<<endl;cin>>bname;BookDB.addbook(bookid,bname,newType);break;case '2':cout<<"输入图书编号:"<<endl;cin>>bookid;b=BookDB.query(bookid);if(b==NULL){cout<<"该图书不存在"<<endl;break;}cout<<"输入新的书名:"<<endl;cin>>bname;b->setname(bname);cout<<"输入新的类型:"<<endl;cin>>bkind;b->setkind(bkind);break;case '3':cout<<"读入图书编号:"<<endl;cin>>bookid;b=BookDB.query(bookid);if(b==NULL){cout<<"该图书不存在"<<endl;break;}char tg1;cout<<"确定要删除此记录吗?(Y/N)"<<endl;cin>>tg1;if(tg1!='n'&&tg1!='N'){b->delbook();cout<<"已成功删除该书记录!"<<endl;break;}case '4':cout<<"读入图书编号:"<<endl;cin>>bookid;b=BookDB.query(bookid);if (b==NULL){cout<<"该图书不存在"<<endl;break;}cout<<"图书编号图书名称图书类型\n";b->disp();break;case '5':cout<<"图书编号图书名称图书类型\n";b=BookDB.query(bookid);b->disp();break;case '6':char tg2;cout<<"确定要清空所有记录吗?(Y/N)"<<endl;cin>>tg2;if(tg2!='n'&&tg2!='N'){BookDB.clear();cout<<"已成功清空记录!"<<endl;break;}case '0':break;default:cout<<"输入错误,请从新输入(数字为0~6):";case'7':Student student;People *ppeople=&student;People &ref=student;ppeople->card();ref.card();break;}}}五.用户使用说明本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,基本符合设计要求,利用类的封装实现了一定的安全性,函数的实现与调用在主函数中实现。