收藏 分销(赏)

数据库系统原理-书店信息管理系统.doc

上传人:可**** 文档编号:1759072 上传时间:2024-05-08 格式:DOC 页数:17 大小:165KB 下载积分:10 金币
下载 相关 举报
数据库系统原理-书店信息管理系统.doc_第1页
第1页 / 共17页
数据库系统原理-书店信息管理系统.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
精品文档就在这里 -------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有-------------- -------------------------------------------------------------------------------------------------------------------------------------------- Access课程设计 题 目 书店信息管理系统 一. 题目 二. 功能 三. 设计 四. 数据库的实现 五. 数据模式 六. 系统实施 七. 参考文献 八. 设计感想 某书店信息管理系统 一. 题目:某书店信息管理系统 二. 功能: 1.通过用户登陆及身份验证确定用户对数据的操作权限。以系统管理员身份登陆时享有对所有数据查阅及进行任意操作的权限,以普通用户登陆时只享有查阅数据的权限,且数据内容的开放程度由管理员设定。 2.对管理员,会员,普通职员及图书资料档案的管理。 3.对书店经营期间的所有支出,收入已及盈亏情况进行记录。 4.对书店经营期间各个方面的监控及实时处理。包括供书商提供图书的价格是否合理,管理员及职员工作态度是否认真和是否出差错,顾客对书店经营的意见,哪些书销售情况好,哪些差,购买图书的数量种类,书店设施的磨损以及是否需要维修或者更换添加。 三.设计: 1.用户要求 1. 会员档案 数据包括:会员证号、姓名、性别、出生日期、身份证号、单位、通讯地址、邮政编码、联系电话、办证日期、会员期限、照片、职业等。 2. 图书档案 数据包括:书号、书名、作者、出版单位、出版日期、版次、单价、内容提要、分类号、索书号、藏书册数、每册图书馆藏注册号、所在书库、入库日期等。 3. 检索系统 能根据书号、书名、作者、出版单位、内容提要关键字、分类号、索书号、每册图书馆藏注册号等进行查询。 4. 进书系统 输入书号后,能根据借书号判断该书进货时间,书库中是否还有该书可卖,是否需要再进货。 5、卖书系统 对一定时间段卖出去的书做出各种统计。 2.总体功能框图: 某书店数据库系统 用户登陆及验证身份 档案管理 财务管理 经营管理 管理员档案 普通职员档案 会员顾客档案 图书资料档案 支出情况 盈亏情况 收入情况 管理员工作情况 职员工作情况 图书收售情况 书店设施磨损 供书商情况 3. 数据流: 3.1档案管理子系统数据流图 顾客 办理会员 职员 人事变动 管理员 图书资料 库存变动 档案 3.2财务管理子系统数据流图 收入情况 支出情况 处理 盈亏及债务情况 3.3经营管理子系统数据流图 说明:1.收银员享有修改会员数据,销售记录数据,创建会员数据的操作权限。 2.供货商包括图书供应商,家具供应商等书店可能涉及到的物品的供应 商,不限与某一种和某一个供货商。 3.采购,财务,主管部门由书店规模决定,可能仅仅是一个人,也可能是有组织有一定成员的独立部门。 4. 业务范围: 1. 采购和出售各种图书,从中赢利,根据顾客需要调整购买图书的种类和数量。 2. 办理会员顾客,会员购书实行折扣,根据会员累计消费情况举行会员优惠活动,吸引顾客办理会员和会员消费。 四. 数据库的实现 1. 1> 建立数据库ST-COURSE 2> 各表的建立,如2.3物理结构的设计。 3> 录入数据 2. 数据表的创建和设计 使用 Access 数据库管理系统建立应用系统,首先需要创建一个数据库。然后在该数据库中添加 所需的表、查询、窗体、报表、宏等对象。 3. 数据库的创建 首先,使用向导设计“书店管理系统”数据库,然后才进行表的设计。具体步骤如下: (1)启动Microsoft Access 2003 ,出现“Microsoft Access ”数据库设计界面。 (2 )单击工具栏上的新建按钮,在Access 2003 窗体的右边出现“新建文件”任务窗格。 (3 )在该任务窗格中选择项,系统弹出“模板”对话,单击“常用”选项卡,然后选择其中的模板。 (4 )单击“确定”按钮,这时出现要选择数据库的保存路径的对话框。在“文件名”右边的文本框里输入文件名为“书店管理系统”。 (5 )单击“创建”按钮,就进入数据库窗口。 至此,就创建了“书店管理系统”数据库。 4.E-R图 管理 管理员 职员 属于 部门 服务 维护 设施 会员 书籍 购买 折扣规则 供应 供书商 供应量 n 1 n 1 m n m n 1 n m n 五. 数据模式 现将其中几个表的关系数据模式给出: 1.书籍信息(书籍编号,书名,作者,进货价格,进货数量,供书商编号,剩余数量) 2.供书商(供书商编号,名称,地址,联系电话) 3.会员(会员编号,姓名,性别,联系方式,会员有效期,累计消费,享有优惠) 4.数据库创建表 六.系统实施 基于Mocrosoft Visual Studio 的MFC平台,将数据库与MFC连接并进行相应的处理的代码如下: (1)头文件的基本设置 #include <afxdb.h> #include <odbcinst.h> #include <stdlib.h> #include <stdio.h> #include <sql.h> #include <sqlext.h> #include <Sqltypes.h> #define COURSE_NO1 5 //注意定义的大小应为数据库中定义的长度加一,CString的结束字符也算在内 #define LEN 10/////////////////变量的长度,一般属性列的长度定义都为 #define CODE_LEN 6///////////////密码的长度 BOOL FindBookDlg::OnInitDialog()///初始化列表框的函数 { CDialog::OnInitDialog(); ///初始化列表框 m_list.SetTextColor(RGB (0, 0, 0)); m_list.SetBkColor(RGB(255,255,255)); m_list.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT); m_list.InsertColumn(0,_T("书号"),LVCFMT_CENTER,100); m_list.InsertColumn(1,_T("书名"),LVCFMT_CENTER,100); m_list.InsertColumn(2,_T("作者"),LVCFMT_CENTER,100); m_list.InsertColumn(3,_T("价格"),LVCFMT_CENTER,100); m_list.InsertColumn(4,_T("所属类型"),LVCFMT_CENTER,100); return TRUE; } BEGIN_MESSAGE_MAP(FindBookDlg, CDialog) ON_BN_CLICKED(IDC_BUTTON1, &FindBookDlg::OnBnClickedButton1) END_MESSAGE_MAP() // FindBookDlg message handlers (2)查询信息按钮的消息响应函数(以查询书籍信息为例)。 void FindBookDlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here UpdateData(true); //初始化环境 ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv); ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void *)SQL_OV_ODBC3,0); //建立连接 ret=SQLAllocHandle(SQL_HANDLE_DBC,serverhenv,&serverhdbc); ret=SQLConnect(serverhdbc,(SQLCHAR*)"BookInfo",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"",SQL_NTS); if(!SQL_SUCCEEDED(ret)) return ; //初始化语句句柄 ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt); //执行SQL语句 CHAR SQL[256]; if(m_BookNo!="" && m_BookName!="") { ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"SELECT * FROM BookInfo WHERE BookNo='m_BookNo' AND BookName='m_BookName'",SQL_NTS); if(!(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO)) { AfxMessageBox(_T("你输入的书号和书名不匹配,请重新出入!书号和书名可以任输一个!")); FindBookDlg dlg; dlg.DoModal(); } } else if(m_BookNo!="") { sprintf(SQL,"SELECT * FROM BookInfo WHERE BookNo='%s'",m_BookNo); ret=SQLExecDirect(serverhstmt,(SQLCHAR*)SQL,SQL_NTS); } else if(m_BookName!="") { sprintf(SQL,"SELECT * FROM BookInfo WHERE BookNo='%s'",m_BookName); ret=SQLExecDirect(serverhstmt,(SQLCHAR*)SQL,SQL_NTS); } else if(m_BookNo=="" && m_BookName=="") ret=SQLExecDirect(serverhstmt,(SQLCHAR*)"SELECT * FROM BookInfo",SQL_NTS); m_list.DeleteAllItems(); if(ret==SQL_SUCCESS || ret==SQL_SUCCESS_WITH_INFO) { ret=SQLBindCol(serverhstmt,1,SQL_C_CHAR,BookNo,LEN,&cbBookNo); ret=SQLBindCol(serverhstmt,2,SQL_C_CHAR,BookName,LEN,&cbBookName); ret=SQLBindCol(serverhstmt,3,SQL_C_CHAR,BookAuthor,LEN,&cbBookAuthor); ret=SQLBindCol(serverhstmt,4,SQL_C_FLOAT,&BookPrice,0/*sizeof(FLOAT)*/,&cbBookPrice); ret=SQLBindCol(serverhstmt,5,SQL_C_CHAR,BookType,LEN,&cbBookType); } while( (ret = SQLFetch(serverhstmt)) != SQL_NO_DATA_FOUND) { CString temp; temp.Format("%f",BookPrice);////////////将double 型转换为字符型 if(ret==SQL_ERROR) { AfxMessageBox(_T("ERROR!")); return; } int row=m_list.InsertItem(0,(LPCTSTR)BookNo); m_list.SetItemText(row,1,(LPCTSTR)BookName); m_list.SetItemText(row,2,(LPCTSTR)BookAuthor); m_list.SetItemText(row,3,(LPCTSTR)temp); m_list.SetItemText(row,4,(LPCTSTR)BookType); } SQLFreeHandle(SQL_HANDLE_STMT,serverhstmt); UpdateData(false); } (3)消费模块(以书店进货为例)这里只给出查询信息按钮的消息响应函数 void NewBookDlg::OnBnClickedOk() { // TODO: Add your control notification handler code here UpdateData(true); //初始化环境 ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&serverhenv); ret=SQLSetEnvAttr(serverhenv,SQL_ATTR_ODBC_VERSION,(void *)SQL_OV_ODBC3,0); //建立连接 ret=SQLAllocHandle(SQL_HANDLE_DBC,serverhenv,&serverhdbc); ret=SQLConnect(serverhdbc,(SQLCHAR*)"BookInfo",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"",SQL_NTS); if(!SQL_SUCCEEDED(ret)) return ; //初始化语句句柄 ret=SQLAllocHandle(SQL_HANDLE_STMT,serverhdbc,&serverhstmt); //执行SQL语句 ret=SQLPrepare(serverhstmt,(SQLCHAR*)"INSERT INTO BookInfo(BookNo,BookName,BookAuthor,BookPrice,BookType) VALUES(?,?,?,?,?)",SQL_NTS); if(ret==SQL_SUCCESS||ret==SQL_SUCCESS_WITH_INFO) { lstrcpy((char *)BookNo,m_BookNo); lstrcpy((char *)BookName,m_BookName); lstrcpy((char *)BookAuthor,m_BookAuthor); BookPrice=m_BookPrice; lstrcpy((char *)BookType,m_BookType); ret=SQLBindParameter(serverhstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,LEN,0,BookNo,0,&cbBookNo); ret=SQLBindParameter(serverhstmt,2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,LEN,0,BookName,0,&cbBookName); ret=SQLBindParameter(serverhstmt,3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,LEN,0,BookAuthor,0,&cbBookAuthor); ret=SQLBindParameter(serverhstmt,4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,sizeof(FLOAT),0,&BookPrice,0,&cbBookPrice); ret=SQLBindParameter(serverhstmt,5,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,LEN,0,BookType,0,&cbBookType); } //处理结果集并执行预编译后的语句 ret=SQLExecute(serverhstmt); OnOK(); } 七.参考文献 1 数据库系统原理 李建中 主编 电子工业出版社 2 数据库系统概论 杨开英 主编 武汉理工大学出版社 3 数据库原理与应用 张冬青 主编 中国轻工业出版社 4 数据库应用 张晓华 主编 重庆大学出版社 八.设计感想 刚开始设计这个数据信息管理系统时候对他的定位是一个小型的书店管理系统,其规模也就是个人开设的书店,软件开发完后使用者是店主,同时店主也是收银员,管理职员和办理会员。店主即系统管理员。但后来思考的深入,考虑细节的过多,不知不觉中偏离了这个定位,后面将会说明 设计功能机构框图时参考了同学的模式,将功能模块化,感觉这样功能结构直观,清晰,且实现的时候比较有层次会宜于实现,但到后来发现,其实模块与模块完全独立实现是不可能的,很多功能的实现是重叠的,例如管理档案和经营管理,经营管理中要根据雇员工作情况进行人事变动,以及图书的购进等,都需要对档案进行修改,而很多经营方案也需要根据档案提出,以及财务管理肯定与经营管理之间相互作用,总之所有功能是一个相互联系的整体,不可能是象框图那样独立的单元,但最后仍旧以模块化的框图表示了其功能,因为如果考虑到联系进行框图绘制出来的结果很复杂,在实现的时候使人思维混乱。反而不如简单清晰的表现。 关于数据流,因为考虑到系统不大,本想画一个整体的包括所有数据流向的图,但在绘制过程中从经营者的现实角度出发,发现许多需要处理的信息,如顾客意见,职员工作表现,会员的种种权利等等,对所有信息的处理都依靠一个店主在表现时候很不明了,于是不自觉的多出了采购,主管,财务等部门,使真个设计前后有点不协调,但其实这三个部门可以是一个人,即店主;尽管我已经尽最大努力使所有信息的流向和处理过程画进了第三个数据流图中,但很多信息,如职员工作表现反映给主管,主管做决定调整人事及工资,反映给财务和人事部门,财务发放工资,人事招聘解雇员工等等,由于能力有限,无法组织一个条理清晰,线条不交叉的图形,所以不得不删除了。 对业务范围个人理解是经营范围,虽然感觉不大准确,但若做其他理解则其和功能的描述有重复,所以就按自己想法写了。 设计过程中关于书店的业务流程等都是自己根据想象 凭空捏造的,现实情况将会比想象复杂的多,仅仅依靠当前的设计是不可能完成现实要求的,有时间将会对书店进行实际调查,进一步完善这份设计。 ---------------------------------------------------------精品 文档---------------------------------------------------------------------
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服