c图书管理系统(图书管理系统设计)
本文目录一览:
c语言图书管理系统 急需!!
我简单给你说一下吧。
1、首先定义数据结构
图书结构:图书编号、图书名称、单价、作者、存在状态
人员结构:人员编号(学生为学号,教师为工作编号)、姓名、性别等
借书结构:人员编号、图书编号、借书时间、还书时间
2、由于是C系统,通常情况下,数据要存储在文件中,因此,还需要定义文件结构:图书、人员、借书信息。
为了数据处理速度,可将借书信息中已经还书的信息单独放在还书信息中,借书信息中的数据只是已经借出还没有归还的数据。
3、系统功能定义,以及编码。
由于系统太过庞大,你还是自己试着做一下吧,应该可以做好的。
学习本身就是做程序,如果有困难,可以上我们团队提问题,随时恭候!
祝学习进步!
c语言图书管理系统
#include stdio.h
#include stdlib.h
#include time.h
#include string.h
typedef int BOOL;
typedef struct bookinfo
{
char number[15];/*产品编号*/
char name[30];/*产品名称*/
float price;/*单价*/
char auther[20];/*作者*/
BOOL isExit;/*存在状态*/
char lendername[20];/*借书人姓名*/
char lendersex[2];/*借书人性别*/
char lendernum[15];/*借书人学号*/
}BOOKINFO;
void menu()
{
printf("\n\n\n\n\n\n\n");
printf("\t\t\t图书管理系统\n");
printf("\t\t\t1:新进图书基本信息的输入\n");
printf("\t\t\t2:显示全部记录\n");
printf("\t\t\t3:根据图书名称查询图书基本信息\n");
printf("\t\t\t4:根据图书名称对撤销的图书信息进行删除\n");
printf("\t\t\t5:按照图书名称从小大到排序\n");
printf("\t\t\t6:统计某价格以上的图书数量\n");
printf("\t\t\t7:列出所有未借出去的图书信息\n");
printf("\t\t\t8:退出\n");
}
void choice_1_input_new()/*输入新进的图书信息*/
{
char choice;
FILE *p;
BOOKINFO newbook;
system("cls");
while(1)
{
printf("输入图书编号:");
gets(newbook.number);
printf("输入图书名称:");
gets(newbook.name);
printf("输入图书单价:");
scanf("%f",newbook.price);
while(getchar()!='\n');
printf("输入图书的作者:");
gets(newbook.auther);
printf("输入借书人姓名:");
gets(newbook.lendername);
printf("输入借书人性别:");
gets(newbook.lendersex);
printf("输入借书人学号:");
gets(newbook.lendernum);
printf("是否保存该条书目?(Y/N)\n");
choice=getch();
while(choice!='Y'choice!='y'choice!='N'choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
newbook.isExit=1;/*将图书状态设置成1,表示没有借出*/
p=fopen("c:\\bookinfo.data","ab");
fwrite(newbook,sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n该条书目已添加到c:\\bookinfo.data文件中!\n");
}
else
{
printf("\n本条书目未保存!\n");
}
printf("\n是否继续添加书目?(Y/N)\n");
choice=getch();
while(choice!='Y'choice!='y'choice!='N'choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}
}
void choice_2_display_all()/*显示全部图书信息*/
{
FILE *p;
int n;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
/*booknumber--;使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
booknumber--;
if(booknumber==0)
{
printf("没有任何图书信息!\n\n");
}
else
{
n=0;
printf(" 图书信息如下\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
while(nbooknumber)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
n++;
}
}
printf("\n\n按任意键回到主菜单!\n");
getch();
}
void choice_3_search_according_name()/*根据图书名称显示图书的信息*/
{
char search[20]="";/*search用来存放要查询的书名*/
int n;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber=0;
system("cls");
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
while(1)
{
printf("输入要查询的书本名称:");
gets(search);
if(booknumber==0)
{
printf("书库中没有任何信息!\n\n");
printf("按任意键回到主菜单!\n\n");
getch();
break;
}/*if结束*/
else
{
for(n=0;nbooknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
printf("该书的详细信息如下:\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
break;
}
if(n=booknumber)
printf("没有查找该书的任何信息!\n");
printf("\n\n是否继续查询?(Y/N)\n");
choice=getch();
while(choice!='Y'choice!='y'choice!='N'choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else结束*/
}/*while(1)结束*/
}
void choice_4_delete_according_name()/*根据图书名称对图书信息进行删除*/
{
char search[20]="";/*search用来存放要删除的书名*/
int n,i;
FILE *p;
char choice;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
while(1)
{
printf("输入要删除的书本名称:");
gets(search);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)
{
printf("书库中没有任何信息!\n\n");
printf("按任意键回到主菜单!\n\n");
getch();
break;
}/*if结束*/
else
{
for(n=0;nbooknumber;n++)
if(strcmp(bookinfo[n].name,search)==0)
{
break;
}
if(n=booknumber)
printf("没有查找该书的任何信息!\n");
else
{
printf("是否确认需要删除该条书目?(Y/N)");
choice=getch();
while(choice!='Y'choice!='y'choice!='N'choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
{
for(i=n;ibooknumber-1;i++)
bookinfo[i]=bookinfo[i+1];
booknumber--;
p=fopen("c:\\bookinfo.data","wb");
for(n=0;nbooknumber;n++)
fwrite(bookinfo[n],sizeof(BOOKINFO),1,p);
fclose(p);
printf("删除成功!\n");
}
else
printf("\n\n该条书目没有被删除!");
}
printf("\n\n是否继续进行删除操作?(Y/N)\n");
choice=getch();
while(choice!='Y'choice!='y'choice!='N'choice!='n')
choice=getch();
if(choice=='Y'||choice=='y')
continue;
else
break;
}/*else结束*/
}/*while(1)结束*/
}
void choice_5_sort_according_name()/*根据图书名称排序*/
{
FILE *p;
int m,n;
BOOKINFO temp;
BOOKINFO bookinfo[100];
int booknumber;
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
system("cls");
while(!feof(p))
{
fread(bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)
{
printf("没有任何图书信息!\n\n");
}
else
{
for(m=0;mbooknumber-1;m++)
for(n=m+1;nbooknumber;n++)
if(strcmp(bookinfo[m].name,bookinfo[n].name)0)
{
temp=bookinfo[m];
bookinfo[m]=bookinfo[n];
bookinfo[n]=temp;
}
p=fopen("c:\\bookinfo.data","wb");
for(m=0;mbooknumber;m++)
fwrite(bookinfo[m],sizeof(BOOKINFO),1,p);
fclose(p);
printf("\n\n完成排序!\n\n");
}
printf("按任意键回到主菜单!\n");
getch();
}
void choice_6_display_high_price()/*根据价格列出图书信息*/
{
float price;
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
printf("请输入价格:");
scanf("%f",price);
p=fopen("c:\\bookinfo.data","rb");
booknumber=0;
while(!feof(p))
{
fread(bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;/*使用feof()函数会多读一行,因此需要booknumber自减一次,使书目的数量正确*/
fclose(p);
if(booknumber==0)
{
printf("没有任何图书信息!\n\n");
}
else
{
for(n=0;nbooknumber;n++)
{
if(bookinfo[n].price=price)
count++;
}
if(count==0)
printf("书库中没有比%.1f$价格高的图书!",price);
else
{
printf(" 价格高于%.1f$的图书信息如下\n",price);
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
for(n=0;nbooknumber;n++)
{
if(bookinfo[n].price=price)
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n\n按任意键回到主菜单!\n");
getch();
}
void choice_7_display_according_exitflag()/*根据存在状态列出图书信息*/
{
FILE *p;
int n;
int count=0;
BOOKINFO bookinfo[100];
int booknumber;
system("cls");
booknumber=0;
p=fopen("c:\\bookinfo.data","rb");
while(!feof(p))
{
fread(bookinfo[booknumber],sizeof(BOOKINFO),1,p);
booknumber++;
}
booknumber--;
fclose(p);
if(booknumber==0)
{
printf("书库中没有任何书目存在!\n");
}
else
{
for(n=0;nbooknumber;n++)
if(bookinfo[n].isExit==1)
count++;
if(count==0)
printf("书库中的书籍全部借出!\n");
else
{
printf("书库中未被借出的图书信息如下:\n\n");
printf(" 图书信息 | 借书人信息 \n");
printf("编号 名称 单价 作者 图书状态 | 姓名 性别 学号\n");
for(n=0;nbooknumber;n++)
if(bookinfo[n].isExit==1)
{
printf("%-6s%-12s%-8.1f%-8s%-9d| %-12s%-8s%-8s\n",
bookinfo[n].number,bookinfo[n].name,bookinfo[n].price,
bookinfo[n].auther,bookinfo[n].isExit,bookinfo[n].lendername,
bookinfo[n].lendersex,bookinfo[n].lendernum);
}
}
}
printf("\n按任意键返回主菜单!\n");
getch();
}
void main()
{
char choice;
clock_t tm;
FILE *p;
if((p=fopen("c:\\bookinfo.data","rb"))==NULL)
{
p=fopen("c:\\bookinfo.data","wb");
fclose(p);
}
while(1)
{
system("cls");
menu();
choice=getch();
switch(choice)
{
case '1':choice_1_input_new();break;/*输入新进的图书信息*/
case '2':choice_2_display_all();break;/*显示全部图书信息*/
case '3':choice_3_search_according_name();break;/*根据图书名称显示图书的信息*/
case '4':choice_4_delete_according_name();break;/*根据图书名称对图书信息进行删除*/
case '5':choice_5_sort_according_name();break;/*根据图书名称排序*/
case '6':choice_6_display_high_price();break;/*根据价格列出图书信息*/
case '7':choice_7_display_according_exitflag();break;/*根据存在状态列出图书信息*/
case '8':printf("\n\n\t\t\t谢谢使用,再见!\n\t\t\t按任意键退出!\n");getch();return;
default:
printf("\n\n\t\t\t请输入菜单中的数字!(1~8)");
tm=clock();
while(clock()tm+1800);
break;
}
}
}
写的很赶,不知道行不行
程序很长,但是没什么复杂的东西。
要是写的不好,楼主就将就吧。
c语言图书库存管理系统?
#includealgorithm#includecstdio#includecstring#includecstdlib#includeiostream#includevector#includequeue#includestack#includemap#includestring#includeclimits#includecmath#define N 1000010#define LL long longusing namespace std;#includeiostream#includeiomanip#includestring#includefstream#includestdio.husing namespace std;const int Maxb=10000; //最多的图书class Book//图书类{int tag; //删除标记e799bee5baa6e997aee7ad94e58685e5aeb9313333353336391:已删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)authorsetw(10)number2setw(10)positionsetw(10)timesetw(10)priceendl;}}; 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(){ coutsetw(10)"图书书号"setw(10)"图书名字"setw(10)"图书主编"setw(10)"版次"setw(10)"出版社"setw(10)"出版年"setw(10)"价格"endlendlendlendl;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){ coutendlendl;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" ****************************"endlendl;coutendl"请按键选择您需要的操作:";cinchoice;while(choice!=1choice!=2choice!=3choice!=4choice!=5choice!=6choice!=0){ coutendl" ** 您输入的编号在菜单里不存在,请重新输入 **"'\a'endlendl; cout" 请选择您需要的操作:"; cinchoice;} switch (choice){case 1:cout "输入ISBN书号(一定为数字否则会异常):";cin bookid; cout "输入书名:";cin bname; cout "输入主编:";cin editor;cout "输入版次(一定为数字否则会异常):";cinbanci;cout"输入出版社:";cinposition;cout"输入出版年(一定为数字否则会异常):"; cinyear;cout"输入价格(一定为数字否则会异常):";cinvalue;addbook(bookid,bname,editor,banci,position,year,value);cout"ISBN书号"bookid"添加成功,如需返回主菜单请按1,退出系统请按0(一定要输入数字)";cinchoice4;while (choice4!=0choice4!=1){ cout"输入错误请重新输入"endl; cinchoice4;}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退出:"; cinchoice3;switch(choice3){case 1: {cout " 输入ISBN书号:"; //按ISBN书号查询cin bookid;b=search1(bookid);if (b==NULL){cout " 该图书不存在" endl;break;}b-disp();}break;case 2:{ cout"请输入书名:"; cinbname; b=search2(bookid,bname); if(b==NULL) { cout"该图书不存在啊!"endl; break; } b-disp();} break;case 3: { cout"请输入主编:"; cineditor; b=search3(bookid,editor); if(b==NULL) { cout"该主编不存在!"endl; break; } b-disp();} break;}break;case 5:disp();break;case 6:clear();break;}}coutendl" ****** 慢走 ******"endlendlendl;}; int main(){BDatabase BookDB;coutendlendlendl;cout" Welcome to the library of SCU "endl;cout" 欢 迎 来 到XXXX 大 学 图 书 馆 "endl;coutendlendl"请输入0进入图书馆"endl;int w;cinw;if(w==0)BookDB.bookdata();system("pause");return 0;}