
这是一个基于MFC的windows窗体应用主要功能有
- 登录功能,输入正确的用户名和密码进入系统。
- 个人信息查看功能,显示个人信息(身份、用户名)、修改自己的密码
- 销售管理功能,能够购买商品(有判断如果数量为负的情况),并且购买的数据会在订单信息中显示,并且库存会同步到文件当中。
- 库存信息展示功能,能够以列表的方式展示所有商品的库存信息。
- 搜索功能,根据商品名称进行搜索,支持模糊搜索
- 添加库存的功能,可以在左侧添加已有的商品的库存,右边是添加新的商品,有价格和个数的输入合法性检测。
- 删除库存的功能,选择要删除的商品输入要删除的数量(有合法性检测,库存和正负)可以在本页实时看到该商品的库存量。
- 开始菜单功能,点击有退出按钮,点击退出系统。
- 菜单,菜单按钮,可以选择当前的功能。
- 帮助,主要是关于,显示个人信息的。
- 窗口的标题,左标题显示项目名称,右标题显示当前系统的时间。
这其中主要的难点就在于搜索,MFC入门其实不是很难,可以说是比较容易。
void CAddDlg::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
//读取文件,获取商品名,给组合框添加字符串
CInfoFile file;
file.ReadDocline(); //读取商品信息
for (list::iterator it = file.ls.begin(); it != file.ls.end(); it++)
{
m_combo.AddString((CString)it->name.c_str());
}
file.ls.clear(); //清空list的内容
//将第一个商品名设为默认选中项
m_combo.SetCurSel(0);
//显示该商品的信息
OnCbnSelchangeCombo1();
}
void CAddDlg::OnCbnSelchangeCombo1()
{
// TODO: 在此添加控件通知处理程序代码
int index = m_combo.GetCurSel();
CString name;
m_combo.GetLBText(index, name);
//根据商品名称获取到该商品的价格和库存,并显示到控件当中
CInfoFile file;
//把商品读到file对象中
file.ReadDocline();
for (list::iterator it = file.ls.begin(); it != file.ls.end(); it++)
{
if (CString(it->name.c_str()) == name)
{
m_price1 = it->price;
//同步到控件上
UpdateData(FALSE);
}
}
}
库存展示功能源码:
// CInfoDlg.cpp: 实现文件
//
#include "pch.h"
#include "销售管理system.h"
#include "CInfoDlg.h"
#include "InfoFile.h"
// CInfoDlg
IMPLEMENT_DYNCREATE(CInfoDlg, CFormView)
CInfoDlg::CInfoDlg()
: CFormView(DIALOG_INFO)
, m_sinfo(_T(""))
{
}
CInfoDlg::~CInfoDlg()
{
}
void CInfoDlg::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST2, m_list);
DDX_Text(pDX, IDC_EDIT1, m_sinfo);
DDX_Control(pDX, IDC_CHECK1, m_sm);
}
BEGIN_MESSAGE_MAP(CInfoDlg, CFormView)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST2, &CInfoDlg::OnLvnItemchangedList2)
ON_BN_CLICKED(IDC_BUTTON1, &CInfoDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
// CInfoDlg 诊断
#ifdef _DEBUG
void CInfoDlg::AssertValid() const
{
CFormView::AssertValid();
}
#ifndef _WIN32_WCE
void CInfoDlg::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif
#endif //_DEBUG
// CInfoDlg 消息处理程序
void CInfoDlg::OnLvnItemchangedList2(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
}
void CInfoDlg::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: 在此添加专用代码和/或调用基类
// 设置扩展风格
//LVS_EX_FULLROWSELECT选中整行,LVS_EX_GRIDLINES网格
m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
// 初始化表头
CString field[] = { _T("商品ID"), _T("商品名称"), _T("商品价格"), _T("库存数量") };
for (int i = 0; i < sizeof(field) / sizeof(field[0]); ++i)
{
m_list.InsertColumn(i, field[i], LVCFMT_CENTER, 90);
}
//需要包含#include "InfoFile.h"
CInfoFile file;
file.ReadDocline(); //读取商品信息
//添加数据
int i = 0;
CString str;
for (list::iterator it = file.ls.begin(); it != file.ls.end(); it++)
{
str.Format(_T("%d"), it->id);
m_list.InsertItem(i, str);
int column = 1;
m_list.SetItemText(i, column++, (CString)it->name.c_str());
str.Format(_T("%.2lf"), it->price);
m_list.SetItemText(i, column++, str);
str.Format(_T("%d"), it->num);
m_list.SetItemText(i, column++, str);
i++;
}
}
void CInfoDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(TRUE);
CInfoFile file;
file.ReadDocline(); //读取商品信息
CString name;
string sinfo;
sinfo = (CStringA)m_sinfo;
CButton* pBtn = (CButton*)GetDlgItem(IDC_CHECK1);
BOOL state = pBtn->GetCheck();
if (state == FALSE)
{
for (list::iterator it = file.ls.begin(); it != file.ls.end(); it++)
{
if (m_sinfo == CString(it->name.c_str()))
{
name = CString(it->name.c_str());
CString str;
string s;
s = "商品:" + it->name + "\r\n" + "单价:" + to_string(it->price) + "\r\n" + "库存:" + to_string(it->num);
str = (CString)(s.c_str());
MessageBox(str, _T("查询结果"));
break;
}
}
if (m_sinfo != name)
{
MessageBox(_T("没有查到该商品!\r\n(´・ω・)ノ(._.`)"), _T("查询结果"));
}
}
else if (state == TRUE)
{
int n = 1;
CString str;
string s;
int f = 0;
for (list::iterator it = file.ls.begin(); it != file.ls.end(); it++)
{
int a = it->name.find(sinfo);
if (a != -1)
{
name = CString(it->name.c_str());
s += "商品:" + it->name + "\r\n" + "单价:" + to_string(it->price) + "\r\n" + "库存:" + to_string(it->num) + "\r\n";
if (n == 10)
{
str = (CString)(s.c_str());
UINT nRet = MessageBox(str, _T("查询结果"), MB_OKCANCEL);
if (nRet == IDOK)
{
n = 1;
s.clear();
}
else if (nRet == IDCANCEL)
{
f = 1;
break;
}
}
n++;
}
}
if (n != 1 && f != 1)
{
str = (CString)(s.c_str());
UINT nRet = MessageBox(str, _T("查询结果"));
}
}
}
详见以下链接
(6条消息) 基于MFC的销售管理系统,c++实训,课程设计,大作业-C++文档类资源-CSDN文库https://download.csdn.net/download/Cadn81192/85604724?spm=1001.2014.3001.5503
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)