图书管理系统源代码.docx
《图书管理系统源代码.docx》由会员分享,可在线阅读,更多相关《图书管理系统源代码.docx(29页珍藏版)》请在冰点文库上搜索。
图书管理系统源代码
#include"header.h"
#include"Struct.h"
intprintMainUI()//主界面,并返回选择,
{
intret=0;
system("cls");
printf("\n");
printf("\n┌──────────────────────────────┐");
printf("\n││");
printf("\n││");
printf("\n│*****欢迎来到图书管理系统*****│");
printf("\n││");
printf("\n││");
printf("\n│*1管理员│");
printf("\n││");
printf("\n│*2教师│");
printf("\n││");
printf("\n│*3学生│");
printf("\n││");
printf("\n│*0退出程序│");
printf("\n││");
printf("\n││");
printf("\n└──────────────────────────────┘\n");
printf("");
scanf("%d",&ret);
returnret;
}
intprintAdminUI()//管理员界面
{
intret=0;
system("cls");
printf("\n");
printf("\n┌──────────────────────────────┐");
printf("\n││");
printf("\n││");
printf("\n│*****尊贵的管理员你好*****│");
printf("\n││");
printf("\n││");
printf("\n│*1图书上架│");
printf("\n││");
printf("\n│*2图书下架│");
printf("\n││");
printf("\n│*3图书浏览│");
printf("\n││");
printf("\n│*4用户管理│");
printf("\n││");
printf("\n│*0上一层│");
printf("\n││");
printf("\n││");
printf("\n└──────────────────────────────┘\n");
printf("");
scanf("%d",&ret);
returnret;
}
intprintUerManageUI()
{
intret=0;
system("cls");
printf("\n");
printf("\n┌──────────────────────────────┐");
printf("\n││");
printf("\n││");
printf("\n│*****尊贵的管理员你好*****│");
printf("\n││");
printf("\n││");
printf("\n│*1教师用户│");
printf("\n││");
printf("\n│*2学生用户│");
printf("\n││");
printf("\n│*3浏览全部│");
printf("\n││");
printf("\n│*0上一层│");
printf("\n││");
printf("\n││");
printf("\n└──────────────────────────────┘\n");
printf("");
scanf("%d",&ret);
returnret;
}
intprintUerFunUI()
{
intret=0;
system("cls");
printf("\n");
printf("\n┌──────────────────────────────┐");
printf("\n││");
printf("\n││");
printf("\n│*****尊贵的管理员你好*****│");
printf("\n││");
printf("\n││");
printf("\n│*1查询│");
printf("\n││");
printf("\n│*2增加│");
printf("\n││");
printf("\n│*3删除│");
printf("\n││");
printf("\n│*0上一层│");
printf("\n││");
printf("\n││");
printf("\n└──────────────────────────────┘\n");
printf("");
scanf("%d",&ret);
returnret;
}
intprintTeacherUI()//教师界面
{intret=0;
system("cls");
printf("\n");
printf("\n┌──────────────────────────────┐");
printf("\n││");
printf("\n││");
printf("\n│*****尊敬的老师你好*****│");
printf("\n││");
printf("\n││");
printf("\n│*1借书│");
printf("\n││");
printf("\n│*2还书│");
printf("\n││");
printf("\n│*3图书浏览│");
printf("\n││");
printf("\n│*4续借书籍│");
printf("\n││");
printf("\n│*0上一层│");
printf("\n││");
printf("\n││");
printf("\n└──────────────────────────────┘\n");
printf("");
scanf("%d",&ret);
returnret;
}
intprintStudentUI()//学生界面
{intret=0;
system("cls");
printf("\n");
printf("\n┌──────────────────────────────┐");
printf("\n││");
printf("\n││");
printf("\n│*****亲爱的同学你好*****│");
printf("\n││");
printf("\n││");
printf("\n│*1借书│");
printf("\n││");
printf("\n│*2还书│");
printf("\n││");
printf("\n│*3图书浏览│");
printf("\n││");
printf("\n│*4续借书籍│");
printf("\n││");
printf("\n│*0上一层│");
printf("\n││");
printf("\n││");
printf("\n└──────────────────────────────┘\n");
printf("");
scanf("%d",&ret);
returnret;
}
intlogin()//登陆
{
return-1;
}
intAdminOperation(intchoice);//管理员界面的操作声明
Book*scanBooks(Book*books,int*count);//读取书籍信息
voidprintBooks(Book*books,intcount);//打印书籍信息
voidprintBook(Bookbook);
Book*uploadBooks();//图书上架
voidsaveBook(Bookbook,FILE*fp);//保存书籍信息
voidsaveBooks(Book*books,Bookbook,intlastCount,intupdateCount);
voidsaveUser(Useruser,FILE*fp);//保存用户信息
voidsaveUsers(User*users,Useruser,intlastCount,intupdateCount,char*fileName);
Book*downBooks();
User*scanUers(User*users,int*count,char*fileName);
voidprintUsers(User*users,intcount);
voidprintUser(Useruser);
voiduserFunRealized(intchoice,char*fileName);
voiduerManageRealized(intchoice);
voidaddUser(char*fileName);
voiddelUser(char*fileName);
voidtip();//提示信息
voidmainOperation(intchoice)//对于主界面的选择操作
{
intchoice1=0;
switch(choice)
{
case1:
{
do
{
choice1=printAdminUI();
AdminOperation(choice1);
}while(choice1!
=0);
}break;
case2:
{
printTeacherUI();
}break;
case3:
{
printStudentUI();
}break;
case0:
{}break;
default:
break;
}
}
intAdminOperation(intchoice)//管理员界面的操作
{
intcount=0;
switch(choice)
{
case1:
{
uploadBooks();
system("PAUSE");
}break;
case2:
{
downBooks();
system("PAUSE");
}break;
case3:
{
intcount=0;
Book*books=0;
books=scanBooks(books,&count);
printBooks(books,count);
system("PAUSE");
}break;
case4:
{
intchoice1=0;
do
{
choice1=printUerManageUI();
uerManageRealized(choice1);
}while(choice1!
=0);
}break;
case0:
{}break;
default:
break;
}
returnchoice;
}
Book*scanBooks(Book*books,int*count)
{
intnum=0;//用于存储读取到的书籍种数
inti;
FILE*fp;
books=0;
fp=fopen("Book.txt","r");
fscanf(fp,"%d",&num);
*count=num;
if(num>0)
{
books=(Book*)malloc(num*sizeof(Book));
for(i=0;i{
books[i].bookID=(char*)malloc(sizeof(char)*256);
books[i].bookName=(char*)malloc(sizeof(char)*256);
books[i].author=(char*)malloc(sizeof(char)*256);
books[i].pubDate=(char*)malloc(sizeof(char)*256);
books[i].price=(char*)malloc(sizeof(char)*256);
books[i].style=(char*)malloc(sizeof(char)*256);
fscanf(fp,"%s",books[i].bookID);//读取数编号
fscanf(fp,"%s",books[i].bookName);//读取书名
fscanf(fp,"%s",books[i].author);//读取作者
fscanf(fp,"%s",books[i].pubDate);//读取出版日期
fscanf(fp,"%s",books[i].price);//读取金额
fscanf(fp,"%s",books[i].style);//读取类别
fscanf(fp,"%d",&(books[i].totalCount));//总入库量
fscanf(fp,"%d",&(books[i].nowCount));//库存量
fscanf(fp,"%d",&(books[i].outCount));//借出数量
}
}
fclose(fp);
returnbooks;
}
voidprintBooks(Book*books,intcount)
{
inti;
if(count<=0)
{
printf("");
printf("图书信息为空!
");
return;
}
for(i=0;i{
printf("\t第%d款图书\n",i+1);
printBook(books[i]);
}
}
voidprintBook(Bookbook)
{
printf("\n┌──────────────────────────────┐");
printf("\n图书编号:
%s\t图书名称:
%s\t作者:
%s\t",book.bookID,book.bookName,book.author);
printf("\n出版日期:
%s\t金额:
%s\t\t类别:
%s\t",book.pubDate,book.price,book.style);
printf("\n入库总量:
%d\t现库存量:
%d\t\t借出数量:
%d\t",book.totalCount,book.nowCount,book.outCount);
printf("\n└──────────────────────────────┘\n");
}
Book*uploadBooks()
{
Bookone;
Book*books=0;
charchoice='z';
intcount=0;
inti=0;
charbookID[256];
intflag=-1;//是否库存已有该书籍标志,-1无,大于等于0则有增加
books=scanBooks(books,&count);//读取原书籍信息
system("cls");//以下开始进行添加操作
tip();//输出提示信息
printf("\n请你输入图书编号:
");
scanf("%s",bookID);
for(i=0;i{
if(strcmp(bookID,books[i].bookID)==0)
{
flag=i;
}
}
//存在某种书籍只需要改变数量
if(flag!
=-1)
{
printf("\n管理员你好,你正在添加编号为%s的书籍为已有书籍。
",bookID);
printBook(books[flag]);
printf("\n你确定更新其数量吗?
(1-y,0-n)");
while(!
(choice=='y'||choice=='Y'||choice=='n'||choice=='N'))
{
scanf("%c",&choice);
}
if(choice=='y'||choice=='Y')//更改入库量,现存数量
{
printf("\n输入更新数量:
");
scanf("%d",&one.totalCount);
books[flag].totalCount+=one.totalCount;
books[flag].nowCount+=one.totalCount;
saveBooks(books,one,count,0);
printf("\n成功添加编号为%s的书籍:
%d本\n",bookID,one.totalCount);
}
}
else
{
one.bookID=(char*)malloc(sizeof(char)*256);
one.bookName=(char*)malloc(sizeof(char)*256);
one.author=(char*)malloc(sizeof(char)*256);
one.pubDate=(char*)malloc(sizeof(char)*256);
one.price=(char*)malloc(sizeof(char)*256);
one.style=(char*)malloc(sizeof(char)*256);
printf("\n管理员你好,你正在添加编号为%s的书籍为新进书籍。
你确定归类它吗?
(1-y,0-n)",bookID);
while(!
(choice=='y'||choice=='Y'||choice=='n'||choice=='N'))
{
scanf("%c",&choice);
}
if(choice=='y'||choice=='Y')//录取新书籍信息
{
printf("\n图书编号:
");
scanf("%s",one.bookID);//读取数编号
printf("\n图书名称:
");
scanf("%s",one.bookName);//读取书名
printf("\n作者:
");
scanf("%s",one.author);//读取作者
printf("\n出版日期:
");
scanf("%s",one.pubDate);//读取出版日期
printf("\n金额:
");
scanf("%s",one.price);//读取金额
printf("\n类别:
");
scanf("%s",one.style);//读取类别
printf("\n入库总量:
");
scanf("%d",&one.totalCount);//总入库量
printf("\n现库存量:
");
scanf("%d",&one.nowCount);//库存量
printf("\n借出数量:
");
scanf("%d",&one.outCount);//借出数量
saveBooks(books,one,count,1);//写入文件
}
}
returnbooks;
}
Book*downBooks()
{
Bookone;
Book*books=0;
charchoice='z';
intcount=0;
inti=0;
charbookID[256];
intflag=-1;//是否库存已有该书籍标志,-1无,大于等于0则有
books=scanBooks(books,&count);//读取原书籍信息
system("cls");//以下开始进行添加操作
tip();//输出提示信息
printf("\n请你输入图书编号:
");
scanf("%s",bookID);
for(i=0;i{
if(strcmp(bookID,books[i].bookID)==0)
{
flag=i;
}
}
//存在某种书籍只需要改变数量
if(flag!
=-1)
{
printf("\n管理员你好,你正在下架编号为%s的书籍为已有书籍。
",bookID);
printBook(books[flag]);
printf("\n请核对是否有未归还的书籍,若有建议不要下架。
\n你确定让其下架吗?
(1-y,0-n)");
while(!
(choice=='y'||choice=='Y'||choice=='n'||choice=='N'))
{
scanf("%c",&choice);