/*
课题描述:利用C语言以及数据结构知识。做一模拟图书管理系统。
*/
#include<stdio.h>
#define Reader_Books 2 /*读者可以借阅书的最大数量*/
#define Reader_All 20 /*最大读者数量*/
#define Book_All 40 /*最大数目数量*/
#define EXIT goto Loop
#define EXIT2 goto Loop2
#define EXIT3 goto Loop3
int AdministratorKey=1234; /*初始管理员密码*/
int Reader_Number=7; /*初始书数量*/
typedef struct Readers{ /*读者属性*/
long id; /*读者号*/
char *name; /*读者姓名*/
int key; /*读者密码*/
int flag; /*读者标志位,1:活跃,0:被冻结(不可以借书)*/
int BooksNumber; /*已经借阅的书数量*/
long book_list[2]; /*用于存储已借书条形码*/
}Readers;
Readers reader[Reader_All]={{0001,"lxy",2520,1,0},{0002,"sh",2518,1,0},{0003,"wh",2521,1,0},{0004,"tj",2516,1,0},{0005,"zh",2519,1,0},{0006,"wh",2514,1,0},{0007,"srt",2517,1,0}}; /*初始数据*/
typedef struct Books{ /*书刊属性*/
long id; /*图书编号*/
long uid; /*图书条形码*/
char *name; /*图书名称*/
int flag; /*图书标志位,1:在馆,0:已借出*/
}Books;
Books book[Book_All]={{1001,1987,"C",1},{1001,1988,"C#",1},{1002,1989,"VC",1},{1002,1990,"VB",1},{1003,1991,"B",1},{1004,1992,"B+",1},{1005,1993,"Basic",1}};
int Book_Number=7; /*初始数据*/
/*/////////////////////////////////////*/
int Search_Reader_ID(long Reader_ID)
{ /*根据已给出的读者编号,查找其在读者数据库中的位置并返回其位置*/
int i=0;
while((Reader_ID!=reader[i].id)&&(i<Reader_Number))
i++;
return (Reader_Number-i)? i:-1;
}
int Search_Book_UID(long Book_UID)
{ /*根据已给出的图书条形码,查找其在图书数据库中的位置并返回其位置*/
int i=0;
while((Book_UID!=book[i].uid)&&(i<Book_Number))
i++;
return (Book_Number-i)?i:-1;
}
void BookRegistration()
{ /*期刊登记,图书编号,条形码,名称,其中条形码是唯一的*/
Books b;
int i;
printf("Input the book's information:\n");
printf(" id:");
scanf("%ld",&b.id);
printf(" uid:");
scanf("%ld",&b.uid);
printf(" name:");
scanf("%s",b.name);
b.flag=1;
i=0;
while(book[i].uid!=b.uid&&i<Book_Number)
i++;
if(i==Book_Number)
{
book[Book_Number]=b;
Book_Number++;
printf("Registed!\n");
}
else
printf("This book has exist in the lib\n");
}
void Out_Reader()
{ /*显示所有读者及其标志位*/
int i;
printf("\nReader list: ID NAME KEY STATE \n");
for(i=0;i<Reader_Number;i++)
printf(" %ld %s %d %d\n",reader[i].id,reader[i].name,reader[i].key,reader[i].flag);
}
void Delete() /*删除某读者*/
{
void Write_Off(int i);
long id;
int i;
printf("\nWhich user would you want to delete,Input the id:");
scanf("%ld",&id);
i=Search_Reader_ID(id);
if(i>=0)
Write_Off(i);
else
printf("\nThere isn't the reader\n");
}
void Freeze() /*冻结某读者,使其不能借阅图书*/
{
long id;
int i;
printf("Which user would you to freeze,Input the id:");
scanf("%ld",&id);
i=Search_Reader_ID(id);
if(i>=0)
reader[i].flag=0;
else
printf("\nThere isn't the reader\n");
}
/*///////////////////////LOGIN////////////////////////*/
void Regist() /*新用户注册*/
{
Readers someone;
printf("\nInput a new ID:");
do
{
scanf("%ld",&someone.id);
}while(!(Search_Reader_ID(someone.id)>=0));
printf("\nInput a new key:");
scanf("%d",&someone.key);
printf("\nInput the name:");
scanf("%s",someone.name);
reader[Reader_Number].id=someone.id;
reader[Reader_Number].key=someone.key;
reader[Reader_Number].name=someone.name;
reader[Reader_Number].flag=1;
reader[Reader_Number].BooksNumber=0;
Reader_Number++;
}
void Out_Book() /*显示所有图书及其属性*/
{
int i;
printf("\nBook list: ID UID NAME STATE \n");
for(i=0;i<Book_Number;i++)
printf(" %ld %ld %s %d\n",book[i].id,book[i].uid,book[i].name,book[i].flag);
}
void Borrow(int i) /*读者数据库中第i个读者借阅图书*/
{
void Look_Up_BOOK_ID(long ID);
void Look_Up_BOOK_NAME(char *name);
long id;
char *name=NULL;
int j;
char ch;
printf("Which methord to look up the book you want to borrow: I(id) or N(name)?\n");
getchar();
ch=getchar();
if(ch=='i'||ch=='I')
{
printf("\nInput the id you want to borrow:");
scanf("%ld",&id);
Look_Up_BOOK_ID(id);
printf("\nInput the uid of the book you want to borrow:");
scanf("%ld",&id);
j=Search_Book_UID(id);
if(j>=0)
{
reader[i].book_list[reader[i].BooksNumber]=id;
reader[i].BooksNumber++;
book[j].flag=0;
}
else
printf("There is not the book.\n");
}
else if(ch=='n'||ch=='N')
{
printf("\nInput the book name you want to borrow:");
scanf("%s",name);
Look_Up_BOOK_NAME(name);
printf("\nInput the uid of the book you want to borrow:");
scanf("%ld",&id);
j=Search_Book_UID(id);
if(j>=0)
{
reader[i].book_list[reader[i].BooksNumber]=id;
reader[i].BooksNumber++;
book[j].flag=0;
}
else
printf("There is not the book.\n");
}
}
void Return(int i) /*读者数据库中第i个读者归还图书*/
{
long uid;
char *name=NULL;
int j;
char ch;
printf("\nInput the uid of the book you want to return:\n");
scanf("%ld",&uid);
j=Search_Book_UID(uid);
book[j].flag=1;
reader[i].BooksNumber--;
reader[i].book_list[reader[i].BooksNumber]=0;
}
void Write_Off(int i) /*读者数据库中第i个读者注销帐号*/
{
int j;
if(i<Reader_Number-1)
for(j=i;j<Reader_Number-1;j++)
reader[j]=reader[j+1];
Reader_Number--;
}
void Look_Up_BOOK_ID(long ID) /*根据给出的图书编号查找图书信息*/
{
int i=0;
while(i<Book_Number)
{
if(book[i].id==ID)
{
if(book[i].flag==1)
printf("ID:%ld UID:%ld Name:%s Flag:In the lib(在馆)\n",book[i].id,book[i].uid,book[i].name);
else
printf("ID:%ld UID:%ld Name:%s Flag:Not in the lib(已借出)\n",book[i].id,book[i].uid,book[i].name);
}
i++;
}
}
void Look_Up_BOOK_NAME(char *name) /*根据给出的图书名称查找图书信息*/
{
char *p;
char *q;
int len,i,j,k;
len=strlen(name);
for(i=0;i<Book_Number;i++)
{
j=strlen(book[i].name);
if(j==len)
{
p=name;
q=book[i].name;
k=0;
while(k<len)
{
if(p[k]==q[k])
k++;
else
break;
}
if(k<len)
continue;
else
{
if(book[i].flag==1)
printf("ID:%ld UID:%ld Name:%s Flag:In the lib(在馆)\n",book[i].id,book[i].uid,book[i].name);
else
printf("ID:%ld UID:%ld Name:%s Flag:Not in the lib(已借出)\n",book[i].id,book[i].uid,book[i].name);
}
}
}
}
int Login() /*普通用户登录*/
{
Readers someone;
int i=0;
int acount;
char ch;
long id;
char *name;
printf("\nInput your ID:");
scanf("%ld",&someone.id);
i=Search_Reader_ID(someone.id);
if(i<0)
{
printf("You haven't regist,would you want regist now? Y or N:");
getchar();
ch=getchar();
switch(ch)
{
case 'y':
case 'Y':Regist();break;
case 'n':
case 'N':return;
default:return;
}
}
else
{
acount=3;
do
{
if(acount==0)
return;
printf("\nInput the key:");
scanf("%d",&someone.key);
acount--;
}while(reader[i].key!=someone.key);
}
return i;
}
/*////////////////////////////////////*/
int main() /*主函数入口*/
{
Readers someone;
char ch;
int acount;
long id;
char *name=NULL;
int i;
int Key=-0101;
printf("Press Enter to start:\n");
Loop: getchar();
printf("What kind grade are you? A(Administrator) or G(General User) or E(exit)?\n");
ch=getchar();
if(ch=='A'||ch=='a')
{
acount=3;
do{
if(acount==0)
EXIT;
printf("Input the Key:");
scanf("%d",&Key);
acount--;
}while(Ke
tushu.rar_c语言 图书管理系统_图书管理系统 c++ _简单的图书管理系统
版权申诉
137 浏览量
2022-09-24
13:42:36
上传
评论
收藏 3KB RAR 举报
寒泊
- 粉丝: 76
- 资源: 1万+
评论0