- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库课程设计
实习报告
院系:XXXXXXXXXXXXXXX
姓名:XXX
学号:XXXXXXXX
二零零七年一月十四日
数据库课程设计
实验目的:
加深对数据库系统、软件工程、程序设计语言的理论知识的理解和应用水平;
在理论和实验教学基础上进一步巩固已学基本理论及应用知识并加以综合提高;
学会将知识应用于实际的方法,提高分析和解决问题的能力,增强动手能力;
为毕业设计和以后工作打下必要基础。
课程设计任务
设计一个订户订阅报刊的应用系统。涉及订单、订户、报刊目录及投递卡信息。
1、系统语义描述如下:
一个订户可订多种报刊;一种报刊可被多个用户订阅;订单只能订阅现有报刊目录内容;
一张投递卡可包含对多个订户的订单的投递信息;
2、系统功能包括:
订户管理:订户增加、修改、删除;
目录管理:目录增加、删除、修改;
订单管理:完成订户订阅数据的管理;
订单查询:按订户查询订单详细情况;
统计查询:按报刊目录统计各类报刊的订阅数量及金额
3、实现内容
创建数据库的结构
创建各基本表的结构
编制系统各功能模块,完成数据的管理(增、删、改)及统计查询。
数据库系统设计
1.设计E-R图
设计相应的关系模型,确定数据库结构
根据基础数据建立名为“报刊”的数据库,并建立三个关系表:订单表CUS_ORDER、用户表CUSTOMER、报刊表NMTABLE,各表结构及数据结构如下:
CUS_ORDER表:
CUSTOMER表:
报刊表NMTABLE:
3. 数据库范式分析
由于此数据库不存在传递依赖和部分依赖,所以该数据库系统属于第三范式。
4.设计应用系统的系统结构图,确定系统功能:
程序由MFC编写,编译平台为Microsoft Visual Studio .NET 2003。
流程图如下:
5.设计关系的主码约束、外码约束和使用CHECK实现完整性控制:
6. 应用程序编写
(1) 连结数据库
try
{
HRESULT hr;
// 创建Connection对象
hr = m_pConnection.CreateInstance(ADODB.Connection);
if( SUCCEEDED( hr ) )
{
// 连接数据库
hr = m_pConnection-Open(provider=SQLOLEDB.1;Data Source=;user ID=sa;Password=123456;Initial Catalog=报刊,,,adModeUnknown);
//MessageBox(0,_T(连结成功),_T(成功),0);
}
else
{
MessageBox( NULL, 创建ADO对象失败, 失败, MB_OK );
return false;
}
}
catch( ... )
{
MessageBox( NULL,连接数据库失败,请确定数据库是否启动且账号是否正确!, _T(连接数据库失败), MB_OK);
return false;
}
程序采用COM接口连结数据库,所以先初始化OLE组件,再创建Connection实例,如果创建成功,就尝试连结,连结时用try catch捕捉数据库连结异常。如果发生异常,就提示用户数据连结出错。
订阅信息统计模块:该模块将显示所有订阅信息,包括每个用户订了哪些报刊,报刊的份数,起至刊号及所订报刊的单价等所有数据信息,如图:
以下给出加载这些信息的函数。
_RecordsetPtr pRecord;
try
{
// 生成Recordset实例
pRecord.CreateInstance(ADODB.Recordset);
// 打开记录集,静态光标(静态记录集),乐观锁定方式
// 查询所有语句
sql=select o,,customer.addr,cus_order.orderdate,NMTABLE.title,NMTABLE.price,NMTABLE.period,cus_order.start,cus_order.term,cus_order.qty from customer,cus_order,[NMTABLE] where o=cus_o and NMTABLE.nmno=cus_order.nmno;
pRecord-Open(_bstr_t(sql),_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,a
文档评论(0)