za图书馆管理系统C语言程序设计507.docx
- 文档编号:12927285
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:20
- 大小:19.26KB
za图书馆管理系统C语言程序设计507.docx
《za图书馆管理系统C语言程序设计507.docx》由会员分享,可在线阅读,更多相关《za图书馆管理系统C语言程序设计507.docx(20页珍藏版)》请在冰豆网上搜索。
za图书馆管理系统C语言程序设计507
XX知道>电脑/网络>程序设计>C/C添加到搜藏已解决
图书管理系统C语言设计(c#免入)
悬赏分:
100-解决进度:
2010-6-2514:
38
1、功能描述,新进图书基本信息的输入。
2.图书基本信息的查询。
3.对撤消图书信息的删除。
4.为借书人办理注册。
5.办理借书手续(非注册会员不能借书)。
6.办理还书手续
信息描述:
有关该系统基本信息的描述,如:
图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等.
大一新生的课程设计,那个只能用C语言来做,拜托各位了,两天之后要上交,网上找的调试都不成功。
记住一定要用C语言啊,千万不要用C,调试成功后有悬赏分的
问题补充:
我的邮箱是g080166@
各位大侠,答完后记得留自己的名字啊,这样我也好给分
对了,是要在vc的系统编译
提问者:
g080166-五级最佳答案#include
#include
#include
#include
#include
#include
#include
#defineLEFT0x4b00/*左*/
#defineRIGHT0x4d00/*右*/
#defineDOWN0x5000/*下*/
#defineUP0x4800/*上*/
#defineSPACE0x3920/*空格*/
#defineESC0x011b/*ESC键*/
#defineENTER0x1c0d/*回车键*/
#defineBackspace0xe08/*擦除键*/
#defineALT_B12288/*组合键ALT_B*/
#defineALT_M12800/*组合键ALT_M*/
#defineALT_H8960/*组合键ALT_H*/
intkey;/*按键变量*/
inttextx,texty;/*光标坐标,x行,y列*/
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/*会员的结构体*/
{
charname[20];/*会员的姓名*/
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)
printf("%c",196);/*画水平直线*/
printf("%c",191);/*画右上角*/
for(i=3;i<=23;i)
{
gotoxy(1,i);
printf("%c",179);/*画垂直线*/
gotoxy(80,i);
printf("%c",179);
}
printf("%c",192);/*画左下角*/
for(i=0;i<78;i)
printf("%c",196);
printf("%c",217);/*画右下角*/
gotoxy(1,1);
textcolor(7);/*设置灰色*/
for(i=0;i<80;i)
cprintf("%c",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],"Find");/*查询会员资料*/.
strcpy(ml[1].str[2],"Delete");/*删除会员资料*/.
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()
{
for(i=0;i<3;i)
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);/*设置黑色*/
cprintf("%c",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);break;/*显示下拉菜单2*/
caseALT_H:
DrawMl
(2);/*显示下拉菜单3*/
caseUP:
/*上光标键的制作控制*/
{
if(textx==3)
textx=23;
textx--;
gotoxy(texty,textx);
}break;
caseDOWN:
/*下光标键的制作控制*/
{
if(textx==23)
textx=3;
textx;
gotoxy(texty,textx);
}break;
caseLEFT:
/*左光标键的制作控制*/
{
if(texty==2)
texty=79;
texty--;
gotoxy(texty,textx);
}break;
caseBackspace:
/*擦除键的设置*/
{
if(texty==2&&textx==3)
continue;
else
{
if(texty!
=2)
texty--;/*擦除键的细节问题,先擦去东西,然后光标还要往后退一格*/
else
if(texty==2)
{
texty=78;
textx--;
}
gotoxy(texty,textx);
printf("");
gotoxy(texty,textx);
}
}break;/*endcase0xe08*/
caseRIGHT:
/*右光标键的制作控制*/
{
if(texty==79)
texty=2;
texty;
gotoxy(texty,textx);
}break;
caseSPACE:
/*空格键的制作*/
{
if(texty==79)
continue;
else
{
gotoxy(texty,textx);/*空格的细节制作*/
printf("");
texty;
gotoxy(texty,textx);
}
}break;
caseENTER:
/*回车的控制制作*/
{
if(textx==23)
continue;
textx;
texty=2;
gotoxy(texty,textx);
}break;
default:
/*非控制键的结果*/
{
if(texty==79&&textx==23)/*到达最后就不再输出*/
continue;
else
if(texty==79&&textx!
=23)/*到行的最后*/
{
textx;
texty=2;
}
gotoxy(texty,textx);/*输出结果*/
printf("%c",key);
if(texty==79)/*如果texty==79就不执行*/
continue;
else/*如果没到行尾就继续执行,使光标向前移动一位*/
texty;
}
}
}/*大循环的大括号*/
}
/*画边框函数*/
voidDrawFrame(intl,intu,intr,intd,inttcolor,intbcolor).
{
textbackground(bcolor);/*背景颜色*/
textcolor(bcolor);/*文本颜色*/
for(i=l;i<=r;i)/*输出背景区域*/
{
for(j=u;j<=d;j)
{
gotoxy(i,j);
printf("%c",219);/*输出背景字符*/
}
}
textcolor(tcolor);/*边框颜色*/
for(i=u1;i { gotoxy(l,i); cprintf("%c",179);/*垂直线*/ gotoxy(r,i); cprintf("%c",179); } for(i=l1;i { gotoxy(i,u); cprintf("%c",196);/*水平线*/ gotoxy(i,d); cprintf("%c",196); } gotoxy(l,u); cprintf("%c",218);/*左上角*/ gotoxy(r,u); cprintf("%c",191);/*右上角*/ gotoxy(l,d); cprintf("%c",192);/*左下角*/ gotoxy(r,d); cprintf("%c",217);/*右下角*/ /*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);/*下拉菜单的边框*/. for(i=3;i<3ml[n].n;i)/*输出所选菜单各选项*/ { if(i==3) BlackText(n,i,ml[n].str[i-3]);/*默认选中第一项*/ else RedText(n,i,ml[n].str[i-3]);/*其余各项首字符红色显示*/ } gotoxy(79,1); MoveMl(n,3);/*菜单选项的控制*/ } /*菜单选项的控制,n决定水平项,x决定下拉的选项*/ voidMoveMl(intn,intx) { intflag=1; while(flag) { gotoxy(79,1); key=bioskey(0);/*接收按键*/ gotoxy(79,1); switch(key) { caseESC: /*退出循环*/ puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/ flag=0; break; caseLEFT: /*移到左边的选项*/ puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/ if(n==0)/*往左移动越界的话移到最后一个选项*/ DrawMl (2); else DrawMl(n-1); flag=0; break; caseRIGHT: /*移动右边的选项*/ puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/ if(n==2)/*往右移动越界的话移到第一个选项*/ DrawMl(0); else DrawMl(n1); flag=0; break; caseUP: /*具体选项往上移动*/ RedText(n,x,ml[n].str[x-3]);/*输出红色字体*/ if(x==3)/*移到最上面再按上键,就移到最下面*/ x=3ml[n].n-1; else x--;/*移动到新的要显示的内容*/ BlackText(n,x,ml[n].str[x-3]);/*输出黑色字体*/ flag=1; break; caseDOWN: /*具体选项往下移动*/ RedText(n,x,ml[n].str[x-3]); if(x==(3ml[n].n-1))/*移动到最底下再按下键就移到最上面*/ x=3; else x;/*移动到新的要显示的内容*/ BlackText(n,x,ml[n].str[x-3]); flag=1; break; caseENTER: puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/ Enter(n,x-3);/*菜单选项的具体功能*/ flag=0; break; } gotoxy(79,1); } } /*菜单选项的具体功能*/ voidEnter(intm,intn) { switch(m) { case0: switch(n)/*选择了图书菜单选项*/ { case0: BookAdd();break;/*添加图书*/ case1: BookConsult();break;/*图书查询*/ case2: BookDel();break;/*删除一本图书资料*/ case3: BookBorrow();break;/*借书*/ case4: BookReturn();break;/*还书*/ case5: exit(0);break; }break;/*退出系统*/ case1: switch(n)/*选择了会员菜单选项*/ { case0: MemberAdd();break;/*添加会员*/ case1: MemberConsult();break;/*会员查询*/ case2: MemberDel();break;/*删除一个会员资料*/ case3: MemberBook();/*查询某个会员所借图书情况*/ }break; case2: switch(n)/*选择了帮助菜单选项*/ { case0: Help();break; case1: Ver(); } }/*结束外switch*/ }voidBookAdd() { FILE*fp; Bookconsultbook; fp=fopen("book.txt","rb");/*读方式打开文件*/ if(fp==NULL) fp=fopen("book.txt","wb");/*写方式打开文件*/ else/*如果有书就添加*/ { fclose(fp); fp=fopen("book.txt","ab");/*追加方式打开文件*/ } ClrScr();/*清屏*/ printf("Pleaseintputanewbooknum: ");/*逐个输入新图书的资料*/. gets(consultbook.num); gotoxy(2,4); printf("Pleaseinputthenewbookname: "); gets(consultbook.name); gotoxy(2,5); printf("Pleaseinputthenewbook'sprice: "); scanf("%d%*c",&consultbook.price); strcpy(consultbook.person,""); consultbook.yes=1;/*表示书存在未借出*/ consultbook.next=NULL; fwrite(&consultbook,sizeof(Book),1,fp);/*块写*/ fclose(fp);/*关闭文件*/ ClrScr(); } /*图书查询*/ voidBookConsult() { FILE*fp; Bookconsultbook; charbookname[20];/*书名*/ intflag=0,i=0; ClrScr(); gotoxy(2,3); printf("Pleaseinputthebookname: "); gets(bookname);/*输入要查询的图书名*/ fp=fopen("book.txt","rb"); if(fp==NULL)/*没找到文件*/ { ClrScr(); gotoxy(2,3); printf("Error! "); fclose(fp); return; } else while(! feof(fp))/*查询图书资料*/ { fread(&consultbook,sizeof(Book),1,fp); if(strcmp(consultbook.name,bookname)==0)/*如果查找到*/ { ClrScr(); gotoxy(2,3i*5); printf("Thisbook%sinformationasfollow: ",consultbook.name);. gotoxy(2,4i*5); printf("Thisbooknumis%s.",consultbook.num); gotoxy(2,5i*5); printf("Thisbook'spriceis%d.",consultbook.price);. gotoxy(2,6i*5);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- za 图书馆 管理 系统 语言程序设计 507