图书管理系统程序代码_第1页
图书管理系统程序代码_第2页
图书管理系统程序代码_第3页
图书管理系统程序代码_第4页
图书管理系统程序代码_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、#include <stdio.h>#include <string.h>#include <stdlib.h>#define SIZE (struct booklist *)malloc(sizeof(struct booklist)/建立已借阅图书信息结构体struct borrow char borbook_num10;char borbook_name22;char return_time15;char stu_num15;char stu_name15;struct borrow *next;/建立预借图书信息结构体struct prebor_st

2、u char prebook_num10;char prestu_num15;struct prebor_stu *next;/建立图书结构体struct booklistchar num10;char name22;char zuozhe15;char leibie10;char pub_time10; char price10; char condition10; struct booklist *next;struct booklist *create(void); /*创建图书信息链表*/struct borrow *borrow_creat(struct booklist *head

3、); /创建已借阅图书信息链表int pre_creat(struct booklist *head); /学生登录系统预借图书并将信息存入文件prebor_stulist.txtstruct prebor_stu *prebor_creat(void); /创建预借阅图书信息链表void printf1_(struct booklist *); /输出单个基本图书的数据void store(struct booklist *head); /*保存链表中的图书信息到文件booklist.txt*/void printfb1_(struct borrow *); /输出单个借出图书的部分数据vo

4、id printfb_(struct borrow *p); /输出单个借出图书的数据void printfp1_(struct prebor_stu *); /输出单个被预借出图书的部分数据void printfp_(struct prebor_stu *); /输出单个被预借出图书的数据void printf_(struct booklist *,struct borrow *,struct prebor_stu *); /*2-输出链表中的图书信息*/struct booklist *load(void); /5-从文件读入图书信息struct booklist *num_paixu(s

5、truct booklist *); /4-按编号排序struct booklist *price_paixu(struct booklist *); /3-按价格顺序排序int kcnum(struct booklist *head); /6-统计库存数void chaxun1_(struct booklist *,struct borrow *,struct prebor_stu *); /7-查询图书的编号图书的信息,并输出void chaxun2_(struct booklist *,struct prebor_stu *,struct borrow *);/7-按作者查询信息并输出v

6、oid chaxun3_(struct booklist *,struct prebor_stu *,struct borrow *); /7-查询某类别图书信息并自动输出void chaxun4_(struct borrow *,prebor_stu *,struct booklist *); /7-按学号查询借阅信息struct booklist *shanchu(struct booklist *,struct borrow *,struct prebor_stu *); /9-删除数据struct borrow *shanchu2_(struct borrow *,struct bor

7、row *); /删除一个 struct borrow 结构体的数据struct prebor_stu *shanchu3_(struct prebor_stu *,struct prebor_stu *); /删除一个 struct prebor_stu 结构体的数据void xiugai(struct booklist *,struct borrow *,struct prebor_stu *); /10-修改数据void borstore(struct borrow *borrow_head); /保存已借阅图书信息到文件 borrowlist.txt/重新保存修改后的预借阅信息到文件

8、prebor_stulist.txt (全部覆盖)void prestore(struct prebor_stu *pre_head);struct borrow *borload(void); /从文件提取信息创建已借阅图书源信息链表struct booklist *charu(struct booklist *head,struct borrow *borrow_head); /8-将图书的数据到顺序排放的链表中,且插入后也是顺序排放的struct booklist *scanf1_(void); / 输入单个图书源数据void exchange(struct booklist *,str

9、uct booklist *) ;/交换两个结构体内的内容struct borrow *tianjia1_(struct borrow *borrow_head,struct booklist *p); /添加一个 struct borrow 结构体的数据int main(void)int n, n1, x , k = 0, flag, flag1, x1;char ch;struct booklist *head = NULL; /图书信息链表头指针struct borrow *borrow_head = NULL ; /已借阅图书信息链表头指针struct prebor_stu *pre_

10、head = NULL ; /预借图书信息链表头指针flag1 = 0; x = x1 = 1;while(x) system("cls"); printf("*n");printf("* >>>>>>>>>>>>>欢迎使用君宁图书管理系统<<<<<<<<<<<<<<< *n");printf("* 0-退出系统 5-从文件录入数据 *n"); pr

11、intf("* 1-录入数据 6-统计库存数 *n"); printf("* 2-输出信息 10-修改数据 7-查询功能 *n"); printf("* 3-按价格排序 8-增加数据 *n"); printf("* 4-按编号排序 9-删除数据 *n");printf("*n"); printf("请选择功能:"); scanf("%d", &n); getchar(); switch(n)case 0: /0-退出系统x = 0;printf(&

12、quot;*谢谢使用君宁图书管理系统!*n");printf("* 欢迎下次使用! *n");break;case 1: /1-录入数据while(x1) system("cls"); printf("*欢迎使用君宁图书信息录入系统*n"); printf("* 0-放弃录入 *n"); printf("* 1-录入图书源信息 *n"); printf("* 2-录入借出图书信息 *n"); printf("* 3-录入预借图书信息 *n");

13、printf("* 祝您使用愉快 *n");printf("请选择功能:"); scanf("%d", &n1);getchar();switch(n1)case 0: x1 = 0; break; case 1: head = create( ); /*创建图书信息链表*/ printf("是否将源图书信息保存到文件booklist.txt!.(Y/N) :"); ch = getchar(); if(ch = 'y' | ch = 'Y') store(head); ge

14、tchar(); break; case 2: if(head = NULL ) printf("请先录入图书源信息!n"); getchar(); break; else borrow_head = borrow_creat(head); /创建已借阅图书信息链表 printf("是否将源图书信息保存到文件borrowlist.txt!.(Y/N) :" ); ch = getchar(); if(ch = 'y' | ch = 'Y') borstore(borrow_head); getchar(); break;

15、case 3: if(head = NULL ) printf("请先录入图书源信息!n"); getchar(); break; else flag = pre_creat(head); if(flag = 1) printf("没有录入预借图书信息!nn"); if(flag = 2) pre_head = prebor_creat(); /创建预借阅图书信息链表 getchar(); break; default : printf("输入错误指示!nn"); break; case 2: /2-输出信息if(head = NUL

16、L )printf("请先录入图书信息!n");getchar();break;elseprintf_(head,borrow_head,pre_head);break;case 3: /3-按价格排序 if(head = NULL )printf("请先录入图书信息!n");getchar();break;elsehead = price_paixu(head);printf("是否将排序后的源图书信息保存到文件booklist.txt!.(Y/N) :"); ch = getchar(); if(ch = 'y'

17、| ch = 'Y') store(head);getchar();break; case 4: /4-按编号排序if(head = NULL )printf("请先录入图书信息!n");getchar();break;elsehead = num_paixu(head);printf("是否将排序后的源图书信息保存到文件booklist.txt!.(Y/N) :"); ch = getchar(); if(ch = 'y' | ch = 'Y') store(head);getchar();break;c

18、ase 5: /11-从文件读取数据 head = load();if(head = NULL )printf("请先录入图书信息!n");getchar();break;else borrow_head = borload(); /从文件提取信息创建已借阅图书源信息链表 pre_head = prebor_creat(); /创建预借阅图书信息链表getchar();break;case 6: /6-统计库存数 if(head = NULL )printf("请先录入图书信息!n");getchar();break;else k = kcnum(hea

19、d);printf("总共有%3d本图书!nn", k);getchar();break;case 7: /7-查询信息if(head = NULL )printf("请先录入图书信息!n");getchar();break;else while(x1) system("cls"); printf("*欢迎使用君宁图书信息查询系统*n"); printf("* 0-退出查询 *n"); printf("* 1-按编号 *n"); printf("* 2-按作者 *n

20、"); printf("* 3-按类别 *n"); printf("* 4-按学号 *n"); printf("* 祝您使用愉快 *n"); printf("* *n"); printf("* *n"); printf("请选择功能:"); scanf("%d", &n1); getchar(); switch(n1) case 0: x1 = 0; break; case 1: chaxun1_(head,borrow_head,pre

21、_head); getchar(); break; case 2: chaxun2_(head,pre_head,borrow_head); getchar(); break; case 3: chaxun3_(head,pre_head,borrow_head); getchar(); break; case 4: chaxun4_(borrow_head,pre_head,head); getchar(); break; default : printf("输入指示有误!nn"); break; x1 = 1;break;case 8:if(head = NULL )p

22、rintf("请先录入图书信息!n");getchar();break;else head = charu(head,borrow_head);printf("是否将源图书信息保存到文件booklist.txt!.(Y/N) :"); ch = getchar(); if(ch = 'y' | ch = 'Y') store(head); getchar(); break; case 9: /9-删除数据if(head = NULL )printf("请先录入图书信息!n");getchar();bre

23、ak;else head = shanchu(head,borrow_head,pre_head);borrow_head = borload(); pre_head = prebor_creat(); break;case 10: /10-修改数据if(head = NULL )printf("请先录入图书信息!n");getchar();break;else xiugai(head,borrow_head,pre_head);borrow_head = borload(); getchar();break; default :printf("输入错误指示,请重

24、新输入!");getchar();break;return 0;/*创建图书源信息信息链表*/struct booklist *create(void)struct booklist *head, *tail, *p;char num10,name22, zuozhe15, leibie10, pub_time10, price10,condition10;head = tail = p = NULL;printf("当输入图书编号为0时结束信息输入n");printf("请输入图书编号:");gets(num); while(strcmp(n

25、um,"0") != 0) p = SIZE; printf("请输入书名:"); gets(name); printf("请输入作者:"); gets(zuozhe); printf("请输入类别:"); gets(leibie);printf("请输入出版时间:");gets(pub_time);printf("请输入价格:");gets(price);printf("请输入借阅情况:");gets(condition);printf("n&

26、quot;); strcpy(p -> num, num);strcpy(p -> name, name);strcpy(p -> zuozhe, zuozhe);strcpy(p -> leibie, leibie);strcpy(p -> pub_time, pub_time);strcpy(p -> price, price);strcpy(p -> condition, condition); p -> next = NULL;if(head = NULL)head = p;else tail -> next = p;tail =

27、p;printf("请输入图书编号:");gets(num);printf("图书源信息已建立链条!n"); return head;/创建已借阅图书源信息链表 struct borrow *borrow_creat(struct booklist *head) struct booklist *p;struct borrow *borrow_head , *p1, *tail; borrow_head = p1 = tail = NULL;for(p = head; p != NULL; p = p -> next) p1 = (struct b

28、orrow *)malloc(sizeof(struct borrow);if(strcmp(p -> condition,"借出") = 0) printf("创建借出信息:n");strcpy(p1 -> borbook_num ,p -> num);strcpy(p1 -> borbook_name ,p -> name); getchar();printf("借阅编号为%s的图书的借阅信息:n",p -> num);printf("请输入应归还时间:");gets(p1

29、-> return_time);printf("请输入学生学号:");gets(p1 -> stu_num);printf("请输入学生姓名:");gets(p1 -> stu_name);printf("n"); p1 -> next = NULL; if(borrow_head = NULL) borrow_head = p1; else tail -> next = p1; tail = p1;printf("成功创建已借出信息链表!nn");getchar();return b

30、orrow_head;/保存已借阅图书信息到文件 borrowlist.txtvoid borstore(struct borrow *borrow_head)FILE *fp;struct borrow *p;if(fp = fopen("borrowlist.txt","w") = NULL)printf("File open error! n");exit(0); p = borrow_head;while(p != NULL)fprintf(fp,"%16s%26s%16s%16s%16sn",p ->

31、; borbook_num, p -> borbook_name, p -> return_time,p -> stu_num, p -> stu_name); p = p -> next;fclose(fp);printf("文件成功保存到 borrowlist.txt 中!n"); getchar();/从文件提取信息创建已借阅图书源信息链表struct borrow *borload(void)struct borrow *p, *tail, *head;FILE *fp;head = p = tail = NULL;if(fp = fo

32、pen("borrowlist.txt","r") = NULL)printf("文件 borrowlist.txt 打开失败!n");getchar();exit(0);while(!feof(fp)p = (struct borrow *)malloc(sizeof(struct borrow);fscanf(fp,"%16s%26s%16s%16s%16sn",p -> borbook_num, p -> borbook_name, p -> return_time,p -> stu_

33、num, p -> stu_name);if(head = NULL)head = p;else tail -> next = p;tail = p; tail -> next = NULL;fclose(fp);printf("已成功从文件 borrowlist.txt 提取信息创建已借阅图书源信息!n");return head; /录入预借图书信息并将信息存入文件 prebor_stulist.txtint pre_creat(struct booklist *head)struct booklist *b;struct prebor_stu *p;

34、char a10, c15;int n, x = 1, flag = 1;FILE *fp;b = head;p = (struct prebor_stu *)malloc(sizeof(struct prebor_stu); printf("进入预借图书!(按回车键继续、)n");getchar(); while(x)printf("请输入要预借阅的图书编号:");gets(a);while(strcmp(b -> num ,a) != 0) && b -> next != NULL) b = b -> next;if

35、(strcmp(b -> num ,a) != 0)printf("没有找到编号为%s的图书!n", a);printf("输入-0 结束录入!(输入其他数字继续录入.)nn");printf("请选择功能:"); scanf("%d", &n);getchar(); if(n = 0)x = 0;getchar();else printf("请输入学号:"); gets(c);strcpy(p -> prebook_num, a);strcpy(p -> prestu

36、_num, c); if(fp = fopen("prebor_stulist.txt","a+") = NULL)printf("File open error! n");exit(0); fprintf(fp,"%16s%16sn",p -> prebook_num, p -> prestu_num);fclose(fp);flag = 2;printf("输入-0 结束录入!(输入其他数字继续录入.)nn");printf("请选择功能:"); scanf(

37、"%d", &n);getchar(); if(n = 0)x = 0;getchar();return flag;/重新保存修改后的预借阅信息到文件 prebor_stulist.txt (全部覆盖)void prestore(struct prebor_stu *pre_head)struct prebor_stu *p;FILE *fp;p = pre_head;if(fp = fopen("prebor_stulist.txt","w") = NULL)printf("File open error! n&q

38、uot;);exit(0); while(p != NULL)fprintf(fp,"%16s%16sn",p -> prebook_num, p -> prestu_num); p = p -> next;fclose(fp);printf("文件成功保存到 prebor_stulist.txt 中!n"); getchar();/从文件 prebor_stulist.txt创建预借阅图书信息链表struct prebor_stu *prebor_creat(void) struct prebor_stu *p, *tail, *he

39、ad;FILE *fp;head = p = tail = NULL; if(fp = fopen("prebor_stulist.txt","r") = NULL)printf("文件 prebor_stulist.txt 打开失败!n");getchar();while(!feof(fp)p = (struct prebor_stu *)malloc(sizeof(struct prebor_stu); fscanf(fp,"%16s%16sn",p -> prebook_num, p -> pre

40、stu_num);if(head = NULL)head = p;else tail -> next = p;tail = p; tail -> next = NULL;fclose(fp);printf("已从文件 prebor_stulist.txt 成功读取并建立预借阅图书信息!n");getchar();return head;/*2-保存链表中的图书信息到文件booklist.txt*/void store(struct booklist *head)FILE *fp;struct booklist *p;if(fp = fopen("boo

41、klist.txt","w") = NULL)printf("File open error! n");exit(0); p = head;while(p != NULL)fprintf(fp,"%16s%26s%16s%16s%16s%16s%16sn",p -> num, p -> name, p -> zuozhe, p -> leibie,p -> pub_time, p -> price, p -> condition); p = p -> next;fclose(f

42、p);printf("文件成功保存到 booklist.txt 中!n"); getchar();/ 输入单个图书源数据struct booklist *scanf1_(void)struct booklist *p;p = SIZE;printf("请输入图书编号:");gets(p -> num); printf("请输入书名:");gets(p -> name); printf("请输入作者:"); gets(p -> zuozhe); printf("请输入类别:");

43、gets(p -> leibie); printf("请输入出版时间:");gets(p -> pub_time);printf("请输入价格:");gets(p -> price);printf("请输入借阅情况:");gets(p -> condition);return p;/输出单个图书的数据void printf1_(struct booklist *p) printf("编号:");puts(p -> num);printf("书名:");puts(p

44、-> name); printf("作者:");puts(p -> zuozhe);printf("类别:");puts(p -> leibie);printf("出版时间:");puts(p -> pub_time);printf("价格:"); puts(p -> price);printf("借阅情况:");puts(p -> condition);/输出单个借出图书的部分数据void printfb1_(struct borrow *p) printf

45、("应归还时间:");puts(p -> return_time);printf("借阅学生学号:"); puts(p -> stu_num);printf("借阅学生姓名:");puts(p -> stu_name);/输出单个借出图书的数据void printfb_(struct borrow *p) printf("图书编号:");puts(p -> borbook_num);printf("书名:");puts(p -> borbook_name);printf(&quo

温馨提示

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

评论

0/150

提交评论