图书管理系统(C语言)
大一的一个C语言课设,做的不是很好,不过没有思路的时候作为参考还是可以滴。每个功能也可以分文件写,不影响。欢迎大家前来批评指正!
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
int Bsum;
int Psum;
struct Book
{
int BookNumber;//书本编号
char Name[20];//书本名
char authorName[20];//作者名
float price;//价格
float Discount;//折扣
float Disprice;//折后价
int Bsum;//本书书库剩余量;
} Book[100];
struct People
{
int ID;
char Name[20];//书本名
char date[20];
} People[100];
void menu()
{
printf(" 欢迎进入优快云大学图书管理系统\n");
printf("******************************菜单*************************\n");
printf("* *\n");
printf("* 1:书本信息添加 2:书本信息修改 *\n");
printf("* *\n");
printf("* 3:书库信息浏览 4:书本信息查询 *\n");
printf("* *\n");
printf("* 5:书本信息删除 6:图书排序 *\n");
printf("* *\n");
printf("* 7:图书借阅 8:退出 *\n");
printf("* *\n");
printf ( "*********************************************************\n");
printf("Welcome to the library management system of Guangxi Normal University\n");
}
void modificationmenu()
{
printf("请选择修改项:\n");
printf("1:书本编号\n");
printf("2:书本名\n");
printf("3:作者名\n");
printf("4:价格\n");
printf("5:折扣 :\n");
printf("6:书库剩余量\n");
printf("\n");
}
void Add()
{
int i,j,flag=0,s;
printf("请输入添加图书的编号:\n");
cin>>j;
for(i=1;i<=Bsum;i++){
if(Book[i].BookNumber==j){
flag=1;j=i;break;
}//if
} //for
if(flag==1){
printf("请输入添加图书的数量:\n");
cin>>s;
Book[j].Bsum+=s;
return ;
}//库存已有此书
if(flag==0){
i=Bsum+1;
printf("请输入此书本的编号\n");
cin>>Book[i].BookNumber;
printf("请输入添加书本的书名\n");
cin>>Book[i].Name;
printf("请输入添加书本的作者名\n");
cin>>Book[i].authorName;
printf("请输入此书本的原价\n");
cin>>Book[i].price;
printf("请输入此书本的折扣\n");
cin>>Book[i].Discount;
printf("请输入此书本的数量\n");
cin>>Book[i].Bsum;
Bsum++;
} //书库无此书
} /**/
void modification()
{
int m,i,j,flag=0;
char s[20];
while(1)
{
printf("请输入确定修改图书信息的方式:\n1:图书编号\n2:图书书名\n3:退出修改\n");
cin>>i;
if(i==1||i==2)
break;
else if(i==3)
return ;
else
printf("输入错误,请重新输入:\n");
}
if(i==1)
{
printf("请输入修改图书信息的图书编号\n");
cin>>j;
for(i=1;i<=Bsum;i++){
if(Book[i].BookNumber==j){
modificationmenu();
cin>>m;
switch(m)
{
case 1: printf("请输入此书本的编号\n"); cin>>Book[i].BookNumber;break;
case 2: printf("请输入添加书本的书名\n");cin>>Book[i].Name;break;
case 3: printf("请输入添加书本的作者名\n");cin>>Book[i].authorName;break;
case 4: printf("请输入此书本的原价\n"); cin>>Book[i].price;break;
case 5: printf("请输入此书本的折扣\n"); cin>>Book[i].Discount;break;
case 6: printf("请输入此书本的数量\n"); cin>>Book[i].Bsum;break;
}
flag=1;break;
}//if search successful
}//for
if(flag==0)
printf("查无此书\n");
}//search book by booknumber
if(i==2){
printf("请输入修改图书信息的书名\n");
cin>>s;
for(i=1;i<=Bsum;i++){
if(strcmp(s,Book[i].Name)==0){
modificationmenu();
cin>>m;
switch(m)
{
case 1: printf("请输入此书本的编号\n"); cin>>Book[i].BookNumber;break;
case 2: printf("请输入添加书本的书名\n");cin>>Book[i].Name;break;
case 3: printf("请输入添加书本的作者名\n");cin>>Book[i].authorName;break;
case 4: printf("请输入此书本的原价\n"); cin>>Book[i].price;break;
case 5: printf("请输入此书本的折扣\n"); cin>>Book[i].Discount;break;
case 6: printf("请输入此书本的数量\n"); cin>>Book[i].Bsum;break;
}
flag=1;break;
}//if search successful
}//for
if(flag==0)
printf("查无此书\n");
}//search book by bookname
fflush(stdin);
}
void Display()
{
for(int i=1;i<=Bsum;i++)
{
Book[i].Disprice=Book[i].Discount*Book[i].price;
printf("记录编号: %d\n",i) ;
printf("书本编号: %d\n",Book[i].BookNumber);
printf("书本名: %s\n",Book[i].Name);
printf("作者名: %s\n",Book[i].authorName);
printf("原价: %.2f'\n",Book[i].price);
printf("折扣: %.2f'\n", Book[i].Discount);
printf("折后价: %.2f'\n",Book[i].Disprice);
printf("书库剩余: %d\n",Book[i].Bsum);
cout<<endl;
} //for
printf("当前不同类型图本的数量:%d\n",Bsum);
fflush(stdin);
}
void search()
{
int i,j,flag=0;
char s[20];
while(1)
{
printf("请输入确定所要查询的图书信息的方式:\n1:图书编号\n2:图书书名\n3:退出查询\n");
cin>>i;
if(i==1||i==2)
break;
else if(i==3)
return ;
else
printf("输入错误,请重新输入:\n");
}
if(i==1)
{
printf("请输入所要查询的图书信息的图书编号\n");
cin>>j;
for(i=1;i<=Bsum;i++){
if(Book[i].BookNumber==j){
printf("书本编号: %d\n",Book[i].BookNumber);
printf("书本名: %s\n",Book[i].Name);
printf("作者名: %s\n",Book[i].authorName);
printf("原价: %f'\n",Book[i].price);
printf("折扣: %f'\n", Book[i].Discount);
printf("折后价: %f'\n",Book[i].Disprice);
printf("书库剩余: %d\n",Book[i].Bsum);
flag=1;break;
}//if search successful
}//for
if(flag==0)
printf("查无此书\n");
}//search book by booknumber
if(i==2){
printf("请输入所要查询的图书信息的书名\n");
cin>>s;
for(i=1;i<=Bsum;i++){
if(strcmp(s,Book[i].Name)==0){
printf("书本编号: %d\n",Book[i].BookNumber);
printf("书本名: %s\n",Book[i].Name);
printf("作者名: %s\n",Book[i].authorName);
printf("原价: %f'\n",Book[i].price);
printf("折扣: %f'\n", Book[i].Discount);
printf("折后价: %f'\n",Book[i].Disprice);
printf("书库剩余: %d\n",Book[i].Bsum);
flag=1;break;
}//if search successful
}//for
if(flag==0)
printf("查无此书\n");
}//search book by bookname
}
void Delete()
{
int i,j,flag=0;
char s[20];
while(1)
{
printf("请输入确定删除图书信息的方式:\n1:图书编号\n2:图书书名\n3:退出删除\n");
cin>>i;
if(i==1||i==2)
break;
else if(i==3)
return ;
else
printf("输入错误,请重新输入:\n");
}//while
if(i==1)
{
printf("请输入所要删除的图书信息的图书编号\n");
cin>>j;
for(i=1;i<=Bsum;i++){
if(Book[i].BookNumber==j){
flag=1;j=i;break; }//if search successful
}//for
if(flag==1){
for(j;j<Bsum;j++){
Book[j]=Book[j+1];}
Bsum--;
} //if search successful
if(flag==0)
printf("查无此书\n");
}//search book by booknumber
if(i==2){
printf("请输入所要删除的图书信息的书名\n");
cin>>s;
for(i=1;i<=Bsum;i++){
if(strcmp(s,Book[i].Name)==0){
flag=1;j=i;break;
}//if search successful
}//for
if(flag==1){
for(j;j<Bsum;j++){
Book[j]=Book[j+1]; }
Bsum--;
} //if search successful
if(flag==0)
printf("查无此书\n");
}//search book by bookname
}
void sort()
{
int i,j;
cout<<"以书号按升序进行排序开始"<<endl<<"…… …… ……"<<endl;
for(i=1;i<=Bsum-1;i++)
for(j=1;j<=Bsum-i-1;j++)
if(Book[j].BookNumber>Book[j+1].BookNumber){
Book[0]=Book[j];
Book[j]=Book[j+1];
Book[j+1]=Book[0];
}
cout<<"以书号按升序进行排序完毕"<<endl;
}
void Borrow ()
{
int i,j,flag=0;
char name[20];
cout<<"请输入借阅的书名:"<<endl;
cin>>name;
for(i=1;i<=Bsum;i++){
if(strcmp(name,Book[i].Name)==0){
flag=1;j=i;break;
}//if search successful
}//for
if(flag==1&&Book[j].Bsum==0){
cout<<"此书书库无剩余:"<<endl;
return ;
}
if(flag==1){
i=Psum+1;
strcpy(People[i].Name, Book[j].Name);
cout<<"请输入借阅人的书证号:"<<endl;
cin>>People[i].ID;
cout<<"请输入归还期限:"<<endl;
cin>>People[i].date;
Psum++; Book[j].Bsum--;
}
if(flag==0)
printf("查无此书\n");
}
void Return()
{
int i,j,flag=0,n;
char name[20];
cout<<"请输入借阅人ID:"<<endl;
cin>>n;
for(i=1;i<=Psum;i++){
if(People[i].ID==n){
flag=1;j=i;break;
}//if search successful
}//for P
if(flag==0)
printf("查无此人\n");
if(flag==1){
for(i=1;i<=Bsum;i++)
if(strcmp(People[j].Name,Book[i].Name)==0){
Book[i].Bsum++;
Psum--;
}
}//search successful
}
int main ()
{
int i,ch,flag;
FILE*fp;
fp = fopen("Book.txt","r+");
for(i=1;ch != EOF;i++){
ch=fgetc(fp);
fscanf(fp,"%d%s%s%f%f%d\n",&Book[i].BookNumber,&Book[i].Name,&Book[i].authorName,&Book[i].price,&Book[i].Discount,&Book[i].Bsum);
}
Bsum=i-2;Psum=0;
while(1)
{
menu();
printf("请选择你要进行的操作:\n");
scanf("%d",&ch);
system("cls") ;
switch(ch)
{
case 1:Add();Display();break;
case 2:modification();break;
case 3:Display();break;
case 4:search();break;
case 5:Delete();break;
case 6:sort();break;
case 7:Borrow();break;
case 8: Return();break;
case 9:printf("欢迎再次使用此系统\n");return 0;
}
printf("是否继续? Y/N\n");
scanf("%d",&flag);
system("cls") ;
if(flag=='N'){
printf("欢迎再次使用此系统\n");break;}
fflush(stdin);
}//while
return 0;
}
/*
1:书本信息添加 2:书本信息修改 *\n");
3:书本信息统计 4:书本信息查询 *\n");
5:书本信息删除 6:图书排序
7:图书借阅 8:归还
9:退出
*/