数据结构实验图书管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学教务处制表
实验报告学生姓名:学号:指导教师:陈昆
实验地点:计算机学院楼307
实验时间:2010年6月9日
一、实验室名称:计算机学院楼307
二、实验项目名称:
三、实验学时:4学时
四、实验原理:
五、实验目的:
六、实验内容:
创建一个图书管理系统(包括每本书的编号、书名、作者、分类信息),程序采用交互式工作方式,流程如下:
书籍管理:完成增加新书籍和删除功能,并在完成操作之后按关键字(编号、书名、作者、种类)进行排序(插入、冒泡、快速、堆排序、归并排序等任选一种);现有如下书籍需要管理
①按编号查找
②按书名查找
③按作者查找
④按分类查找
七、实验器材(设备、元器件):
pc硬件要求:CPU PII 以上,64M 内存,1OOM 硬盘空间即可。
软件要求:DOS3.0以上/Windows98/Me/XP/NT/2000。
八、实验步骤:
九、实验数据及结果分析:
十、 实验结论:
十一、总结及心得体会:
十二、对本实验过程及方法、手段的改进建议:
报告评分:
指导教师签字:
实验源代码如下:
#include
#include
int BOOKNUM; //将书的数目定为全局变量,便于增加和删除时更改const int MAXNUM=500; //最大容纳书的数目
typedef struct BookInfo{ //定义书的结构体
char num[4];
char name[50];
char author[50];
char sort[4];
}BookInfo;
void InitBookList(BookInfo BookList[]) //初始化,本书,乱序
{
BOOKNUM=8;
strcpy(BookList[3].num,"001");strcpy(BookList[3].name,"Gao Deng Shu Xue");
strcpy(BookList[3].author,"Zhang San");strcpy(BookList[3].sort,"S01");
strcpy(BookList[1].num,"002");strcpy(BookList[1].name,"Li Lun Li Xue");
strcpy(BookList[1].author,"Li Si");strcpy(BookList[1].sort,"L01");
strcpy(BookList[5].num,"003");strcpy(BookList[5].name,"Gao Deng Shu Xue");
strcpy(BookList[5].author,"Wang Wu");strcpy(BookList[5].sort,"S01");
strcpy(BookList[4].num,"004");strcpy(BookList[4].name,"Xian Xing Dai Shu");
strcpy(BookList[4].author,"Zhao Liu");strcpy(BookList[4].sort,"S02");
strcpy(BookList[7].num,"005");strcpy(BookList[7].name,"Shu Ju Jie Gou");
strcpy(BookList[7].author,"Zhou Qi");strcpy(BookList[7].sort,"J01");
strcpy(BookList[2].num,"006");strcpy(BookList[2].name,"Shu Ju Ku");
strcpy(BookList[2].author,"Zhou Qi");strcpy(BookList[2].sort,"J02");
strcpy(BookList[6].num,"007");strcpy(BookList[6].name,"Shu Ju Jie Gou");
strcpy(BookList[6].author,"Sun Ba");strcpy(BookList[6].sort,"J01");
strcpy(BookList[0].num,"008");strcpy(BookList[0].name,"Shu Ju Jie Gou");
strcpy(BookList[0].author,"Zhang Jiu");strcpy(BookList[0].sort,"J01");
}
void ShowBookInfo(BookInfo book) //显示一本书的信息
{
printf("编号:%s\n",book.num);
printf("书名:%s\n",);
printf("作者:%s\n",book.author);
printf("分类:%s\n",book.sort);
}
void SortOnNum(BookInfo BookList[]) //按编号排序
{
int i,j;
BookInfo temp;
for (i=1;i { temp=BookList[i]; for(j=i-1;j>=0;j--) { if(strcmp(temp.num,BookList[j].num)<0) BookList[j+1]=BookList[j]; else break; } BookList[j+1]=temp; } } int FindOnNum(BookInfo BookList[],char key[]) //以编号为关键字进行二分查找{ int low=0,high=BOOKNUM-1,mid; while (low<=high) { mid=(low+high)/2; if(strcmp(key,BookList[mid].num)==0) return mid; else if(strcmp(key,BookList[mid].num)<0) high=mid-1; else low=low+1; } return -1; } void FindOnName(BookInfo BookList[],char key[]) //以书名为关键字查找 { int i,j=0; for (i=0;i { if(strcmp(BookList[i].name,key)==0) { j++; printf("满足该关键字的第%d本图书的详细信息如下:\n",j);