带语音提示的图书管理系统

nouveau

发布日期: 2020-09-15 10:29:17 浏览量: 365
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、需求分析

  • 完成简单的图书管理业务:

    • 新书入库:登记新书的编号、书名、作者和数量
    • 书目信息维护:删除、更新
    • 读者信息维护:新增、删除读者
    • 查询
    • 借阅、归还
  • 语音提示功能:

    • 用户进行操作时语音提示,提高交互性

二、功能实现

  • 数据库(c++实现) 关系类数据库

    • 索引——B树
    • 查询方式——sql
    • 存储方式—-顺序+索引
  • 语音功能

    • c# mstts
  • 界面

    • c#

三、概要设计

3.1 B树

即二叉搜索树:

  • 所有非叶子结点至多拥有两个儿子(Left和Right)

  • 所有结点存储一个关键字

  • 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树

在项目中用做数据库的索引。

3.2 Sql

SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。他不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全 不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。它以记录集合作为操纵对象,所有SQL语句接受集合作为输入,返回集合 作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语言可以嵌套,这使他具有极大的灵活性和强大的功能,在多数情况 下,在其他语言中需要一大段程序实现的一个单独事件只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句

在项目中为用户提供最简单的sql语句。

3.3 TTS

TTS是语音合成应用的一种,它将储存于电脑中的文件,如帮助文件或者网页,转换成自然语音输出。TTS可以帮助有视觉障碍的人阅读计算机上的信息,或者 只是简单的用来增加文本文档的可读性。现在的TTL应用包括语音驱动的邮件以及声音敏感系统。TTS经常与声音识别程序一起使用。现在有很多TTS的产 品,包括Read Please 2000, Proverbe Speech Unit,以及Next Up Technology的TextAloud。朗讯、 Elan、以及 AT&T都有自己的语音合成产品。

本项目中作为发声引擎。

四、详细设计

4.1 程序流图

4.2 图形界面

4.2.1 登陆

需提供用户名(默认为admin)和密码(默认为admin)。密码用md5+乱序的方式存放于DB/PWD.mdb(文本文件) :

  1. //混合密码
  2. public static string GetMd6Str(string ConvertString)
  3. {
  4. MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
  5. string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8).Replace("-", "B");
  6. t2 += BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8).Replace("-","Z");
  7. t2 += BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8).Replace("-", "W");
  8. return t2;
  9. }

4.2.2 语音提示

  • 使用微软的TTS引擎

  • 语言程序安装包带有TTS5.1..

  • 优先使用windows7 vista 自带的TTS5.3(XP不支持LILI语音库..故会使用SAM)

  • 封装成DLL了 namespace TTS; 静态类speaker.speak(string thins);

4.3 核心—数据库系统的类图

索引采用B树..动态阶数..除根节点外每层的最大key为2/m+1。

数据库系统有个public method query(std::string query)用于执行简单的sql语句。

语句 功能 例子
Create
—database 创建数据库 create database std
—table 创建表 和字段数据 create table `book` (`id` key,`booktitle` text,`publisher` text,`type` text,`writer` text,`maxnums` int,`lendnums` int)
Use 选择数据库 use sda
Insert 插入数据 insert into `book` values (`3`,`电子`,`电子工业`,`null`,`null`,`5`,`3`)
Delete 删除数据 delete from `book` where `booktitle`=’汇编’
Select 查找数据 select from `book` where `id`<=’7’
Update 更新数据

数据库系统代码行约3000,update功能暂未实现..可以先delete然后再insert..

查询时给入相应的sql语句,查询到的结果会存入result这个迭代器。

外部封装成DLL,可调用参数:

  1. fetchline() 格式化结果,取一行
  2. query(string line) 执行sql
  3. String^ get(String^ tablename) 取当前行的字段名下的字段值

注:命名空间 DBcore。

4.4 数据库文件物理系统

  1. DB
  2. ├─book
  3. data.dbs
  4. id.idx
  5. ├─lendinfo
  6. data.dbs
  7. id.idx
  8. └─reader
  9. data.dbs
  10. sid.idx

idx文件就是存放的B树索引文件,dbs是数据库主文件。当通过索引操作时读取索引文件进B树..其他情况下均顺序操作。

五、调试与运行

语音提示输入

登陆界面

登陆成功

主界面可进行图书查询,读者查询等功能的应用

新书入库

图书查询..可按任意一项查询..书号唯一

新读者登记

借阅3本

结果..库存减少..拥有数增加

归还图书

上传的附件 cloud_download 带语音提示的图书管理系统.7z ( 36.87mb, 3次下载 )
error_outline 下载需要12点积分

发送私信

花花世界,终归空寂

9
文章数
17
评论数
最近文章
eject