za图书馆管理系统C语言程序设计507Word格式文档下载.docx
《za图书馆管理系统C语言程序设计507Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《za图书馆管理系统C语言程序设计507Word格式文档下载.docx(20页珍藏版)》请在冰点文库上搜索。
![za图书馆管理系统C语言程序设计507Word格式文档下载.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/1a481992-123d-486f-b63b-4aa11b1ca58d/1a481992-123d-486f-b63b-4aa11b1ca58d1.gif)
structmenustruct/*菜单用的结构体*/
{
charname[10];
/*主菜单名*/
charstr[10][20];
/*选项*/
intn;
/*选项数*/
}ml[3];
/*使用了3个,可根据需要增删*/
typedefstructBookList/*书的结构体*/
charnum[20];
/*图书编号*/
charname[20];
/*书名*/
intprice;
/*书的价格*/
charperson[20];
/*借阅人*/
intyes;
/*判断书是否存在或者已经借出,1存在,0借出*/
structBookList*next;
}Book;
typedefstructMemberList/*会员的结构体*/
/*会员的姓名*/
charsex[2];
/*会员的性别*/
intage;
/*会员的年龄*/
structMemberList*next;
}Member;
charsave[4096];
/*保存文本区域空间*/
/*charsav1[4096];
*/
charc[4096];
/*清屏专用空间*/
inti,j;
/*常用变量*/
voidMenu();
/*初始化桌面*/
voidSelectitem();
/*定义菜单*/
voidDrawSelectitem();
/*显示主菜单*/
voidBlackText(intx,inty,char*z);
/*选中菜单*/
voidRedText(intx,inty,char*z);
/*正常菜单*/
voidRun();
/*具体制作过程*/
voidDrawMl(intn);
/*显示下拉菜单*/
voidMoveMl(intn,intx);
/*菜单选项的控制*/
voidEnter(intm,intn);
/*菜单选项的具体功能*/
voidBookAdd();
/*添加图书*/
voidBookConsult();
/*图书查询*/
voidBookDel();
/*删除图书资料*/
voidBookBorrow();
/*借书*/
voidBookReturn();
/*还书*/
voidMemberAdd();
/*增加会员*/
voidMemberConsult();
/*查询会员*/
voidMemberDel();
/*删除会员*/
voidMemberBook();
/*查询会员借书信息*/
voidHelp();
/*帮助*/
voidVer();
/*版本信息*/
voidClrScr();
/*自定义清屏函数*/
voidDrawFrame(intleft,intup,intright,intdown,inttextcolor,intbackgroundcolor);
/*画边框*/.
/***主函数****/
voidmain(void)
Menu();
Run();
}
voidMenu()
system("
cls"
);
/*调用系统的清屏命令*/
textbackground(BLUE);
/*将背景设置为蓝色*/
window(1,1,25,80);
clrscr();
textx=3;
/*光标初始化位置*/
texty=2;
gotoxy(1,2);
printf("
%c"
218);
/*画左上角*/
for(i=0;
i<
78;
i)
196);
/*画水平直线*/
191);
/*画右上角*/
for(i=3;
=23;
{
gotoxy(1,i);
179);
/*画垂直线*/
gotoxy(80,i);
}
192);
/*画左下角*/
217);
/*画右下角*/
gotoxy(1,1);
textcolor(7);
/*设置灰色*/
80;
cprintf("
219);
/*用符号实现画主菜单的灰色背景区*/
Selectitem();
/*调用选项函数*/
DrawSelectitem();
/*画选项*/
gettext(2,3,78,23,c);
/*保存当前文本区域*/
voidSelectitem()
strcpy(ml[0].name,"
Book"
/*下面的具体选项补空格是为了各菜单黑色背景相同*/.
strcpy(ml[0].str[0],"
Add"
/*添加图书*/.
strcpy(ml[0].str[1],"
Find"
/*查询图书*/.
strcpy(ml[0].str[2],"
Delete"
/*删除图书资料*/.
strcpy(ml[0].str[3],"
Borrow"
strcpy(ml[0].str[4],"
Return"
/*还书*/
strcpy(ml[0].str[5],"
Exit"
/*退出系统*/.
ml[0].n=6;
/*保存菜单的项数*/
strcpy(ml[1].name,"
Member"
strcpy(ml[1].str[0],"
Register"
/*添加新会员*/.
strcpy(ml[1].str[1],"
/*查询会员资料*/.
strcpy(ml[1].str[2],"
/*删除会员资料*/.
strcpy(ml[1].str[3],"
Member&
book"
ml[1].n=4;
strcpy(ml[2].name,"
Help"
/*系统帮助*/
strcpy(ml[2].str[0],"
ThisSystem"
strcpy(ml[2].str[1],"
Ver"
ml[2].n=2;
/*显示主单名*/
voidDrawSelectitem()
3;
RedText(i,1,ml[i].name);
/*显示主菜单名,且首字母为红色*/
/*正常显示菜单*/
voidRedText(intx,inty,char*z)
textbackground(7);
/*设置背景颜色为浅灰色*/
gotoxy(3x*20,y);
for(j=0;
z[j];
j)
if(j==0)
textcolor(RED);
/*第一个字母显示红色*/
else
textcolor(BLACK);
/*设置黑色*/
z[j]);
/*输出菜单名*/
/*显示选中菜单*/
voidBlackText(intx,inty,char*z)
textbackground(0);
/*设置背景颜色为黑色*/
textcolor(15);
/*设置文本颜色为白色*/
gotoxy(320*x,y);
/*定位坐标*/
cputs(z);
/*输出菜单名字符串*/
/*按键制作过程*/
voidRun()
while
(1)
gotoxy(texty,textx);
key=bioskey(0);
/*接收按键*/
switch(key)
caseALT_B:
caseESC:
DrawMl(0);
break;
/*显示下拉菜单1*/
caseALT_M:
DrawMl
(1);
/*显示下拉菜单2*/
caseALT_H:
DrawMl
(2);
/*显示下拉菜单3*/
caseUP:
/*上光标键的制作控制*/
if(textx==3)
textx=23;
textx--;
}break;
caseDOWN:
/*下光标键的制作控制*/
if(textx==23)
textx;
caseLEFT:
/*左光标键的制作控制*/
if(texty==2)
texty=79;
texty--;
caseBackspace:
/*擦除键的设置*/
if(texty==2&
&
textx==3)
continue;
if(texty!
=2)
/*擦除键的细节问题,先擦去东西,然后光标还要往后退一格*/
texty=78;
"
/*endcase0xe08*/
caseRIGHT:
/*右光标键的制作控制*/
if(texty==79)
texty;
caseSPACE:
/*空格键的制作*/
/*空格的细节制作*/
caseENTER:
/*回车的控制制作*/
default:
/*非控制键的结果*/
if(texty==79&
textx==23)/*到达最后就不再输出*/
textx!
=23)/*到行的最后*/
/*输出结果*/
key);
if(texty==79)/*如果texty==79就不执行*/
else/*如果没到行尾就继续执行,使光标向前移动一位*/
}/*大循环的大括号*/
/*画边框函数*/
voidDrawFrame(intl,intu,intr,intd,inttcolor,intbcolor).
textbackground(bcolor);
/*背景颜色*/
textcolor(bcolor);
/*文本颜色*/
for(i=l;
=r;
i)/*输出背景区域*/
for(j=u;
j<
=d;
gotoxy(i,j);
/*输出背景字符*/
textcolor(tcolor);
/*边框颜色*/
for(i=u1;
d;
i)/*在背景区域内输出边框线*/
gotoxy(l,i);
/*垂直线*/
gotoxy(r,i);
for(i=l1;
r;
gotoxy(i,u);
/*水平线*/
gotoxy(i,d);
gotoxy(l,u);
/*左上角*/
gotoxy(r,u);
/*右上角*/
gotoxy(l,d);
/*左下角*/
gotoxy(r,d);
/*右下角*/
/*gettext(l1,u1,r-1,d-1,save1);
*//*保存边框内区域*/
/*显示具体下拉选择项目*/
voidDrawMl(intn)
gettext(1,1,80,25,save);
/*保存被掩盖的地方*/
BlackText(n,1,ml[n].name);
/*反选显示主菜单*/
DrawFrame(320*n-1,2,320*n19,3ml[n].n,0,7);
/*下拉菜单的边框*/.
3ml[n].n;
i)/*输出所选菜单各选项*/
if(i==3)
BlackText(n,i,ml[n].str[i-3]);
/*默认选中第一项*/
RedText(n,i,ml[n].str[i-3]);
/*其余各项首字符红色显示*/
gotoxy(79,1);
MoveMl(n,3);
/*菜单选项的控制,n决定水平项,x决定下拉的选项*/
voidMoveMl(intn,intx)
intflag=1;
while(flag)
/*退出循环*/
puttext(1,1,80,25,save);
/*恢复打开菜单前的样子*/
flag=0;
break;
/*移到左边的选项*/
if(n==0)/*往左移动越界的话移到最后一个选项*/
DrawMl(n-1);
/*移动右边的选项*/
if(n==2)/*往右移动越界的话移到第一个选项*/
DrawMl(n1);
/*具体选项往上移动*/
RedText(n,x,ml[n].str[x-3]);
/*输出红色字体*/
if(x==3)/*移到最上面再按上键,就移到最下面*/
x=3ml[n].n-1;
x--;
/*移动到新的要显示的内容*/
BlackText(n,x,ml[n].str[x-3]);
/*输出黑色字体*/
flag=1;
/*具体选项往下移动*/
if(x==(3ml[n].n-1))/*移动到最底下再按下键就移到最上面*/
x=3;
x;
Enter(n,x-3);
/*菜单选项的具体功能*/
voidEnter(intm,intn)
switch(m)
case0:
switch(n)/*选择了图书菜单选项*/
BookAdd();
case1:
BookConsult();
case2:
BookDel();
/*删除一本图书资料*/
case3:
BookBorrow();
case4:
BookReturn();
case5:
exit(0);
}break;
/*退出系统*/
switch(n)/*选择了会员菜单选项*/
MemberAdd();
/*添加会员*/
MemberConsult();
/*会员查询*/
MemberDel();
/*删除一个会员资料*/
MemberBook();
/*查询某个会员所借图书情况*/
switch(n)/*选择了帮助菜单选项*/
Help();
Ver();
}/*结束外switch*/
}voidBookAdd()
FILE*fp;
Bookconsultbook;
fp=fopen("
book.txt"
"
rb"
/*读方式打开文件*/
if(fp==NULL)
wb"
/*写方式打开文件*/
else/*如果有书就添加*/
fclose(fp);
ab"
/*追加方式打开文件*/
ClrScr();
/*清屏*/
Pleaseintputanewbooknum:
/*逐个输入新图书的资料*/.
gets(consultbook.num);
gotoxy(2,4);
Pleaseinputthenewbookname:
gets(consultbook.name);
gotoxy(2,5);
Pleaseinputthenewbook'
sprice:
scanf("
%d%*c"
&
consultbook.price);
strcpy(consultbook.person,"
"
consultbook.yes=1;
/*表示书存在未借出*/
consultbook.next=NULL;
fwrite(&
consultbook,sizeof(Book),1,fp);
/*块写*/
/*关闭文件*/
voidBookConsult()
charbookname[20];
/*书名*/
intflag=0,i=0;
gotoxy(2,3);
Pleaseinputthebookname:
gets(bookname);
/*输入要查询的图书名*/
if(fp==NULL)/*没找到文件*/
Error!
return;
while(!
feof(fp))/*查询图书资料*/
fread(&
if(strcmp(consultbook.name,bookname)==0)/*如果查找到*/
gotoxy(2,3i*5);
Thisbook%sinformationasfollow:
consultbook.name);
.
gotoxy(2,4i*5);
Thisbooknumis%s."
consultbook.num);
gotoxy(2,5i*5);
Thisbook'
spriceis%d."
consultbook.price);
gotoxy(2,6i*5);