Visual C++超市管理系统课程设计报告

文本框:

课程设计报告书

设计名称:     Visaul C++课程设计                      

题    目:     超市管理系统                      

学生姓名:     林业辉  张玉山  覃美芬           

专    业:     计算机科学与技术(数字媒体)                  

班    别:     计科本092                      

学    号: 0904402201  0904402217  0904402228                    

指导老师:     黄东                             

日    期:      2011       6      10 

目录

第一章 超市管理系统概述…… ……………………………………………3

       1.1引言…………………………………………………………………3

         1.1.1系统开发的目的与意义……………………………………3

         1.1.2系统开发背景………………………………………………3

         1.1.3系统概述……………………………………………………3

         1.1.4采用的体系结构……………………………………………4

第二章 超市管理系统分析……………………………………………4

       2.1可行性研究……………………………………………………4

2.1.1技术可行性…………………………………………………5

2.1.2经济可行性…………………………………………………5

         2.1.3运行可行性…………………………………………………5

       2.2需求分析………………………………………………………5

2.2.1系统的目的…………………………………………………5

2.2.2系统功能及用户需求………………………………………6

第三章 超市管理系统设计……………………………………………6

3.1系统的总体…………………………………………………………6

3.2数据表的建立………………………………………………………7

3.3数据表截图…………………………………………………………8

3.4功能的模块…………………………………………………………11

第四章 超市管理系统的实现…………………………………………11

4.1登陆界面……………………………………………………………11

4.2主界面…………………………………………………13

4.3主要模块操作界面类型…………………………………………………15

4.4主窗口界面类型…………………………………………………21

4.5销售额查询结果显示…………………………………………………25

4.6退出系统……………………………………………………………27

第五章 结束语………………………………………………………………16

参考文献 ……………………………………………………………………17

第一章超市管理系统概述

1.1引言

1.1.1系统开发的目的与意义

随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。

作为计算机应用的一部分,使用计算机对超市进行管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高超市管理的效率,也是超市的科学化、正规化管理,与世界接轨的重要条件。

因此,开发一个代替手工操作的新型的计算机管理的超市管理系统对本超市来说刻不容缓。

1.1.2系统开发背景

 传统人工的方式管理超市,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难,而且容易丢失。因此,开发一个代替手工操作的新型的计算机管理的超市管理系统对本超市来说刻不容缓。

1.1.3系统概述

1、任务:

超市管理系统对职员商品信息进行高效简洁的管理,使之能正常高效的进行售卖活动。系统充分考虑到超市管理系统对货物资料进行登记并处理。考虑到进货、退货、库存预警、年月日销售额结算等多种特殊情况,同时可将相关资料进行有效处理。

2、目标:

 当代社会中伴随着计算机技术在各行各业日益广泛和深入的应用,超市对货品于职员的管理不在像过去一样靠手工去做,在一些超市管理中也开始信息化。信息化的管理可以为超市节省大量人力物力,提高其运行效率,从而为顾客提供更好的服务,实现超市的业务提升。

本系统就是为了适应这种要求而设计的。集信息的显示、输入、修改、删除、查询等各种处理为一体,信息维护起来非常方便。大大减少了超市的人力和物力。

本系统大致要做到以下几点:

(1) 操作简便,节省大量人力;

(2)可以方便的进行货品管理,安全、高效;

(3) 可以迅速计算销售额和所买卖货品;

(4) 可以迅速查到所需信息,便于管理。

1.1.4采用的体系结构

本超市管理系统是基于C/S模式结构构建的。

Clients/Server结构(简称C/S结构)是九十年代流行的信息系统结构,在C/S结构下,应用系统被分为前台(客户机)和后台(服务器)两部分,其作用分别是:应用处理由客户机完成,数据访问和事务处理由服务器完成。这种方案实现了功能分布,即由客户机端提出查询请求,而服务器完成对数据库的查询任务,并把查询结果通过网络返回给客户机。

C/S模式响应速度快,网络通信负担小,适用于超市内部局域网,在超市内部的集中管理模式中发挥了重要作用。
    超市管理系统是基于vc++前台,Access做后台的系统。

第二章 超市管理系统分析

2.1可行性研究

现在时间行进到21世纪,以计算机技术为主体的高新技术群体已经将触角深入到国发经济的方方面面。在市场经济的大环境下,越来越多的人士逐渐认识到用计算机技术进行名类管理,交流的便捷。应用之一就是超市中的计算机管理了。

如何利用先进的技术手段,提高进出帐的效率,是每一家超市所面临的重要课题。现代超市所面临的问题是:商品数目众多,商品内容繁杂,日常需要耗费大量人力和物力。要想解决这一难题,就必须有一套科学、高效、严密、实用的超市管理系统。采用现代计算机管理系统是实现此目标的主要途径。

在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的超市管理系统,实现超市的销售、财务自动化的计算机系统,为超市的决策层提供准确、精细、迅速的销售信息。

2.1.1技术可行性

根据系统目标来衡量所需的技术是否具备,一般可从硬件、软件的性能要求、环境条件、技术人员水平和数量等方面去考虑和分析,其中开发人员的技术力量应首先考虑能力与水平,并考虑近期内可以培养和发展操作人员。
2.1.2经济可行性

估算系统的开发费用和今后的运行、维护费用,估计系统将获得的效益,并将费用与效益进行比较,看是否有利。本系统的维护不需太多费用,适合于中小超市的管理操作。

系统的效益可以从经济效益和社会效益两方面考虑。对于超市管理系统则应着重分析其经济效益。例如,系统投入运行后可以提供哪些以前无法及时提供的信息,用户查询和使用信息的方便程度提高多少、速度增加了多少,对于管理人员进行决策提供了多少帮助等等,同时可以减少管理人员,从而节省了大量的工资开出。

2.1.3运行可行性

 系统带来的影响(包括组织机构、管理方式、工作环境等)和后果进行估计和评价。同时还应考虑管理人员的培训、补充,分析在给定时间里能否完成预定的系统开发任务等。按上述三方面进行可行性分析、研究后,我们认为该项目是可行的。

2.2需求分析

2.2.1系统的目的

本系统的总目标是为管理者提供迅速、高效的服务,减免手工处理的繁琐与误差,整个系统包括八大模块:用户管理,职员管理,商品管理,进货管理,库存管理,销售管理,操作日志,退出系统。其中商品管理,进货管理,库存管理,销售管理是本系统要实现的主要功能。

各模块主要的几种操作:

²  用户管理模块对管理者进行用户的注册,修改,删除操作。

²  职员管理模块对职员的信息相应操作。

²  商品管理模块对商品的信息进行相应操作。

²  进货管理模块对商品进行买进,入库,退货,及供货商等相应操作。

²  库存管理模块对库存商品进行相应操作,以及商品预警操作。

²  销售管理模块对各天购物信息的相关操作。

²  操作日志模块对管理者进行过的操作记录显示出来。

²  退出系统模块是退出本系统的一切操作。

2.2.2系统功能及用户需求
1、功能需求:

该系统只为管理员登陆操作。

(1)管理员信息的注册、修改和删除和查看注册时间。

(2)职员管理。该模块包括职员的添加,修改,删除和查询,主要是为了实现新职员的加入登记,离职员工的删除记录,以及员工信息的管理,如修改查询。

(3)商品管理。对超市内的商品进行管理,对商品进行查看,添加和修改。

(4)进货管理。对进货的商品进行管理,并且可以查看所退商品的信息及供货商信息。

(5)库存管理。可以查看商品的当前库存、最大库存及最小库存,并且对商品库存量提供预警功能。

(6)销售管理。可以查看商品销售信息,并且可以对具体时间的销售额进行查询。

(7)操作日志。功能可以查看各个管理员进行的操作,也可查看管理员的操作时间与内容,增强系统的安全性。

2、用户需求:

本系统主要针对的用户是超市人事处的管理员。本系统能够完成任务是管理员登陆,并对超市信息进行管理。

 

第三章 超市管理系统的设计

3.1系统的总体

图3-1系统总框架图

从图中可以得出该系统的总体框架,现在逐个实现。

3.2数据表的建立

本系统用Access建立数据库,使用ODBC连接,此方法较容易完成了数据的建立。共计有十一个表,包括:

用户管理表:(用户编号、用户名、用户密码、注册时间)

职员信息表(职员编号、职员姓名、职员性别、职员年龄、职员电话、职员地址)

商品信息表(商品编号、商品名称、商品类别、商品售价、商品进价、商品单位、商品所属厂商)
进货管理表(商品编号、商品名称、商品类别、商品进价、商品单位、商品数量、商品总价、所属厂商、经手人、进货日期)

退货管理表(商品编号、商品名称、商品类别、商品进价、商品单位、商品数量、商品总价、所属厂商、经手人、进货日期)

供货商信息表(供货商编号、厂家名称、所供货品、经手人、联系电话、地址)

库存信息表(商品编号、商品名称、当前库存、最大库存、最小库存、商品单位)

库存警报表(商品编号、商品名称、当前库存、最大库存、最小库存、商品单位)

销售信息表(商品编号、商品名称、商品进价、商品单位、商品数量、商品总价、销售日期)

销售额信息表(商品编号、商品名称、商品进价、商品单位、商品数量、商品总价、销售年份、销售月份、销售日期(具体到年、月、日))

操作日志表(操作员、所做事件、操作时间)

3.3数据表截图

图3-2  用户管理表

图3-3 职员信息表

图3-4 商品信息表

图3-5 进货管理表

图3-6 退货管理表

图3-7供货商信息表

图3-8 库存信息表

图3-9 库存预警表

图3-10 销售信息表

图3-11 销售额信息表

图3-12 操作日志表

3.4功能的模块

总体结构出来了,还有建立数据表,这两样工作做好了才能更加好的编码,从整体的设计开始,到建立数据表,一步一个脚印,只有走好了前面两步,打好基础,后面才回走得顺。

第四章  超市管理系统的实现

4.1登陆界面

图4-1 系统登陆界面

采用vc++对用户管理表的筛选出正确的用户名和密码登陆,代码如下:

if(m_name.IsEmpty()||m_pass.IsEmpty())

  {MessageBox("用户名或密码为空");

    return ;

  }

if(yh.IsOpen())

 yh.Close();

yh.m_strFilter.Format("y_name='%s'and y_pass='%s'",m_name,m_pass);

 yh.Open();

if(yh.IsEOF())

 {

  MessageBox("没有该用户,请重新输入");

  m_name="";

  m_pass="";

     //admin=m_pass;

     ruji("登录失败");

  UpdateData(false);

   return;

 }

 else

  {

     Cabc abc;

     admin=m_pass;

    ruji("登录成功");

    

   this->ShowWindow(SW_HIDE);

   abc.DoModal();

4.2主界面

1、对对话框进行初始化,为背景插入图片代码(示例如下):

    void CTubiaoDlg::OnPaint()

{CPaintDC dc(this);

CBitmap m_bmpBK;

m_bmpBK.LoadBitmap(IDB_BITMAP1);

CRect rect;

GetClientRect(&rect);//获得目标尺寸,即窗口客户区的坐标

BITMAP bitMap;//位图结构体

m_bmpBK.GetBitmap(&bitMap);//获得原图片尺寸

CDC dcMem; //目标DC

dcMem.CreateCompatibleDC(&dc); //创建与dc兼容的内存DC

dcMem.SelectObject(&m_bmpBK);//将位图对象m_bmpBK选入内存DC

dc.StretchBlt(0,0,rect.Width(),rect.Height

(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);

2、对主界面按钮导入图标代码如下:

m_bt1.SubclassDlgItem(IDC_YH,this);//设置图标按钮

   m_bt1.SetIcon(IDI_YH);

    m_bt2.SubclassDlgItem(IDC_ZY,this);

   m_bt2.SetIcon(IDI_ZY);

   m_bt3.SubclassDlgItem(IDC_SP,this);

   m_bt3.SetIcon(IDI_SP);

   m_bt4.SubclassDlgItem(IDC_JH,this);

   m_bt4.SetIcon(IDI_JH);

   m_bt5.SubclassDlgItem(IDC_XS,this);

   m_bt5.SetIcon(IDI_XS);

   m_bt6.SubclassDlgItem(IDC_KC,this);

   m_bt6.SetIcon(IDI_KC);

   m_bt7.SubclassDlgItem(IDC_RZ,this);

   m_bt7.SetIcon(IDI_RZ);

   m_bt8.SubclassDlgItem(IDC_TC,this);

   m_bt8.SetIcon(IDI_TC);

3、对列表进行初始化及显示代码如下:

yhb.Open();

   m_list.InsertColumn(0,"用户编号");

   m_list.InsertColumn(1,"用户名");

   m_list.InsertColumn(2,"用户密码");

   m_list.InsertColumn(3,"注册时间");

   RECT rect;

   m_list.GetWindowRect(& rect);

   int wid=rect.right-rect.left;

   m_list.SetColumnWidth(0,wid/4);

   m_list.SetColumnWidth(1,wid/4);

   m_list.SetColumnWidth(2,wid/4);

   m_list.SetColumnWidth(3,wid/4);

    yhxs();

   return TRUE;

}

4.3主要模块操作界面类型

初始化代码:

BOOL Ckcgl::OnInitDialog()

{

    CenterWindow();

   DWORD dwStyle=AW_CENTER;

   HINSTANCE hInst=LoadLibrary("User32.DLL");

   typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD));

   MYFUNC* AnimateWindow;

   AnimateWindow=(MYFUNC *)::GetProcAddress(hInst,"AnimateWindow");

   AnimateWindow(this->m_hWnd,1000,dwStyle);

   FreeLibrary(hInst);

   

   CDialog::OnInitDialog();

   UINT array[4];

   for(int i=0;i<4;i++)

   {

       array[i] = 100+i;

   }

   m_StatusBar.Create(this); //创建状态栏窗口

   m_StatusBar.SetIndicators(array,4); //添加面板

   for(int n=0;n<4;n++)

   {

m_StatusBar.SetPaneInfo(n,array[n],SBPS_NORMAL,160); //设置面板宽度

   }

   //设置面板文本

   m_StatusBar.SetPaneText(0,"当前操作");

   m_StatusBar.SetPaneText(1,"库存管理");

   m_StatusBar.SetPaneText(2,"当前时间");

   CTime Time;

   Time = CTime::GetCurrentTime();

   m_StatusBar.SetPaneText(3,Time.Format("%Y-%m-%d %H:%M:%S"));

   RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

   SetTimer(1,1000,NULL); //设置定时器

  

   // TODO: Add extra initialization here

    m_com.AddString("商品编号");

   m_com.AddString("商品名称");

   m_com.SetCurSel(0);

   kcb.Open();

   m_list.InsertColumn(0,"商品编号");

   m_list.InsertColumn(1,"商品名称");

   m_list.InsertColumn(2,"当前库存");

   m_list.InsertColumn(3,"最大库存");

   m_list.InsertColumn(4,"最小库存");

   m_list.InsertColumn(5,"单位");

   

   RECT rect;

   m_list.GetWindowRect(& rect);

   int wid=rect.right-rect.left;

   m_list.SetColumnWidth(0,wid/6);

   m_list.SetColumnWidth(1,wid/6);

   m_list.SetColumnWidth(2,wid/6);

   m_list.SetColumnWidth(3,wid/6);

   m_list.SetColumnWidth(4,wid/6);

   m_list.SetColumnWidth(5,wid/6);

   kcb.Close();

    kcxs();

   return TRUE;  // return TRUE unless you set the focus to a control

                 // EXCEPTION: OCX Property Pages should return FALSE

}

添加按钮的代码:

void Ckcgl::Ontianjia()

{

   // TODO: Add your control notification handler code here

   Ctgkc tgkc;

   append=1;

    ruji("添加库存");

   if (tgkc.DoModal()==IDC_tuichu)

        kcxs();

}

退出按钮的代码:

void Ckcgl::Ontuichu()//动画退出

{

   // TODO: Add your control notification handler code here

    DWORD dwStyle = AW_BLEND;

   HINSTANCE hInst=LoadLibrary("User32.DLL");

   typedef BOOL(WINAPI MYFUNC(HWND,DWORD,DWORD));

   MYFUNC* AnimateWindow;

   AnimateWindow=(MYFUNC *)::GetProcAddress(hInst,"AnimateWindow");

   AnimateWindow(this->GetSafeHwnd(),1000,AW_HIDE | dwStyle);

   FreeLibrary(hInst);

   OnOK();

}

查询代码:

void Ckcgl::Onchaxun()

{

   // TODO: Add your control notification handler code here

UpdateData();

ruji("库存查询");

 CString x,str,str1;

m_com.GetWindowText(x);

if(x=="商品编号")

str="k_code";

else

str="k_name";

 if (m_nb.IsEmpty())

   {

       AfxMessageBox("查询条件不能为空!!您可以按编号或姓名来查询!!");

       return ;

   }

   if (!m_nb.IsEmpty())    

      {   

           if(kcb.Open())

             kcb.Close();

          str1=str+"='%s'";

          kcb.m_strFilter.Format(str1,m_nb);

          kcxs();

          MessageBox("结果是按"+x+"查询到的!!");

      }

   m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

    kcb.Close();

}

修改代码:

void Ckcgl::Onxiugai()

{

   // TODO: Add your control notification handler code here

Ctgkc tgkc;

    ruji("修改库存");

    if (t==-2)

   {   AfxMessageBox("你没有选中要修改的记录");

   return;

   }

   else

   {

      

      t=m_list.GetSelectionMark();               

          tgkc.m_code=m_list.GetItemText(t,0);

       tgkc.m_name=m_list.GetItemText(t,1);

      tgkc.m_now=atoi(m_list.GetItemText(t,2));

      tgkc.m_max=atoi(m_list.GetItemText(t,3));

       tgkc.m_min=atoi(m_list.GetItemText(t,4));

       tgkc.m_danwei=m_list.GetItemText(t,5);

       UpdateData(false);

       t=-2;

       append=2;

       if (tgkc.DoModal()==IDC_tuichu)

       kcxs();

  

   }

}

删除代码:

void Ckcgl::Onshanchu()

{

   // TODO: Add your control notification handler code here

       CString b;

    ruji("删除库存");

   if(t==-2)

   {   AfxMessageBox("你没有选中要删除的记录");

       t=-2;

     return;

   }

   else

   {  

       t=m_list.GetSelectionMark();                 

       b=m_list.GetItemText(t,0);

       UpdateData();

       if(kcb.Open())

       kcb.Close();

       kcb.m_strFilter.Format("k_code='%s'",b);

       kcb.Open();

       kcb.Delete();

        kcb.m_strFilter="";

       kcb.Requery();

       kcb.Close();

       kcxs();

       t=-2;

       AfxMessageBox("删除成功啦!!!!");

   }

}

4.4子窗口界面类型

确定代码:

void Ctiangai::Onqueding()

{

   // TODO: Add your control notification handler code here

   Cjb jb; 

   UpdateData();

   if(append==1)               

   { 

       if(jb.Open())

       jb.Close();

       jb.m_strFilter.Format("j_code='%s'",m_code);

       jb.Open();

       int p=0;

       p=jb.GetRecordCount();

       jb.Close();

          if(p!=0)

          {

              AfxMessageBox("该商品已经存在");

              m_code="";

              m_name="";

              m_type="";

              m_jinjia=0;

              m_danwei="";

              m_number=0;

                m_changshang="";

                m_man="";

                m_riqi="";

              UpdateData(false);

          }

          else

          {

     UpdateData();

    jb.Open();

   jb.AddNew();

if(m_code.IsEmpty()||m_name.IsEmpty()||m_type.IsEmpty()||m_jinjia==0||m_danwei.IsEmpty()||m_changshang.IsEmpty()||m_man.IsEmpty()||m_riqi.IsEmpty())

     MessageBox("添加失败,请重新输入!");

   else

   {

   jb.m_j_code=m_code;

   jb.m_j_name=m_name;

   jb.m_j_type=m_type;

   jb.m_j_jinjia=m_jinjia;

    jb.m_j_danwei=m_danwei;

   jb.m_j_number=m_number;

    jb.m_j_zongjia=m_jinjia*m_number;

    jb.m_j_changshang=m_changshang;

    jb.m_j_man=m_man;

    jb.m_j_date=m_riqi;

   jb.Update();

   jb.Requery();

    MessageBox("添加成功!请点击显示按钮即可查看!");

   }

   if(cb.IsOpen())

   cb.Close();

   cb.m_strFilter.Format("k_name='%s'",m_name);

       cb.Open();

   cb.Edit();

   cb.m_k_now=cb.m_k_now+m_number;

   cb.Update();

if(cb.m_k_now>cb.m_k_max)

{

   if(yjb.IsOpen())

   yjb.Close();

       yjb.Open();

        yjb.AddNew(); 

   yjb.m_c_code=cb.m_k_code;

   yjb.m_c_name=cb.m_k_name;

   yjb.m_c_now=cb.m_k_now;

   yjb.m_c_max=cb.m_k_max;

    yjb.m_c_min=cb.m_k_min;

    yjb.m_c_danwei=cb.m_k_danwei;

   yjb.Update();

}

}

   }

   else if(append==2)                                     //修改职员

   {  

    UpdateData();

   if(jb.Open())

   jb.Close();

   jb.m_strFilter.Format("j_code='%s'",m_code);

   jb.Open();

    jb.Edit();

   jb.m_j_code=m_code;

   jb.m_j_name=m_name;

   jb.m_j_type=m_type;

   jb.m_j_jinjia=m_jinjia;

    jb.m_j_danwei=m_danwei;

   jb.m_j_number=m_number;

    jb.m_j_zongjia=m_jinjia*m_number;

    jb.m_j_changshang=m_changshang;

    jb.m_j_man=m_man;

    jb.m_j_date=m_riqi;

   jb.Update();

   jb.m_strFilter="";

   jb.Requery();

   MessageBox("修改成功!请点击显示按钮即可查看!");

}

}

4.5销售额中查询的结果:

4.3退出系统

以上界面与代码为选择一些具有代表性的进行展示,本系统的各个功能的代码是所学到的知识,还有美化功能是我们通过在网上找资料,去图书馆借相关书籍回来学习实现的。如创建状态栏时间,系统皮肤,为按钮导入图标,标题栏活动字体等等。通过大家的共同努力及合作,最后圆满的完成了此系统的开发。

第五章 结束语

通过近三周的来的设计及编写代码,通过我们共同的努力及合作,终于完成了超市管理系统的开发,此次课程设计,过程中遇到了许许多许多的难题,但最后都被我们一一克服,在增长了知识的同时,也增强了我们的能力。

参考文献

[1] 王育坚. Visual C++ 面对对象编程教程[M].清华大学出版社,2007.

[2] Visual C++程序设计与应用教程题解及课程设计/马石安,魏文平编著.—北京:清华大学出版社,2009.7

[3] 张立. Visual C++高级编程,北京:人民邮电出版社,20##年

[4]何炜,张励.Visual C++.NET 2003程序设计,冶金工业出版社,20##年

[5] http://cnds7.download.csdn.net/

相关推荐