软件工程课程设计报告Word下载.docx
- 文档编号:1554352
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:16
- 大小:128.07KB
软件工程课程设计报告Word下载.docx
《软件工程课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《软件工程课程设计报告Word下载.docx(16页珍藏版)》请在冰点文库上搜索。
计算及测试结果准确;
工作中有创新意识;
对前人工作有改进或突破,或有独特见解;
0.4
工作量、
工作态度
按期完成规定的任务,工作量饱满,难度较大;
工作努力,遵守纪律;
工作作风严谨务实
报告质量
文字通顺,技术用语准确,符号统一,编号齐全,书写工整规范,图表完备、整洁、正确;
合计
1.0
指导教师签字:
评定日期:
图书馆管理系统
1.课程设计概述
1.1目的
1)通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用软件工程课堂上所学的软件开发方法和知识,比如,软件项目的完整设计与开发过程、结构化技术、快速原型法和面向对象方法等。
特别是结构化分析、结构化设计、快速原型开发、面向对象分析与面向对象设计。
2)为学生适应毕业后团队合作开发规模稍大项目和综合应用本专业所学习的多门课程知识(例如,软件工程、程序设计语言、操作系统、数据库、网络编程等)创造实践机会。
为学生提供主动学习(比如,对Web网页设计、ASP或ASP交互网页技术、Java开发环境、商用数据库应用、电子商务、客户机/服务器技术、Visio与Rose软件工具等内容的学习)、积极探索与大胆创新的机会。
3)使学生通过参加小组团队的开发实践,了解项目管理、团队合作、文档编写、口头与书面表达的重要性。
4)使每个学生了解软件工具与环境对于项目开发的重要性,并且重点深入掌握好一、两种较新或较流行的软件工具或计算机应用技术、技能(比如,网页设计技术与常见工具;
基于Java(ASP、PHP等)技术的Web编程;
软件开发文档编制工具Office、Visio、Rose等;
商用数据库Access(或SQLServer、Oracle、MySql等)设计与实现;
客户机/服务器结构)。
5)通过“稍大的”富有挑战性的软件实验项目开发实践,为学生提供主动学习(比如,对Web网页设计、ASP或ASP交互网页技术、Java开发环境、商用数据库应用、电子商务、客户机/服务器技术、Visio与Rose软件工具等内容的学习)、深入实践的机会,并且通过课程设计实践中,提高学生的自学能力、书面与口头表达能力、创造能力和与团队其他成员交往和协作开发软件的能力,提高学生今后参与开发稍大规模实际软件项目和探索未知领域的能力和自信心。
1.2任务
1)学习课程设计指导书和分组。
学习研究课程设计指导书,进行分组(网站开发项目5人一小组;
个人主页设计项目3人一组)并且明确每个学生在开发小组中扮演的角色及承担的职责(包括选出组长)。
2)确定目标、初步方案,准备、试用开发环境与工具。
每个小组确定开发网站目标及初步方案;
选择、准备、试用开发平台、数据库、交互网页开发技术、网页设计工具及其他有关开发工具。
3)学习与搜集素材,借阅、购置必要的书籍与材料。
学习开发小组及成员根据自己承担的任务利用各种途径(图书馆、因特网、书店、同学亲友等)进行针对性的学习并收集相关素材,包括精选、购置必要的书籍。
4)课堂与课下结合开发项目。
因为需要自学和探索的内容与软件较多,每个学生要特别发挥积极主动精神投入课程设计和开发活动。
除了实验室正式安排的课程设计时间之外,学生需要充分利用好课余时间,自己有计算机的学生更要充分利用有利条件以取得尽可能好的开发成果,力争获得最大收益。
1.3开发环境
WindowsXP+BorlandC++6.0+Acsess2000
2.项目的可行性研究与需求分析
2.1经济可行性分析
图书馆管理系统是针对图书馆的图书管理而设计的,图书馆有能力承担本系统的开发。
开发新系统的工作是一项间距复杂的工作,它的投资主要是人力和物力的投资。
对于本系统的开发者来说,其主要投资还是在人力和物力两个方面。
在系统的开发过程中,图书馆完全有能力承担开发费用。
2.2技术可行性
本系统是围绕这数据库进行操作,在开发方面,主要掌握的是数据库操作的知识,所有图书的操作都将是针对数据库的操作。
因此在数据库操作方面不存在技术瓶颈问题,因为现在数据库编程技术已经相当成熟。
2.3运行可行性
本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那些有一般的计算机知识的人员就可以轻松上手。
在系统移植性问题上,本系统采用BorlandC++编写生成release版本,理论上能够在任意的基于WindowsNT内核的操作系统下运行,而且本系统对系统要求并不高,并且不需要附带共享库,理论上可以免安装就可以投入使用。
此外,本系统内部带部分模块都有经过出错处理,因此,系统具备一定的容错能力。
由此,该系统的操作是可行的,有必要开发该系统。
综合以上三方面,该系统具有很高的开发可行性,无论是从技术上或者经济上还是操作上。
因此,可以设计该系统的数据流图,建立数据字典。
2.4需求分析
当前,计算机技术飞速发展。
计算机的存储能力和技术能力都将不能与几年前的相提并论。
计算机应用的领域也愈加广泛。
而图书馆,这个信息存储量庞大的地点,对信息的处理不仅要求效率高而且要求较高的正确性。
传统的图书管理方法对于目前的图书管理已经不能在适用了。
因为目前图书馆的馆藏图书多则数以亿计,少则也有数十万。
如果采用传统的纸质登记方式,不仅效率低,而且易出错,还以造成丢失数据,或者数据被破坏。
维护起来费用相当高并且低效率。
对此,就要求有另一种高效率、易于维护、低成本的管理方式来进行此项操作。
计算机应用于数据信息管理,不仅效率高、成本低,还不易出错。
因此本系统的开发恰好能很好的解决此类问题。
对于图书管理不外乎借书、还书、续借、图书入库、旧书淘汰、分类管理、读者管理这几块内容,另外可能还有其它一些附加功能。
下面对系统功能规划如下:
2.5模块介绍
登录模块:
提供系统登录接口,输入错误达到三次之后,系统自动退出。
输入正确进入系统。
读者管理模块:
提供对读者的添加、修改、删除、查询等操作。
图书管理模块:
提供对图书的添加、修改、删除、查询等操作。
分类管理模块:
提供对图书分类的添加、修改、删除等操作。
借书还书模块:
提供借书、还书、续借等操作。
管理员管理模块:
提供对系统管理员的添加、删除、密码、用户名修改等操作。
3.项目设计的基本原理和采用的主要方法与技术
3.1基本原理
本系统将图书馆的正常操作都模拟成对数据库的操作。
在数据库中存在的读者以及图书的相关记录。
我们这要对这些记录的相关信息进行修改就可以达到目的。
例如借书操作,我们在图书字段中设置一个关于图书状态的字段。
当借书时,只要把此状态设为借出的值即可达到借书目的。
3.2数据库的设计如下
3.3采用主要方法和技术
本系统采用的主要方法是ADO+Access方式进行设计。
采用BorlandC++6.0作为开发环境,Access2000作为数据库进行开发。
对于数据库操作采用ADOConnection控件以及ADOTable控件进行操作。
另外系统还用了VCLskin进行界面美化,实现了换肤功能,是系统界面更加友好。
软件配置保存于skin.ini文件中,采取了ini文件读写技术。
4.本人实现项目的过程与步骤
我担任的职位是辅助程序员2,主要负责数据库设计这一部分。
数据库的设计是MIS系统的核心部分,设计数据库,首先要进行需求分析,然后进行数据库的概念结构设计、逻辑结构设计、数据库结构实现等步骤。
4.1数据库需求分析
根据以上的需求分析和数据组织,开始设计数据结构,即根据需求勾画出实体-关系图(E-R)。
在概念上,E-R图代表的是系统需要的数据及其这些数据之间的关系。
如图所示的实体-关系图:
从图中可以看出,在这个系统中实际存在的实体:
图书,借阅人,图书管理员,其中借阅人和图书是多对多关系,针对本系统,通过对图书借阅管理的内容和数据流程分析,设计数据项和数据结构如下:
1.图书基本信息,其数据项有图书编号、图书名称、图书作者、图书类别、出版社、书价、简介、状态、借书证号、日期。
2.借阅人基本信息,其数据项有借阅人编号、借书证号、姓名、性别、登录密码、联系方式、罚款、备注。
3.图书借阅登记,其数据项有借阅序号、借阅图书编号、借阅人编号等。
为了实现图书信息录入的方便性与规范性以及相关的统计功能,还应增加出版社信息与图书分类信息:
4.出版社信息,其数据项有出版社编号、出版社名称、地址、电话、传真等。
5.图书分类信息,其数据项有分类编号、分类名称、同一类型图书数目。
同时针对于本系统的多用户使用特点,增加用户信息表:
6.用户信息表,其数据项有用户名、密码、用户权限。
7.罚金规则表,其数据项包括免费使用天数、罚金费率、规则启用开关。
8.图书管理员信息,其数据项有编号,用户名,密码。
4.2数据库逻辑结构设计
数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间的关联来得到,函数依赖性就是一个表中的字段间不应该有计算关系,如一个表中有单价字段、数量字段,就不应该有一个总金额字段。
如果程序运行过程中需要总金额,可以实时计算。
不过在一些较常用的表中,我们可以适当地保留冗余字段,这样,在程序运行过程中可以减少由于表间互相关联而使用速度降低等问题。
这就是所谓的第四范式。
数据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时产生的错误。
表与表相关联的外键最好是由程序自动生成的主键,这样数据库就比较规范了。
另外,数据表设计时一般都应该有一些标志字段,标志字段可以定义成CHAR
(1)或BIT型。
建议实际应用中定义成CHAR
(1)字段可以存储多种可能的状态,在最初设计时,可能我们没有考虑到的一些情况,在程序后来的开发中,可以通过设计标志字段为不同的值来解决,这样就避免了修改数据库结构。
数据库初期设计时一定要谨慎,把所有可能的情况都考虑进去,即使当时没有用到,也要将它留在数据库中作为备用字段以便将来扩充。
程序一旦开始编码,就应该尽量避免再修改数据库。
因为如果数据库结构一旦改变,所有与修改的数据表相关的业务都有可能受到影响,而某些影响还很难看到,这样就容易形成一个恶性循环。
错误越改越多,越改越乱,最终导致程序的失败。
PB的数据窗口与其他语言的数据控件不一样,它的很多东西是预编译的。
即使你一个模块已经调试无误,但只要数据库结构改动。
相应的模块就一定要重新修改,否则一定会出问题。
4.3图书管理系统数据库
图书借阅管理系统数据库中各个表的设计结果如下面几个表格所示。
每个表格表示为数据库中的一个表。
图书表
说明:
记录图书的基本情况,图书编号设为主键、索引。
字段名
数据类型
数据长度
图书编号
数字(int)
10
图书名称
字符(char)
50
图书作者
图书类别
出版社
书价
简介
状态
借书证号
日期
日期(date)
8
借阅人表
记录借阅人的基本情况,读者编号设为主键、索引。
读者编号
姓名
性别
2
登录密码
联系方式
罚款
备注
图书借阅登记表
记录图书借阅登记的基本情况,借阅序号设为主键、索引。
借阅序号
借阅图书编号
借阅人编号
出版社信息表
记录出版社信息的基本情况,出版社编号设为主键、索引。
出版社编号
文本型(char)
出版社名称
地址
电话
传真
图书分类表
记录图书分类的基本情况,分类编号设为主键、索引。
分类编号
分类名称
同一类开图书数
用户信息表
记录用户信息的基本情况,用户名设为主键、索引。
用户名
密码
用户权限
6
罚金规则表
记录罚金规则的基本情况
使用天数
5
罚金费率
规则启用
图书管理员表
记录图书管理员的基本情况,编号设为主键、索引。
编号
(1)规划有效的索引
a.在组合表的列中创建索引,包括主关键字和外部关键字所在的列。
b.在列或类组合中创建唯一的索引能增强唯一性。
c.浏览索引并卸载不使用的索引。
索引需要一定硬盘空间和时间来维护。
具有较高数据插入操作频率的数据库最好不要索引。
有较高读操作频率的数据库应该有更多的索引。
d.避免在簇索引中包括不必要的列。
在可能的情况下,使用较小的数据类型,例如用varchar替代char。
e.考虑使用簇索引来支持排序和范围化查询。
在为数据检索优化表时,簇索引必须支持数据的分组索引。
为簇关键字选择列或列组,簇关键字以经常需要的顺序排序数据或以必须被一起访问的记录而分组记录。
f.创建支持一般查询的查找参数索引。
具有高选择性的列是索引的最好候选列。
具有高密度的列是索引糟糕的候选列。
(2)使用约束实现数据的完整性
PRIMARYKEY约束在表中定义了主关键字,它是行唯一的标识符,它可以强制实体完整性。
在使用PRIMARYKEY约束时考虑以下事实:
a.每个表只能有一个PRIMARYKEY约束。
b.键入的值必须是唯一的。
c.不允许有空值。
d.PRIMARYKEY约束在指定的列创建唯一的索引,可以指定簇索引和非簇索引(如果
非簇索引先前并不存在,簇索引是默认的)。
UNIQUE约束指定,在一列中的两行不能有相同的值。
该约束使用唯一的索引来强制实体的完整性。
在已有一个主关键字时UNIQUE约束很有用,例如雇员号,但是必须保证其他标识符(例如,雇员驾驶证号)也是唯一的。
在使用UNIQUE约束时,考虑以下事实;
a.允许有空值。
b.在一个表中可以设置多个UNIQUE约束。
c.可以将UNIQUE约束运用于具有唯一值的单列或多列,但不能用于表的主关键字。
d.通过在指定的列或列组中创建唯一的索引,可以使UNIQUE索引得到强制
5.课程设计完成结果分析与个人小结
5.1完成的结果
这次的课程设计是我想是对自己从大三到现在所以学的编程的一个总结,其中用到了很多的知识点和许多软件的使用。
比如BorlandC++的使用,还有其中一些关于数据库操作控件的使用。
当然还有一些其他课外的内容,当然这个都是要靠自己去查资料或者请教老师,同学等。
给我印象最深的要算是关于数据库操作方面ADO技术的了解,这个对我来说可以说是一个新的技术,但是,最终还是在各方面的帮助下,懂了点皮毛,足够这次的课程设计使用。
期间,我还明白了项目开发的实际流程,以及其中要涉及到的内容。
还知道了系统在实际开发中需要注意许多细节,比如输入验证、错误处理来确保系统的健壮性。
以上这些是做这次课程设计时,主要要注意到的。
5.2个人小结
这次的课程设计总体来说,还是很成功的。
虽然,过程中有一些问题和分歧,但是,最终我们都通过努力,让大家的意见都走到一起,这体现了我们的团队合作。
要知道,我们每个人负责各自的一个方面,而最后就要这些模块融合到一起,我们经过了,商量,协调;
再商量,协调;
并且不断得尝试,不断的交流,最终达到最好的融合。
我想这里值得肯定的一点,因为只有团队合作的好,才能发挥大家的各方面的能力,让这个课程设计报告完美告终。
当然,我觉得还有另一点值得肯定,那就是大家在这次的课程设计中的每个人表现出的那种认真,负责的态度。
最近我们都在实习,公司里都有很多事,但是,大家还是抽出时间来,讨论,商量课程设计的内容,结构等。
先不说,最终的结果如何,单单是这个过程中收获到的就已经让我很学到很多。
6.附录
date=2009-06-18文档清单:
Bookmgr.mdb,数据库文件
图书管理系统.exe,主程序文件。
数据库定时备份代码:
WORDwYear1,wMonth1,wDate1;
WORDwYear2,wMonth2,wDate2;
intt;
SetCurrentDirectory(ExtractFilePath(Application->
ExeName).c_str());
try
{
DecodeDate(StrToDate(oldDate),wYear1,wMonth1,wDate1);
DecodeDate(Date(),wYear2,wMonth2,wDate2);
t=(wYear2-wYear1)*365+(wMonth2-wMonth1)*30+wDate2-wDate1;
if(t>
30)
{
if(Application->
MessageBoxA("
您已经超过三十天没有备份数据库了,是否进行备份?
"
"
确定"
MB_YESNO)
==mrYes)
dlgSave1->
Execute();
if(dlgSave1->
FileName!
="
)
CopyFile((ExtractFilePath(Application->
ExeName)+"
bookmgr.mdb"
).c_str(),dlgSave1->
FileName.c_str(),false);
ShowMessage("
成功将数据库备份到:
+dlgSave1->
FileName);
}
TIniFile*ini;
ini=newTIniFile(ExtractFilePath(Application->
setting.ini"
);
ini->
WriteDate("
bankdate"
date"
Date());
deleteini;
参加编写的文档:
图书管理系统-需求说明书
图书管理系统-数据库设计说明书
图书管理系统-概要设计说明书
图书管理系统-模块开发说明
图书管理系统-开发文档(总文档)
参考文献
[1]蒙祖强,龚涛.C++Builder程序员成长攻略.第一版.中国水利水电出版社.2006
[2]钱秋乐,赵文耕,牛军钰.软件工程.第一版.清华大学出版社.2007
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课程设计 报告