软件工程实验课题.docx

上传人:b****8 文档编号:29591104 上传时间:2023-07-24 格式:DOCX 页数:22 大小:187.07KB
下载 相关 举报
软件工程实验课题.docx_第1页
第1页 / 共22页
软件工程实验课题.docx_第2页
第2页 / 共22页
软件工程实验课题.docx_第3页
第3页 / 共22页
软件工程实验课题.docx_第4页
第4页 / 共22页
软件工程实验课题.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

软件工程实验课题.docx

《软件工程实验课题.docx》由会员分享,可在线阅读,更多相关《软件工程实验课题.docx(22页珍藏版)》请在冰豆网上搜索。

软件工程实验课题.docx

软件工程实验课题

图书管理系统

组长:

杨晓华

组员:

巴雅尔图、那日苏、张天、

牛莉、杨宇婷

作业提交日期:

二О一五年十月3三十日

作者简介

 

组长:

杨晓华学号:

120714241学院:

经济管理学院

组员:

巴雅尔图学号:

110412185学院:

生态环境学院

那日苏学号:

111710874学院:

兽医学院

张天学号:

120714242学院:

经济管理学院

牛莉学号:

120714767学院:

经济管理学院

杨宇婷学号:

120715553学院:

经济管理学院

图书管理系统

摘要

简单介绍了图书管理系统数据库的设计和系统功能的实现过程。

该系统是运行在学校网络上的网络图书管理系统,由图书编目,图书管理,读者管理,资料管理,Web查询等几个子系统组成,,实现了图书资料的计算机网络管理和Web查询功能。

计算机技术的迅猛发展,特别是随着网络技术的出现标志着信息时代已经来临。

信息化浪潮、网络革命在给社会带来冲击的同时,也使图书馆业务受到了强烈的冲击,图书馆传统的管理和服务方式已不能适应读者对日益增长的文献信息的需求,建设图书馆信息网络系统,是图书馆现代化建设的客观要求。

建设以计算机为核心的图书馆信息网络,实现图书馆管理和服务的自动化,更好地为科技工作服务,是图书馆发展的必由之路。

目前,国内大部分高校图书馆都实现了网络管理,目前图书馆都在在朝着这个方向发展。

 

关键词:

图书,网络,数据库,管理系统,VC

 

一、系统可行性分析

1.总体功能设计

根据高校图书馆的实际情况和校园网网的现状,我们确定了网络图书系统应该具备8个方面的功能,它们是图书编目,图书采购,图书管理,读者管理,标准管理,资料管理,系统维护,Web查询。

其中Web查询是该系统突出的特点,它的实现是因为有学校校园网的支持。

系统组成和功能框图见图1。

图2业务流程图

图3读者

 

图4出版社

图5管理员

图6借阅图书

图7借阅关系

表1读者信息说明

读者信息

系统名

高校图书系统

别名

描述

每一位读者具体信息

定义

读者信息=读者学号+姓名+学院+专业+年级

位置

读者目录文件

简要说明:

学号是学生唯一识别码

修改记录:

编写:

日期:

表2图书信息说明

图书信息

系统名

高校图书系统

别名

描述

每一本图书的详细信息

定义

图书信息=分类目录号+流水号+书名+作者+内容摘要+价格+购书日期

位置

图书目录文件

简要说明

图书条形码是图书唯一识别信息

修改记录:

编写:

日期:

表3借书信息说明

借书信息

系统名

高校图书系统

别名

描述

每一本所借图书的具体信息

定义

借书信息=读者学号+流水号+图书分类号+借阅日期+归还日期

位置

借书文件

简要说明

所借图书条形码是图书唯一识别信息

修改记录:

编写:

日期:

Web查询功能应该能够查询图书,期刊和读者等信息,因此我们在查询系统中设计了以下主要功能:

图书查询、期刊查询、读者信息查询,图书推荐。

“图书查询”主要查询在图书库中现有的资料,让用户了解是否有其需要的图书、有哪些图书,它包括按书名查询图书、按索书号查询和按作者查询图书等。

“期刊查询”主要查询期刊的情况,包括按刊名查询出版物信息、按索书号查询连续出版物信息和按编辑部查询连续出版物信息等。

“读者信息查询”主要查询读者的图书借阅情况,包括读者借阅记录查询和读者超期借阅记录查询等。

“图书推荐”是让读者推荐图书,作为工作人员采购新书的参考。

二、需求分析

1.运行环境规定

联网的微型计算机

立足于校园实际,建成符合标准化协议、通用性较强、实用的系统,以提高图书信息的现代化管理水平,实现信息资源的共享。

图书管理系统是一种基于集中统一规划的数据库数据管理新模式。

在对图书、读者、出版社信息的管理,其实是对图书、读者数据出版社信息的管理。

本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。

使用该系统之后,图书馆管理人员可以管理读者的登记、图书的购入、借出、归还以及注销、图书归还中的问题;还可以查询某位读者、某本图书的借阅情况,对当前借阅情况给出一些统计,给出统计表格,以全面掌握图书的流通情况,还可以根据图书类别查询图书,可以查询出版社的信息,以及某出版社的图书在本校的借阅情况和平均价钱等信息。

图书管理系统,最主要处理两个过程,借书与还书。

借书之前先看看是不是有借书的资格。

还书时,检查一下书是否过期等如有进行相关的处理。

其他的一些功能主要是围绕这两个功能展开。

图书模块的功能应包括:

图书信息的添加、删除、修改、编辑、并可以根据图书类别查询图书。

管理员,出版社等信息查询与图书相类似。

用vc作为前台的开发工具,定义Cdatabase、CRecordset建立与数据库的连接。

要求应前台用程序和后台数据库在数据类型方面要统一,否则会出现插入和更新异常等,导致系统异常,不利于使用。

本系统的宗旨是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学、合理的规划,系统、高效的实施

三、系统设计

1.总体设计

运行系统:

Linux,Unix,Windows2000、WindowsXP及其以上操作系统。

2.功能

(1)图书编目子系统:

实现编目处理、查重、馆藏管理等功能。

其中编目处理包括原始编目、书目记录、数据维护、各类输出等项;馆藏管理包括馆藏数据维护、丢剔处理、馆藏统计、报表输出等项。

(2)图书采购子系统:

实现预订查询、新书订购、验收记到、资金管理、统计报表处理等功能。

(3)图书流通子系统:

实现出纳管理、读者管理、查询及统计打印功能模块。

其中出纳管理包括借书、还书、续借、预约、罚款等项;读者管理包括读者登记、借书证挂失、读者数据维护等项;查询包括是查书去向、查读者借书情况、查总体借还情况等;统计打印则是打印图书借阅和读者情况的统计报表以及打印催还单等。

(4)期刊管理子系统:

实现期刊查缺、采购、编目、记到、典藏、流通、统计等功能。

(5)标准管理子系统:

实现期刊查缺、采购、编目、记到、典藏、流通、统计等功能。

(6)资料管理子系统:

实现资料查缺、采购、编目、记到、典藏、流通、统计等功能。

(7)系统维护子系统:

实现操作员库、读者库、单位库维护,权限设置等功能。

(8)Web查询子系统:

实现网上查询(图书、期刊查询和读者查询)、读者荐书、意见反馈等功能。

 

图8系统结构图

四、详细设计

1.算法设计

图9工作人员流程图

图10普通学生流程图

图11借阅者流程图

2.数据库设计

在图书管理系统中,数据库设计占有重要位置,数据库设计质量的优劣,可直接影响到数据库数据的冗余度、数据的一致性、数据丢失等问题。

图书管理系统数据库常常要设计含有如下数据项:

借书证号、姓名、单位、馆藏号(馆藏号为每本书上的条形码号)、书名、分类号、作者、价格等。

下面以图书流通模块所涉及的数据库为例来说明模式的设计。

先设计图书流通的实体——关系图(E-R图)。

E-R图由3个相关联的部分构成,即实体、实体与实体之间的关系以及实体和关系的属性。

图书流通过程中实体“图书”与“读者”之间的关系是借阅和被借阅的关系,实体“读者”与“单位”之间的关系是属于和被属于的关系,“图书”的属性有“馆藏号”,“书名”,“分类号”、“作者”、“价格”,“读者”的属性有“借书证号”、“姓名”、“性别”,“单位”的属性有“单位编号”和“单位名称”,“借阅”属性“借书日期”,由此得出E-R图如图4。

3.概念设计

图12图书流通的E-R图

4.逻辑设计

(1)导出初始关系模式

book(图书编号#,入库时间,图书名称,作者,出版社,出版日期,价格,数量,图书状态)

bookuser(借阅者的图书证号#,学号,姓名,性别,出生年月,民族,系别)

worker(用户名,密码)

borrow(图书编号#,图书名称,借阅者姓名,借阅数量,借阅时间,归还时间,过期天数,归还标志位)

(2)产生子模式

子模式是用户所用到的那部分数据的描述。

除了指出用户用到的数据外,还应指出数据与概念模式中相应数据的联系,即指出概念模式与子模式之间的对应性。

借书子模式(借阅者的图书证号群,姓名,图书编号#,图书名称,借阅时间)

五、实现与测试

1.控制台应用程序

a.日期结构,包含有年、月、日,以及减法与小于号的重载

structDate{

intm_year;

intm_moth;

intm_day;

intoperator–(constDate&d)

{

intdays=365*(m_year-a.m_year);

days+=30*(m_moth-d.m_moth)+m_day-d.m_day;

returndays;

}

BOOLoperator<(constDate&d)

{

if(*this-d<0)

returnTRUE;

returnFALSE;

}

};

b.读者结构,包含有姓名、借书证号、性别与类别,小于号的重载

structReader{

CStringm_name;

CStringm_certificateNo;

BOOLm_sex;//1--male,0--female

intm_type;//0--student,1--graduate,2--teacher

BOOLoperator<(Reader&r)

{

if(m_type

returnTRUE;

if(m_certificateNo

returnTRUE;

if(m_name

returnTRUE;

if(m_sex

returnTRUE;

returnFALSE;

}

};

c.CBooks类

classCBooks:

publicCObject

{

DECLARE_SERIAL(CBooks)

public:

CStringm_serialNumber;//编号

CStringm_category;//类别

CStringm_title;//书名

CStringm_auther;//作者

CStringm_press;//出版社

Datem_publicDate;//出版日期

doublem_price;

Datem_purchaseDate;//购书时间

Readerm_lender;//借阅者

Datem_lendDate;//借书日期

Datem_returnDate;//还书日期

CBooks();

virtual~CBooks();

voidSerialize(CArchive&ar);

};

CBooks类具有所需要的数据成员外,需要注意到

首先,它是由CObject派生的,CObject是绝大部分MFC类的基类;

其次,类中有一个宏DECLARE_SERIAL(CBooks),其作用就是为了实现文件的序列化与类的动态创建。

相应的,在此类的实现文件中必定要有宏IMPLEMENT_SERIAL(CBooks,CObject,1)。

最后,CBooks应重载CObject虚拟函数Serialize(CArchive&ar)。

CBooks类的实现文件类似于:

IMPLEMENT_SERIAL(CBooks,CObject,1)

CBooks:

:

CBooks()

{

m_price=0.0;

m_lender.m_sex=TRUE;

m_lender.m_type=2;

m_publicDate.m_year=0;

m_publicDate.m_moth=0;

m_publicDate.m_day=0;

m_lendDate.m_year=0;

m_lendDate.m_moth=0;

m_lendDate.m_day=0;

m_returnDate.m_year=0;

m_returnDate.m_moth=0;

m_returnDate.m_day=0;

m_purchaseDate.m_year=0;

m_purchaseDate.m_moth=0;

m_purchaseDate.m_day=0;

}

CBooks:

:

~CBooks()

{

}

voidCBooks:

:

Serialize(CArchive&ar)

{

if(ar.IsStoring())

{

ar<

<

ar<

<

ar<

ar<

ar<

ar<

}

else

{

ar>>m_serialNumber>>m_category>>m_title

>>m_auther>>m_press>>m_price;

ar>>m_lender.m_name>>m_lender.m_certificateNo

>>m_lender.m_sex>>m_lender.m_type;

ar>>m_publicDate.m_year>>m_publicDate.m_moth>>m_publicDate.m_day;

ar>>m_lendDate.m_year>>m_lendDate.m_moth>>m_lendDate.m_day;

ar>>m_returnDate.m_year>>m_returnDate.m_moth>>m_returnDate.m_day;

ar>>m_purchaseDate.m_year>>m_purchaseDate.m_moth>>m_purchaseDate.m_day;

}

}

2.建立管理图书的类

首先建一个基类

classCManager

{

CObArraym_list;

public:

voidAddTail(CBooks*pBook);//在链表尾部放书籍

voidAddHead(CBooks*pBook);//在链表头部放书籍

voidAdd(CBooks*pBook,intindex);//将书籍放到index处

voidDelete(intindex);//删除index处的书籍

voidFit(intindex);//修改index处的书籍

CBooks*GetBook(intindex);//获取index出的书籍

CManager();

virtual~CManager();

virtualintFind(void*para,CobArray&list);

virtualvoidDelete(void*para);

viraulvoidSort();

voidSerialize(CArchive&ar);

friendostream&operator<<(ostream&os,CManager&mg);

};

其实现文件类似于

CManager:

:

CManager()

{

}

CManager:

:

~CManager()

{

intnum=m_list.GetSize();

for(inti=0;i

{

CBooks*p=(CBooks*)m_list[i];

deletep;

}

m_list.RemoveAll();

}

voidCManager:

:

Serialize(CArchive&ar)

{

m_list.Serialize(ar);

}

voidCManager:

:

Delete(void*para)

{

}

voidCManager:

:

Sort()

{

}

intCManager:

:

Find(void*para,CobArray&list)

{

return–1;

}

CManagerTitle:

publicCManager

{

public:

CManager*m_pParent;

CManagerTitle();

intFind(void*para,CobArray&list);

voidDelete(void*para);

voidSort();

}

:

CManagerTitle:

:

CManagerTitle():

m_pParent(0){}

intCManagerTitle:

:

Find(void*para,CobArray&list)

{

if(!

m_pParent)

return;

CString*pStr=(char*)para;

inti,value=-1,num=m_pParent->m_list.GetSize();

for(i=0;i

{

CBooks*p=(CBooks*)m_pParent->m_list[i];

if(p->m_title==pStr)

{

list.Add(p);

if(value<0)

value=i;

}

}

returnvalue;

}

voidCManagerTitle:

:

Delete(void*para)

{

if(!

m_pParent)

return;

CStringpStr=(char*)para;

inti=0;

while(im_list.GetSize())

{

CBooks*p=(CBooks*)m_pParent->m_list[i];

if(p->m_title==pStr)

{

deletep;

m_pParent->m_list.RemoveAt(i);

}

else

i++;

}

}

voidCManagerTitle:

:

Sort()

{

if(!

m_pParent)

return;

inti,j

for(i=0;i

{

CBooks*b1=(CBooks*)m_pParent->m_list[i];

for(j=i+1;j

{

CBooks*b2=(CBooks*)m_pParent->m_list[j];

if(b2->m_titlem_title)

{

m_pParent->m_list.RemoveAt(i);

m_pParent->m_list.InsertAt(i,b2);

m_pParent->m_list.RemoveAt(j);

m_pParent->m_list.InsertAt(j,b1);

b1=b2;

3.完成主界面的设计与实现

classCMenuA

{

public:

voidShowMain();

voidShowSort();

voidShowFind();

voidShowDelete();

………………………………..

CMenuA();

virtual~CMenuA();

};

 

六、设计体会

计算机具有强大的功能,它现已应用于各行各业,在人们生活的各个领域起着非常重要的作用。

它的高速运算能力极大的提高了工作效率,把人们从浩瀚的计算中解放出来,并且在高、尖的大型科学计算和大型信息处理及运算需求高的领域发挥着重要的作用。

因此学习vc语言就显得更为重要,vc语言作为国际上广泛流行的通用程序设计语言,在计算机的研究和应用中已展现出强大的生命力。

vc语言兼顾了诸多高级语言的特点。

通过此次图书管理系统的设计,使我对VC++程序设计有了深一步的了解,对系统设计及开发有了比较全面的思路。

首先,通过对系统进行需求分析,确定各个功能函数;然后一个个具体地对他们进行编程,并且仔细检查看是否有错;在完成这一步之后才开始构造主函数,通过主函数把各个功能函数联系起来,编译修改错误和不足之处

在实际编程过程中会遇到很多不同的错误,有时候是一些很明显很细节的语法错误,这些可以通过编译来查找错误的所在,然而那些并不明显难以查找的隐性错误却真让人头痛。

同时我翻阅了大量的书籍,也在网上查了很多资料。

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1