图书馆管理系统Word文件下载.docx

上传人:b****3 文档编号:16726081 上传时间:2022-11-25 格式:DOCX 页数:22 大小:46.84KB
下载 相关 举报
图书馆管理系统Word文件下载.docx_第1页
第1页 / 共22页
图书馆管理系统Word文件下载.docx_第2页
第2页 / 共22页
图书馆管理系统Word文件下载.docx_第3页
第3页 / 共22页
图书馆管理系统Word文件下载.docx_第4页
第4页 / 共22页
图书馆管理系统Word文件下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

图书馆管理系统Word文件下载.docx

《图书馆管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。

图书馆管理系统Word文件下载.docx

输出出错信息

else

{while(输入没有结束)

{让用户输入一条记录;

写入文件中;

设置输入状态;

}

return(数据文件名)

}

2)数据文件按关键字进行排序

使用冒泡法,算法同教材,描述如下:

voidBkSort(Books*Bk)

/*code待排序记录的关键字即书籍编号,sum待排序记录的个数即书目总数*/

{inti,j,n;

Books*temp;

i=1;

n=Bk->

sum;

for(i=0;

i<

n-1;

i++)

{for(j=n-1;

j>

i;

j--)

if(strcmp(Bk->

books[j].code,Bk->

books[j-1].code)<

0)

{用字符串复制函数strcpy()以及临时中介temp,

把Bk->

books[j]和Bk->

books[j-1]的内容进行交换

}/*共进行sum次冒泡,如果没有发生交换则结束*/

3)用到的函数

BkPrint(BooksBk,intn)/*输出书目信息表格*/

MbPrint(MembersMb,intn)/*输出会员信息表格*/

voidInit(BooksBk,MembersMb)/*记录初始化*/

BkSort(BooksBk)/*用冒泡法,系统自动给书籍按编号排序*/

MbSort(MembersMb)/*用冒泡法,系统自动对会员按学号排序*/

BSeqSearch(BooksBk,charname[])/*按书名,对书籍进行顺序查找*/

MSeqSearch(MembersMb,charname[])/*按姓名,对会员进行顺序查找*/

intBkSearch(BooksBk,charcode[])/*按编号,对书籍进行二分查找*/

intMbSearch(MembersMb,charno[])/*按学号,对会员进行二分查找*/

voidBkAdd(BooksBk)/*添加书目信息*/

voidMbAdd(MembersMb)/*添加会员信息*/

voidBkDelete(BooksBk)/*删除书籍*/

voidMbDelete(BooksBk)/*删除会员*/

Borrow(BooksBk,MembersMb)/*借书*/

Return(BooksBk,MembersMb)/*还书*/

4)查询功能

图书查询

a.按编号查询

b.按书名查询

会员查询

a.按学号查询

b.按姓名查询

3数据结构的设计

图书信息(编号,书名,作者,借阅状态)

typedefstruct{

charcode[10];

/*编号*/

charname[20];

/*名字*/

charwriter[10];

/*作者*/

intflag;

/*借阅状态,flag=0则为可借状态,flag=1则为借出状态*/

}Book_info;

会员信息(学号,姓名,借书信息)

charno[10];

/*学号*/

/*姓名*/

Book_infobbk[5];

/*所借书籍的编号,每个会员最多可借5本书*/

intcount;

/*借书数目,0<

=count<

=5*/

}Member_info;

数据定义类型为:

#defineMAXSIZE100

structBook_infobooks[MAX];

intsum;

}Books;

typedefBooksBk;

structMember_infomembers[MAX];

}Members;

typedefMembersMb;

4具体程序的实现

{printf(p1);

printf(p2);

printf(p3);

if(Bk.books[n].flag==0)

printf(p4,Bk.books[n].code,Bk.books[n].name,Bk.books[n].writer);

if(Bk.books[n].flag==1)

printf(p5,Bk.books[n].code,Bk.books[n].name,Bk.books[n].writer);

{inti;

printf(p6);

printf(p7);

printf(p8);

Mb.members[n].count;

{printf(p9,Mb.members[n].no,Mb.members[n].name,Mb.members[n].bbk[i]);

printf(p8);

printf("

已借%d/5本书\n"

i);

{Bk.sum=0;

Mb.sum=0;

strcpy(Mb.members[0].no,"

0000000000"

);

strcpy(Mb.members[0].name,"

membername"

Mb.members[0].count=0;

strcpy(Bk.books[0].code,"

strcpy(Bk.books[0].name,"

bookname"

strcpy(Bk.books[0].writer,"

writername"

Bk.books[0].flag=1;

{intj;

chart='

y'

;

ints=Bk.sum;

charcode[10],name[20],writer[10];

书目信息录入\n"

while(t=='

||t=='

Y'

{printf("

编号:

\n"

scanf("

%s"

code);

if(BkSearch(Bk,code)!

=0)

printf("

该编号已存在!

else{strcpy(Bk.books[s++].code,code);

书名:

name);

strcpy(Bk.books[s++].name,name);

作者:

writer);

strcpy(Bk.books[s++].writer,writer);

Bk.books[s].flag=0;

Bk.sum++;

是否继续添加(y/n):

t=getch();

BkSort(Bk);

ints=Mb.sum;

charno[10],name[20];

会员信息录入\n"

学号:

no);

if(MbSearch(Mb,no)!

该学号已存在!

else{strcpy(Mb.members[s++].no,no);

姓名:

strcpy(Mb.members[s++].name,name);

Mb.sum++;

MbSort(Mb);

请输入要删除的书籍的编号:

j=BkSearch(Bk,code);

if(j==0)

该编号不存在!

elseif(Bk.books[j].flag==1)

对不起,该书已借出,不能操作!

elsefor(;

j<

s;

j++)

{strcpy(Bk.books[j].code,Bk.books[j+1].code);

strcpy(Bk.books[j].name,Bk.books[j+1].name);

strcpy(Bk.books[j].writer,Bk.books[j+1].writer);

Bk.books[j].flag=1;

Bk.sum--;

是否继续删除(y/n):

voidMbDelete(MembersMb)/*删除会员*/

{inti,j,k;

请输入要删除的会员的学号:

j=MbSearch(Mb,no);

该学号不存在!

elseif(Mb.members[j].count!

该会员已借阅%d本图书,不能进行操作!

Mb.members[j].count);

else{k=Mb.members[j+1].count;

Mb.members[j].count=Mb.members[j+1].count;

for(;

for(i=0;

k;

{strcpy(Mb.members[j].no,Mb.members[j+1].no);

strcpy(Mb.members[j].name,Mb.members[j+1].name);

strcpy(Mb.members[j].bbk[i],Mb.members[j+1].bbk[i]);

Mb.sum--;

/*************************************************************************/

Borrow(BooksBk,MembersMb)/*借书*/

请输入要借阅的图书编号:

scanf("

i=BkSearch(Bk,code);

if(i==0)

查无此书!

elseif(Bk.books[i].flag==0)

请输入学号:

k=Mb.members[j].count;

对不起,您还不是会员!

elseif(k==5)

对不起,您的借阅额度已满!

else{Bk.books[j].flag=1;

strcpy(Mb.members[j].bbk[k+1],code);

Mb.members[j].count++;

借阅成功,您有30天的借阅期限!

Return(BooksBk,MembersMb)/*还书*/

{inti,j,t;

i=MbSearch(Mb,no);

查无此人!

else{printf("

请输入要归还的图书编号:

t=BkSearch(Bk,code);

if(t==0)

else{Bk.books[t].flag=0;

for(j=0;

Mb.members[i].count;

{if(strcmp(Mb.members[i].bbk[j],code)==0)

strcpy(Mb.members[i].bbk[j],Mb.members[i].bbk[j+1]);

Mb.members[i].count--;

操作成功!

Bookstemp;

n=Bk.sum;

if(strcmp(Bk.books[j].code,Bk.books[j-1].code)<

{strcpy(temp.books[0].code,Bk.books[j-1].code);

strcpy(temp.books[0].name,Bk.books[j-1].name);

strcpy(temp.books[0].writer,Bk.books[j-1].writer);

temp.books[0].flag=Bk.books[j-1].flag;

strcpy(Bk.books[j-1].code,Bk.books[j].code);

strcpy(Bk.books[j-1].name,Bk.books[j].name);

strcpy(Bk.books[j-1].writer,Bk.books[j].writer);

Bk.books[j-1].flag=Bk.books[j].flag;

strcpy(Bk.books[j].code,temp.books[0].code);

strcpy(Bk.books[j].name,temp.books[0].name);

strcpy(Bk.books[j].writer,temp.books[0].writer);

Bk.books[j].flag=temp.books[0].flag;

{inti,j,k,n;

Memberstemp;

n=Mb.sum;

for(k=0;

k<

5;

k++)

if(strcmp(Mb.members[j].no,Mb.members[j-1].no)<

{strcpy(temp.members[0].no,Mb.members[j-1].no);

strcpy(temp.members[0].name,Mb.members[j-1].name);

strcpy(temp.members[0].bbk[k],Mb.members[j-1].bbk[k]);

strcpy(Mb.members[j-1].no,Mb.members[j].no);

strcpy(Mb.members[j-1].name,Mb.members[j].name);

strcpy(Mb.members[j-1].bbk[k],Mb.members[j-1].bbk[k]);

strcpy(Mb.members[j].no,temp.members[0].no);

strcpy(Mb.members[j].name,temp.members[0].name);

strcpy(Mb.members[j].bbk[k],temp.members[0].bbk[k]);

BooksBSeqSearch(BooksBk,charname[])/*按书名,对书籍进行顺序查找*/

{Bookstemp;

intj;

j=Bk.sum;

while(j>

{if(strcmp(Bk.books[j].name,name)==0)

BkPrint(Bk,j);

j--;

查无此人\n"

voidMSeqSearch(MembersMb,charname[])/*按姓名,对会员进行顺序查找*/

j=Mb.sum;

{if(strcmp(Mb.members[j].name,name)==0)

MbPrint(Mb,j);

{intlow,high,mid;

low=1;

high=Bk.sum;

while(low<

=high)

{mid=(low+high)/2;

if(strcmp(Bk.books[mid].code,code)==0)

returnmid;

if(strcmp(Bk.books[mid].code,code)>

high=mid-1;

else

low=mid+1;

return0;

high=Mb.sum;

if(strcmp(Mb.members[mid].no,no)==0)

if(strcmp(Mb.members[mid].no,no)>

5界面设计

1.图书管理系统

1.1增加图书

1.2查询图书

1.2.1按书名查询

1.2.2按编号查询

1.3删除图书

1.4图书借阅

1.5还书

1.6返回主菜单

2.会员管理系统

2.1增加会员

2.2查询会员

2.2.1按名字查询

2.2.2按学号查询

2.3删除会员

2.4借书信息

2.5返回主菜单

3.退出

相关源程序:

voidmain()

{BooksBk;

MembersMb;

FILE*fp;

intselect;

intcount1=1;

intcount2=1;

/*保存文件中的记录条数*/

Init(Bk,Mb);

fp=fopen("

D:

\\图书管理"

"

/*以追加方式打开文本文件D:

\\图书管理,可读可写,若此文件不存在,会创建此文件*/

\n打开文件失败!

exit(0);

while(!

feof(fp))

{if(fread(&

Bk.books[count1],sizeof(Book_info),1,fp)==1)

count1++;

if(fread(&

Mb.members[count2],sizeof(Member_info),1,fp)==1)

count2++;

fclose(fp);

\n打开文件成功,书目记录数为:

%d,会员记录数为:

%d\n"

count1,count2);

while

(1)

\n主菜单\n\n"

1.图书管理系统\n\n"

2.会员管理系统\n\n"

0.退出\n\n"

输入选项(0-2):

%d"

&

select);

switch(select)

{case1:

Book_Ctr();

break;

case2:

Member_Ctr();

case0:

exit(0);

default:

输入有误,请重新输入:

getch();

Book_Ctr()/*二级目录图书管理系统*/

intselect1,temp;

charselect2;

charcode[10],name[20];

\n图书管理系统\n\n"

p

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1