图书馆管理系统代码

合集下载

图书馆管理系统源代码

图书馆管理系统源代码

以我给的标题写原创文档,最低1200字,要求以Markdown文本格式输出,不要带图片和AI、人工智能、Markdown、GPT等关键词,标题为:图书馆管理系统源代码# 图书馆管理系统源代码## 一、引言图书馆作为一个重要的知识资源和学术场所,对于学生和研究人员具有重要意义。

为了更好地管理图书馆资源和提供服务,图书馆管理系统应运而生。

本文将介绍图书馆管理系统的源代码设计和实现。

## 二、系统功能需求### 1. 登录功能- 提供管理员和用户登录功能- 管理员可进行图书管理、借阅管理等操作- 用户可查询图书信息、借阅情况等### 2. 图书管理- 添加新书籍信息- 修改或删除现有书籍信息- 查询图书信息,包括书名、作者、出版社等### 3. 借阅管理- 用户借阅图书- 用户归还图书- 管理员监管借阅情况### 4. 查询功能- 用户可以根据条件查询图书信息- 管理员可以查询借阅情况、用户信息等## 三、系统设计### 1. 数据库设计- 数据库包括图书信息表、用户信息表、借阅记录表等- 表之间建立关联,保证数据一致性和完整性### 2. 源代码结构```- books- README.md- book.js- bookRouter.js- users- README.md- user.js- userRouter.js- borrows- README.md- borrow.js- borrowRouter.js- index.js```### 3. 源代码逻辑- 使用Node.js构建后端服务- 使用Express框架处理路由和请求- 使用MongoDB作为数据库存储## 四、系统实现### 1. 登录功能```javascript// 用户登录router.post('/login', (req, res) => {// 处理登录逻辑});// 管理员登录router.post('/admin/login', (req, res) => { // 处理管理员登录逻辑});```### 2. 图书管理```javascript// 添加新书籍router.post('/addBook', (req, res) => {// 处理添加书籍逻辑});// 修改书籍信息router.put('/updateBook/:id', (req, res) => {// 处理修改书籍信息逻辑});// 删除书籍router.delete('/deleteBook/:id', (req, res) => {// 处理删除书籍逻辑});```### 3. 借阅管理```javascript// 用户借阅图书router.post('/borrowBook', (req, res) => {// 处理借阅图书逻辑});// 用户归还图书router.put('/returnBook/:id', (req, res) => {// 处理归还图书逻辑});```## 五、总结通过本文介绍,读者可以了解图书馆管理系统源代码的设计和实现逻辑。

C语言课程设计图书馆管理系统程序代码

C语言课程设计图书馆管理系统程序代码

#include〈stdio.h〉#include<windows.h〉#include〈string。

h〉#include<conio。

h>#define M 100struct books{char tsmc[12];inttsbh;float dj;char zz[12];char czzt[12];char xm[12];char xb[12];intxh; }s[M];int N;bool flag;intmain (){intsele;flag=0;sele=1;void sr();void cx();void sc();void js();void hs();void tc();void jsh();//system ("tsgl”);printf("\n\n");printf(" ************************\n"); printf(" 1:输入2:查询3:删除\n");printf(”4:借书5:还书0:退出\n");printf(” ************************\n"); while(1){printf(”\n\n请输入功能序号:");scanf (”%d",&sele);if(sele>=0 && sele<=5){switch(sele){case 1:sr();break;case 2:cx();break;case 3:sc();break;case 4:js();break;case 5:hs();break;case 0:jsh();break;}if(flag)break;printf(”\n\n");printf(” ************************\n”); printf(" 1:输入2:查询3:删除\n");printf(”4:借书5:还书0:退出\n”);printf(” ************************\n”);}else{printf(”输入错误请再次输入|\n\n");printf("\n\n");printf(” ************************\n”);printf(" 1:输入2:查询3:删除\n”);printf(”4:借书5:还书0:退出\n");printf(" ************************\n");}printf("\n\n让任意键继续\n”);} //wr_file();}/******主函数***//*********输入*********/void sr(){intn,i;N=0;printf("可输入的书本数:");scanf("%d",&n);N=n+N;printf("请输入相关信息:\n");for(i=1;i<=n;i++){printf(”图书名称:”);scanf(”%s",s[N-n-1+i]。

图书管理系统代码

图书管理系统代码

图书管理系统代码图书信息的采集\n");printf(" 2. 新图书的插入\n");printf(" 3. 图书信息的查询\n");printf(" 4. 图书的删除\n");printf(" 5. 图书的显示\n");printf(" 6. 图书的借阅\n");printf(" 7. 图书的归还\n");printf(" 0. 退出管理系统\n");printf("===========================\n");printf(" 请选择0-7: ");scanf("%d",&i);while(i<0||i>7){printf("\n\t输入出错,重选0-7: ");scanf("%d",&i);}return i;}编号查询 \n");printf(" 2.按书名查询 \n");printf("=================\n");printf(" 请选择 : ");scanf("%d",&t); 编号删除\n"); 书名删除\n");printf(" 3.返回\n");printf(" 请选择:\n");scanf("%d",&p); 名字借阅\n"); 编号借阅\n");printf(" 3.返回\n");printf(" 请选择\n");scanf("%d",&p); 书名归还\n"); 书号归还\n");printf(" 3.返回\n");printf(" 请选择\n");scanf("%d",&q); //输入选择信息if(q>3||q<1){printf(" 您的输入有误!\n");scanf("%d",&q); //重新输入选择信息}switch(q) //实现归还程序{case 1:printf(" 输入归还书的书名: ");scanf("%s",&name1); // 输入书名for(i=0;i<n;i++){if(strcmp(x[i]->name,name1)==0){m=0;x[i]->Nowcounter++;printf("此书归还成功!\n");printf("此书的存储情况\n");printf("编号书名作者现存量总存量\n");printf("===============================================\n");printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);printf("===============================================\n");}if(strcmp(x[i]->name,name1)==0)continue;}if(m==1)printf("此书不是图书馆的!\n");break;case 2:printf("输入归还书的书号\n");scanf("%s",&num1); // 输入书号for(i=0;i<n;i++){if(strcmp(x[i]->num,num1)==0){m=0;x[i]->Nowcounter++; //显存书增加1printf("此书归还成功!\n");printf("此书的存储情况\n");printf("编号书名作者现存量总存量\n");printf("==============================================\n");printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);printf("==============================================\n");}if(strcmp(x[i]->num,num1)==0) //调用strcmp函数continue;}if(m==1)printf("此书不是图书馆的!\n");break;case 3:break;}}//**************************************// 输出程序//**************************************void printlist(datatype *x[]){int i;printf("编号书名作者现存量总存量\n"); //输出图书各项信息for(i=0;i<n;i++){printf(" %-10s%-10s%-10s%-10d%-10d\n",x[i]->num,x[i]->name,x[i]->addr,x[i]->Nowcounter,x[i]->Allcounter);}printf("===============================================\n");}。

图书管理系统源代码 (3)

图书管理系统源代码 (3)

图书管理系统源代码1. 简介图书管理系统是一种用于管理图书馆或书店中图书信息的软件系统。

它主要提供了图书的添加、编辑、删除、查询等功能,便于管理人员对图书信息进行集中管理,同时也能方便读者进行图书的查询和借阅操作。

本文档将介绍一个基于Python的简单图书管理系统的源代码,以及其使用说明和功能演示。

2. 系统设计2.1 使用的库该图书管理系统使用了以下Python库来实现不同功能:•Tkinter:用于GUI界面的设计和实现。

•SQLite3:用于图书信息的持久化存储。

2.2 数据库设计在该图书管理系统中,我们使用了一个简单的图书信息表来存储图书的相关信息。

该表包含以下字段:•book_id:图书ID,唯一标识一个图书。

•book_title:图书标题,描述图书的名称。

•book_author:图书作者,描述图书的作者信息。

•book_publisher:图书出版商,描述图书的出版商信息。

2.3 功能设计该图书管理系统实现了以下功能:•添加图书:管理员可以添加一本新的图书到系统中。

•编辑图书:管理员可以编辑已存在的图书信息。

•删除图书:管理员可以从系统中删除指定的图书。

•查询图书:管理员和读者都可以根据图书的标题、作者或出版商来查询图书信息。

3. 源代码以下是该图书管理系统的源代码(使用Python编写):```python import tkinter as tk import sqlite3连接到数据库conn = sqlite3.connect(’library.db’) c = conn.cursor()创建图书信息表c.execute(’’’ CREATE TABLE IF NOT EXISTS books ( book_id INTEGER PRIMARY KEY AUTOINCREMENT, book_title TEXT, book_author TEXT, book_publisher TEXT ) ’’’)窗口初始化window = () window.title(。

图书馆管理系统代码

图书馆管理系统代码

图书馆管理系统代码。

txt男人偷腥时的智商仅次于爱因斯坦。

美丽让男人停下,智慧让男人留下.任何东西都不能以健康做交换.#include<stdio.h〉#include<math。

h〉#include<string。

h>#include<stdlib.h>struct books_list{char author[20]; /*作者名*/char bookname[20]; /*书名*/char publisher[20]; /*出版单位*/char pbtime[15]; /*出版时间*/char loginnum[10]; /*登陆号*/float price; /*价格*/char classfy[10]; /*分类号*/struct books_list * next; /*链表的指针域*/};struct books_list * Create_Books_Doc(); /*新建链表*/void InsertDoc(struct books_list * head); /*插入*/void DeleteDoc(struct books_list * head , int num);/*删除*/void Print_Book_Doc(struct books_list * head);/*浏览*/void search_book(struct books_list * head); /*查询*/void info_change(struct books_list * head);/*修改*/void save(struct books_list * head);/*保存数据至文件*//*新建链表头节点*/struct books_list * Create_Books_Doc(){struct books_list * head;head=(struct books_list *)malloc(sizeof(struct books_list)); /*分配头节点空间*/head—>next=NULL; /*头节点指针域初始化,定为空*/return head;}/*保存数据至文件*/void save(struct books_list * head){struct books_list *p;FILE *fp;p=head;fp=fopen("data.txt","w+"); /*以写方式新建并打开 data。

图书管理系统程序代码

图书管理系统程序代码

#include<fstream〉#include<iostream〉#include<stdlib.h〉#include〈ctime〉#include<cmath>#include〈termios.h〉#include <sstream〉#include<string。

h〉#include<assert.h〉//改变字体颜色#define NONE "\033[m"#define RED "\033[0;32;31m”#define GREEN ”\033[0;32;32m”#define BLUE "\033[0;32;34m”#define YELLOW ”\033[1;33m”#define LIGHT_RED ”\033[1;31m”#define LIGHT_GREEN "\033[1;32m"#define LIGHT_BLUE "\033[1;34m”/*程序导读:1。

程序中对书的操作,可通过书名,编号来进行,flag=0按书名来操作,flag=1按书编号来操作2.程序中对用户的操作,也可通过姓名,用户ID号或编号两种方式来进行,flag=0按姓名来操作,flag=1按用户ID号或编号来操作3。

本程序分5个部分,具体已标识如(1)图书管理。

.*/using namespace std;class Book{public:string book_name;string book_num;//编号string book_pre;//出版社string book_aut;//作者int book_con;//这样的书还有几本int book_mux;//这样的书总共有几本public:Book(){book_con=0;book_mux=0;}void show_book();};/****************************************(1)图书管理*******************************************/void Book::show_book(){cout<〈"书名:”<〈book_name<〈endl;cout〈〈”出版社:"〈<book_pre〈〈endl;cout<<”此书的作者:"〈<book_aut〈<endl;cout〈<”ISBN编号:”<〈book_num<〈endl;cout<<"此书共有"〈<book_mux<<”本”〈〈endl;cout<<”还有"<<book_con〈〈”本书未借出!"〈<endl;}class BookNode{public:Book book;BookNode *next;};BookNode *headbook=NULL;class BookManage{public:int totolbook;public:BookManage(){totolbook=0;}void addbook();void delbook(string s,int num,int flag);void findbook(string s,int flag);//查询图书};void BookManage::addbook(){string h;cout〈〈"添加输入0,退出输入—1"<〈endl;cin>>h;if(h==”-1”)return;else if(h=="0”)while(1){if(h==”-1”)break;else if(h==”0”){string na,nu,p1,aut;int con;BookNode *p=new BookNode;cout<<”请输入书名:"〈〈endl;cin〉>na;p—〉book.book_name=na;cout<〈"请输入ISBN编号:”<<endl;cin>〉nu;p->book。

java实现图书馆管理系统

java实现图书馆管理系统

java实现图书馆管理系统本⽂实例为⼤家分享了java实现图书馆管理系统的具体代码,供⼤家参考,具体内容如下思路:所有包都在book_manage包⾥利⽤⾯向对象的多态特性去除了很多if-else的判断,不同的⼦类在⽗类所对应的⽅法不同。

1.⾸先建⽴⼀个book包包⾥⾯有2个类,⼀个是Book,这个类⾥⾯包含⼀本书的全部信息另外⼀个类是BookList,这个类是⽤来管理每⼀个书,通过这个类来寻找每⼀本书。

private Book[] books = new Book[100];Book数组⾥⾯存放所有的书。

2.再建⽴⼀个包Operation 这个类⾥⾯有⼀个OI接⼝,通过对接⼝⾥⾯的Work⽅法重写,来实现管理员⾝份和普通⽤户⾝份的不同操作。

3.最后建⽴⼀个User包,⾥⾯有三个类,User,Admin,NormalUserAdmin和NormalUser都继承⾃User.User⾥秒你有⼀个数组protected IO[] operation;这个数组⾥⾯包含了⽤户或者管理员所具备的操作。

通过对数组的索引来确定具体需要调⽤的操作⽅法。

下⾯来看看代码吧:book包Book类package book_manager.book;public class Book {private String name;private String id;private String author;private int price;private String type;private boolean isBorrow;public Book(String name, String id, String author, int price,String type, boolean isBorrow) { = name;this.id = id;this.author = author;this.price = price;this.type = type;this.isBorrow = isBorrow;}@Override //Object中内置的类,⽤来格式化打印book的信息public String toString() {return "Book{" +"name='" + name + '\'' +", id='" + id + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +", isBorrow=" + isBorrow +'}';}public String getName(){return name;}public boolean isBorrow(){public void setBorrow(boolean bool){this.isBorrow=bool;}public String getId(){return id;}}BookList类package book_manager.book;import java.util.Arrays;public class BookList {private Book[] books = new Book[100];private int size;public BookList(){books[0] = new Book("⾦瓶梅","001", "兰陵笑笑⽣", 100,"古典名著", false);books[1] = new Book("⽔浒传","002", "施耐庵", 100,"古典名著", false);books[2] = new Book("西游记","003", "吴承恩", 100,"古典名著", false);size = 3;}public int getSize(){return size;}public void setBooks(int index,Book book){ books[index]=book;}public void setSize(int size){this.size=size;}public Book getBook(int index){return books[index];}}Operation包:ADD类package book_manager.Operation;import book_manager.book.*;import java.util.Scanner;public class ADD implements IO{@Overridepublic void work(BookList bookList) {Scanner scanner = new Scanner(System.in); System.out.println("请输⼊书名");String name =scanner.next();System.out.println("请输⼊序号");String id = scanner.next();System.out.println("请输⼊作者");String author =scanner.next();System.out.println("请输⼊价格");int price = scanner.nextInt();System.out.println("请输⼊类型");String type = scanner.next();bookList.setBooks(bookList.getSize(),book);bookList.setSize(bookList.getSize()+1);System.out.println("添加成功");}}Borrow类package book_manager.Operation;import book_manager.book.Book;import book_manager.book.BookList;import java.util.Scanner;public class Borrow implements IO{@Overridepublic void work(BookList bookList) {int i=0;int flag=0;Scanner scan = new Scanner(System.in);System.out.println("请输⼊需要借阅的书名");String name = scan.next();for(;i<bookList.getSize();i++){if(name.equals(bookList.getBook(i).getName())){if(bookList.getBook(i).isBorrow()==false){System.out.println("借阅成功");flag=1;bookList.getBook(i).setBorrow(true);}}}if(flag==0){System.out.println("不好意思,借阅失败");}}}Delete类package book_manager.Operation;import book_manager.book.BookList;import java.util.Scanner;public class Delete implements IO{public void work(BookList bookList){Scanner scanner = new Scanner(System.in);System.out.println("请输⼊想要删除的编号");String id = scanner.next();for(int i=0;i<bookList.getSize();i++){if(bookList.getBook(i).getId().equals(id)){bookList.setBooks(i,bookList.getBook(bookList.getSize())); bookList.setSize(bookList.getSize()-1);System.out.println("删除成功");}else{System.out.println("删除失败");}}}}Exit类package book_manager.Operation;import book_manager.book.BookList;public class Exit implements IO{public void work(BookList bookList) {System.out.println("退出成功");System.exit(0);}}Find类package book_manager.Operation;import book_manager.book.BookList;import java.util.Scanner;public class Find implements IO{@Overridepublic void work(BookList bookList) {int i=0;int count=0;Scanner scan = new Scanner(System.in);System.out.println("请输⼊需要查找的书名");String name = scan.next();for(;i<bookList.getSize();i++){if(name.equals(bookList.getBook(i).getName())){ count++;}}if(count==0){System.out.println("不好意思,没有找到"); }else{System.out.println("找到了,共计"+count+"本"); }}}IO接⼝package book_manager.Operation;import book_manager.book.BookList;public interface IO {abstract public void work(BookList bookList);}PrintAll类package book_manager.Operation;import book_manager.book.BookList;public class PrintAll implements IO{@Overridepublic void work(BookList bookList) {for(int i=0;i<bookList.getSize();i++){System.out.println(bookList.getBook(i));}}}Return类package book_manager.Operation;import book_manager.book.BookList;import java.util.Scanner;public class Return implements IO{@Overridepublic void work(BookList bookList) {int i=0;Scanner scan = new Scanner(System.in);System.out.println("请输⼊需要归还的ID");String id = scan.next();for(;i<bookList.getSize();i++){if(id.equals(bookList.getBook(i).getId())){if(bookList.getBook(i).isBorrow()==true){System.out.println("归还成功");bookList.getBook(i).setBorrow(false);flag=1;}else{System.out.println("归还失败");}}}if(flag==0){System.out.println("不好意思,没有此书");}}}user包:User类package book_er;import book_manager.Operation.*;import book_manager.Operation.IO;import book_manager.book.BookList;abstract public class User {String name;protected IO[] operation;public User(String name){=name;}abstract public int menu();//该⽅法被重写public void doOperation(int choice, BookList bookList) { operation[choice].work(bookList);}}Admin类package book_er;import book_manager.Operation.*;import java.util.Scanner;public class Admin extends User{public Admin(String name){super(name);operation=new IO[]{new Exit(),new Find(),new ADD(),new Delete(),new PrintAll(),};}public int menu() {System.out.println("============");System.out.println("hello " + name);System.out.println("1. 查找书籍");System.out.println("4. 打印所有信息");System.out.println("0. 退出");System.out.println("============");System.out.println("请输⼊您的选择: ");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();return choice;}}NormalUserpackage book_er;import book_manager.Operation.*;import java.util.Scanner;public class NormalUser extends User{public NormalUser(String name){super(name);operation=new IO[]{new Exit(),new Find(),new Borrow(),new Return(),new PrintAll()};}public int menu() {System.out.println("============");System.out.println("hello " + name);System.out.println("1. 查找图书");System.out.println("2. 借阅图书");System.out.println("3. 归还图书");System.out.println("4. 查看全部书籍");System.out.println("0. 退出");System.out.println("============");System.out.println("请输⼊您的选择: ");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();// close 本质上是在关闭 System.in// 由于后⾯还需要⽤到 System.in, 此处不能盲⽬关闭. // scanner.close();return choice;}}最后还有⼀个Test类,⾥⾯放了main函数package book_manager;import book_manager.book.BookList;import book_er.Admin;import book_er.NormalUser;import book_er;import java.util.Scanner;public class Test {public static void main(String[] args) {BookList list = new BookList();User user = login();//通过不同的choice和⾝份调⽤不同的Operation⽅法 while(true){int choice = user.menu();user.doOperation(choice, list);}}public static User login(){Scanner scanner = new Scanner(System.in);System.out.println("请输⼊你的姓名");System.out.println("请输⼊你的⾝份");System.out.println("1.普通⽤户 2.管理员");int role= scanner.nextInt();if(role==1){return new NormalUser(name);}else{return new Admin(name);}}}更多学习资料请关注专题《》。

图书借阅管理系统java代码

图书借阅管理系统java代码

以我给的标题写原创文档,最低1200字,要求以Markdown文本格式输出,不要带图片和AI、人工智能、Markdown、GPT等关键词,标题为:图书借阅管理系统java代码# 图书借阅管理系统Java代码## 一、介绍图书借阅管理系统是一个帮助图书馆管理图书借阅情况的系统。

本系统基于Java开发,采用面向对象的编程方式,实现了对图书信息、借阅记录等数据的管理与处理。

用户可以通过该系统查询图书信息、借阅图书、归还图书,并实现了管理员对系统的管理功能。

## 二、功能模块### 1. 图书管理模块- 实现对图书信息的添加、删除、修改和查询功能。

- 对图书的分类管理,方便用户按照分类查找图书信息。

### 2. 用户管理模块- 用户注册与登录功能,保证用户数据的安全。

- 用户查询借阅情况、借阅历史等个人信息。

### 3. 借阅管理模块- 实现图书的借阅功能,包括借书日期、归还日期等信息的记录。

- 用户借阅超时提醒,确保图书及时归还。

### 4. 管理员模块- 管理员登录后可以对图书信息、用户信息进行管理。

- 实现图书归还、逾期处理等功能。

## 三、系统架构本系统采用MVC(Model-View-Controller)架构,实现了模型层、视图层、控制层之间的分离,提高了系统的灵活性和可维护性。

具体架构如下:1. Model层:负责处理数据的逻辑操作,包括对图书信息、用户信息、借阅记录等数据的管理。

2. View层:负责系统的界面展示,包括用户界面和管理员界面。

3. Controller层:负责处理用户请求,调用Model层的方法,并将结果返回给View层进行展示。

## 四、代码示例以下是借阅图书的Java代码示例:```javapublic class BorrowBook {private Book book;private User user;private Date borrowDate;private Date returnDate;// Constructorpublic BorrowBook(Book book, User user, Date borrowDate, Date returnDate) {this.book = book;er = user;this.borrowDate = borrowDate;this.returnDate = returnDate;}// Getters and setters}```以上代码实现了一个借阅图书的类`BorrowBook`,包含了借阅的图书信息、用户信息,借阅时间和归还时间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<class.h>#define DEBUG 0//宏定义决定测试代码是否编译0为不编译非0则编译const char book_path[20] = "books.txt";const char reader_path[20] = "readers.txt";//文件读写声明void read_from_files_to_vector();void write_all_to_files();#if DEBUGvoid scan_readers() {for(reader &s:readers) {wcout << s;}}#endifint main(){//完成操作后需要在控制台按5中退出才会保存到文件wcin.imbue(china);wcout.imbue(china);read_from_files_to_vector();#if DEBUGcout << "size of readers = " << readers.size() << endl;cout << "size of books = " << books.size() << endl;scan_book();scan_readers();#endifstring password = "123456";//密码已改cout << "------------欢迎使用中南大学网络在线图书系统------------"<<endl;//这里可以添加你们小组的名单或一些装饰的字符cout << "--------------------请选择登录方式--------------------" << endl;cout << " 1 管理员登陆2读者登陆" << endl;int a;cin >> a;cleanScreen();if (a == 1){string str;for (int j = 0; j <= 4; j++){cout << "请输入管理密码,你有" << (4-j) << "次机会" << endl;cin >> str;if (password == str){break;}else cout << "密码错误!请重新输入" << endl;if (j == 4)return 0;}cleanScreen();cout << "-------------欢迎来到图书管理系统-------------" << endl;cout << "成功登陆!你有以下操作可供选择" << endl;cout << endl;//操作循环cout << " 1 浏览图书信息" << endl;cout << " 2 图书信息修改" << endl;cout << " 3 图书信息添加" << endl;cout << " 4 图书信息删除" << endl;cout << " 5 保存信息并退出系统" << endl;cout << "--------------请选择操作选项编号--------------" << endl;int b;cin >> b;cleanScreen();while (b != 5) {switch (b){case 1:scan_book(); break;case 2:modify_book(); break;case 3:add_book(); break;case 4:delete_book(); break;default:cout << "输入错误,请重新输入"; break;}cout << endl;cout << "---------------请进行下一次操作---------------" << endl;cout << " 1 浏览图书信息" << endl;cout << " 2 图书信息修改" << endl;cout << " 3 图书信息添加" << endl;cout << " 4 图书信息删除" << endl;cout << " 5 退出系统" << endl;cout << "--------------请选择操作选项编号--------------" << endl;cin >> b;cleanScreen();}write_all_to_files();return 0;}else if (a == 2){int readerIndex = 0;//记录读者下标//输入学号登陆cout << "--------------请输入学号--------------" << endl;wchar_t studentnumber[20];for (int m = 0; m <= 9; m++){cout << "请输入学号,你有" << (9-m) << "次机会" << endl;wcin >> studentnumber;int t;for (t = 0; t < readers.size(); t++){if (wcscmp(studentnumber, readers[t].cardnum) == 0){readerIndex = t;break;}}//判断跳出循环原因if (t < readers.size())break;else{cout << "登录账号不存在,请重新输入学号" << endl;continue;}if (m == 9)return 0;}cleanScreen();cout << "------------欢迎来到读者自助系统------------" << endl;wcout << L"欢迎你," << readers[readerIndex].name << L"!你有以下操作可供选择" << endl;cout << endl;//操作循环cout << " 1 图书浏览" << endl;cout << " 2 图书查询" << endl;cout << " 3 图书借阅" << endl;cout << " 4 图书返还" << endl;cout << " 5 退出系统" << endl;cout << "---------------请选择操作选项--------------" << endl;int c;cin >> c;cleanScreen();while (c != 5){switch (c){case 1:scan_book(); break;case 2:search_book(); break;case 3:borrow_book(readerIndex); break;case 4:return_book(readerIndex); break;default:cout << "输入错误!请重新输入" << endl; break;}cout << endl;cout << "--------------请进行下一次操作--------------" << endl;cout << " 1 图书浏览" << endl;cout << " 2 图书查询" << endl;cout << " 3 图书借阅" << endl;cout << " 4 图书返还" << endl;cout << " 5 退出系统" << endl;cout << "---------------请选择操作选项---------------" << endl;cin >> c;cleanScreen();}write_all_to_files();return 0;}return 0;}//main 函数结束//写入/读取文件void write_all_to_files(){wofstream outfile;outfile.imbue(locale("chs"));//写入书本文件outfile.open(book_path);outfile << books.size() << '\n';for (int i = 0; i < books.size(); i++){outfile << books[i];}outfile.close();outfile.clear();//写入读者文件,由于程序中没有针对读者的删改(备用,将0改为1后即可编译这段代码) #if 0outfile.open(path::reader_path);outfile << readers.size() << '\n';for (int i = 0; i < readers.size(); i++){outfile << readers[i];}outfile.close();#endifreturn;}void read_from_files_to_vector(){wifstream infile;infile.imbue(locale("chs"));//用于设置读写中文book bb;reader rr;//在程序目录下没有相应文件时创建空文件(备用,将0改为1后即可编译这段代码) #if 0wofstream creat_if_no;creat_if_no.imbue(locale("chs"));creat_if_no.open(book_path,ios::_Noreplace);creat_if_no.close();creat_if_no.clear();creat_if_no.open(reader_path, ios::_Noreplace);creat_if_no.close();creat_if_no.clear();#endif//读取书本数据infile.open(book_path);int size = 0;infile >> size;while (!infile.eof() && size != 0){infile >> bb;books.push_back(bb);size--;}infile.close();infile.clear();//读取读者数据infile.open(reader_path);infile >> size;while (!infile.eof() && size != 0){infile >> rr;readers.push_back(rr);size--;}infile.close();return;}#include "classes.h"locale china("chs");//use china character/*void printout_book(book &b){cout << b.id << '\n'<< b.title << '\n'<< b.firstauthor << '\n'<< b.publisher <<'\n'<< b.birthday << '\n'<< b.location << '\n'<< b.price << '\n'<< b.number << endl;}*///这个函数我用重载运算符<< 的函数代替了//对应全局变量的定义vector<book> books;vector<reader> readers;//book重载操作符函数定义wistream& operator >> (wistream& in, book &b){cout << "请输入书号" << endl;in >> b.id;cout << "请输入书名" << endl;in >> b.title;cout << "请输入作者名" << endl;in >> b.firstauthor;cout << "请输入出版社" << endl;in >> b.publisher;cout << "请输入印刷日期(年月)" << endl;in >> b.birthday;cout << "请输入所属类别" << endl;in >> b.location;cout << "请输入价格" << endl;in >> b.price;cout << "请输入数量" << endl;in >> b.number;return in;}wostream& operator<<(wostream& out, book &b){out << b.id << ' '<< b.title << ' '<< b.firstauthor << ' '<< b.publisher << ' '<< b.birthday.year << ' '<< b.birthday.month << ' '<< b.location << ' '<< b.price << ' '<< b.number << endl;return out;}wifstream& operator >> (wifstream& in, book &b){in >> b.id >> b.title >> b.firstauthor>> b.publisher >> b.birthday.year >> b.birthday.month>> b.location >> b.price >> b.number;return in;}wofstream& operator<<(wofstream& out, book &b){out << b.id << ' '<< b.title << ' '<< b.firstauthor << ' '<< b.publisher << ' '<< b.birthday << ' '<< b.location << ' '<< b.price << ' '<< b.number << '\n';return out;}//reader重载操作符函数定义wistream& operator >> (wistream& in, reader &r){//由于没有对reader的操作,这个函数尚未被使用cout << "请输入读者姓名" << endl;in >> ;cout << "请输入性别(男为0,女为1)" << endl;cout << "请输入卡号" << endl;in >> r.cardnum;cout << "请输入学位(学士为0,硕士为1,博士为2)" << endl;in >> r.e;r.already = 0;//已借书本数默认为0return in;}wostream& operator<<(wostream& out, reader &r){out << r.cardnum << ' ';out << << ' ';out << r.s << ' ';out << r.e << ' ';out << r.already << endl;return out;}wifstream& operator >> (wifstream& in, reader &r){in >> r.cardnum >> >> r.s>> r.e >> r.already;return in;}wofstream& operator<<(wofstream& out, reader &r){out << r.cardnum << ' '<< << ' '<< r.s << ' '<< r.e << ' '<< r.already << '\n';return out;}//main函数中调用定义void scan_book() //建立浏览函数{for (int i = 0; i < books.size(); i++){wcout << books[i];}}void search_book() //建立搜索函数{cout << "************你有以下查询方式可供选择************" << endl; cout << " 1 按书名查询" << endl;cout << " 2 按编号查询" << endl;cout << " 3 按作者查询" << endl;cout << "************请选择查询方式************" << endl;cin >> g;switch (g){case 1:{wchar_t name[20];cout << "************请输入书名************" << endl;wcin >> name;for (int r = 0; r < books.size(); r++){if (wcscmp(books[r].title, name) == 0){wcout << books[r];return;}}cout << "查无此书" << endl;return;break;}case 2:{int str;cout << "************请输入图书编号************" << endl;cin >> str;for (int l = 0; l < books.size(); l++){if (books[l].id == str){wcout << books[l];return;}}cout << "查无此书" << endl;return;break;}case 3:{wchar_t auth[10];cout << "************请输入图书作者************" << endl;wcin >> auth;for (int p = 0; p < books.size(); p++){if (wcscmp(books[p].firstauthor, auth) == 0){wcout << books[p];return;}}cout << "查无此书" << endl;return;break;}default:{cout << "查无此书" << endl;return;}}}//实现逻辑有问题,无法建立书-借书人的对应关系void borrow_book(int t) //建立借书函数{if (readers[t].already >= 5){cout << "抱歉,你的借书数已满,不可再借" << endl;return;}int log;cout << "************请输入要借出图书的登陆号************" << endl;wcin >> log;for (int i = 0; i < books.size(); ++i){if (log == books[i].id){if (books[i].number > 0){int y;cout << "确认借出书籍吗?确认请输入1 取消请输入0" << endl;cin >> y;if (y == 1){cout << "借阅成功!";--(books[i].number);++(readers[t].already);return;}else return;}else{cout << "图书已借完" << endl;return;}}}cout << "图书不存在!" << endl;return;}void return_book(int t) //建立还书函数{int log;cout << "************请输入要归还的图书的登陆号************" << endl;wcin >> log;for (int i = 0; i < books.size(); i++){if (log == books[i].id){cout << "图书归还成功" << endl;++books[i].number;--readers[t].already;return;}}cout << "图书不存在于本图书馆无需归还!" << endl;return;}void modify_book() //建立修改函数{int log;cout << "************请输入要修改的图书编号************" << endl;wcin >> log;for (int i = 0; i < books.size(); i++){if (log == books[i].id){cout << "需修改图书信息如下" << endl;wcout << books[i];cout << "************请输入修改后的信息************" << endl;wcin >> books[i];return;}}cout << "图书不存在无法修改" << endl;return;}void delete_book(){int log;cout << "************请输入要删除的图书编号************" << endl;cin >> log;//迭代器实现删除指定图书vector<book>::iterator itor2;for (vector<book>::iterator iter = books.begin(); iter != books.end(); ){if (log == iter->id){cout << "将删除的图书信息如下" << endl;wcout << *iter;int sure = 0;cout << "确定删除?(1确定,0取消)" << endl;cin >> sure;if (sure == 0)return;//开始在内存中删除itor2 = iter;books.erase(itor2);cout << "编号为" << log << "的图书已删除" << endl;return;}elseiter++;}cout << "图书不存在无法删除" << endl;return;}void add_book(){book new_book;cout << "************请输入新图书信息************" << endl;wcin >> new_book;books.push_back(new_book);return;}。

相关文档
最新文档