图书管理系统程序设计C实验报告.doc

上传人:精*** 文档编号:828528 上传时间:2023-09-06 格式:DOC 页数:20 大小:94KB
下载 相关 举报
图书管理系统程序设计C实验报告.doc_第1页
第1页 / 共20页
图书管理系统程序设计C实验报告.doc_第2页
第2页 / 共20页
图书管理系统程序设计C实验报告.doc_第3页
第3页 / 共20页
图书管理系统程序设计C实验报告.doc_第4页
第4页 / 共20页
图书管理系统程序设计C实验报告.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、一、实习题目介绍(包括:题目名称,及题目要求完成的工作任务、要求实现的功能目标等) 1.题目名称 图书管理系统 2.基本功能(1) 查询图书: 输入要查询图书的信息,如书名,位置,索书号等,系统即可自动查询使用者所需要的图书,能查询到则输出完整的图书信息,查询不到则提示使用者该书不存在。(2) 添加图书: 输入要添加图书的数目,即可根据系统的提示逐项添加图书的基本信息,直至添加完毕为止。结束时显示使用者添加的所有图书。(3) 修改图书: 输入要修改的图书信息,找到该图书后即可修改书名,位置,索书号等基本信息。(4) 删除图书: 输入要删除的图书信息,找到该图书后即可自动删除。二、开发工作内容1

2、.主要思路 (1)首先建立一个记录图书信息的档。 (2) 使用界面函数,使使用者更方便。 (3)使用者键入数字实现选择。 (4)使用者输入要查询的图书信息,如图书名,通过逐项比较找到图书,并输出图书的所有信息。 (5)使用者输入要修改的图书信息,通过逐项比较找到图书,再使用fseek,以及fwrite函数实现修改。 (6)使用者输入要删除的图书信息,通过逐项比较找到图书,建立新结构体Struct Book n=“0”,”0”,”0”,”0”,使用新结构体替换要删除的图书结构体,即可实现删除功能。 (7)使用者输入要添加的图书数目,系统自动提示使用者添加内容,直到添加完毕为止。 (8)使用死循环

3、,每次功能完成之后提醒使用者,按0退出,按其他数字继续。2.各模块功能的实现过程 (1)建立记录图书信息的档 代码:void save()FILE*fp;int i;if(fp=fopen(book.dat,wb)=NULL)printf(cannotn);return ; for(i=0;i5) system(cls);jiemian(); printf(*n);printf( 请重新输入n);printf(*n);scanf(%d,&i);if(i=5)break;switch(i)case 1:chaxun();break;case 2:xiugai();break;case 3:add

4、();break;case 4:shanchu();break;case 5:chaxunsuoyou();break;if(i=0)break;printf(nnnnnnn);printf(*按0退出,按其他数字继续*n);scanf(%d,&j);system(cls);(4)输入要查询的图书信息 原理:系统通过比较,如果图书存在则输出图书详细信息,图书不存在则输出图书不存在的信息。 代码: void chaxun() int p;int i,n=0;char b100;FILE*fp; printf( );printf( $=|n); printf( );printf( $-图书查询系统

5、-|n); printf( ); printf( $_|n);printf( ); printf( $1.查询图书名 |n);printf( ); printf( $_|n); printf( );printf( $2.查询图书类型 |n); printf( );printf( $_|n); printf( );printf( $3.查询图书位置 |n);printf( ); printf( $_|n); printf( );printf( $4.查询图书编号 |n); printf( );printf( $_|n); printf( );printf(请输入服务类型(数字)n);printf

6、( ); scanf(%d,&p); system(cls); if(p=1) printf(请输入要查询的图书名:n); scanf(%s,b);if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0);for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.name)=0)printf(_n);printf(|%-15s|%-20s|%-20s|%-5s|n,booki.name,booki.lei,booki.floor,booki.hao);n=1;

7、if(n=0) printf(对不起,你查询的图书不存在n); fclose(fp); if(p=2) printf(请输入要查询的图书类型:n); scanf(%s,b);if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0); for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.lei)=0)printf(_n);printf(%-15s%-20s%-20s%-5sn,booki.name,booki.lei,booki.floor,booki.ha

8、o);n+; fclose(fp); if(n=0) printf(对不起,你查询的图书不存在n);printf(%s类型书的数目为%dn,b,n); if(p=3) printf(请输入要查询的位置:n); scanf(%s,b); if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0); for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.floor)=0) printf(_n);printf(|%-15s|%-20s|%-20s|%-5s|n,bo

9、oki.name,booki.lei,booki.floor,booki.hao);printf(_n);n+; if(n=0) printf(对不起,你查询的图书不存在n); printf(%s位置书的数目为%dn,b,n); fclose(fp); if(p=4) printf(请输入要查询的图书编号:n); scanf(%s,b); if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0); for(i=0;iN;i+)fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.hao)

10、=0)printf(%-15s%-20s%-20s%-5sn,booki.name,booki.lei,booki.floor,booki.hao);n=1;if(n=0)printf(查无此书n); fclose(fp); (5)修改图书时只需输入要修改的图书信息及新的图书信息即可实现。 实现原理:先逐项对比找到图书,再用fseek函数指向该图书,然后用fwrite函数进行修改。 代码: void xiugai() int i,j,k=0,u;struct Book n; char boo100; FILE*fp;printf(请输入要修改的图书名n); scanf(%s,boo); if(

11、fp=fopen(bok.dat,rb)=NULL) printf(cannot open filen); exit(0); for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp); if(strcmp(boo,booki.name)=0) j=i; k=1; fclose(fp); if(k=1) printf( _n); printf( $-图书修改系统-$n); printf( |_|n); printf( |1.修改图书名 |n); printf( |_|n); printf( |2.修改图书类型 |n); printf( |_|n)

12、; printf( |3.修改图书编号 |n); printf( |_|n); printf(请输入修改内容(数字)n); scanf(%d,&u); system(cls); if(u=1) printf(请输入新的书名n); scanf(%s,&n.name); if(fp=fopen(bok.dat,rb+)=NULL) printf(cannotn); exit(0); fseek(fp,j*sizeof(struct Book),SEEK_SET); strcpy(n.lei,bookj.lei); strcpy(n.floor ,bookj.floor);strcpy(n.hao

13、,bookj.hao);fwrite(&n,sizeof(struct Book),1,fp);printf(修改前:n);printf(%-15s%-20s%-20s%-5sn,bookj.name,bookj.lei,bookj.floor,bookj.hao); printf(修改后:n);printf(%-15s%-20s%-20s%-5sn,n.name,bookj.lei,bookj.floor,bookj.hao); printf(*修改成功*n); if(u=2) printf(请输入新的类型n); if(fp=fopen(bok.dat,rb+)=NULL) printf(c

14、annotn); exit(0); fseek(fp,j*sizeof(struct Book),SEEK_SET); scanf(%s,&n.lei); strcpy(n.name,bookj.name); strcpy(n.floor ,bookj.floor);strcpy(n.hao ,bookj.hao);fwrite(&n,sizeof(struct Book),1,fp);printf(修改前:n);printf(%-15s%-20s%-20s%-5sn,bookj.name,bookj.lei,bookj.floor,bookj.hao); printf(修改后:n);prin

15、tf(%-15s%-20s%-20s%-5sn,bookj.name,n.lei,bookj.floor,bookj.hao); printf(*修改成功*n); if(u=3) printf(请输入新的编号n); if(fp=fopen(bok.dat,rb+)=NULL) printf(cannotn); exit(0); fseek(fp,j*sizeof(struct Book),SEEK_SET); scanf(%s,&n.hao); strcpy(n.lei,bookj.lei); strcpy(n.floor ,bookj.floor);strcpy(n.name ,bookj.

16、name);fwrite(&n,sizeof(struct Book),1,fp); printf(* n);printf(%-15s%-20s%-20s%-5sn,bookj.name,bookj.lei,bookj.floor,bookj.hao); printf(*n);printf(%-15s%-20s%-20s%-5sn,bookj.name,bookj.lei,bookj.floor,n.hao); printf( =修改成功=n); if(k=0) printf(查无此书n); fclose(fp);(6)删除图书。 实现原理:使用者输入要删除的图书信息,通过逐项比较找到图书,建

17、立新结构Struct Book n=“0”,”0”,”0”,”0”,使用新结构体替换要删除的图书结构体,即可实现删除功能。 代码:/删除图书功能void shanchu() FILE*fp; int i,u,j,k,m=0; char b100;struct Book n=0,0,0; printf( $=|n); printf( $-图书删除系统-|n); printf( $_|n); printf( $1.删除图书名 |n); printf( $_|n); printf( $2.删除图书类型 |n); printf( $_|n); printf( $3.删除图书位置 |n); printf

18、( $_|n); printf( $4.删除图书编号 |n); printf( $_|n); printf(请输入服务类型(数字)n); scanf(%d,&u); if(u=1) printf(请输入要删除的内容:n);scanf(%s,b); for(k=0;kN;k+) if(fp=fopen(bok.dat,rb)=NULL) printf(cannotn);exit(0); for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp); if(strcmp(b,booki.name)=0) printf(%-15s%-20s%-20s%-

19、5sn,booki.name,booki.lei,booki.floor,booki.hao); j=i;m=1; printf(%dn,j); fclose(fp);if(fp=fopen(bok.dat,rb+)=NULL)printf(cannotn);exit(0);fseek(fp,j*sizeof(struct Book),SEEK_SET);fwrite(&n,sizeof(struct Book),1,fp); fclose(fp);if(m=0)printf(您要删除的图书不存在:n); if(u=2) printf(请输入要删除的内容:n);scanf(%s,b);for(

20、k=0;kN;k+) if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0);for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.lei)=0)j=i;m=1;printf(%-15s%-20s%-20s%-5sn,bookj.name,bookj.lei,bookj.floor,bookj.hao); break; fclose(fp);if(fp=fopen(bok.dat,rb+)=NULL)printf(cannotn);exit(0);fsee

21、k(fp,j*sizeof(struct Book),SEEK_SET);fwrite(&n,sizeof(struct Book),1,fp); fclose(fp);if(m=0)printf(您要删除的图书不存在:n); if(u=3) printf(请输入要删除的内容:n);scanf(%s,b);for(k=0;kN;k+) if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0);for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.floor)

22、=0)printf(%-15s%-20s%-20s%-5sn,booki.name,booki.lei,booki.floor,booki.hao); j=i;m=1;break; fclose(fp);if(fp=fopen(bok.dat,rb+)=NULL)printf(cannotn);exit(0);fseek(fp,j*sizeof(struct Book),SEEK_SET);fwrite(&n,sizeof(struct Book),1,fp);printf(%-15s%-20s%-20s%-5sn,bookj.name,bookj.lei,bookj.floor,bookj.

23、hao); fclose(fp);if(m=0)printf(您要删除的图书不存在:n); if(u=4) printf(请输入要删除的内容:n);scanf(%s,b); if(fp=fopen(bok.dat,rb)=NULL)printf(cannotn);exit(0);for(i=0;iN;i+) fread(&booki,sizeof(struct Book),1,fp);if(strcmp(b,booki.hao)=0)printf(%-15s%-20s%-20s%-5sn,booki.name,booki.lei,booki.floor,booki.hao); j=i;m=1;

24、break; fclose(fp);if(fp=fopen(bok.dat,rb+)=NULL)printf(cannotn);exit(0); fseek(fp,j*sizeof(struct Book),SEEK_SET);fwrite(&n,sizeof(struct Book),1,fp); fclose(fp); if(m=0)printf(您要删除的图书不存在:n); (7) 增加图书。 实现原理:使用追加方式打开档,即可在档尾增加图书。通过输入数字控制输入图书的数目。代码: void add() FILE*fp;struct Book n100;int i,j;printf(请输

25、入添加图书的数目:n);scanf(%d,&i); if(fp=fopen(bok.dat,ab)=NULL)printf(cannotn);exit(0);for(j=0;ji;j+) printf(请输入图书名:); scanf(%s,&nj.name);printf(请输入图书类别:);scanf(%s,&nj.lei);printf(请输入图书位置:); scanf(%s,&nj.floor);printf(请输入图书号码:);scanf(%s,&nj.hao);fwrite(&nj,sizeof(struct Book),1,fp);printf(*添加成功*n);printf(您添

26、加的图书为:n); for(j=0;ji;j+) printf(%-15s%-20s%-20s%-5sn,nj.name,nj.lei,nj.floor,nj.hao); fclose(fp);三、 实验总结该实验主要使用文档来实现一系列功能,主要使用建立文档,读档,写档,删除档,追加文档等。该系统较为简单,其主要功能也较为简单,所以比较容易实现。其主要存在的问题是占用内存,由于数组开销较大,所以运行起来比较慢,虽然文档中图书的数目并不多,只有100本书,但也是比较慢的,主要是删除图书时比较慢,因为是替换,所以要逐个查找,然后进行替换,这不但费时间,而且占用空间,图书并不是被删除,只是被替换,所以位置依然存在,这也使得系统开销增大,只能通过较大的数组来实现,防止读档失误,这也是问题之一,当然,现在学的东西遗忘的较多,而且使用起来并不是十分娴熟,这些都是要解决的问题。现在已经是大一学生了,马上就要步入社会,要成为一个软件设计师,就需要更多的努力。通过这个系统,也让我看见了自己的不足之处,更给了我努力的方向和目标。总的来说,以后还应加强这方面的练习。

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 研究报告

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922