表达式的求值.docx
- 文档编号:24444934
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:18
- 大小:215.84KB
表达式的求值.docx
《表达式的求值.docx》由会员分享,可在线阅读,更多相关《表达式的求值.docx(18页珍藏版)》请在冰豆网上搜索。
表达式的求值
实验课程名称数据结构课程设计
专业班级计算机科学与技术10级1班
学生姓名10410901019
学号罗泽丽
指导教师冯韵
2012至201学年第一学期第一至二周
目录
1概述3
1.1现状分析3
1.2存在的问题3
1.3实现意义3
2系统分析3
2.1系统功能3
2.2算法分析4
2.2.1插入排序法4
2.2.2二分查找法4
3概要设计4
3.1设计要求4
3.2系统结构图5
3.3总流程图6
4详细设计6
4.1添加图书记录6
4.2修改书号索引6
4.3多重表文件的建立7
4.4信息查询8
4.5借还书处理8
4.5.1借书处理算法8
4.5.2还书处理9
5运行与测试9
5.1图书管理系统9
5.2系统初始化9
5.3读者管理10
选择2读者管理输入读者信息10
5.4图书管理10
5.5图书查询11
5.5.1按书号查询11
5.5.2按作者名查询11
5.5.2按出版社查询12
5.5.3按书名查询12
5.6借书处理12
5.7还书处理13
6总结和心得13
7参考文献13
图书管理系统
1概述
1.1现状分析
当今社会发展迅速,人们每天要查阅大量的资料,有的在网上,有的用手机,但是还是有许多人选择上图书馆去借阅书籍来查看资料,所以图书馆每天都有很多的人借书还书,而且书的编号,种类都是不一样的,随着书籍的和读者的增多,很多靠人工记录资料的图书馆在管理书籍方面出现了许多的问题。
1.2存在的问题
以往的图书馆管理完全手工操做,通过卡片记录信息,既浪费时间,又浪费人工、纸张,而且书籍和读者的信息查询比较麻烦,查找起来也不方便,不能提供领导管理上需要的各种信息如本馆各种资料分布及借阅情况。
完全人工操作,这种方式存在着许多的缺点,另外,随着图书数量的增加,其工作量也大大的增加,而且数据容易丢失,如果对很长时间以前的数据进行修改就更加的难了.
基于以上这些原因,建立一个专业的系统来解决这些问题是相当迫切的.
1.3实现意义
1.图书馆管理系统可以大大地提高工作效率。
2.减少工作中可能出现的错误。
3.提高工作效率,节约同学的时间。
4.能够及时有效的查阅图书等情况。
5.保护读者信息
2系统分析
2.1系统功能
在这个系统中,要对图书进行管理,那么就需要有读者的信息,图书的信息。
读者在借书时可以先查询一下图书的情况看下是否有这本书的存在,是否已借完,在查询的时候可以按照书名,书号,出版社,作者等进行查询,这样方便了读者,节约了许多的时间,又提高效率,在读者找到所需要的书籍时,要做相应的处理
综上所述这个系统应该包含一下五个功能
1.系统维护它又包含初始化和读盘。
2.读者信息的管理。
3.图书管理-包括图书信息输入和图书信息查询。
4.图书查询子系统,分别按照书号,书名,作者,出版社进行查询。
5.图书流通里面包含借书处理。
2.2算法分析
在编写程序时,书号的查询运用了二分查找法,用排序运行其他信息的处理
2.2.1插入排序法
把欲插入的数与数组中各数逐个比较,当找到第一个比插入数大的元素i时,该元素之前即为插入位置。
然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。
最后把插入数赋予元素a[i]即可。
如果被插入数比所有的元素值都小则插入最前位置。
2.2.2二分查找法
先将数据进行升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成
3概要设计
3.1设计要求
图书管理表所表示的就是一个数据库。
图书管理一般包括:
图书采编,图书编目,图书查询,及图书流通等等
1.建立一个图书信息数据库文件,输入若干种书的记录,建立一个以书号为关键字的索引文件;在主数据库文件中建立以书名,作者以及出版社作为次关键字的索引以及对应的索引链头文件。
2.建立关于书号,书名,作者及出版社的图书查询。
3.实现图书的借还子系统,包括建立读者文件,借还文件,读者管理及图书借还等相关的处理
记录号
书号
书名
作者
出版社
分类
藏书量
借出数
1
1
数据库
李小云
人民邮电
021
8
0
2
2
数据结构
刘晓阳
中国科学
013
6
0
3
3
操作系统
徐海平
人民邮电
024
7
0
4
4
数据结构
孙华英
清华大学
013
5
0
5
5
课程设计
李小云
中国科学
035
6
0
6
6
数据库
徐海平
清华大学
021
6
0
7
7
数据结构
李小云
人民邮电
013
5
0
8
8
课程设计
刘晓阳
清华大学
035
7
0
图3-1-1图书主索引文件
书名
长度
作者
长度
出版社
长度
数据库
2
李小云
3
人民邮电
3
数据结构
3
刘晓阳
2
中国科学
2
操作系统
1
徐海平
2
清华大学
3
课程设计
2
孙华英
1
图3-1-2书名,作者,出版社索引链头文件
3.2系统结构图
图3-2-1系统结构图
3.3总流程图
4详细设计
4.1添加图书记录
建立文件时,在输入记录建立数据库文件的同时建立一个索引表。
索引表中的索引按记录输入的书号升序排列(用插入排序法),并同时修改相关的索引及链头文件,为方便起见我们将文件用记录数组代替实现;为了方便处理,在后面使用数组时,数组下标都是从1开始
voidAppDBaseRec(BookDbaseFile&df)//追加一条图书主数据库记录
{
提示输入项的输入输出;
输出一条记录;
图书记录器加1;
}
4.2修改书号索引
voidChangeBnoIdxF(BookDbaseFile&df,BnoIdxFile&bif)//修改书号索引表
{
取当前图书记录中书号送至变量sh中;
{//查找插入位置
if(sh>索引表中第j个记录的书号)
{
k=j+1;
break;
}
j--;
}
记录后移,留出位置;
插入记录;
bif.len++;//表长度加1
}
4.3多重表文件的建立
根据一条主文件的记录,将要建立索引的次关键字与对应的链头索引文件中的关键字比较,若有相等的,就将组文件总索引指针修改成链头指针文件中的当前指针,并同时修改链头文件中和连头指针为当前主文件的记录指针及记录个数加1,若没有相等的,就将组文件中索引指针置成0,并修改料头文件中和链头指针为当前主文件的记录指针已经记录个数置成1
voidChangeLinkHeadF1(BookDbaseFile&df,LHFile1&lhf1)
{
处理图书文件当前记录;
while(j<=lhf1.len1)
{//查找与次关键字相等的记录
if(相等)
{
k=j;
break;
}
j++;
}
if(k!
=0)
{
链头文件记录的指针存入图书主文件当前记录的相应指针域;
主文件的当前记录号(假定为指针)存入链头文件的指针域;
链头文件记录的计数器加1
}
else
{
主文件中当前记录的指针域置空(0);
主文件的当前记录号(假定为指针)存入链头文件的指针域;
索引关键字个数加1;
}
}
4.4信息查询
由于图书文件已按照书号建立了索引文件,就是说已按书号索引有序化,因此,采用二分查找法来实现书号查询.
voidSearchBook(BookDbaseFile&df,BnoIdxFile&bif,LHFile1&f1,LHFile2&f2,LHFile3&f3)
{
choose=1;
while(choose>=1&&choose<=5)
{
显示图书查询菜单
1.书号
2.书名
3.作者
4.出版社
5.退出
请用户选择
switch(choose)
{
case1:
输入书号,调用书号查询法,break;
case2:
输入书名,调用书名查询法,break;
case3:
输入书作者,调用作者查询法,break;
case4:
输入出版社,调用出版社查询法,break;
case5:
return;
}
}
4.5借还书处理
4.5.1借书处理算法
voidBorrowBook(BookDbaseFile&bf,BnoIdxFile&bif,BookFile&bbf,ReFile&rf)//借书处理
{
输入读者号,书号,借阅时间;
如不能借,就提示读者”书已借满,不能再借”,如可借,
则查出图书主文件,需要借阅的图书是否已被借出,如借出则提示
“图书已借出”,否则,结束文件追加一条记录,记录相关内容,
并分别修改图书文件和读者文件;
}
4.5.2还书处理
voidBackBook(BookDbaseFile&bf,BnoIdxFile&bif,BookFile&bbf,ReFile&rf)//还书处理
{
输入读者号,书号,还书时间;
还书处理:
查找读者文件,修改借书数
查找图书文件,修改借出数;
查询还书文件,填入还书日期;
}
5运行与测试
5.1图书管理系统
5.2系统初始化
在选择1后对系统做初始化,使有关文件,指针,计数器等初始化为0
5.3读者管理
选择2读者管理输入读者信息
5.4图书管理
选择3之后选择1,输入图书信息
5.5图书查询
有了图书的信息后就可以对书籍进行查询了
5.5.1按书号查询
在菜单中选3图书管理,再选2图书查询,在选1,按书号查询,输入书号1
5.5.2按作者名查询
选3,按作者查询,输入作者名刘晓阳
5.5.2按出版社查询
选择4,按出版社查询,输入出版社人民邮电
5.5.3按书名查询
选择2,按书名查询,输入书号2
5.6借书处理
选择4图书流通再选1借书处理输入读者号1书号3
5.7还书处理
选择4图书流通2还书处理输入读者号1书号3
6总结和心得
总结:
在程序运行中出现了错误
1.if(strcmp(cbs,lhf3.LHFrec3[j].press)=0)应该该为if(strcmp(cbs,lhf3.LHFrec3[j].press)==0)
2.strcpy(sm,df.BookDbase[i]bname);改为strcpy(sm,df.BookDbase[i].bname);
3.strcpy(lhf1.LHFrec1[m].bnamesm);改为strcpy(lhf1.LHFrec1[m].bname,sm);
把这几个改好了之后程序就出来了
心得
这个程序的代码较长,难度有点大,在程序运行的时候有一些小错误,在程序中还是有一些不太懂的地方,但是大概的是看懂了的,在让我学会了不少关于排列的问题,
但许多概念还是模棱两可的,可是这次绝对是我的一个进步。
我以后一定认真学习,好好把握问题的关键,掌握知识的要领。
7参考文献
[1].严蔚敏、吴伟民主编《数据结构》(C语言版)清华大学出版社
[2]苏仕华主编《数据结构课程设计》机械工业出版社
[3]严蔚敏、吴伟民《数据结构习题集》(C语言版)清华大学出版社
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 表达式 求值