北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx

上传人:b****6 文档编号:8599163 上传时间:2023-05-12 格式:DOCX 页数:17 大小:160.13KB
下载 相关 举报
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第1页
第1页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第2页
第2页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第3页
第3页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第4页
第4页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第5页
第5页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第6页
第6页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第7页
第7页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第8页
第8页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第9页
第9页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第10页
第10页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第11页
第11页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第12页
第12页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第13页
第13页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第14页
第14页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第15页
第15页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第16页
第16页 / 共17页
北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx

《北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。

北京理工大学 数据结构实验报告 实验四图书管理系统Word格式文档下载.docx

}BK;

注意结点的指针域有left和right两个。

2.本程序包含两个模块

(1)主程序模块

主函数只包含了Menu_select()函数。

目的是进入主菜单界面,进行功能选择;

直到输入操作码0,退出系统;

(2)双向链表单元模块——实现书籍信息的链式存储的抽象数据类型。

各函数之间的调用关系:

三.详细设计

1.结点类型

2.子函数

(1)功能菜单调用函数Menu_select()

使用户进入主菜单界面,进行功能选择;

先进入无限循环,输入操作码进行系统管理工作,直到输入操作码0,退出系统;

(2)各种功能函数

Initialize()//初始化图书系统信息;

Insert()//添加新的图书信息;

Sort()//对图书进行排序,本程序可以实现按“图书编号”、“出版日期”、“图书价格”多种关键字进行排序;

Search()//实现对图书的查找功能,本程序可以实现按“图书编号”、“出版日期”、“图书价格”多种关键字进行查找;

deletebook()//删除无效的图书信息;

Print_book()//打印全部图书信息。

3.主函数

Main函数十分的简单,目的只有一个,就是进入功能选择菜单。

intmain()

{/*主函数*/

Menu_select();

/*调用主菜单*/

}

四.调试分析

1.为了提高程序的健壮性,在menu函数中,考虑如果操作码超出0-7的范围,进行错误提示。

2.刚开始使用的其实是单链表,然后很快就发现了问题,当编写排序部分的时候,很难再进行下去;

考虑过使用顺序表,但是由于有删除、添加的操作,所以也放弃了顺序表,最终决定用双向链表,这还是第一次。

过程中发现双向链表用起来很方便!

3.排序函数sort()中为了保证程序的正确性,使用了自己较为熟练的冒泡排序法,没有考虑时间复杂度。

4.在编写的过程中也更加熟悉了switch函数,free函数,goto函数(当然尽量少用),还有学会了清屏,system(“cls”);

五.测试结果

1.建立图书信息及添加功能

2.查找功能

A.按编号查找:

B.按日期查找

3.修改功能

4.删除功能

5.排序功能

为了说明问题,这里又添加了两本书《简爱》、《余罪》

测试只提供按编号和日期排序

A.按编号排序:

B.按出版日期排序

六、附录

#include<

stdio.h>

#include<

string.h>

stdlib.h>

conio.h>

BK*h_book;

/*函数申明*/

voidStart()

{system("

cls"

);

printf("

\n\n\n\t\t***************************************\n"

\n\n\n\t\t\t欢迎使用图书管理系统\n"

\n\n\n\t\t按任意键进入系统..."

getch();

system("

}

voidInsert()/*新书入库*/

{BK*p,*p0,*p1;

p=p1=h_book;

printf("

\n新书入库模块...\n"

\n请输入新书信息..\n包括书号、书名、数量...\n"

p0=(BK*)malloc(sizeof(BK));

图书编号:

"

scanf("

%s"

p0->

number);

while(strcmp(p0->

number,p1->

number)!

=0&

&

p1->

right!

=NULL)

p1=p1->

right;

if(strcmp(p0->

number)==0)/*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/

{printf("

\n此编号图书已存在!

!

直接入库!

\n"

}

else/*若不存在,则需要输入其他的信息,然后在进行插入操作*/

{printf("

图书名称:

scanf("

title);

printf("

图书作者:

author);

printf("

图书出版日期:

date);

图书价格:

price);

while(p->

right)

{p=p->

if(h_book==NULL)h_book=p0;

/*此处分两种情况,链表中没有

数据,head直接指向p0处*/

else{p->

right=p0;

p0->

left=p;

}/*此处分两种情况,链表中有数据,

链表中最后元素的right指向p0处*/

right=NULL;

\n新书入库完毕!

按任意键继续下一步操作..\n"

getch();

voidPrint_book()/*打印所有图书信息*/

BK*p;

p=h_book;

\n图书信息如下:

\n\n"

图书编号\t图书名称\t图书作者\t出版日期\t价格\n"

while(p!

=NULL){

%s\t\t%s\t\t%s\t\t%s\t%s\n"

p->

number,p->

title,p->

author,p->

date,p->

p=p->

\n图书信息打印完毕!

按任意键继续下一步操作.."

voidInitialize()/*初始化*/

{BK*p0;

\n图书初始化开始,请输入图书信息..\n包括编号.书名.数量..\n"

p0=(BK*)malloc(sizeof(BK));

h_book=p0;

\n请输入图书信息:

/*输入图书编号(唯一)*/

/*输入图书名称*/

/*输入图书作者*/

/*输入图书出版日期*/

/*输入图书价格*/

p0->

left=NULL;

\n图书信息初始化完毕!

voidSort()

{/*按多种关键词排序*/

BK*p,*front,*rear,*temp;

intx;

\n图书排序开始..\n"

\n请选择关键字进行排序:

1.书籍编号\n2.出版日期\n3.书籍价格\n"

%d"

&

x);

temp=(BK*)malloc(sizeof(BK));

front=h_book;

p=front;

while(p->

right)p=p->

rear=p;

while

(1)

{if(front==rear)break;

else

{p=front;

{if(p==rear)break;

switch(x)

{

case1:

if(strcmp(p->

right->

number)>

0)//按编号冒泡排序

{strcpy(temp->

strcpy(p->

number,temp->

strcpy(temp->

author,temp->

title,p->

strcpy(p->

title,temp->

date,p->

date,temp->

price,p->

price,temp->

}break;

case2:

date)>

0)//按出版日期冒泡排序

case3:

if(strcmp(p->

price,p->

price)>

0)//按价格冒泡排序

{strcpy(temp->

default:

break;

}

p=p->

rear=rear->

left;

}

\n排序完毕!

voidSearch()

{/*多种关键词查找*/

chart[20]={0};

\n图书查找开始..\n"

k:

\n请选择关键字进行查找:

\n请输入关键字:

t);

while(p)

number,t)==0)

{printf("

%s\t%s\t%s\t%s\t%s\n"

}break;

case2:

date,t)==0)

case3:

price,t)==0)

default:

请输入正确的操作码!

gotok;

p=p->

\n查找完毕!

voiddeletebook()/*删除图书信息*/

{BK*p;

\n请输入需要删除书籍编号:

p=h_book->

{if(strcmp(p->

{p->

left->

right=p->

p->

left=p->

free(p);

\n删除完毕!

voidModify()/*修改图书信息*/

\n请输入需要修改书籍编号:

number,t)==0)break;

}/*指针p指向需要修改的结点*/

\n请重新输入图书信息:

p->

\n修改完毕!

intMenu()/*主菜单*/

{intdm;

\n\t\t欢迎使用图书管理系统\n"

=================================================\n"

\t\t0----退出系统\n"

\t\t1----数据初始化\n"

\t\t2----新书入库\n"

\t\t3----图书排序\n"

\t\t4----搜索图书\n"

\t\t5----删除信息\n"

\t\t6----修改信息\n"

\t\t7----全部图书信息\n"

请输入相应的操作码:

for(;

;

{scanf("

dm);

//dm输入的数字

if(dm<

0||dm>

7)

\n错误!

请重新输入:

elsebreak;

returndm;

voidMenu_select()/*主菜单选择函数*/

{for(;

switch(Menu())/*功能选择*/

case0:

printf("

\n\n\t欢迎下次使用本系统!

(按任意键退出...)\n"

getch();

exit(0);

Initialize();

case2:

Insert();

Sort();

case4:

Search();

case5:

deletebook();

case6:

Modify();

case7:

Print_book();

default:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2