C语言编程:图书借阅系统

Python016

C语言编程:图书借阅系统,第1张

没时间做了 实现不是很理想固定死了你这个实现 你可以在改下

/*1、 系统初始化10种图书(图书名自定);

2、 显示所有图书列表(编号、名称和当前状态);

3、 显示图书借出状态(是否已经被借阅);

4、 操作者可以通过图书名称进行查询,并借阅;

5、 操作者也可以归还某本已经借阅的图书;

6、 对某本图书的借阅次数进行汇总求和;

7、 求出借阅次数最多和最少的图书;*/

#ifndef LIBRARY_H

#define LIBRARY_H

#include<vector>

#include<string>

#include<iterator>

#include<utility>

#include<iostream>

using std::cin

using std::vector

using std::iterator

using std::string

using std::pair

using std::istream

class Book{

public:

Book(istream&i):ve(bo(i)){}//1、 系统初始化10种图书(图书名自定)

void list(size_t&n) const//查询

{ pair<string,bool>ir=ve[n+1]

std::cout<<"第"<<n<<"本书名"<<ir.first<<"状态"<<std::ends

(ir.second==true)?std::cout<<"存在":std::cout<<"已借出"<<std::endl

std::cout<<std::endl}//2、 显示图书列表(编号、名称和当前状态)

void list(string&str) //查询并借阅

{

vector<pair<string,bool>>::iterator itr=ve.begin()

vector<pair<string,int>>::iterator it=pai.begin()

while(itr!=ve.end())

{if(itr->first==str&&it->first==str)

{std::cout<<"存在!请输入y/n确认是否借阅"<<std::ends

char chcin>>ch

if(ch=='y')

{itr->second=false

it->second=it->second++

std::cout<<"已借阅"<<std::ends}

}else{std::cout<<"不存在"<<std::ends}

++itr++it

}

}

void rest(string&str)

{vector<pair<string,bool>>::iterator itr=ve.begin()

while(itr++!=ve.end())

{if(itr->first==str&&itr->second==false)

{itr->second=true

std::cout<<"已归还"<<" "}else{std::cout<<"不在"<<std::endl}}}//5、 操作者也可以归还某本已经借阅的图书;

void sum(const string str)

{vector<pair<string,int>>::iterator it=pai.begin()

int max=(++it)->second

int min=(++it)->second

string ma,mi

while(it!=pai.end())

{

if(it->first==str)

{std::cout<<"借阅次数为"<<(it->second)<<std::ends}

if(max<it->second)

{max=it->second

ma=it->first}

if(min>it->second)

{min=it->second

mi=it->first}}

std::cout<<"借阅最多次de 图书"<<ma<<" "<<max<<"次"<<std::endl

std::cout<<"借阅最少次de 图书"<<mi<<" "<<min<<"次"<<std::endl}/*6、 对某本图书的借阅次数进行汇总求和;

7、 求出借阅次数最多和最少的图书;*/

private:

vector<pair<string,bool>>bo(istream&)

vector<pair<string,bool>>ve

vector<pair<string,int>>pai

}

vector<pair<string,bool>>Book::bo(istream&is)//创建 图书 及存在情况

{

int i=0

std::string s

std::vector<pair<string,bool>>v

vector<pair<string,int>>pai

while(is>>s)

{

v.push_back(make_pair(s,true))

pai.push_back(make_pair(s,0))

++i

if(i==10)

break

}

is.clear()

return v

}

#endif

下面是 main

#include<iostream>

#include"library.h"

using namespace std

int main()

{

size_t x=5

string str

Book a(cin)//初始化

cin.clear()

a.list(x)//输入数字查询

cout<<"输入查询"<<endl

cin>>str

a.list(str)//输入字符查询并借阅

//a.rest(string("sa"))//归还

//a.sum(string("sa"))//查询某本书的借阅次数并统计输出借阅最多和最少的书

return 0

}

#include<windows.h>

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<conio.h>

struct book{

char number[100]

char tittle[100]

char writer[100]

char publisher[100]

char date[100]

char price[100]

char status[100]

char reader[100]

}

void search_book()

void borrow_book()

void return_book()

void add_book()

void delete_book()

void modify_book()

void scan_book()

int main()

{

int c1=0,c2,c3

int l,x,z

while(1)

{

system("color 2C")

printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n")

printf("\t\t\t| * - * - * -图书管理系统 * - * - * |\n")

printf("\t\t\t* [1] 用户登录 *\n")

printf("\t\t\t* [2] 管理员登录 *\n")

printf("\t\t\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n")

printf("\n")

printf("请选择你的操作 :")

scanf("%d",&c1)

system("cls")

break

}

if(c1==1)

{

while(1){

system("color 2C")

printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n")

printf("\t\t\t| * - * - * -图书管理系统 * - * - * |\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^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n")

printf("\n")

printf("请选择你的操作 :")

scanf("%d",&c2)

getchar()

switch(c2)

{

case 1:search_book()break

case 2:borrow_book()break

case 3:return_book()break

case 4:scan_book()break

case 5:system("cls")return 0

}

}

}

if(c1==2)

{

while(1){

system("color 2C")

printf("\t\t\t ^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n")

printf("\t\t\t| * - * - * -图书管理系统 * - * - * |\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^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^ \n")

printf("\n")

printf("请选择你的操作 :")

scanf("%d",&c3)

getchar()

switch(c3)

{

case 1:add_book()break

case 2:delete_book()break

case 3:modify_book()break

case 4:scan_book()break

case 5:system("cls")return 0

}

}

}

}

/*查询图书*/

void search_book()

{

FILE*fp

struct book n

struct book nn

int l,r

char x,z

fp=fopen("F:\\课程设计\\图书管理系统.txt","rb")

while(1)

{

l=0

system("cls")

printf("请输入图书名称:")

scanf("%s",n.tittle)

fflush(stdin)

rewind(fp)

while(1)

{

fread(&nn,sizeof(nn),1,fp)

if(feof(fp))

break

r=strcmp(n.tittle,nn.tittle )

if(r==0)

{

l=1

break

}

}

if(l==0)

{

printf("没有要查询的图书!!!\n\n ")

}

else

{

printf("查询的图书为:")

printf("\n")

printf("****************************************\n")

printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n")

printf("\n")

printf("%s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader)

printf("\n\n\n")

}

printf("是否继续查询图书 ? [是(y)/否(n)] ? \n\n")

do

{

x=getche()

}while(x!='n'&&x!='y')

if(x=='n')

break

}

fclose(fp)

system("cls")

}

//添加

void add_book()

{

FILE *fp

struct book n

struct book nn

char x,z

int l,r

fp=fopen("F:\\课程设计\\图书管理系统.txt","ab+")

do

{

system("cls")

do

{

l=0

printf("\n")

printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n")

fflush(stdin)

scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader)

system("cls")

rewind(fp)

while(!feof(fp))

{

fread(&nn,sizeof(nn),1,fp)

r=strcmp(n.tittle,nn.tittle)

if(r==0)

{

l=1

printf(" 该图书已存在,请输入新的图书信息: \n\n")

break

}

}

}while(l)

fwrite(&n,sizeof(n),1,fp)

printf("\n")

printf("是否继续输入新的图书信息[y/n] \n\n")

do

{

x=getche()

}while(x!='n'&&x!='y')

}while(x=='y')

fclose(fp)

system("cls")

}

//删除图书

void delete_book()

{

FILE *fp,*fp1

char x,z

struct book n

struct book nn

int l,r

fp=fopen("F:\\课程设计\\图书管理系统.txt","ab+")

while(1)

{

l=0

system("cls")

printf("\n")

printf("请输入需要删除的图书名: \n\n")

fflush(stdin)

scanf("%s",&n.tittle)

rewind(fp)

while(1)

{

fread(&nn,sizeof(nn),1,fp)

if(feof(fp))

break

r=strcmp(n.tittle,nn.tittle)

if(r==0)

{

l=1

break

}

}

if(l==0)

{

printf("\n")

printf("对不起,未找到该图书 \n")

}

else

{

printf("\n")

printf("****************************************\n")

printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n")

printf("\n")

printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader)

printf("\n")

printf("确认删除图书信息? [是(y)/否(n)]\n\n")

do

{

z=getche()

}while(z!='n'&&z!='y')

if(z=='n')

break

else

{

fp1=fopen("F:\\课程设计\\图书管理系统new.txt","wb")

rewind(fp)

while(1)

{

fread(&nn,sizeof(nn),1,fp)

if(feof(fp))

break

r=strcmp(n.tittle,nn.tittle)

if(r!=0)

fwrite(&nn,sizeof(nn),1,fp1)

}

fclose(fp)

fclose(fp1)

fp=fopen("F:\\课程设计\\图书管理系统.txt","wb")

fp1=fopen("F:\\课程设计\\图书管理系统new.txt","rb")

while(1)

{

fread(&nn,sizeof(nn),1,fp1)

if(feof(fp1))

break

fwrite(&nn,sizeof(nn),1,fp)

}

fclose(fp)

fclose(fp1)

}

}

printf("\n")

printf("是否继续删除图书信息? [是(y)/否(n)] \n")

do

{

x=getche()

}while(x!='n'&&x!='y')

if(x=='n')

break

}

fclose(fp)

system("cls")

}

//修改图书信息

void modify_book()

{

FILE *fp

struct book n

struct book nn

int l,r

char x,z

fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+")

while(1)

{

l=0

printf("\n")

system("cls")

printf("请输入需要修改的图书名: \n\n")

fflush(stdin)

scanf("%s",&n.tittle)

system("cls")

rewind(fp)

while(1)

{

fread(&nn,sizeof(nn),1,fp)

if(feof(fp))

break

r=strcmp(n.tittle,nn.tittle)

if(r==0)

{

l=1

break

}

}

if(l==0)

{

printf("\n")

printf("对不起,未找到该图书信息 \n\n")

}

else

{

printf("\n")

printf("****************************************\n")

printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n")

printf("\n")

printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader)

printf("请依次修改图书信息\n\n\n")

fflush(stdin)

scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader)

fseek(fp,sizeof(nn),1)

fwrite(&n,sizeof(nn),1,fp)

}

printf("\n")

printf(" 是否继续修改用户信息[y/n]? \n\n")

do

{

x=getch()

}while(x!='n'&&x!='y')

if(x=='n')

break

}

fclose(fp)

system("cls")

}

//借书

void borrow_book()

{

FILE*fp

struct book n

struct book nn

char x,z

int l,r

fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+")

while(1)

{

l=0

system("cls")

printf("\n")

printf("请输入需要借阅的图书名: \n")

fflush(stdin)

scanf("%s",&n.tittle)

rewind(fp)

while(1)

{

fread(&nn,sizeof(nn),1,fp)

if(feof(fp))

break

r=strcmp(n.tittle,nn.tittle)

if(r==0)

{

l=1

break

}

}

if(l==0)

{

printf("\n")

printf("对不起,未找到该图书。 \n")

}

else

{ printf("\n")

printf("****************************************\n")

printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n")

printf("\n")

printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader)

printf("\n")

fflush(stdin)

printf("请输入图书信息并修改在库状态及借阅者信息")

printf("****************************************\n")

printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n")

printf("\n")

scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader)

fseek(fp,sizeof(nn),1)

fwrite(&n,sizeof(nn),1,fp)

}

printf("\n")

printf(" 是否继续借书? [是(y)/否(n)] \n\n")

do

{

x=getch()

}while(x!='n'&&x!='y')

if(x=='n')

break

}

fclose(fp)

system("cls")

}

//还书

void return_book()

{

FILE*fp

struct book n

struct book nn

char x,z

int l,r

fp=fopen("F:\\课程设计\\图书管理系统.txt","rb+")

while(1)

{

l=0

system("cls")

printf("\n")

printf("请输入需要借还的图书名: \n")

fflush(stdin)

scanf("%s",&n.tittle)

rewind(fp)

while(1)

{

fread(&nn,sizeof(nn),1,fp)

if(feof(fp))

break

r=strcmp(n.tittle,nn.tittle)

if(r==0)

{

l=1

break

}

}

if(l==0)

{

printf("\n")

printf("对不起,未找到该图书。 \n")

}

else

{

printf("\n")

printf("****************************************\n")

printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n")

printf("\n")

printf("%s %s %s %s %s %s %s %s",nn.number,nn.tittle,nn.writer,nn.publisher,nn.date,nn.price,nn.status,nn.reader)

printf("\n")

fflush(stdin)

printf("请输入图书信息并修改在库状态 \n\n")

printf("****************************************\n")

printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n")

printf("\n")

scanf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader)

fseek(fp,-(int)sizeof(nn),1)

fwrite(&n,sizeof(nn),1,fp)

}

printf("\n")

printf("是否继续还书? [是(y)/否(n)] \n")

do

{

x=getche()

}while(x!='n'&&x!='y')

if(x=='n')

break

}

fclose(fp)

system("cls")

}

//浏览

void scan_book()

{

FILE*fp

char x,z

struct book n

fp=fopen("F:\\课程设计\\图书管理系统.txt","rb")

rewind(fp)

system("cls")

while(1)

{

fread(&n,sizeof(n),1,fp)

if(feof(fp))

break

else

{

printf("********************************************\n")

printf("编号 书名 作者 出版社 出版时间 价格 状态 借阅者\n")

printf("\n")

printf("%s %s %s %s %s %s %s %s",n.number,n.tittle,n.writer,n.publisher,n.date,n.price,n.status,n.reader)

printf("\n")

}

}

printf("\n")

printf("回到主菜单请按回车")

do

{

x=getche()

}while(x!='\r')

if(x=='\r')

{

fclose(fp)

system("cls")

}

}