图书馆管理系统C语言程序设计_第1页
图书馆管理系统C语言程序设计_第2页
图书馆管理系统C语言程序设计_第3页
图书馆管理系统C语言程序设计_第4页
图书馆管理系统C语言程序设计_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 百度知道 > 电脑/网络 > 程序设计 > C/C+添加到搜藏已解决 图书管理系统C语言设计(c#免入) 悬赏分:100 - 解决时间:2010-6-25 14:38 1、功能描述,新进图书基本信息的输入。2. 图书基本信息的查询。3. 对撤消图书信息的删除。4. 为借书人办理注册。5办理借书手续(非注册会员不能借书)。6办理还书手续信息描述:有关该系统基本信息的描述,如:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等大一新生的课程设计,那个只能用C语言来做,拜托各位了,两天之后要上交,网上找的调试都不成功。记住一定要用C语言啊,千万不要用C+,调试成功

2、后有悬赏分的 问题补充:我的邮箱是g080166 各位大侠,答完后记得留自己的名字啊,这样我也好给分对了,是要在vc的系统编译提问者: g080166 - 五级最佳答案#include <dos.h>#include <bios.h>#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#define LEFT 0x4b00 /*左*/#define RIGHT 0x4d00 /*右*

3、/#define 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行

4、,y列*/struct menustruct/*菜单用的结构体*/ 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 Me

5、mberList/*会员的结构体*/ char name20;/*会员的姓名*/ 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

6、*z);/*选中菜单*/void RedText(int x,int y,char *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(); /*还书*

7、/void MemberAdd(); /*增加会员*/void MemberConsult();/*查询会员*/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();/*

8、初始化界面*/ Run();/*具体操作过程*/*初始化界面*/void Menu() 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&qu

9、ot;,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&l

10、t;80;i+) cprintf("%c",219);/*用符号实现画主菜单的灰色背景区*/ Selectitem(); /*调用选项函数*/ DrawSelectitem(); /*画选项*/ gettext(2,3,78,23,c); /*保存当前文本区域*/*定义菜单*/void Selectitem() strcpy(,"Book");/*下面的具体选项补空格是为了各菜单黑色背景相同*/ strcpy(ml0.str0,"Add ");/*添加图书*/ strcpy(ml0.str1,"Find &q

11、uot;);/*查询图书*/ strcpy(ml0.str2,"Delete ");/*删除图书资料*/ strcpy(ml0.str3,"Borrow ");/*借书*/ strcpy(ml0.str4,"Return ");/*还书*/ strcpy(ml0.str5,"Exit ");/*退出系统*/ ml0.n=6; /*保存菜单的项数*/ strcpy(,"Member"); strcpy(ml1.str0,"Register ");/*添加新会员*

12、/ strcpy(ml1.str1,"Find ");/*查询会员资料*/ strcpy(ml1.str2,"Delete ");/*删除会员资料*/ strcpy(ml1.str3,"Member&book "); ml1.n=4; strcpy(,"Help");/*系统帮助*/ strcpy(ml2.str0,"This System "); strcpy(ml2.str1,"Ver "); ml2.n=2;/*显示主单名*/void DrawS

13、electitem() for(i=0;i<3;i+) RedText(i,1,); /*显示主菜单名,且首字母为红色*/*正常显示菜单*/void RedText(int x,int y,char *z) textbackground(7); /*设置背景颜色为浅灰色*/ gotoxy(3+x*20,y); for(j=0;zj;j+) if(j=0) textcolor(RED);/*第一个字母显示红色*/ else textcolor(BLACK); /*设置黑色*/ cprintf("%c",zj); /*输出菜单名*/ /*显示选中菜单*/v

14、oid BlackText(int x,int y,char *z) textbackground(0); /*设置背景颜色为黑色*/ textcolor(15); /*设置文本颜色为白色*/ gotoxy(3+20*x,y);/*定位坐标*/ 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

15、(1);break;/*显示下拉菜单2*/ case ALT_H: DrawMl(2);/*显示下拉菜单3*/ case UP: /*上光标键的操作控制*/ if(textx=3) textx=23; textx-; gotoxy(texty,textx); break; case DOWN: /*下光标键的操作控制*/ if(textx=23) textx=3; textx+; gotoxy(texty,textx); break; case LEFT: /*左光标键的操作控制*/ if(texty=2) texty=79; texty-; gotoxy(texty,textx); brea

16、k; case Backspace: /*擦除键的设置*/ 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;/*end case 0xe08*/ case RIGHT: /*右光标键的操作控制*/ if(texty=79) texty=2; t

17、exty+; gotoxy(texty,textx); break; case SPACE: /*空格键的操作*/ if(texty=79) continue; else gotoxy(texty,textx); /*空格的细节操作*/ printf(" "); texty+; gotoxy(texty,textx); break; case ENTER: /*回车的控制操作*/ if(textx=23) continue; textx+; texty=2; gotoxy(texty,textx); break; default : /*非控制键的结果*/ if(texty

18、=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+; /*大循环的大括号*/*画边框函数*/void DrawFrame(int l,int u,int r,

19、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);/*边框颜色*/ for(i=u+1;i<d;i+) /*在背景区域内输出边框线*/ gotoxy(l,i); cprintf("%c",179); /

20、*垂直线*/ gotoxy(r,i); cprintf("%c",179); for(i=l+1;i<r;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)

21、;/*左下角*/ gotoxy(r,d); cprintf("%c",217); /*右下角*/* gettext(l+1,u+1,r-1,d-1,save1);*/*保存边框内区域*/*显示具体下拉选择项目*/void DrawMl(int n) gettext(1,1,80,25,save);/*保存被掩盖的地方*/ BlackText(n,1,);/*反选显示主菜单*/ DrawFrame(3+20*n-1,2,3+20*n+19,3+mln.n,0,7);/*下拉菜单的边框*/ for(i=3;i<3+mln.n;i+)/*输出所选菜单各选项*

22、/ if(i=3) BlackText(n,i,mln.stri-3);/*默认选中第一项*/ else RedText(n,i,mln.stri-3);/*其余各项首字符红色显示*/ gotoxy(79,1); MoveMl(n,3);/*菜单选项的控制*/*菜单选项的控制,n决定水平项,x决定下拉的选项*/void MoveMl(int n,int x) int flag=1; while(flag) gotoxy(79,1); key=bioskey(0);/*接收按键*/ gotoxy(79,1); switch(key) case ESC:/*退出循环*/ puttext(1,1,8

23、0,25,save);/*恢复打开菜单前的样子*/ flag=0; break; case LEFT:/*移到左边的选项*/ puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/ if(n=0)/*往左移动越界的话移到最后一个选项*/ DrawMl(2); else DrawMl(n-1); flag=0; break; case RIGHT:/*移动右边的选项*/ puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/ if(n=2)/*往右移动越界的话移到第一个选项*/ DrawMl(0); else DrawMl(n+1); flag=0;

24、break; case UP:/*具体选项往上移动*/ RedText(n,x,mln.strx-3);/*输出红色字体*/ if(x=3)/*移到最上面再按上键,就移到最下面*/ x=3+mln.n-1; else x-;/*移动到新的要显示的内容*/ BlackText(n,x,mln.strx-3);/*输出黑色字体*/ flag=1; break; case DOWN:/*具体选项往下移动*/ RedText(n,x,mln.strx-3); if(x=(3+mln.n-1)/*移动到最底下再按下键就移到最上面*/ x=3; else x+;/*移动到新的要显示的内容*/ BlackT

25、ext(n,x,mln.strx-3); flag=1; break; case ENTER: puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/ Enter(n,x-3);/*菜单选项的具体功能*/ flag=0; break; gotoxy(79,1); /*菜单选项的具体功能*/void Enter(int m,int n) switch(m) case 0:switch(n) /*选择了图书菜单选项*/ case 0:BookAdd();break;/*添加图书*/ case 1:BookConsult();break;/*图书查询*/ case 2:Book

26、Del();break;/*删除一本图书资料*/ case 3:BookBorrow();break;/*借书*/ case 4:BookReturn();break;/*还书*/ case 5:exit(0);break; break;/*退出系统*/ case 1: switch(n) /*选择了会员菜单选项*/ case 0: MemberAdd();break;/*添加会员*/ case 1: MemberConsult();break;/*会员查询*/ case 2:MemberDel();break;/*删除一个会员资料*/ case 3:MemberBook();/*查询某个会员

27、所借图书情况*/ break; case 2:switch(n) /*选择了帮助菜单选项*/ case 0:Help();break; case 1:Ver(); /*结束外switch*/void BookAdd() FILE *fp; Book consultbook; fp=fopen("book.txt","rb");/*读方式打开文件*/ if(fp=NULL) fp=fopen("book.txt","wb"); /*写方式打开文件*/ else/*如果有书就添加*/ fclose(fp); fp=fo

28、pen("book.txt","ab");/*追加方式打开文件*/ ClrScr();/*清屏*/ printf("Please intput a new book num: ");/*逐个输入新图书的资料*/ gets(consultbook.num); gotoxy(2,4); printf("Please input the new book name: "); gets(); gotoxy(2,5); printf("Please input the new boo

29、k's price: "); scanf("%d%*c",&consultbook.price); strcpy(consultbook.person,""); consultbook.yes=1;/*表示书存在未借出*/ consultbook.next=NULL; fwrite(&consultbook,sizeof(Book),1,fp);/*块写*/ fclose(fp); /*关闭文件*/ ClrScr();/*图书查询*/void BookConsult() FILE *fp; Book consultboo

30、k; char bookname20; /*书名*/ int flag=0,i=0; ClrScr(); gotoxy(2,3); printf("Please input the book name: "); gets(bookname); /*输入要查询的图书名*/ fp=fopen("book.txt","rb"); if(fp=NULL)/*没找到文件*/ ClrScr(); gotoxy(2,3); printf("Error!"); fclose(fp); return; else while(!feo

31、f(fp)/*查询图书资料*/ fread(&consultbook,sizeof(Book),1,fp); if(strcmp(,bookname)=0)/*如果查找到*/ ClrScr(); gotoxy(2,3+i*5); printf("This book %s information as follow:",); gotoxy(2,4+i*5); printf("This book num is %s.",consultbook.num); gotoxy(2,5+i*5);

32、 printf("This book's price is %d.",consultbook.price); gotoxy(2,6+i*5); printf("This book is browwed by %s.",consultbook.person); gotoxy(2,7+i*5); printf("This book's state is %d.",consultbook.yes); i+; flag=1; /*查找数据标志*/ if(flag=0) ClrScr(); gotoxy(2,3); printf

33、("Sorry, %s doesn't exist in the library!",bookname); fclose(fp);/*删除图书资料*/void BookDel() FILE *fp; Book *head,*p,*q; char bookname20; fp=fopen("book.txt","rb");/*读方式打开文件*/ if(fp=NULL)/*没找到文件*/ gotoxy(2,3); printf("Error!"); fclose(fp); return; head=p=q=(B

34、ook*)malloc(sizeof(Book);/*将文件内容放入链表*/ fread(p,sizeof(Book),1,fp); /*读第一条记录*/ while(!feof(fp) q=p; p=(Book*)malloc(sizeof(Book); fread(p,sizeof(Book),1,fp); /*读记录*/ q->next=p;/*新记录插入到链表的尾*/ p->next=NULL;/*最后一个结点的后继为空*/ fclose(fp); ClrScr(); printf("Input the book name: "); gets(bookn

35、ame); /*输入图书名*/ p=head; while(p!=NULL)/*按名字查找要删除的图书*/ if(strcmp(p->name,bookname)=0)/*找到要删除的图书*/ if(p=head) /*如果是第一个结点*/ head=head->next; else q->next=p->next;/*不是第一个结点*/ break; q=p; /*指针后移*/ p=p->next; fp=fopen("book.txt","wb");/*删除后从链表的头开始重新保存*/ while(head!=NULL)

36、 fwrite(head,sizeof(Book),1,fp);/*块写*/ head=head->next; fclose(fp); ClrScr(); /*借书*/void BookBorrow() FILE *fp; Book consultbook; Member consultmember; char bookname20,membername20; int flag=0,mflag=0; ClrScr(); gotoxy(2,3); printf("Please input the mermber name: "); gets(membername); /

37、*输入会员名*/ if(fp=fopen("member.txt","rb")=NULL)/*没找到文件*/ gotoxy(2,3); printf("Cannot open file!n"); return; else while(!feof(fp)/*查询会员资料*/ fread(&consultmember,sizeof(Member),1,fp); if(strcmp(,membername)=0) mflag=1; /*是会员标志*/ break; fclose(fp); if(m

38、flag=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=fopen("book.txt","rb+")=NULL)/*没找到文件*/ gotoxy(2,3); printf("C

39、annot open file!n"); return; while(!feof(fp)/*查询图书资料*/ fread(&consultbook,sizeof(Book),1,fp); if(strcmp(,bookname)=0) if(consultbook.yes=0)/*图书已经借出的判断*/ gotoxy(2,3); printf("This book has borrowed!n"); break; else consultbook.yes=0; /*作借出标志*/ strcpy(consultbook.per

40、son,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);/*还书*/v

41、oid BookReturn() FILE *fp; Book consultbook; char bookname20; int flag=0; ClrScr(); if(fp=fopen("book.txt","rb+")=NULL)/*没找到文件*/ gotoxy(2,3); printf("Can't open file!n"); return; printf("Please input the book name: "); gets(bookname); /*输入图书名*/ ClrScr(); w

42、hile(!feof(fp)/*查询图书资料*/ fread(&consultbook,sizeof(Book),1,fp); if(strcmp(,bookname)=0) if(consultbook.yes=0)/*图书已经借出的判断*/ consultbook.yes=1;/*作图书未借书标志,表示已还书*/ strcpy(consultbook.person,""); fseek(fp,-1L*sizeof(Book),1); fwrite(&consultbook,sizeof(Book),1,fp); gotox

43、y(2,3); printf("Return book success!n"); flag=1; break; if(flag!=1) printf("Return fail!n"); fclose(fp);/*清除屏幕*/void ClrScr() int i,j; puttext(2,3,78,23,c);/*刚开始已经用gettext把蓝色的一块地方保存下来,现在再还原*/ gotoxy(2,3);/*会员注册*/void MemberAdd() FILE *fp; Member consultmember; fp=fopen("memb

44、er.txt","rb"); if(fp=NULL)/*如果没会员就新建*/ fp=fopen("member.txt","wb"); else/*如果有会员就添加*/ fclose(fp); fp=fopen("member.txt","ab");/*追加方式打开*/ ClrScr(); gotoxy(2,3); printf("Please intput new member's name: ");/*逐个输入会员的资料*/ gets(consultme

45、); gotoxy(2,4); printf("Please input new member's sex: "); gets(consultmember.sex); gotoxy(2,5); printf("Please input new member's age: "); scanf("%d%*c",&consultmember.age); fwrite(&consultmember,sizeof(Member),1,fp);/*写入记录*/ fclose(fp); ClrScr();/*查询会员*/void MemberConsult() FILE *fp; Member consultmember; char membername20; int flag=0; ClrScr(); gotoxy(2,3); printf("Please input the member's name: ");/*输入要查询的会员名*/ gets(membername); fp=fopen("member.txt","rb&quo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论