6组2详细设计说明书_第1页
6组2详细设计说明书_第2页
6组2详细设计说明书_第3页
6组2详细设计说明书_第4页
6组2详细设计说明书_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、详细设计说明书 库存管理系统开发小组第6组(软件1082):主要设计:郑远福、吴远彬、郭镇东 日期: 2010-5-301.导言1.1 目的在概要设计说明书中,已解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的详细设计报告中将对在本阶段中对系统所做的所有详细设计进行说明。1.2 范围本文档用于软件设计阶段的详细设计,它的上游(依据的基线)是概要设计说明书,它的下游是源程序清单及单元测试计划,并为单元测试报告提供测试的依据。该范围应覆盖概要设计说明书中的功能点列表,性能点列表,接口列表。

2、1.3术语定义(略)1.4参考资料 1 概要设计说明书 2 需求分析说明书 3 程序设计规范 4 界面设计规范 5 命名规范1.5相关文档 1 源程序清单 2 单元测试计划及报告 3 用户使用手册11 版本更新记录版本号创建者创建日期维护者维护日期维护纪要V1.0郑远福、吴远彬、郭镇东2010/5/30 2.总体设计2.1需求概要为了方便管理者管理和查询仓库货物的信息,需开发一个库存管理系统用于信息管理。本系统要做到方便对货物信息的基本资料的录入,编辑,删除等功能。2.2软件结构、登陆注册模块登录界面主界面.1、模块结构用户登陆 重新登陆检查输入错误信息 不合法身份认证系统首页.2、程序描述(

3、1)名称:LogDlg(注册登录模块)(2)功能:输入帐号密码即可登陆只界面 申明记录集过程以及开启数据库过程: 申明数据库对象,并申明一个记录集指向该对象 CDatabase m_db;/CDatabase(数据库类),CRecordSet(记录集类)和CRecordView(可视记录集类) CRecordset rs; UpdateData(TRUE);/将用户输入数据读取到成员变量中去 m_db.OpenEx(_T("DSN=MySQL;"),CDatabase:noOdbcDialog);/建立和数据库的连接; rs.m_pDatabase = &m_db;

4、/构造记录集对象指向CDatabase对象 检查用户输入数据的有效性 直接检查有没有输入用户名或密码,为空要提醒。 if(user.IsEmpty() AfxMessageBox(_T("请输入用户名!"),5,5); return; if(password.IsEmpty() AfxMessageBox(_T("请输入密码!"),5,5); return; 查询数据库,检查密码正确与否,正确则进入主界面。 CString sql; sql.Format(_T("SELECT Pwd FROM Users WHERE UserName='

5、;%s'"),user); CString psd; /存放查询结果 rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql); /打开查询记录 rs.GetFieldValue(_T("Pwd"),psd); /得到数据 if (psd != password)/如果密码不对则关闭 return; else/跳入主界面 stockDlg stock(this); stock.DoModal(); 、系统菜单模块功能模块1:基本信息管理功能模块2:产品信息管理子系统1:客户前台管理功能模块3:库存操作管理功能模块4:库存警示管理网上购物系统

6、总体结构图功能模块5:统计查询管理功能模块6:基本信息管理功能模块7:产品信息管理子系统2:后台管理功能模块8:库存操作管理功能模块9:库存警示管理功能模块9:统计查询管理功能模块9:用户.1、基本信息模块客户信息管理框 客户编辑框仓库管理框 仓库编辑框用户管理框 用户编辑框修改密码框.1.1:模块结构客户编辑框客户管理框 增,删 改仓库编辑框仓库管理框主界面 进入 增,删 改用户编辑框用户管理框 增,删改密码编辑框修改密码增,删改.1.2:程序描述1客户信息管理刷新记录集,记录crescordset记录集有多少个clienteditDlg lienteditDlg(this); liente

7、ditDlg.m_db.OpenEx(_T("DSN=MySQL;"),CDatabase:noOdbcDialog);/建立和数据库的连接; lienteditDlg.rs.m_pDatabase = &lienteditDlg.m_db;/构造记录集对象指向CDatabase对象 lienteditDlg.rs.Open(AFX_DB_USE_DEFAULT_TYPE,_T("SELECT cid FROM client"); /打开查询记录lienteditDlg.count=0; for(lienteditDlg.rs.MoveFirst

8、();!lienteditDlg.rs.IsEOF();lienteditDlg.rs.MoveNext() lienteditDlg.count+; for(int i=0;i<lienteditDlg.count;i+) CString str; str.Format(_T("%d"),i);/将数字转换为对应的字符串发送出去"" /m_C_type.SetCurSel(i); count.InsertString(i,str); / TODO: 在此添加控件通知处理程序代码添加按钮事件代码clienteditDlg clientedit(th

9、is); clientedit.DoModal();修改按钮事件代码clienteditDlg lienteditDlg(this); lienteditDlg.m_db.OpenEx(_T("DSN=MySQL;"),CDatabase:noOdbcDialog);/建立和数据库的连接; lienteditDlg.rs.m_pDatabase = &lienteditDlg.m_db;/构造记录集对象指向CDatabase对象 lienteditDlg.rs.Open(AFX_DB_USE_DEFAULT_TYPE,_T("SELECT cid,cnam

10、e,ctype,contact,caddress,postcode,phone,fax,memo FROM client"); /打开查询记录 if(count.GetCurSel()=-1) AfxMessageBox(_T("请选择要修改的记录"),5,5); return; int nIndex = count.GetCurSel();/选中当前选择项 CString present; /保存当前选择项信息 count.GetLBText( nIndex, present);/将当前选择项的值复制到字符串中去 /char* presentchar = pre

11、sent.GetBuffer(present.GetLength(); int presentint; presentint=atoi(CT2A)present); for(int j=1;j<=presentint;j+) lienteditDlg.rs.MoveNext(); lienteditDlg.rs.GetFieldValue(1,lienteditDlg.m_cname); /得到数据 lienteditDlg.rs.GetFieldValue(2,lienteditDlg.m_ctype); /得到数据 lienteditDlg.rs.GetFieldValue(3,li

12、enteditDlg.m_contact); /得到数据 lienteditDlg.rs.GetFieldValue(4,lienteditDlg.m_address); /得到数据 lienteditDlg.rs.GetFieldValue(5,lienteditDlg.m_postcode); /得到数据 lienteditDlg.rs.GetFieldValue(6,lienteditDlg.m_aphone); /得到数据 lienteditDlg.rs.GetFieldValue(7,lienteditDlg.M_fax); /得到数据 lienteditDlg.rs.GetFiel

13、dValue(8,lienteditDlg.m_memo); /得到数据 UpdateData(FALSE); lienteditDlg.m_db.Close(); if(lienteditDlg.DoModal()=IDOK) lienteditDlg.flag=2; m_datagrid.Refresh(); 删除按钮事件代码clienteditDlg lienteditDlg(this); lienteditDlg.m_db.OpenEx(_T("DSN=MySQL;"),CDatabase:noOdbcDialog);/建立和数据库的连接; lienteditDlg

14、.rs.m_pDatabase = &lienteditDlg.m_db;/构造记录集对象指向CDatabase对象 lienteditDlg.rs.Open(AFX_DB_USE_DEFAULT_TYPE,_T("SELECT cid,cname,ctype,contact,caddress,postcode,phone,fax,memo FROM client"); /打开查询记录 if(count.GetCurSel()=-1) AfxMessageBox(_T("请选择要删除的记录"),5,5); return; int nIndex =

15、 count.GetCurSel();/选中当前选择项 CString present; /保存当前选择项信息 count.GetLBText( nIndex, present);/将当前选择项的值复制到字符串中去 /char* presentchar = present.GetBuffer(present.GetLength(); int presentint; presentint=atoi(CT2A)present); /CString转换成整形 for(int j=1;j<=presentint;j+) lienteditDlg.rs.MoveNext();lienteditDl

16、g.rs.GetFieldValue(1,lienteditDlg.m_cname); /得到数据 CString sql1; sql1.Format(_T("delete from client where cname='%s'"),lienteditDlg.m_cname); lienteditDlg.m_db.ExecuteSQL(sql1); AfxMessageBox(_T("已经删除指定记录"),5,5);lienteditDlg.m_db.Close();刷新记录按钮事件代码:CString source; source=&

17、quot;select cid as 客户编号,cname as 客户名称,contact as 联系人,cAddress as 通信地址,postcode as 邮政编码,phone as 联系电话,fax as 传真电话,memo as 备注from client"m_adodc.put_RecordSource(LPCTSTR(source);/设置数据源m_adodc.Refresh();/更新查询/CDatabase m_db;/CDatabase(数据库类),CRecordSet(记录集类)和CRecordView(可视记录集类) /CRecordset rs; 建立数据

18、库对象,并用记录集指向该对象 try UpdateData(TRUE);/将用户输入数据读取到成员变量中去 m_db.OpenEx(_T("DSN=MySQL;"),CDatabase:noOdbcDialog);/建立和数据库的连接; rs.m_pDatabase = &m_db;/构造记录集对象指向CDatabase对象 检查用户输入数据的有效性 if(m_cname.IsEmpty()AfxMessageBox(_T("请输入客户单位!"),5,5); return; if(m_ctype.IsEmpty()AfxMessageBox(_T

19、("请输入客户类型!"),5,5); return;if(m_contact.IsEmpty()AfxMessageBox(_T("请输入联系人!"),5,5); return; if(m_address.IsEmpty()AfxMessageBox(_T("请输入地址!"),5,5); return;if(m_postcode.IsEmpty()AfxMessageBox(_T("请输入邮政编码!"),5,5); return;if(m_aphone.IsEmpty()AfxMessageBox(_T("

20、;请输入联系电话!"),5,5); return;if(M_fax.IsEmpty()AfxMessageBox(_T("请输入传真电话!"),5,5); return;if(m_memo.IsEmpty()AfxMessageBox(_T("请输入备注!"),5,5); return; 搜查客户姓名,判断有无 CString sql; sql.Format(_T("SELECT * FROM client WHERE cname='%s'"),m_cname); CString psd; /存放查询结果 r

21、s.Open(AFX_DB_USE_DEFAULT_TYPE,sql); /打开查询记录 根据flag的值来判断是添加记录还是修改记录 if(flag=0) if(!rs.IsEOF()/如果存在该客户 AfxMessageBox(_T("当前客户已经存在,请选择其他的客户单位!"),5,5); return; else CString sql1; sql1.Format(_T("INSERT INTO Client (Cname, Ctype, Contact, cAddress, Postcode, phone, Fax, Memo) VALUES('

22、%s','%s','%s','%s','%s','%s','%s','%s')"),m_cname,m_ctype,m_contact,m_address,m_postcode,m_aphone,M_fax,m_memo); m_db.ExecuteSQL(sql1); AfxMessageBox(_T("客户信息添加成功!"),5,5); return; else CString sql1; sql1.Format(_T("Updat

23、e client set Ctype='%s',Contact='%s',cAddress='%s',Postcode='%s',phone='%s',Fax='%s',Memo='%s' where Cname='%s'"),m_ctype,m_contact,m_address,m_postcode,m_aphone,M_fax,m_memo,m_cname); m_db.ExecuteSQL(sql1); AfxMessageBox(_T("

24、客户信息已经修改!"),5,5); 2仓库信息管理基本步骤与上面一样,只是SQL语句不一样。 sql.Format(_T("INSERT INTO storehouse (sname, memo) VALUES('%s','%s')"),m_storehousename,m_storehousememo);m_db.ExecuteSQL(sql);AfxMessageBox(_T("信息已经写入!"),5,5); 3用户信息管理对话框 申明记录集过程以及开启数据库过程: 申明数据库对象,并申明一个记录集指向该对象

25、 UpdateData(TRUE); CDatabase m_db;/CDatabase(数据库类),CRecordSet(记录集类)和CRecordView(可视记录集类) CRecordset rs;int type; UpdateData(TRUE);/将用户输入数据读取到成员变量中去 m_db.OpenEx(_T("DSN=MySQL;"),CDatabase:noOdbcDialog);/建立和数据库的连接; rs.m_pDatabase = &m_db;/构造记录集对象指向CDatabase对象 检查用户输入数据的有效性 直接检查有没有输入用户名,为空要

26、提醒。 if(m_UserName.IsEmpty() AfxMessageBox(_T("请输入用户名!"),5,5); return; 打开查询记录,然后判断该用户是系统用户还是普通用户,并初始化密码为888888 CString sql; sql.Format(_T("SELECT * FROM Users WHERE UserName='%s'"),m_UserName); CString psd; /存放查询结果 rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql); /打开查询记录 if(!rs.IsEOF

27、() AfxMessageBox(_T("当前用户已经存在,请选择其他的用户名!"),5,5); return; if(m_user_type="系统用户") type=1; elsetype=2; CString sql2; CString str; int a = 888888; str.Format(_T("%d"),a);/将数字转换为对应的字符串发送出去"888888" sql2.Format(_T("insert into users(username,pwd,usertype)values(

28、'%s','%s','%d')"),m_UserName,str,type);/初始化密码都设置为,以后自行修改 m_db.ExecuteSQL(sql2); AfxMessageBox(_T("用户添加成功,初始密码为!"),5,5); 4密码修改首先判断输入的密码是否正确 ClogDlg ClogDlg(this);/定义ClogDlg对象为了获得当前用户的用户名 CString sql; sql.Format(_T("SELECT Pwd FROM Users WHERE UserName='

29、%s'"),ClogDlg.user);/如果输入的旧密码不正确变报错 CString psd; /存放查询结果 rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql); /打开查询记录 rs.GetFieldValue(_T("Pwd"),psd); /得到数据 if (psd != oldpwd)/如果密码不对则关闭 AfxMessageBox(_T("用户密码不正确!"),5,5); return; 然后在插入新密码修改原来密码 CString sql1; sql1.Format(_T("UPDATE

30、Users SET Pwd='%s'where UserName='%s'"),newpwd,ClogDlg.m_user_name);/否则就写入新密码 m_db.ExecuteSQL(sql1); AfxMessageBox(_T("密码已经修改!"),5,5); .2、产品信息管理产品类别框,产品类别编辑框产品信息编辑框.2.1:模块结构 产品类别编辑框产品类别框 增,删 主界面 改产品信息编辑框产品管理框增 删 改.2.2:程序描述1产品类别插入产品类别名称sql.Format(_T("INSERT INTO pr

31、otype (typename) VALUES('%s')"),m_protype);2产品信息 sql.Format(_T("INSERT INTO product (pname, pstyle, punit, pprice, plow, phigh, valid, alarmdays) VALUES('%s','%s','%s','%d','%d','%d','%d','%d')"),m_Pname,m_Pstyle,

32、m_Punit,m_Pprice,m_Plow,m_Phigh,m_Valid,m_Alarm);m_db.ExecuteSQL(sql);.3:库存操作管理入库信息框 入库信息编辑框出库信息框 出库信息编辑框.3.1: 模块结构入库编辑框入库框 增,删 主界面 改出库信息编辑框出库管理框增 删 改.3.1:程序描述申明记录集过程以及开启数据库过程:申明数据库对象,并申明一个记录集指向该对象 CDatabase m_db;/CDatabase(数据库类),CRecordSet(记录集类)和CRecordView(可视记录集类) try UpdateData(TRUE);/将用户输入数据读取到成

33、员变量中去 m_db.OpenEx(_T("DSN=MySQL;"),CDatabase:noOdbcDialog);/建立和数据库的连接; if(m_sitype.IsEmpty() AfxMessageBox(_T("请输入入库操作类型!"),5,5); return; if(m_pid.IsEmpty() AfxMessageBox(_T("请输入入库产品编号!"),5,5); return; if(m_price.IsEmpty() AfxMessageBox(_T("请输入入库产品单价!"),5,5);

34、return; if(m_pnum.IsEmpty() AfxMessageBox(_T("请输入入库产品数量!"),5,5); return; if(m_cid.IsEmpty() AfxMessageBox(_T("请输入客户编号!"),5,5); return; if(m_sid.IsEmpty() AfxMessageBox(_T("请输入仓库编号!"),5,5); return; if(m_empname.IsEmpty() AfxMessageBox(_T("请输入经办人!"),5,5); return; / if(m_makedate.IsEmpty() / / AfxMessageBox(_T("请输入生产日期!"),5,5); / return; / /if(m_optdate.IsEmpty() / / AfxMessageBox(_T("请输入入库日期!"),5,5); / return; / 打开查询记录,然后判断插入入库信息 CString sql; /CString data; /data=m_optdate

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论