C语言 图书管理系统 rfid图书管理系统

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

struct BOOK

{

int id,usr[10],total,store,days[10];

char name[30],author[20];

}books[100];

/*上面是结构体的定义,用于存放书籍及借书的信息。*/

void page_title(char *menu_item)

{

system("cls");

printf(">>> 图 书 管 理 系 统 <<<nn- %s -nn",menu_item);

}

/*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/

void return_confirm(void)

{

printf("n按任意键返回……n");

getch();

}

/*上面是返回前请求确认的函数,以便在返回前观察结果*/

int search_book(void)

{

int n,i; printf("请输入图书序号:");

scanf("%d",&i);

for(n=0;n<100;n++)

{

if(books[n].id==i)

{

printf("书名:%sn",books[n].name);

printf("作者:%sn",books[n].author);

printf("存数:%dn",books[n].store);

printf("总数:%dn",books[n].total);

return n;

} }

printf("n输入错误或无效图书序号.n");

return -1;

}

/*上面的函数是在数组中找到图书号匹配的记录,

显示其信息并返 回数组下标,如果找不到相应记录则提示错误并返回-1。*/

void book_out(void)

{

int n,s,l,d; page_title("借阅图书");

if((n=search_book())!=-1&&books[n].store>0)

{

printf("请输入借书证序号:");

scanf("%d",&s);

printf("请输入可借天数:");

scanf("%d",&d);

for(l=0;l<10;l++)

{

if(books[n].usr[l]==0)

{

books[n].usr[l]=s; books[n].days[l]=d; break;

}

}

books[n].store--;

}

if(n!=-1&&books[n].store==0)

printf("此书已经全部借出.n");

return_confirm();

} /*上面是借书的函数,首先调用找书函数*/

void book_in(void)

{

int n,s,l; page_title("归还图书");

if((n=search_book())!=-1&&books[n].store<books[n].total)

{

printf("借阅者图书证列表:n");

for(l=0;l<10;l++)

if (books[n].usr[l]!=0)

printf("[%d] - %d天n",books[n].usr[l],books[n].days[l]);

printf("请输入借书证序号:");

scanf("%d",&s);

for(l=0;l<10;l++)

{

if(books[n].usr[l]==s)

{

books[n].usr[l]=0;

books[n].days[l]=0;

break;

}

}

books[n].store++;

}

if(n!=-1&&books[n].store==books[n].total)

printf("全部入藏.n");

return_confirm();

}

void book_add(void)

{

int n;

page_title("注册新书");

for(n=0;n<100;n++)

if(books[n].id==0) break;

printf("序号:");

scanf("%d",&books[n].id);

printf("书名:");

scanf("%s",&books[n].name);

printf("作者:");

scanf("%s",&books[n].author);

printf("数量:");

scanf("%d",&books[n].total);

books[n].store=books[n].total;

return_confirm();

}

void book_del(void)

{

int n;

page_title("注销旧书");

if((n=search_book())!=-1) books[n].id=0;

printf("该书已注销.n");

return_confirm();

}

void main(void)

{

menu: page_title("操作选单");

printf("请用数字键选择操作nn");

printf("1 借阅图书n2 归还图书nn");

printf("3 注册新书n4 注销旧书nn");

printf("n0 退出n");

switch(getch())

{

case '1' : book_out();break;

case '2' : book_in();break;

case '3' : book_add();break;

case '4' : book_del();break;

case '0' : exit(0);

}

goto menu;

}

#include<iostream>

#include<iomanip>

#include<string>

#include<fstream>

#include<stdio.h>

using namespace std;

const int Maxb=10000; //最多的图书

class Book//图书类

{

int tag; //删除标记1:已删0:未删

int number; //ISBN书号

char name[20]; //书名

char author[10]; //主编

char number2[10];//版次

char position[20];//出版社

char time[20];//出版年

int price;//定价

int onshelf; //是否在架1:在架0:已借

public:

Book() {}

char *getname() { return name; } //获取姓名

int getnumber() { return number; } //获取ISBN书号

int gettag() { return tag; } //获取删除标记

char *getauthor() {return author;} //获取主编

char *getnumber2() {return number2;} //获取版次

char *getposition() {return position;} //获取出版社

char *gettime() {return time;} //获取出版年

char getprice() {return price;} //获取图书定价

void delbook() { tag=1; } //删除图书

void addbook(int n,char *na,char *au,char *n2,char *da,char *ti,int pr) //增加图书

{

tag=0;

number=n;

price=pr;

strcpy(name,na);

strcpy(author,au);

strcpy(number2,n2);

strcpy(position,da);

strcpy(time,ti);

onshelf=1;

}

void disp() //输出图书

{

cout << setw(10) << number << setw(10) << name << setw(10)

<< setw(10)<<author<<setw(10)<<number2<<setw(10)<<position<<setw(10)<<time<<setw(10)<<price<<endl;

}

};

class BDatabase //图书库类

{

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 *au, char *n2, char *da,char *ti,int pr) //增加图书

{

Book *p=search1(n);

if (p==NULL)

{

top++;

book[top].addbook(n,na,au,n2,da,ti,pr);

return 1;

}

return 0;

}

Book *search1(int bookid) //查找图书

{

for (int i=0;i<=top;i++)

if (book[i].getnumber()==bookid &&

book[i].gettag()==0)

return &book[i];

return NULL;

}

Book *search2(int bookid,char *name) //按书名查找图书

{

for(int i=0;i<=top;i++)

if(strcmp(book[i].getname(),name)==0)

{bookid=book[i].getnumber();

return &book[i];

}

return NULL;

}

Book *search3(int bookid,char *author) //按主编查找图书

{

for(int i=0;i<=top;i++)

if(strcmp(book[i].getauthor(),author)==0)

{bookid=book[i].getnumber();

return &book[i];

}

return NULL;

}

void bookdata(); //图书库维护

void disp()

{

cout<<setw(10)<<"图书书号"<<setw(10)<<"图书名字"<<setw(10)<<"图书主编"<<setw(10)<<"版次"<<setw(10)<<"出版社"<<setw(10)<<"出版年"<<setw(10)<<"价格"<<endl<<endl<<endl<<endl;

for (int i=0;i<=top;i++)

if (book[i].gettag()==0)

book[i].disp();

}

~BDatabase() //析构函数,将book[]写入book.txt文件中

{

fstream file("book.txt",ios::out);

for (int i=0;i<=top;i++)

if (book[i].gettag()==0)

file.write((char *)&book[i],sizeof(book[i]));

file.close();

}

};

void BDatabase::bookdata()

{

int choice=1;

int choice2=1;

int choice3=1;

int choice4;

char bname[40];

char editor[40];

char banci[40];

char position[40];

char year[40];

int value;

int bookid;

Book *b;

while (choice!=0)

{

cout<<endl<<endl;

cout<<" **************************** "<<endl;

cout<<" **** 1添加图书 **** "<<endl;

cout<<" **** 3 删除图书 **** "<<endl;

cout<<" **** 4 图书查询 **** "<<endl;

cout<<" **** 5 显示图书 **** "<<endl;

cout<<" **** 6 全部删除 **** "<<endl;

cout<<" **** 7 借书 **** "<<endl;

cout<<" **** 8 还书 **** "<<endl;

cout<<" **** 0 退出 **** "<<endl;

cout<<" ****************************"<<endl<<endl;

cout<<endl<<"请按键选择您需要的操作:";

cin>>choice;

while(choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6&&choice!=0){

cout<<endl<<" ** 您输入的编号在菜单里不存在,请重新输入 **"<<'a'<<endl<<endl;

cout<<" 请选择您需要的操作:";

cin>>choice;

}

switch (choice)

{

case 1:

cout <<"输入ISBN书号(一定为数字否则会异常):";

cin >> bookid;

cout <<"输入书名:";

cin >> bname;

cout <<"输入主编:";

cin >>editor;

cout <<"输入版次(一定为数字否则会异常):";

cin>>banci;

cout<<"输入出版社:";

cin>>position;

cout<<"输入出版年(一定为数字否则会异常):";

cin>>year;

cout<<"输入价格(一定为数字否则会异常):";

cin>>value;

addbook(bookid,bname,editor,banci,position,year,value);

cout<<"ISBN书号"<<bookid<<"添加成功,如需返回主菜单请按1,退出系统请按0(一定要输入数字)";

cin>>choice4;

while (choice4!=0&&choice4!=1)

{

cout<<"输入错误请重新输入"<<endl;

cin>>choice4;}

switch (choice4)

{

case 1:

choice=1;

break;

case 0:

choice=0;

break;}

break;

case 3:

cout << " 输入ISBN书号:";

cin >> bookid;

b=search1(bookid);

if (b==NULL)

{

cout << " 该图书不存在" << endl;

break;

}

b->delbook();

break;

case 4:

cout<<"查找方式:"<<endl<<"1按ISBN书号查询 2按书名查询 3按主编查询 0退出:";

cin>>choice3;

switch(choice3)

{

case 1:

{cout << " 输入ISBN书号:"; //按ISBN书号查询

cin >> bookid;

b=search1(bookid);

if (b==NULL)

{

cout << " 该图书不存在" << endl;

break;

}

b->disp();

}

break;

C语言 图书管理系统 rfid图书管理系统
case 2:

{

cout<<"请输入书名:";

cin>>bname;

b=search2(bookid,bname);

if(b==NULL)

{

cout<<"该图书不存在啊!"<<endl;

break;

}

b->disp();

}

break;

case 3:

{

cout<<"请输入主编:";

cin>>editor;

b=search3(bookid,editor);

if(b==NULL)

{

cout<<"该主编不存在!"<<endl;

break;

}

b->disp();

}

break;

}

break;

case 5:

disp();

break;

case 6:

clear();

break;

}

}

cout<<endl<<" ****** 慢走 ******"<<endl<<endl<<endl;

};

int main()

{

BDatabase BookDB;

cout<<endl<<endl<<endl;

cout<<" Welcome to the library of SCU "<<endl;

cout<<" 欢 迎 来 到 四 川 大 学 图 书 馆 "<<endl;

cout<<endl<<endl<<"请输入0进入图书馆"<<endl;

int w;

cin>>w;

if(w==0)

BookDB.bookdata();

system("pause");

return 0;

}

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/116381.html

更多阅读

转载 C语言:随机函数rand()、srand()、random()和rando

原文地址:C语言:随机函数rand()、srand()、random()和randomized()的区别和用法作者:猎空声明一点:在VC++中,没有random()和randomize()函数,只有rand()和srand()函数。其中,random()和randomize()函数的使用的方法分别与rand()和srand()

如何学习C语言编程

如何学习C语言编程——简介6 部分:准备工作 变量的使用 使用条件语句 学习循环语句 使用函数 不断学习诞生于上世纪70年代的C语言是一门古老的语言了, 但作为一门底层语言,时至今日它仍然非常强大。学习C语言能够为学习其他更复杂

转载 C语言贪心算法 c语言贪心算法

你真牛原文地址:C语言贪心算法作者:人鱼的泪贪心算法开放分类:算法、信息学贪心算法所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最

声明:《C语言 图书管理系统 rfid图书管理系统》为网友冬日戀塵分享!如侵犯到您的合法权益请联系我们删除