课程设计报刊订阅管理系统方案.docx
- 文档编号:10472175
- 上传时间:2023-02-13
- 格式:DOCX
- 页数:34
- 大小:338.52KB
课程设计报刊订阅管理系统方案.docx
《课程设计报刊订阅管理系统方案.docx》由会员分享,可在线阅读,更多相关《课程设计报刊订阅管理系统方案.docx(34页珍藏版)》请在冰豆网上搜索。
课程设计报刊订阅管理系统方案
软件工程课程设计报告
1.开发环境和相关技术介绍
1.1开发环境3
1.2相关技术介绍3
2.需求分析
2.1系统需求和功能3
2.2数据字典4
2.2.1数据结构4
2.2.2数据项4
2.2.3数据流5
2.3安全性要求5
2.4一致性要求5
2.5完整性要求5
3面向对象分析
3.1面向对象分析5
3.2系统的结构图8
4.数据库实施
4.1数据库创建8
4.1.1各数据表说明8
4.1.2数据库创建9
4.2数据库备份和恢复方案10
4.2.1应用辅助工具进行备份和恢复10
4.2.2分离数据库法10
4.3用户界面设计和应用程序编码10
4.3.1用户界面设计10
4.3.2类文件功能描述11
4.3.3主要代码分析11
5.系统测试方案和测试报告
5.1测试方案16
5.2测试过程16
5.2.1登陆测试16
5.2.2目录管理功能测试17
5.2.3订户管理功能测试20
5.2.4订单管理功能测试21
5.2.5统计查询测试23
6.完成情况和总结
6.1完成情况24
6.2总结24
7.参考文献
1.开发环境和相关技术介绍
1.1开发环境
系统结构:
C/S结构
数据库系统:
MicrosoftSQLServer2000sp3
宿主语言:
JAVA
数据库连接方式:
JDBC连接方式
开发工具:
Eclipse3.2
1.2相关技术介绍
MicrosoftSQLServer2000数据库管理系统是微软公司研制开发的关系型数据库管理系统。
该系统支持并扩展了SQL语言标准,可以运用标准SQL语句对数据进行操作,也可以使用功能强大的GUI工具进行灵活的数据管理。
同时,系统还提供功能完善的API,可以在应用程序中调用这些API来实现与数据库系统的连接以及相关数据的操作。
sp3是该系统的一个版本号,只有sp3以上的SQL2000系统才能够支持纯JDBC连接方式。
Eclipse:
功能强大的应用程序开发工具,主要支持基于Java语言的各种开发项目。
灵活的Plun-in功能,可以根据具体需要安装各种插件。
JDBC连接方式:
Java与数据库系统的一种连接方式,Java程序使用JDBCAPI与数据库进行通信,并用它操作数据库中的数据。
JDBCAPI使Java程序与具体数据库系统独立开来,保证了Java程序高度的可移植性。
2.需求分析
2.1系统需求和功能
设计一个报刊订阅应用系统,使系统满足以下功能和需求:
1)
a一个订户可订多种报刊;一种报刊可被多个用户订阅;订单只能订阅现有报刊目录容;
b投递时,必须根据订单的情况进行投递,不得超出订单的订阅品种、数量;
2)、系统功能包括:
a订户管理:
订户添加、修改、删除;
b 目录管理:
目录添加、修改、删除;
c订单管理:
完成订户订阅数据的管理(包括添加、修改、删除);
d 订单查询:
按订户或者订单号查询订单详细情况;
e统计查询:
按报刊目录统计各类报刊的订阅数量及金额;
f表单生成:
根据统计查询结果导出统计信息到文件(.xl
2.2数据字典
2.2.1数据结构
管理员用户=管理员+管理员密码
订户=订户编号+订户名+联系+联系地址
目录=目录编号+目录名+单价+批注信息
订单=订单号+订户编号+下订日期
订单细节=订单号+目录编号+订阅数量+订阅期数+单价+总价
(注:
为保证订单确定后价格不随目录单价变动,订单细节中应该有独立的单价来记录下订时目录的单价)
2.2.2数据项
表2.1数据项表
编号
标识符
类型
长度
所属表名
同义名
1
UName
Varchar
20
Login
管理员
2
UPassword
Varchar
20
Login
管理员密码
3
Cid
Varchar
10
Customer,Order
订户编号
4
Cname
Varchar
20
Customer
订户名
5
Phone
Varchar
15
Customer
联系
6
Address
Varchar
50
Customer
联系地址
7
Did
Varchar
10
Diretory,OrderDetail
目录编号
8
Dname
Varchar
20
Diretory
目录名
9
UnitPrice
Float
8
Diretory
OrderDetail
目录单价,
下订时目录单价
10
Ifo
Varchar
50
Diretory
批注信息
11
Ono
Varchar
10
Order,OrderDetail
订单编号
12
Odate
Datetime
8
Order
下订日期
13
Quantity,
Int
4
OrderDetail
订阅数量
14
QiShu,
Int
4
OrderDetail
订阅期数
15
Total
Float
8
OrderDetail
订单项总价
2.2.3数据流
表2.2数据流表
编号
名称
来源
去向
组成
1
身份信息
系统管理员
应用系统
管理员+密码
2
授权信息
应用系统
系统管理员
3
错误身份信息
应用系统
系统管理员
4
查询请求
系统管理员
应用系统
待查询对象识别符(如Cid,Ono)
5
查询结果
应用系统
系统管理员
被查询对象具体信息
6
管理请求
系统管理员
应用系统
识别符(Cid,Ono等)+管理类型
7
管理结果信息
应用系统
系统管理员
被管理对象处理结果
8
非法请求
应用系统
系统管理员
非法请求提示信息
2.3安全性要求
访问数据库时需要输入登陆和密码。
在数据库设有管理员表,登陆系统时会要求输入管理员和密码。
登陆模块根据输入和密码查管理员表,查到匹配记录则允许其登陆系统。
管理员和密码可以在系统中添加和修改。
2.4一致性要求
在管理系统相关的表之间,有较强的关联性。
为了实现一致性的需求,各个表之间均建立起了相应的一致性约束。
2.5完整性要求
根据报刊订阅管理系统的要求,为保持数据的完整性,采用了数据库的事务机制,防止出现操作故障引起的数据不一致。
3面向对象分析
3.1面向对象分析
设计报刊订阅系统,主要的目的是使得用户在订阅是能跟回家的方便快捷同时也使得报刊提供商能更加有效的管理企业的销售状况。
同时面向对象分析使得人员关注理解系统需要建立的容,从而产生一个准确的完整的一致的和可验证的系统模型。
●管理员表(Administrator):
用于存放管理员的数据记录,包括数据项:
管理员名、密码。
●部门表(Department):
用来存放部门的相关记录,包括数据项:
部门号,部门名。
●用户表(Consumer):
用于存放注册用户的记录,包括数据项:
用户账号、密码、真实、号、联系,联系地址,部门号(和部门表有关)等。
●报刊信息表(magazine):
用于存放报刊记录,包括数据项:
报刊代号、报刊名称、出版报社、出版周期、季度报价、容介绍、分类编号(和报刊类别表有关)等。
订单表(subscribe):
用于存放用户下达的订阅报刊的基本信息,包括数据项:
订单编号用户编号(用户表的主码)、报刊代号(报刊信息表的主码)、订阅份数、订阅月数等。
用例图:
由上面的分析需能够确定系统用例图:
类图:
在根据已定义的对象类及其联系,以及对象类的多重性、角色、导航等性质,可以画出对象类图,使用对象图的目的是分析系统的瞬间状态,以便进一步了解系统的结构和行为。
分析对象模型:
也同时可以确定所有实体之间的E-R图:
图3.1报刊订阅管理系统E-R图
3.2系统结构图
图4.1系统结构图
4.数据库实施
4.1数据库创建
4.1.1各数据表说明
表4.1数据表描述表
编号
数据表名称
类型
容
01
Login
辅助表
记录管理员,密码
02
Customer
主表
记录订户信息
03
Diretory
主表
记录目录信息
04
Order
主表
记录订单基本信息
05
OrderDetail
主表
记录详细订单项信息
4.1.2数据库创建
在MicrosoftSQLServer2000的企业管理器中完成数据库和数据表的创建
CREATETABLE[dbo].[Customer](
[Cid][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[Cname][varchar](20)COLLATEChinese_PRC_CI_ASNULL,
[Phone][varchar](15)COLLATEChinese_PRC_CI_ASNULL,
[Address][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL
)ON[PRIMARY]
GO
CREATETABLE[dbo].[Login](
[UName][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL,
[UPassword][varchar](20)COLLATEChinese_PRC_CI_ASNOTNULL
)ON[PRIMARY]
GO
CREATETABLE[dbo].[Diretory](
[Did][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[Dname][varchar](20)COLLATEChinese_PRC_CI_ASNULL,
[UnitPrice][float]NOTNULL,
[Ifo][varchar](50)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
CREATETABLE[dbo].[Order](
[Ono][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[Cid][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[Odate][datetime]NULL
)ON[PRIMARY]
GO
CREATETABLE[dbo].[OrderDetail](
[Ono][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[Did][varchar](10)COLLATEChinese_PRC_CI_ASNOTNULL,
[Quantity][int]NOTNULL,
[QiShu][int]NOTNULL,
[UnitPrice][float]NOTNULL,
[Total][float]NULL
)ON[PRIMARY]
GO
4.2数据库备份和恢复方案
4.2.1应用辅助工具进行备份和恢复
应用数据库辅助工具(如sqlbackuptools…)进行备份,选择所需要备份的数据库和目标地址即可进行数据备份,恢复数据库只需要指定备份文件和需要恢复的数据库即可进行数据恢复。
4.2.2分离数据库法
在企业管理器中右击需要备份的数据库,选择“所有任务”,“分离数据库”,执行分析操作,拷贝数据库MDF文件和LDF文件。
恢复方案:
在企业管理器的控制台树中选择“数据库”节点,右击,“所有任务”,“附加数据库”,找到待恢复数据库的MDF文件,确定。
4.3用户界面设计和应用程序编码
4.3.1用户界面设计
本系统的用户界面用JavaSwing编写,主要由1个主界面Newspaper.java和10个辅助对话框组成。
主界面集合系统主要基本功能按键,辅助对话框负责采集用户输入信息和做基本的信息处理。
用户界面
4.3.2类文件功能描述
NO.
类名
类型
功能
01
Newspaper
Frame
主窗口类,提供系统主要功能的调用接口
02
Utilities
辅助类
封装系统主要数据和方法,为其它类提供信息处理功能
03
AdminCreateDlg
Dialog
管理员创建对话框,提供管理员创建功能
04
AdminModifyDlg
Dialog
管理员信息修改对话框,修改管理员密码,删除管理员
05
UserCreateDlg
Dialog
订户新建对话框,采集订户信息,创建新订户
06
UserModifyDlg
Dialog
订户修改对话框,提供订户修改、删除操作
07
DirCreateDlg
Dialog
目录新建对话框,采集目录信息,创建新目录
08
DirModifyDlg
Dialog
目录修改对话框,提供目录修改、删除操作
09
BookingDlg
Dialog
添加订单对话框,提供新订单添加功能
10
OrderSearchDlg
Dialog
订单查找对话框,提供按Ono或Cid查找订单操作
11
OrderDetailDlg
Dialog
订单细节对话框,显示订单细节,提供订单和订单项删除操作,并能通过调用DetailModifyDlg对话框完成订单项修改。
12
DetailModify
Dialog
订单项修改对话框,提供订单项修改操作
13
LoginDlg
Dialog
管理员登陆对话框,提供登陆界面,检查登陆信息
表4类文件描述表
4.3.3主要代码分析
//-----------------------------------------------------------------------------
//所属类:
Utilities
//功能:
取得应用程序与数据库系统的连接
publicstaticvoidgetConnection()throwsException{
Class.forName(".microsoft.jdbc.sqlserver.SQLServerDriver")
.newInstance();//加载驱动程序
Stringurl="jdbc:
microsoft:
sqlserver:
//localhost:
1433;DatabaseName=Newspaper";
Stringuser="sa";
Stringpassword="";
conn=DriverManager.getConnection(url,user,password);//取得连接
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);//创建语句
conn2=DriverManager.getConnection(url,user,password);
stmt2=conn2.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
}
//-----------------------------------------------------------------------------
//所属类:
Utilities
//功能:
完成查询结果的表格显示
publicstaticvoiddisplayResultSet(JTabletable,ResultSetrs)
throwsSQLException{
rs.beforeFirst();//指针移到结果集第一条记录前面
booleanmoreRecords=rs.next();
if(!
moreRecords){//如果没有记录,则提示一条消息
JOptionPane.showMessageDialog(table,"无相关记录","Checkyourinput!
",
JOptionPane.ERROR_MESSAGE);
return;
}
VectorcolumnHeads=newVector();//用于存储表格字段
Vectorrows=newVector();//用于存储记录行
try{//获取字段的名称
ResultSetMetaDatarsmd=rs.getMetaData();
for(inti=1;i<=rsmd.getColumnCount();++i)
columnHeads.addElement(rsmd.getColumnName(i));
do{//获取记录集
rows.addElement(getNextRow(rs,rsmd));
}while(rs.next());
//建立相应的TableModel,并将TableModel应用到table中显示出来
DefaultTableModelmodel=newDefaultTableModel(rows,columnHeads);
table.setModel(model);
return;
}catch(SQLExceptionsqlex){
sqlex.printStackTrace();
}
}
//-----------------------------------------------------------------------------//所属类:
Utilities
//功能:
被displayResultSet(JTabletable,ResultSetrs)调用,返回一个记录行
privatestaticVectorgetNextRow(ResultSetrs,ResultSetMetaDatarsmd)
throwsSQLException{
Vector
for(inti=1;i<=rsmd.getColumnCount();++i)
currentRow.addElement(rs.getString(i));
returncurrentRow;//返回一条记录
}
//-----------------------------------------------------------------------------
//所属类:
Utilities
//功能:
创建空白EXCEL文件,并将统计查询结果导出到该EXCEL文件
//说明:
使用到org.apache的POI包,表示感
publicstaticbooleanoutPut(ResultSetrs,Filefile){
if(rs==null)
returnfalse;
try{
HSSFWorkbookwb=newHSSFWorkbook();
HSSFSheetsheet=wb.createSheet("firstsheet");
sheet.setDefaultColumnWidth((short)20);
ResultSetMetaDatametadata=rs.getMetaData();
intcolumnCount=metadata.getColumnCount();//获取属性列数
HSSFRowrow=sheet.createRow((short)0);
for(inti=1;i<=columnCount;i++){//填写表格列名
row.createCell((short)(i-1)).setCellValue(
metadata.getColumnName(i));
}
//按行填写记录
rs.beforeFirst();
shortcounter=1;
while(rs.next()){
row=sheet.createRow(counter++);
for(inti=1;i<=columnCount;i++){
row.createCell((short)(i-1)).setCellValue(
String.valueOf(rs.getObject(i)));
}
}
FileOutputStreamfileOut=newFileOutputStream(file);
wb.write(fileOut);//结果输出到文件
fileOut.close();//关闭输出流
}catch(Exceptionexc){
exc.printStackTrace();
}
returntrue;
}
}
//-----------------------------------------------------------------------------
//所属类:
Newspaper
//功能:
统计查询
finalJMenuItemmenuItem_9=newJMenuItem();
menuItem_9.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringsql="SELECTDiretory.DidAS刊物编号,DnameAS刊物名称,"
+"SUM(Quantity*QiShu)AS总订阅数,SUM(Total)AS总金额"
+"FROMDiretoryLEFTJOINOrderDetailON(OrderDetail.Did=Diretory.Did)"
+"GROUPBYDiretory.Did,Diretory.Dname"
+"ORDERBYSUM(Tot
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报刊 订阅 管理 系统 方案