人人范文网 范文大全

网上书店管理系统_课程设计报告[优秀]

发布时间:2020-03-03 01:53:27 来源:范文大全 收藏本文 下载本文 手机版

各种信息资源的有效管理已经成为人们获取信息的关键所在,这也将是社会资源信息化建设的重点。书是人类不可缺少的精神食粮,也是现代社会步入文明的见证。网上书店管理系统的目的是应用信息化的技术对图书进行的管理,减少大量的数据冗余和传统管理的繁琐工作量,实现管理的系统化、科学化。

系统的主要子模块有图书管理,顾客管理等,可实现日常图书进货、发货业务,最终达到提高工作效率的目的。Visual C++6.0 是一种功能强大行之有效的可视化编程工具,因此此软件是在Visual C++6.0环境下编写的。对于我们,随着学习的深入,已经基本全部掌握了Visual C++6.0环境下的程序开发。为了将我们的编程能力提升到一个更高的水平,深化面向对象的编程思维和解决问题的能力,值此课程设计周期间,进行基于Visual C++6.0环境的软件开发,利用SQL Server2005作为后台的数据库,以网上书店管理系统作为开始,对Visual C++6.0环境和面向对象程序设计进行回忆和熟悉。

本文档详细叙述了基于Visual C++6.0环境下的网上书店管理系统的设计过程以及程序源代码。

本文档从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详尽的介绍了软件开发过程。

此次网上书店管理系统的开发目的是使我们用面向对象的方式来思考和解决问题的能力,并且可以掌握数据库的连接、MFC的设计、类的设计和使用以及C++语法。

本文档的安排如下:

第一章 主要介绍了对面向对象C++语言以及VC、SQL Server2005编程环境。 第二章 主要的介绍说明了本软件的编程思想和总体设计。 第三章 主要介绍关于软件各个功能的详细设计。

第四章 主要对软件进行调试,运行程序并截图,显示运行界面。 第五章 对课程设计进行总结。

程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,本软件和文档中不免会出现一些不期待的错误,望文档读者能够理解和体谅,并欢迎提醒和纠正,在

此表示感谢以及敬意。

1 课程设计概述

1.1 Visual C++6.0概述

Visual C++是微软公司的重要产品之一, 是一种功能强大行之有效的可视化编程工具。(1)自动化和宏功能。

(2)可以灵活地定制工具栏和菜单。

(3)可以直接运行和调试程序,还可以使用宏语言来自动操作调试器。 (4)支持Internet连接。

(5)一个新的便捷的项目系统可以允许一个工作区内包含多个不同的项目类型。 (6)在工作区内可以包含多个并列的工程文件。

(7)可以在对话框中使用WizardBar将程序同可视化元素联系起来。

(8)Find in File命令支持两个独立的输出窗格,可以保存上一次搜索的结果。 这些新特性可以更好地利用Visual C++开发工具进行Windows应用程序开发。 它提供了MFC类库,使用户可以方便的开发自己想实现的功能。Visual C++6.0的主要特点:

1.2 Visual C++6.0运行环境

图1.1 Visual C++6.0运行环境

1.3 关于数据库

数据库的创建是在SQL Server Management Studio Expre里面用可视化的操作完成。下面用类似的方法建了四个表,分别起名为:book、customer、manager、orders,建表的同时建立约束条件。然后分别在表中输入列名等数据,分析好数据的安排后注意表之间的联系,属性相对应。

图1.2 数据库建表

2 软件总体设计

2.1 软件总体设计思想

目前社会上信息管理系统发展飞速,越来越多的企事业单位都引入了信息管理软件来管理自己日益增长的各种信息。各种网店也相继采用了不同的管理系统来管理商品信息,取得了很大的成效,网上书店管理系统也在功能上不但完善和加强,为了使书店管理更加规范化,程序化,科学化,我们研发了这次的网上书店管理系统。

本系统的功能是为管理者提供方便的管理、为顾客提供快捷的购买,管理者可以通过登录管理界面实现对图书的添加、修改、删除操作以及发货和查看顾客信息,顾客可以进入图书查询界面通过图书类别、图书名称、图书编号、折扣额度等四种方式查询图书,查到满意的图书后可点击购买。

2.2 系统层次图

图2.1 系统层次图

2.3 各表数据

1)图书信息表book:记录书籍的编号、类别、名称、价格、简介、折扣、库存数量等。

图2.2 book表

2)顾客信息表customer:记录顾客的编号、密码、姓名、性别、年龄、住址、联系电话等。

图2.3 customer表

3)管理员信息表manager:记录管理员的登录名和密码。

图2.4 manager表

4)订单表orders:记录订单号、图书编号、顾客编号、顾客姓名、顾客地址、联系电话、付款方式、发货方式等。

图2.5 orders表

2.4 基本E-R图

图2.6 基本E-R图

3 软件详细设计

3.1 数据库连接

本软件使用ODBC连接数据库,基本思想为为数据库中每个表建立一个RecordSet类,当要对表中数据进行操作时,创建相关记录集,即可引用类中的响应函数进行添加、修改、删除、查询等操作。

3.2 主界面

主界面中显示顾客登录、管理员登录和顾客注册三个按钮,顾客输入登录名和密码后点击顾客登录后进入顾客查询界面,管理员输入登录名和密码后点击管理员登录后进入管理界面,若是新顾客,直接点击注册即可进入注册界面,各对话框之间的连接通过DoModal()函数实现,若需要进行身份验证,未输入用户名或密码则将弹出提示对话框“请输入用户名和密码!”,输入后系统将进入相应的数据库表查询是否有此信息,若无对应信息则弹出对话框提示输入信息错误,信息正确方可进入下一界面,如顾客登录时,系统使用以下代码完成身份验证功能,同时记录下用户信息以便加入订单: //生成查询用户账号和密码的SQL语句

mSqlStr= \"select * from customer where cno=\'\"; mSqlStr=mSqlStr + m_no; mSqlStr=mSqlStr + \"\'and cpa=\'\"; mSqlStr=mSqlStr + m_paword; mSqlStr=mSqlStr + \"\'\"; if(!customer.Open(AFX_DB_USE_DEFAULT_TYPE,mSqlStr)) {

AfxMeageBox(\"customer表打开失败!\");

return; } if(!customer.IsBOF()) {

//Open all function for user

m_customer_no=customer.m_cno;

m_customer_name=customer.m_cname;

m_customer_phone=customer.m_cphone;

m_customer_add=customer.m_cadd; AfxMeageBox(\"密码正确,欢迎登录!\"); EndDialog(IDCANCEL); Cgkcx a; a.DoModal(); } else {

} AfxMeageBox(\"密码输入错误!!\"); return; 3.3 添加功能

本软件的添加功能使用AddNew()函数,应用在顾客注册、顾客购书、管理员添加新书等模块。

1)顾客注册:新顾客在主界面中点击注册后即可进入注册界面填写自己的各项信息,完成后点击确定,信息添加到customer表中,并利用触发器自动生成顾客编号作为登录名。相关代码如下:

setcustomer c; c.Open(); c.AddNew(); UpdateData(TRUE); if(m_name.IsEmpty()||m_phone.IsEmpty()||m_add.IsEmpty()||m_paword.IsEmpty()||m_mima.IsEmpty()) {

MeageBox(\"请输入全部信息!\");

return; } if(m_paword!=m_mima) {

MeageBox(\"密码错误,请确认!\");

return; } c.m_cpa=m_paword; c.m_cname=m_name; if(m_sex==0)

c.m_csex=\"男\"; else c.m_csex=\"女\"; c.m_cage=m_age; c.m_cphone=m_phone;

c.m_cadd=m_add; c.m_cpa=m_paword; if(m_sex==0)

c.m_csex=\"男\"; else c.m_csex=\"女\"; c.Update(); c.Requery(); m_customer_zhanghao=c.m_cno; UpdateData(FALSE); m_customer_xingming=m_name; m_customer_mima=m_paword;

EndDialog(IDCANCEL); Cxxqr a; a.DoModal(); 2)顾客购书:顾客在查询界面中选择想要购买的图书后点击购买可进入购买界面,选择付款方式、送货方式并确认后,相关信息添加到orders表中,并利用触发器自动生成订单号。相关代码如下:

Csetorders order; setbook book; order.Open(); order.AddNew(); UpdateData(TRUE); if(m_zhifu==0)

order.m_opay=\"网银支付\"; else order.m_opay=\"货到付款\"; if(m_songhuo==0)

order.m_oconvey=\"快递\"; else order.m_oconvey=\"EMS\"; order.m_bno=m_book_no;

order.m_cadd=m_customer_add; order.m_cname=m_customer_name; order.m_cno=m_customer_no; order.m_cphone=m_customer_phone; order.Update(); order.Requery(); m_order_no=order.m_ono; book.Open(); book.Edit(); book.m_bstock--; book.Update(); book.Requery();

book.Close(); UpdateData(FALSE);

CString temp; temp.Format(\"购买成功!\"); AfxMeageBox(temp); EndDialog(IDCANCEL); Cgkcx a; a.DoModal(); 3)管理员添加新书:管理员在管理界面中输入各项信息后点击添加,图示信息即可被添加到book表中,相关代码如下:

setbook a,b; a.Open(); a.AddNew(); UpdateData(TRUE); if(m_no.IsEmpty()||m_kind.IsEmpty()||m_name.IsEmpty()||m_price.IsEmpty()||m_intro.IsEmpty()||m_dis==0||m_stock==0) { MeageBox(\"请输入全部信息!\");

return; } if(b.IsOpen()) b.Close(); if(m_no!=_T(\"\")) {

b.m_strFilter.Format(\"bno=\'%s\'\",m_no);

b.Open();

if(b.m_bno!=_T(\"\"))

{

MeageBox(\"已经有这条记录了!\");

return;

} } a.m_bno=m_no; a.m_bkind=m_kind; a.m_bname=m_name; a.m_bprice=m_price; a.m_bintro=m_intro; a.m_bdis=m_dis;

a.m_bstock=m_stock;

CString aa,bb; m_list.InsertItem(0,a.m_bno,0); m_list.SetItemText(0,1,a.m_bkind);

m_list.SetItemText(0,2,a.m_bname);

m_list.SetItemText(0,3,a.m_bprice); m_list.SetItemText(0,4,a.m_bintro);

aa.Format(\"%d\",a.m_bdis);

m_list.SetItemText(0,5,aa);

bb.Format(\"%d\",a.m_bstock); m_list.SetItemText(0,6,bb); a.Update(); a.Requery(); UpdateData(FALSE); a.Close(); 3.4 修改功能

修改功能使用Edit()函数,主要应用在管理员对图书信息的修改方面,其中图书编号不可修改,若修改则出现错误提示,相关代码如下: setbook a; a.Open(); a.Edit(); UpdateData(TRUE);

if(m_no.IsEmpty()) { MeageBox(\" 请选择图书!\");

return; } if(no!=m_no) {

MeageBox(\"图书编号不允许修改!\");

return; } m_list.DeleteAllItems(); a.m_bkind=m_kind; a.m_bname=m_name; a.m_bprice=m_price; a.m_bintro=m_intro; a.m_bdis=m_dis;

a.m_bstock=m_stock;

CString aa,bb; m_list.InsertItem(0,a.m_bno,0); m_list.SetItemText(0,1,a.m_bkind);

m_list.SetItemText(0,2,a.m_bname);

m_list.SetItemText(0,3,a.m_bprice); m_list.SetItemText(0,4,a.m_bintro);

aa.Format(\"%d\",a.m_bdis);

m_list.SetItemText(0,5,aa);

bb.Format(\"%d\",a.m_bstock);

m_list.SetItemText(0,6,bb); a.Update(); a.Requery();

UpdateData(FALSE); a.Close(); 3.5 删除功能

删除功能使用Delete()函数,应用在管理员对图书信息的删除及查看订单后发货方面:

1)图书信息删除:管理员查找到要删除的图书后选中,点击删除按钮即可将book表中该图书信息删除,相关代码如下:

UpdateData(TRUE); int n=m_list.GetSelectionMark(); setbook b;

if(m_no.IsEmpty()) { MeageBox(\"请选择图书!\"); return; }

b.m_strFilter.Format(\"bno=\'%s\'\",m_no);

b.Open();

if(b.IsEOF())

{ MeageBox(\"没有此记录!\"); return;

}

b.Delete();

m_list.DeleteItem(n);

b.Close(); 2)发货:管理员查看订单后选中要发送的图书,点击发货即可在orders表中将该订单删除,相关代码如下:

int n=m_list.GetSelectionMark(); //创建订单记录集

Csetorders order;

if(m_ono.IsEmpty()) {

MeageBox(\"请选择订单!\");

return; } order.m_strFilter.Format(\"ono=\'%s\'\",m_ono); order.Open(); if(order.IsEOF()) {

MeageBox(\"没有此记录!\");

return; } while(!order.IsEOF()) { order.Delete(); order.MoveNext(); }

//关闭记录集 order.Close(); m_list.DeleteItem(n); UpdateData(FALSE); 3.6 查询功能

查询功能应用于顾客购书前对书籍的查询和管理员对书籍的查询,以顾客查询为例,顾客查询可按照图书编号、图书类别、图书名称、折扣额度等四种方式,其中图书类别和图书名称都可实现模糊查询,在相关表中查找到正确信息后显示在列表框内,以图书名称和折扣额度为例,相关代码如下:

UpdateData(TRUE); setbook book; if(m_fangshi!=0&&m_fangshi!=1&&m_fangshi!=2&&m_fangshi!=3) {

AfxMeageBox(\"请选择查询类别!\");

return; } //出现问题:不能读取m_kind,原因:IsEmpty()少了小括号

if(m_fangshi==1) {

if(m_name.IsEmpty())

{

AfxMeageBox(\"请输入图书名称!\");

return;

}

setbook book;

if(book.IsOpen()) book.Close();

CString tmp;

tmp.Format(\"%%%s%%\",m_name);

m_name=tmp;

book.m_strFilter.Format(\"bname LIKE \'%s\'\",m_name);

book.Open();

m_list.DeleteAllItems();

int i=0;

if(book.IsEOF())

{

MeageBox(\"

目前暂没有您要的书目!\",\" 提示\",MB_OK);

return; }

while(!book.IsEOF()) {

CString aa,bb;

m_list.InsertItem(i,book.m_bno,0);

m_list.SetItemText(i,1,book.m_bkind);

m_list.SetItemText(i,2,book.m_bname);

m_list.SetItemText(i,3,book.m_bprice);

m_list.SetItemText(i,4,book.m_bintro);

aa.Format(\"%d\",book.m_bdis);

m_list.SetItemText(i,5,aa);

bb.Format(\"%d\",book.m_bstock);

m_list.SetItemText(i,6,bb);

i++;

book.MoveNext();

} } if(m_fangshi==3) { if(m_dis==0) { AfxMeageBox(\"请输入查询内容!\"); return; }

if(book.IsOpen()) book.Close();

book.m_strFilter.Format(\"bdis

book.Open();

m_list.DeleteAllItems();

int i=0;

if(book.IsEOF()) { MeageBox(\"

目前暂没有您要的书目!\",\" return; }

while(!book.IsEOF()) {

CString aa,bb;

m_list.InsertItem(i,book.m_bno,0);

m_list.SetItemText(i,1,book.m_bkind);

m_list.SetItemText(i,2,book.m_bname);

提示\",MB_OK);

m_list.SetItemText(i,3,book.m_bprice);

m_list.SetItemText(i,4,book.m_bintro);

aa.Format(\"%d\",book.m_bdis);

m_list.SetItemText(i,5,aa);

bb.Format(\"%d\",book.m_bstock);

m_list.SetItemText(i,6,bb);

i++;

book.MoveNext();

} } 3.7 显示功能

在本软件中多次将信息显示在列表框中,以图书信息管理界面中显示图书信息为例,相关代码如下:

BOOL Cxsrk::OnInitDialog() {

CDialog::OnInitDialog(); DWORD dwExStyle = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |LVS_EX_HEADERDRAGDROP |LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT; m_list.SetExtendedStyle(dwExStyle);

m_list.InsertColumn(0,\"编号\",LVCFMT_CENTER,50,0); m_list.InsertColumn(1,\"类别\",LVCFMT_CENTER,100,0); m_list.InsertColumn(2,\"名称\",LVCFMT_CENTER,200,0);

m_list.InsertColumn(3,\"价格\",LVCFMT_CENTER,60,0);

m_list.InsertColumn(4,\"简介\",LVCFMT_CENTER,200,0); m_list.InsertColumn(5,\"折扣\",LVCFMT_CENTER,50,0);

m_list.InsertColumn(6,\"库存\",LVCFMT_CENTER,50,0); setbook a;

a.Open();

int i=0;

while(!a.IsEOF())

{ CString aa,bb;

m_list.InsertItem(i,a.m_bno,0);

m_list.SetItemText(i,1,a.m_bkind);

m_list.SetItemText(i,2,a.m_bname);

m_list.SetItemText(i,3,a.m_bprice);

m_list.SetItemText(i,4,a.m_bintro);

aa.Format(\"%d\",a.m_bdis);

m_list.SetItemText(i,5,aa);

bb.Format(\"%d\",a.m_bstock);

m_list.SetItemText(i,6,bb);

i++;

a.MoveNext();

}a.Close(); return TRUE; // return TRUE unle you set the focus to a control }

4 软件测试

4.1 主界面展示

主界面如下图4.1所示,有“顾客登录”,“管理员登录”和“现在注册”三个按钮:

图4.1 主界面

顾客输入正确的登录名和密码后点击确定即可进入顾客查询界面,如下图4.2所示:

图4.2 顾客查询界面

管理员输入正确的登录名和密码后点击确定即可进入管理界面,如下图4.3所示:

图4.3 管理内容选择界面

新顾客点击“现在注册”即可进入注册界面,如下图4.4所示:

图4.4 顾客注册界面

4.2 添加功能展示 4.2.1 顾客注册

顾客在如上图4.4所示的顾客注册界面中输入各项信息且两次输入相同密码后点击确定,系统自动生成顾客编号作为登录名,和密码等显示给顾客,如下图4.5所示:

图4.5 注册信息确认界面

4.2.2 顾客购书

顾客在如图4.3所示的查询界面中查到满意的图书后点击购买,即可进入购买图书界面,确认图书并选择付款方式和送货方式,如下图4.6所示:

图4.6 购买图书界面

4.2.3 添加新书

管理员在如图4.3所示的管理界面中选择“书籍信息管理”,进入如下图4.7所示的书籍信息管理界面:

图4.7 书籍信息管理界面

在编辑框中输入各项信息后点击“添加”,即可成功添加图书信息,如下图4.8所示:

图4.8 添加图书

4.3 修改功能展示

管理员在如图4.7所示的书籍信息管理界面中选中要修改的图书,相关各项信息即可显示在下方的编辑框中,在编辑框中修改信息后点击“修改”即可成功修改book表中图书信息,如下图4.9所示:

图4.9修改图书信息

4.4 删除功能展示 4.4.1 图书信息删除

管理员在如图4.7所示的书籍信息管理界面中选中要删除的图书,点击删除按钮即可删除该图书,如下图4.10所示:

图4.10 删除图书

点击确定后可以看到该图书在列表框中消失。

4.4.2 发货

管理员在如图4.3所示的管理界面中选择“查看订单”即可进入如下图4.11所示的订单查看界面,选中要发送的图书后点击“发货”即可将该订单从orders表中删除:

图4.11 订单查看界面

4.5 查询功能展示

以如图4.2所示的顾客查询中折扣额度查询为例,查询折扣在六折以下的图书,如下图4.12所示:

图4.12 折扣额度查询

5.总结

我的课程设计是网上书店管理系统,通过这次课程设计,使我更大程度上了解了信息管理系统的功能,提高了实践能力。是对所学知识的一次综合应用,在课程设计过程中,我遇到了很多问题,如在列表框和编辑框中显示int型和float型数据、调用别的类中生成的变量、自动生成顾客编号、自动生成订单号等等,最终在老师和同学们的帮助下,这些问题都一一得到圆满解决,系统还有以下部分有待完善: (1)数据库安全性还有待加强。 (2)还可以设置级联使系统更加完善。

(3)可以增加顾客对自己信息的修改权限,例如联系方式、住址等的更改。

这次课程设计使我们更加熟悉的掌握了Visual C++语言和SQL语句的运用,帮助我们熟悉了更多VC++6.0和SQL Server2005的功能,提高了我们的动手能力,在实践中能够及时的发现问题、解决问题,学到了许多解决实际问题的宝贵经验.同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。

最后,衷心感谢庞老师的悉心指导和同学们的热情帮助,感谢学校给我们做课程设计的机会,使我们得到了很好的锻炼,学无止境,我们现在了解的东西还很少,还不能很好地掌握自己的专业知识,我们要谦虚的积极认真学习,不断的增强自身的能力,提高个人素质,向一个真正的IT人士发展。

参考文献

[1] 夏冰冰 主编 数据库原理及应用——SQL Server 2000 国防工业出版社 [2] 何志丹 著 深入浅出Visual c++入门、进阶与应用实例 人民邮电出版社 [3] 孙皓 著 Visual C++范例大全 机械工业出版社

[4] 维埃拉 著,董明 译 SQL Server 2005高级程序设计 人民邮电出版社 [5] 吴艳平,岳淑玲著 软件设计与编程基础 电子工业出版社 [6] 李俊民著 精通SQL——结构化查询语言详解 人民邮电出版社

[7] 《电脑编程与维护》杂志社 编著 Visual C/C++系统开发典型实例解析 水利水电出版社 [8] 路游,于玉宗 著 数据库系统课程设计 清华大学出版社

毕业论文网上书店管理系统

网上书店管理系统 需求分析

网上书店管理系统可行性分析

网上书店电子商务系统设计

网上书店系统设计(毕业论文)

网上书店系统数据流图

网上书店后台管理

网上购物系统课程设计报告[定稿]

书店管理系统需求分析报告

沈开洋网上书店销售系统(开题报告)

网上书店管理系统_课程设计报告[优秀]
《网上书店管理系统_课程设计报告[优秀].doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档