1、图书馆管理系统(C语言程序设计) 作者: 日期:21 个人收集整理 勿做商业用途图书馆管理系统(C语言程序设计).txt生活是一张千疮百孔的网,它把所有激情的水都漏光了。寂寞就是你说话时没人在听,有人在听时你却没话说了! 百度知道 电脑/网络 程序设计 C/C+添加到搜藏已解决 图书管理系统C语言设计(c#免入) 悬赏分:100 - 解决时间:20106-25 14:38 1、功能描述,新进图书基本信息的输入.2。 图书基本信息的查询。3。 对撤消图书信息的删除。4. 为借书人办理注册。5办理借书手续(非注册会员不能借书)。6办理还书手续信息描述:有关该系统基本信息的描述,如:图书名称、图书编
2、号、单价、作者、存在状态、借书人姓名、性别、学号等大一新生的课程设计,那个只能用C语言来做,拜托各位了,两天之后要上交,网上找的调试都不成功。记住一定要用C语言啊,千万不要用C+,调试成功后有悬赏分的 问题补充:我的邮箱是g080166sina。com 各位大侠,答完后记得留自己的名字啊,这样我也好给分对了,是要在vc的系统编译提问者: g080166 五级最佳答案include dos.h#include #include include math.h#include string。h#define LEFT 0x4b00 /*左*/#define RIGHT 0x4d00 /右/#defi
3、ne DOWN 0x5000 /*下*/#define UP 0x4800 /*上/define SPACE 0x3920 /空格*/#define ESC 0x011b /* ESC键*/#define ENTER 0x1c0d /*回车键*/#define Backspace 0xe08 /擦除键*/define ALT_B 12288 /组合键ALT_B */define ALT_M 12800/*组合键ALT_M /#define ALT_H 8960/组合键ALT_H */int key;/按键变量/int textx,texty;/光标坐标,x行,y列/struct menustr
4、uct/菜单用的结构体*/ char name10;/*主菜单名*/ char str1020;/选项/ int n;/选项数*/ml3;/*使用了3个,可根据需要增删*/typedef struct BookList/*书的结构体/ char num20;/*图书编号*/ char name20;/书名*/ int price;/书的价格*/ char person20;/*借阅人*/ int yes;/*判断书是否存在或者已经借出,1存在,0借出/ struct BookList next;Book;typedef struct MemberList/*会员的结构体*/ char name
5、20;/会员的姓名*/ char sex2;/*会员的性别*/ int age;/会员的年龄/ struct MemberList next;Member;char save4096;/保存文本区域空间*/char sav14096;/char c4096;/*清屏专用空间/int i,j;/常用变量*/void Menu();/*初始化界面/void Selectitem();/定义菜单*/void DrawSelectitem();/*显示主菜单*/void BlackText(int x,int y,char z);/选中菜单*/void RedText(int x,int y,char
6、 *z);/*正常菜单/void Run();/*具体操作过程*/void DrawMl(int n);/显示下拉菜单/void MoveMl(int n,int x);/*菜单选项的控制*/void Enter(int m,int n);/菜单选项的具体功能/void BookAdd();/添加图书/void BookConsult();/图书查询*/void BookDel();/删除图书资料*/void BookBorrow();/借书/void BookReturn(); /*还书*/void MemberAdd(); /增加会员/void MemberConsult();/查询会员/
7、void MemberDel(); /*删除会员*/void MemberBook(); /查询会员借书信息*/void Help(); /*帮助/void Ver(); /版本信息*/void ClrScr();/自定义清屏函数*/void DrawFrame(int left,int up,int right,int down,int textcolor,int backgroundcolor);/画边框*/*主函数*/void main(void) Menu();/*初始化界面/ Run();/*具体操作过程/*初始化界面*/void Menu() system(”cls”); /调用系
8、统的清屏命令*/ textbackground(BLUE);/将背景设置为蓝色*/ window(1,1,25,80); clrscr(); textx=3;/*光标初始化位置/ texty=2; gotoxy(1,2); printf(c”,218);/*画左上角*/ for(i=0;i78;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,19
9、2); /*画左下角/ for(i=0;i78;i+) printf(”c”,196); printf(”%c,217); /*画右下角/ gotoxy(1,1); textcolor(7); /设置灰色/ for(i=0;i80;i+) cprintf(c”,219);/*用符号实现画主菜单的灰色背景区*/ Selectitem(); /*调用选项函数*/ DrawSelectitem(); /画选项/ gettext(2,3,78,23,c); /保存当前文本区域*/*定义菜单/void Selectitem() strcpy(ml0。name,”Book);/*下面的具体选项补空格是为了
10、各菜单黑色背景相同/ strcpy(ml0。str0,”Add ”);/*添加图书*/ strcpy(ml0。str1,Find );/查询图书/ strcpy(ml0。str2,Delete ”);/删除图书资料*/ strcpy(ml0.str3,”Borrow ”);/借书/ strcpy(ml0。str4,Return );/还书/ strcpy(ml0.str5,Exit ”);/*退出系统/ ml0。n=6; /*保存菜单的项数/ strcpy(ml1。name,Member”); strcpy(ml1.str0,Register );/*添加新会员*/ strcpy(ml1。st
11、r1,Find ”);/*查询会员资料/ strcpy(ml1.str2,Delete );/*删除会员资料/ strcpy(ml1.str3,”Memberbook ); ml1.n=4; strcpy(ml2。name,”Help”);/*系统帮助*/ strcpy(ml2。str0,This System ”); strcpy(ml2.str1,Ver ); ml2。n=2;/*显示主单名/void DrawSelectitem() for(i=0;i3;i+) RedText(i,1,mli。name); /显示主菜单名,且首字母为红色*/正常显示菜单/void RedText(int
12、 x,int y,char *z) textbackground(7); /设置背景颜色为浅灰色*/ gotoxy(3+x20,y); for(j=0;zj;j+) if(j=0) textcolor(RED);/第一个字母显示红色/ else textcolor(BLACK); /*设置黑色/ cprintf(”%c,zj); /输出菜单名*/ /*显示选中菜单*/void BlackText(int x,int y,char z) textbackground(0); /设置背景颜色为黑色*/ textcolor(15); /*设置文本颜色为白色*/ gotoxy(3+20*x,y);/*
13、定位坐标/ cputs(z); /输出菜单名字符串/按键操作过程/void Run() while(1) gotoxy(texty,textx); key=bioskey(0);/*接收按键*/ switch(key) case ALT_B: case ESC: DrawMl(0);break; /*显示下拉菜单1*/ case ALT_M: DrawMl(1);break;/显示下拉菜单2*/ case ALT_H: DrawMl(2);/显示下拉菜单3/ case UP: /*上光标键的操作控制*/ if(textx=3) textx=23; textx-; gotoxy(texty,te
14、xtx); break; case DOWN: /*下光标键的操作控制*/ if(textx=23) textx=3; textx+; gotoxy(texty,textx); break; case LEFT: /*左光标键的操作控制*/ if(texty=2) texty=79; texty; gotoxy(texty,textx); break; case Backspace: /*擦除键的设置*/ if(texty=2&textx=3) continue; else if(texty!=2) texty; /擦除键的细节问题,先擦去东西,然后光标还要往后退一格/ else if(tex
15、ty=2) texty=78; textx; gotoxy(texty,textx); printf( ”); gotoxy(texty,textx); break;/*end case 0xe08*/ case RIGHT: /*右光标键的操作控制*/ if(texty=79) texty=2; texty+; gotoxy(texty,textx); break; case SPACE: /*空格键的操作*/ if(texty=79) continue; else gotoxy(texty,textx); /空格的细节操作*/ printf( ”); texty+; gotoxy(text
16、y,textx); break; case ENTER: /*回车的控制操作*/ 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就
17、不执行*/ continue; else /如果没到行尾就继续执行,使光标向前移动一位/ texty+; /*大循环的大括号/*画边框函数*/void DrawFrame(int l,int u,int r,int d,int tcolor,int bcolor) textbackground(bcolor); /*背景颜色*/ textcolor(bcolor); /文本颜色/ for(i=l;i=r;i+) /*输出背景区域/ for(j=u;j=d;j+) gotoxy(i,j); printf(”%c,219); /输出背景字符/ textcolor(tcolor);/边框颜色/ fo
18、r(i=u+1;id;i+) /在背景区域内输出边框线*/ gotoxy(l,i); cprintf(”c,179); /垂直线/ gotoxy(r,i); cprintf(”%c,179); for(i=l+1;inext=p;/*新记录插入到链表的尾*/ pnext=NULL;/*最后一个结点的后继为空/ fclose(fp); ClrScr(); printf(”Input the book name: ”); gets(bookname); /输入图书名/ p=head; while(p!=NULL)/*按名字查找要删除的图书*/ if(strcmp(pname,bookname)=0
19、)/*找到要删除的图书*/ if(p=head) /如果是第一个结点/ head=headnext; else q-next=p-next;/*不是第一个结点*/ break; q=p; /指针后移*/ p=p-next; fp=fopen(”book。txt,wb”);/删除后从链表的头开始重新保存/ while(head!=NULL) fwrite(head,sizeof(Book),1,fp);/*块写*/ head=head-next; fclose(fp); ClrScr(); /借书*/void BookBorrow() FILE fp; Book consultbook; Mem
20、ber consultmember; char bookname20,membername20; int flag=0,mflag=0; ClrScr(); gotoxy(2,3); printf(Please input the mermber name: ”); gets(membername); /输入会员名/ if((fp=fopen(”member。txt,rb))=NULL)/没找到文件/ gotoxy(2,3); printf(”Cannot open file!n); return; else while(!feof(fp)/*查询会员资料*/ fread(&consultme
21、mber,sizeof(Member),1,fp); if(strcmp(consultmember。name,membername)=0) mflag=1; /是会员标志/ break; fclose(fp); if(mflag=0) gotoxy(2,4); printf(”You are not a member now,pleas register first!);/不是会员不能借书*/ return; gotoxy(3,5); printf(Please input the book name: ); gets(bookname); /输入图书名*/ ClrScr(); if((fp
22、=fopen(book。txt”,rb+))=NULL)/*没找到文件/ gotoxy(2,3); printf(”Cannot open file!n); return; while(!feof(fp))/查询图书资料/ fread(&consultbook,sizeof(Book),1,fp); if(strcmp(consultbook.name,bookname)=0) if(consultbook.yes=0)/图书已经借出的判断/ gotoxy(2,3); printf(This book has borrowed!n”); break; else consultbook.yes=
23、0; /作借出标志*/ strcpy(consultbook。person,membername);/*登记借书会员*/ fseek(fp,1L*sizeof(Book),1);/*从当前位置前移一条记录指针*/ fwrite(consultbook,sizeof(Book),1,fp);/写记录*/ gotoxy(2,3); printf(”Borrowed success!n”); flag=1;/借出书标志/ break; if(flag!=1) ClrScr(); gotoxy(2,3); printf(”Borrowed fail!n);/*借书失败/ fclose(fp);/还书/void BookReturn() FILE fp; Book consultbook; char bookname20; int flag=0; ClrScr(); if(fp=fopen(”book。txt,rb+))=NULL)/没找到文件/ gotoxy(2,3