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

下载本文档

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

文档简介

精选优质文档-----倾情为你奉上精选优质文档-----倾情为你奉上专心---专注---专业专心---专注---专业精选优质文档-----倾情为你奉上专心---专注---专业详细设计说明书--库存管理系统开发小组第6组(软件1082):主要设计:郑远福、吴远彬、郭镇东日期:2010-5-301.导言1.1目的在概要设计说明书中,已解决了实现该系统需求的程序模块设计问题。包括如何把该系统划分成若干个模块、决定各个模块之间的接口、模块之间传递的信息,以及数据结构、模块结构的设计等。在以下的详细设计报告中将对在本阶段中对系统所做的所有详细设计进行说明。1.2范围本文档用于软件设计阶段的详细设计,它的上游(依据的基线)是《概要设计说明书》,它的下游是源程序清单及单元测试计划,并为单元测试报告提供测试的依据。该范围应覆盖《概要设计说明书》中的功能点列表,性能点列表,接口列表。1.3术语定义(略)1.4参考资料[1]《概要设计说明书》[2]《需求分析说明书》[3]程序设计规范[4]界面设计规范[5]命名规范1.5相关文档[1]源程序清单[2]单元测试计划及报告[3]《用户使用手册》版本更新记录版本号创建者创建日期维护者维护日期维护纪要V1.0郑远福、吴远彬、郭镇东2010/5/30------2.总体设计2.1需求概要为了方便管理者管理和查询仓库货物的信息,需开发一个库存管理系统用于信息管理。本系统要做到方便对货物信息的基本资料的录入,编辑,删除等功能。2.2软件结构2.2.1、登陆注册模块登录界面主界面2.2.1.1、模块结构用户用户登陆重新登陆登陆检查输入检查输入错误信息不合法错误信息身份认证身份认证系统首页系统首页2.2.1.2、程序描述(1)名称:LogDlg(注册登录模块)(2)功能:输入帐号密码即可登陆只界面申明记录集过程以及开启数据库过程:申明数据库对象,并申明一个记录集指向该对象CDatabasem_db;//CDatabase(数据库类),CRecordSet(记录集类)和CRecordView(可视记录集类)CRecordsetrs;UpdateData(TRUE);//将用户输入数据读取到成员变量中去m_db.OpenEx(_T("DSN=MySQL;"),CDatabase::noOdbcDialog);//建立和数据库的连接;rs.m_pDatabase=&m_db;//构造记录集对象指向CDatabase对象检查用户输入数据的有效性直接检查有没有输入用户名或密码,为空要提醒。if(user.IsEmpty()){AfxMessageBox(_T("请输入用户名!"),5,5);return;}if(password.IsEmpty()){AfxMessageBox(_T("请输入密码!"),5,5);return;}查询数据库,检查密码正确与否,正确则进入主界面。CStringsql;sql.Format(_T("SELECTPwdFROMUsersWHEREUserName='%s'"),user);CStringpsd;//存放查询结果rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql);//打开查询记录rs.GetFieldValue(_T("Pwd"),psd);//得到数据if(psd!=password)//如果密码不对则关闭return;else//跳入主界面{ stockDlgstock(this);stock.DoModal();}}2.2.2、系统菜单模块功能模块1:功能模块1:基本信息管理功能模块2:功能模块2:产品信息管理子系统1:子系统1:客户前台管理功能模块3:库存操作管理功能模块3:库存操作管理功能模块4:功能模块4:库存警示管理网上购物系统总体结构图网上购物系统总体结构图功能模块5:功能模块5:统计查询管理功能模块6:功能模块6:基本信息管理功能模块7:功能模块7:产品信息管理子系统2:后台管理子系统2:后台管理功能模块8:功能模块8:库存操作管理功能模块9:功能模块9:库存警示管理功能模块9:功能模块9:统计查询管理功能模块9:功能模块9:用户2.2.2.1、基本信息模块客户信息管理框客户编辑框仓库管理框仓库编辑框用户管理框用户编辑框修改密码框2.2.2.1.1:模块结构客户编辑框客户管理框客户编辑框客户管理框增,删改仓库编辑框仓库管理框主界面进入增,删仓库编辑框仓库管理框主界面改用户编辑框用户管理框用户编辑框用户管理框 增,删 改密码编辑框修改密码 增,删密码编辑框修改密码 改2.2.2.1.2:程序描述1客户信息管理刷新记录集,记录crescordset记录集有多少个 clienteditDlglienteditDlg(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("SELECTcidFROMclient"));//打开查询记录 lienteditDlg.count=0;for(lienteditDlg.rs.MoveFirst();!lienteditDlg.rs.IsEOF();lienteditDlg.rs.MoveNext())lienteditDlg.count++;for(inti=0;i<lienteditDlg.count;i++){ CStringstr;str.Format(_T("%d"),i);//将数字转换为对应的字符串发送出去"" //m_C_type.SetCurSel(i); count.InsertString(i,str);}//TODO:在此添加控件通知处理程序代码添加按钮事件代码clienteditDlgclientedit(this);clientedit.DoModal();修改按钮事件代码clienteditDlglienteditDlg(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("SELECTcid,cname,ctype,contact,caddress,postcode,phone,fax,memoFROMclient"));//打开查询记录if(count.GetCurSel()==-1){AfxMessageBox(_T("请选择要修改的记录"),5,5);return;}intnIndex=count.GetCurSel();//选中当前选择项CStringpresent;//保存当前选择项信息count.GetLBText(nIndex,present);//将当前选择项的值复制到字符串中去//char*presentchar=present.GetBuffer(present.GetLength());intpresentint;presentint=atoi((CT2A)present);for(intj=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,lienteditDlg.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.GetFieldValue(8,lienteditDlg.m_memo);//得到数据UpdateData(FALSE);lienteditDlg.m_db.Close();if(lienteditDlg.DoModal()==IDOK){ lienteditDlg.flag=2;m_datagrid.Refresh(); }删除按钮事件代码 clienteditDlglienteditDlg(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("SELECTcid,cname,ctype,contact,caddress,postcode,phone,fax,memoFROMclient"));//打开查询记录if(count.GetCurSel()==-1){AfxMessageBox(_T("请选择要删除的记录"),5,5);return;}intnIndex=count.GetCurSel();//选中当前选择项CStringpresent;//保存当前选择项信息count.GetLBText(nIndex,present);//将当前选择项的值复制到字符串中去//char*presentchar=present.GetBuffer(present.GetLength());intpresentint;presentint=atoi((CT2A)present);//CString转换成整形for(intj=1;j<=presentint;j++) lienteditDlg.rs.MoveNext(); lienteditDlg.rs.GetFieldValue(1,lienteditDlg.m_cname);//得到数据CStringsql1;sql1.Format(_T("deletefromclientwherecname='%s'"),lienteditDlg.m_cname);lienteditDlg.m_db.ExecuteSQL(sql1);AfxMessageBox(_T("已经删除指定记录"),5,5); lienteditDlg.m_db.Close();刷新记录按钮事件代码: CStringsource;source="selectcidas客户编号,cnameas客户名称,contactas联系人,cAddressas通信地址,postcodeas邮政编码,phoneas联系电话,faxas传真电话,memoas备注fromclient"; m_adodc.put_RecordSource(LPCTSTR(source));//设置数据源 m_adodc.Refresh();//更新查询//CDatabasem_db;//CDatabase(数据库类),CRecordSet(记录集类)和CRecordView(可视记录集类)//CRecordsetrs;建立数据库对象,并用记录集指向该对象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("请输入客户类型!"),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("请输入联系电话!"),5,5);return; } if(M_fax.IsEmpty()) { AfxMessageBox(_T("请输入传真电话!"),5,5);return; } if(m_memo.IsEmpty()) { AfxMessageBox(_T("请输入备注!"),5,5);return; }搜查客户姓名,判断有无CStringsql;sql.Format(_T("SELECT*FROMclientWHEREcname='%s'"),m_cname);CStringpsd;//存放查询结果rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql);//打开查询记录根据flag的值来判断是添加记录还是修改记录if(flag==0){if(!rs.IsEOF())//如果存在该客户{AfxMessageBox(_T("当前客户已经存在,请选择其他的客户单位!"),5,5);return;}else{ CStringsql1;sql1.Format(_T("INSERTINTOClient(Cname,Ctype,Contact,cAddress,Postcode,phone,Fax,Memo)VALUES('%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{CStringsql1;sql1.Format(_T("UpdateclientsetCtype='%s',Contact='%s',cAddress='%s',Postcode='%s',phone='%s',Fax='%s',Memo='%s'whereCname='%s'"),m_ctype,m_contact,m_address,m_postcode,m_aphone,M_fax,m_memo,m_cname);m_db.ExecuteSQL(sql1);AfxMessageBox(_T("客户信息已经修改!"),5,5);}}2仓库信息管理基本步骤与上面一样,只是SQL语句不一样。sql.Format(_T("INSERTINTOstorehouse(sname,memo)VALUES('%s','%s')"),m_storehousename,m_storehousememo);m_db.ExecuteSQL(sql);AfxMessageBox(_T("信息已经写入!"),5,5);3用户信息管理对话框申明记录集过程以及开启数据库过程:申明数据库对象,并申明一个记录集指向该对象UpdateData(TRUE);CDatabasem_db;//CDatabase(数据库类),CRecordSet(记录集类)和CRecordView(可视记录集类)CRecordsetrs; inttype;UpdateData(TRUE);//将用户输入数据读取到成员变量中去m_db.OpenEx(_T("DSN=MySQL;"),CDatabase::noOdbcDialog);//建立和数据库的连接;rs.m_pDatabase=&m_db;//构造记录集对象指向CDatabase对象检查用户输入数据的有效性直接检查有没有输入用户名,为空要提醒。if(m_UserName.IsEmpty()){AfxMessageBox(_T("请输入用户名!"),5,5);return;}打开查询记录,然后判断该用户是系统用户还是普通用户,并初始化密码为CStringsql;sql.Format(_T("SELECT*FROMUsersWHEREUserName='%s'"),m_UserName);CStringpsd;//存放查询结果rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql);//打开查询记录if(!rs.IsEOF()){AfxMessageBox(_T("当前用户已经存在,请选择其他的用户名!"),5,5);return;}if(m_user_type=="系统用户")type=1;else type=2;CStringsql2;CStringstr;inta=;str.Format(_T("%d"),a);//将数字转换为对应的字符串发送出去""sql2.Format(_T("insertintousers(username,pwd,usertype)values('%s','%s','%d')"),m_UserName,str,type);//初始化密码都设置为,以后自行修改m_db.ExecuteSQL(sql2);AfxMessageBox(_T("用户添加成功,初始密码为!"),5,5);}4密码修改首先判断输入的密码是否正确ClogDlgClogDlg(this);//定义ClogDlg对象为了获得当前用户的用户名CStringsql;sql.Format(_T("SELECTPwdFROMUsersWHEREUserName='%s'"),ClogDlg.user);//如果输入的旧密码不正确变报错CStringpsd;//存放查询结果rs.Open(AFX_DB_USE_DEFAULT_TYPE,sql);//打开查询记录rs.GetFieldValue(_T("Pwd"),psd);//得到数据if(psd!=oldpwd)//如果密码不对则关闭{AfxMessageBox(_T("用户密码不正确!"),5,5);return;}然后在插入新密码修改原来密码CStringsql1;sql1.Format(_T("UPDATEUsersSETPwd='%s'whereUserName='%s'"),newpwd,ClogDlg.m_user_name);//否则就写入新密码m_db.ExecuteSQL(sql1);AfxMessageBox(_T("密码已经修改!"),5,5);}2.2.2.2、产品信息管理产品类别框,产品类别编辑框产品信息编辑框2.2.2.2.1:模块结构产品类别编辑框产品类别框增,删产品类别编辑框产品类别框主界面改主界面产品信息编辑框产品管理框 增删产品信息编辑框产品管理框 改 2.2.2.2.2:程序描述1产品类别插入产品类别名称sql.Format(_T("INSERTINTOprotype(typename)VALUES('%s')"),m_protype);2产品信息sql.Format(_T("INSERTINTOproduct(pname,pstyle,punit,pprice,plow,phigh,valid,alarmdays)VALUES('%s','%s','%s','%d','%d','%d','%d','%d')"),m_Pname,m_Pstyle,m_Punit,m_Pprice,m_Plow,m_Phigh,m_Valid,m_Alarm);m_db.ExecuteSQL(sql);2.2.2.3:库存操作管理入库信息框入库信息编辑框出库信息框出库信息编辑框2.2.2.3.1:模块结构入库编辑框入库框增,删入库编辑框入库框主界面改主界面出库信息编辑框出库管理框 增删出库信息编辑框出库管理框 改2.2.2.3.1:程序描述申明记录集过程以及开启数据库过程:申明数据库对象,并申明一个记录集指向该对象CDatabasem_db;//CDatabase(数据库类),CRecordSet(记录集类)和CRecordView(可视记录集类)try{UpdateData(TRUE);//将用户输入数据读取到成员变量中去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);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;//}打开查询记录,然后判断插入入库信息CStringsql;//CStringdata;//data=m_optdate.Format();sql.Format(_T("INSERTINTOstorein(sitype,pid,maked

温馨提示

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

评论

0/150

提交评论