商品库存管理系统课程设计说明书.doc

上传人:教**** 文档编号:86254937 上传时间:2023-04-14 格式:DOC 页数:28 大小:457.50KB
返回 下载 相关 举报
商品库存管理系统课程设计说明书.doc_第1页
第1页 / 共28页
商品库存管理系统课程设计说明书.doc_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《商品库存管理系统课程设计说明书.doc》由会员分享,可在线阅读,更多相关《商品库存管理系统课程设计说明书.doc(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、大学课 程 设 计 说 明 书题目: 商品库存管理系统 学院(系):理学院 年级专业:应用软件 学 号: 学生姓名: 指导教师: 大学课程设计(论文)任务书院(系): 理学院信息与计算科学系 基层教学单位: 学 号学生姓名专业(班级)应用软件设计题目 商品库存管理系统设计技术参数1. 以C+面向对象的设计思想完成设计任务;2. 详细说明设计中的各个类,尤其是各类的属性及所提供的接口;3. 要求对任务问题进行详细分析,说明程序所实现的功能;4. 通过具体的应用程序对所实现的功能进行测试,并给出结果;设计要求1 详细说明程序的总体设计,及各个类的设计细节;2 写出各自对这次设计的心得体会;3 要求

2、4篇以上参考文献;4 报告正文在5000字以上;工作量1. 主要包括程序的编码实现和数据库的设计2. 代码总行数为307行,数据库中两张表工作计划第一周:进行需求分析和业务流程图,实体关系图的绘制,建立逻辑模型第二周:进行类的设计和数据库的设计,编码测试参考资料1马光志等编著. C+程序设计实践教程. 华中科技大学出版社,2001年2黄维通等编著.Visual C+ 面向对象与可视化程序设计.清华大学出版社,2000年3刘瑞新等编著. Visual C+ 面向对象程序设计教程. 机械工业出版社指导教师签字基层教学单位主任签字说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。年 月

3、日 大学课程设计评审意见表指导教师评语:成绩: 指导教师: 年 月 日答辩小组评语:成绩: 组长: 年 月 日课程设计总成绩:答辩小组成员签字:年 月 日 燕 山 大 学 课 程 设 计 说 明 书目 录摘要51. 引言51.1 面向对象程序设计思想51.2 面向对象程序设计的优点52. 总体设计52.1 需求分析52.2 程序流程图62.3 实体-关系模型62.4 类的设计7 2.4.1 管理员类7 2.4.2 商品基类7 2.4.3 零售商品类7 2.4.4 散称商品类7 2.4.5 数据库连接类72.5 数据库的设计73. 实现方法83.1 类的定义83.2 类的实现103.3 类的应用

4、153.4 程序源代码164. 运行结果及分析255. 结论266. 心得体会26参考文献28摘要 商品库存管理系统是商店中不可缺少的部分,本篇主要利用C+面向对象编程的方法设计了一个商品库存管理系统,后台数据库采用轻量级数据库mysql 5.0,管理员通过账号密码登录系统后实现对库存商品的增加,删除,修改,查询等功能,进而实现对商品库存的管理。1. 引言面向对象程序设计与结构化程序设计考虑问题的角度不同,他的重点不是对问题本身的功能分解和各个功能的具体算法实现,而是从系统组成的角度进行分解,对问题进行自然分解,以更接近人类思维的方式建立问题域模型。1.1 面向对象程序设计思想将数据及对数据的

5、操作方法进行封装,作为一个有机体对象。封装使得算法和数据形成了相互依存的关系。通过采用抽象、封装、继承和多态性等概念和措施,以一种模拟人类认知的方式对软件系统建模,从而构造出可重用性好、易维护的软件,提高软件的开放效率。1.2 面向对象程序设计的优点1) 程序模块之间的关系更为简单,程序模块的独立性、数据的安全性有良好的保障。2) 通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。2. 总体设计2.1 需求分析管理员可以登录系统,登录成功后对查询所有商品的名称,编号,数量,价格以及类型;通过商品编号修改某一商品的价格;通过商品编号删除该商品;输入商品的名称,编号,数

6、量,价格,类型进行添加;2.2 业务流程图开始输入用户名以及密码登录验证添加删除修改查询退出操作选择注销用户结束12043否是2.3 实体-关系模型商品管理管理员姓名编号密码名称编号数量价格类型1n2.4 类的设计 2.4.1 管理员类管理员类静态属性有管理员姓名,管理员密码,管理员编号动态方法有登录login(); 2.4.2 商品基类商品基类静态属性有商品名称,商品价格,商品数量,商品编号,商品类型动态方法有添加商品addGoods(),更新商品价格updateGoods(),删除商品 deleteGoods(),查询所有商品 getAllGoods();其中添加商品addGoods()为

7、纯虚函数,因为考虑到散称和零售商品添加的时候商品价格表示不同,所以设置成纯虚函数,由各自的类重写该方法。 2.4.3 零售商品类重写了添加商品addGoods();价格设置成:元/件 2.4.4 散称商品类重写了添加商品addGoods();价格设置成:元/kg 2.4.5 数据库连接类主要负责数据库的连接,操作指针的生成。方法有构造方法DataBase();初始化数据库连接2.5 数据库的设计数据库中总共有两个表,管理员表adminer,商品表goods管理员表adminer结构如下:adminId 管理员在数据库中的id adminName 管理员姓名 adminPasswd 密码 adm

8、inNum 管理员编号管理员表adminer的内容如下:商品表goods的结构如下:商品表的内容如下:3. 实现方法3.1 类的定义/* mysql数据库操作类*/class DataBasepublic:DataBase();MYSQL *conn;MYSQL_RES *resSet;MYSQL_ROW row;MYSQL_FIELD *field;unsigned int ret,numFields;MYSQL* getConnection();/* 管理员类*/class Adminerpublic:bool login(string user,string pwd); /登录方法;/*

9、 商品基类*/class BaseGoodsprotected:int goodsId; /数据库自增id string goodsName; /商品名称string goodsNum; /编号string goodsPrice;/价格string goodsCount;/剩余数量string goodsType; /类型public:/基类属性的set get函数void setGoodsId(int id);int getGoodsId();void setGoodsName(string name);string getGoodsName();void setGoodsNum(strin

10、g num);string getGoodsNum();void setGoodsPrice(string price);string getGoodsPrice();void setGoodsCount(string count);string getGoodsCount();void setGoodsType(string type);string getGoodsType(); /数据库操作函数virtual void addGoods(BaseGoods* goods)=0; /纯虚函数-添加商品void updateGoods(string goodsName,string good

11、sNum);void deleteGoods(string goodsNum); /删除商品void getAllGoods(string type); /查看所有商品void getGoodsByCount(string type,int count); /条件查询库存数量低于count的商品;/* 散装商品类*/class BulkGoods:public BaseGoodspublic:void addGoods(BaseGoods* goods);/* 零售商品类*/class RetailGoods:public BaseGoodspublic:void addGoods(BaseG

12、oods* goods);3.2 类的实现/* mysql数据库操作类*/DataBase:DataBase()conn=mysql_init(NULL); if(conn=NULL)cout数据库初始化连接失败endl;ret=mysql_options(conn,MYSQL_SET_CHARSET_NAME,gb2312); /设置字符编码if(ret!=0)cout数据库初始化设置失败endl;if(mysql_real_connect(conn,localhost,root,yyn1995,goodsManage,0,NULL,0)=NULL)cout数据库连接失败!endl;/* 管

13、理员类*/bool Adminer:login(string user,string pwd) DataBase db;string sql=SELECT adminPasswd FROM adminer where adminNum=+user+;const char *c_sql=sql.c_str();if(mysql_query(db.conn, c_sql) /查询成功返回非0cout查询失败endl;elsedb.resSet = mysql_store_result(db.conn); /查询失败返回NULLif(db.resSet=NULL)coutresSet is null

14、0)this-goodsId=id;int BaseGoods:getGoodsId()return goodsId;void BaseGoods:setGoodsName(string name)if(name.length()0&name.length()goodsName=name;string BaseGoods:getGoodsName()return goodsName;void BaseGoods:setGoodsNum(string num) if(num.length()0&num.length()goodsNum=num;string BaseGoods:getGoodsN

15、um()return goodsNum;void BaseGoods:setGoodsPrice(string price)if(price.length()0)this-goodsPrice=price;string BaseGoods:getGoodsPrice()return goodsPrice;void BaseGoods:setGoodsCount(string count)if(count.length()0)this-goodsCount=count;string BaseGoods:getGoodsCount()return goodsCount;void BaseGoods

16、:setGoodsType(string type)this-goodsType=type;string BaseGoods:getGoodsType()return goodsType;void BaseGoods:deleteGoods(string goodsNum) /删除商品DataBase db;string sql=delete from goods where 编号=+goodsNum+;const char *c_sql=sql.c_str();mysql_query(db.conn,c_sql); int flag=mysql_affected_rows(db.conn);

17、if(flag0) cout删除flag条记录成功endl;elsecout删除失败endl;mysql_close(db.conn);void BaseGoods:getAllGoods(string type) /按类型查询商品DataBase db;string sql=SELECT * FROM goods where 类型=+type+;const char *c_sql=sql.c_str();if(mysql_query(db.conn, c_sql) /查询成功返回非0 coutmysql_query failed!endl;elsedb.resSet = mysql_stor

18、e_result(db.conn); /查询失败返回NULLif(db.resSet=NULL)coutresSet is nullendl;elsedb.numFields = mysql_num_fields(db.resSet);for(int i=0; i db.numFields; i+)db.field = mysql_fetch_field_direct(db.resSet, i);coutsetw(10)name;coutendl;while (db.row = mysql_fetch_row(db.resSet) != NULL)for (int i = 0; i mysql

19、_num_fields(db.resSet); i +)coutsetw(10)db.rowi; cout0) cout修改flag条记录成功endl;elsecout修改失败getGoodsName();string num=goods-getGoodsNum();string count=goods-getGoodsCount();count.append(kg);string price=goods-getGoodsPrice();price.append(元/kg);string type=goods-getGoodsType();string sql=insert into good

20、s(名称,编号,价格,数量,类型)values(+name+,+num+,+price+,+count+,+type+);const char *c_sql=sql.c_str();mysql_query(db.conn,c_sql); /执行插入一条商品记录操作int flag=mysql_affected_rows(db.conn);if(flag0) cout插入flag条记录成功endl;elsecout插入失败getGoodsName();string num=goods-getGoodsNum();string count=goods-getGoodsCount();count.a

21、ppend(件);string price=goods-getGoodsPrice();price.append(元/件);string type=goods-getGoodsType();string sql=insert into goods(名称,编号,价格,数量,类型)values(+name+,+num+,+price+,+count+,+type+);const char *c_sql=sql.c_str();mysql_query(db.conn,c_sql); /执行插入一条商品记录操作int flag=mysql_affected_rows(db.conn);if(flag0

22、) cout插入flag条记录成功endl;elsecout插入失败endl;mysql_close(db.conn);3.3 类的应用void main()cout -商品库存管理-endl;bool flag=true;bool flag2=true;while(flag)DataBase a;RetailGoods bg;BaseGoods* goods=&bg;Adminer b;bool result;string user,password;while(flag2) /登录判断cout请输入用户名和密码userpassword;result=b.login(user,passwor

23、d);if(result)coutuser欢迎使用endl;flag2=false;break;elsecout用户名或密码错误endl;if(result)cout请输入操作号 1.查看所有商品 2.添加商品 3.删除商品 4.修改商品 0.退出num;switch(num)case 0:flag=false;break;case 1:goods-getAllGoods(零售);goods-getAllGoods(散装);break;case 2:cout请输入商品名称,编号,价格,数量,类型goodsNamegoodsNumgoodsPricegoodsCountgoodsType;bg.

24、setGoodsName(goodsName);bg.setGoodsNum(goodsNum);bg.setGoodsPrice(goodsPrice);bg.setGoodsCount(goodsCount);bg.setGoodsType(goodsType);goods-addGoods(goods); /向上转型 分别调用对象各自的函数break;case 3:cout请输入要删除的商品编号goodsNum;goods-deleteGoods(goodsNum);break;case 4:cout请输入商品价格,商品编号goodsPricegoodsNum;goods-updateG

25、oods(goodsPrice,goodsNum);break;3.4 程序代码#include #include #include #include #include #include #include #pragma comment(lib, libmysql.lib)using namespace std;/* mysql数据库操作类*/class DataBasepublic:DataBase();MYSQL *conn;MYSQL_RES *resSet;MYSQL_ROW row;MYSQL_FIELD *field;unsigned int ret,numFields;MYSQL

26、* getConnection();DataBase:DataBase()conn=mysql_init(NULL); if(conn=NULL)cout数据库初始化连接失败endl;ret=mysql_options(conn,MYSQL_SET_CHARSET_NAME,gb2312); /设置字符编码if(ret!=0)cout数据库初始化设置失败endl;if(mysql_real_connect(conn,localhost,root,yyn1995,goodsManage,0,NULL,0)=NULL)cout数据库连接失败!endl;/* 管理员类*/class Adminerp

27、ublic:bool login(string user,string pwd); /登录方法;bool Adminer:login(string user,string pwd) DataBase db;string sql=SELECT adminPasswd FROM adminer where adminNum=+user+;const char *c_sql=sql.c_str();if(mysql_query(db.conn, c_sql) /查询成功返回非0cout查询失败endl;elsedb.resSet = mysql_store_result(db.conn); /查询失

28、败返回NULLif(db.resSet=NULL)coutresSet is null0)this-goodsId=id;int BaseGoods:getGoodsId()return goodsId;void BaseGoods:setGoodsName(string name)if(name.length()0&name.length()goodsName=name;string BaseGoods:getGoodsName()return goodsName;void BaseGoods:setGoodsNum(string num) if(num.length()0&num.leng

29、th()goodsNum=num;string BaseGoods:getGoodsNum()return goodsNum;void BaseGoods:setGoodsPrice(string price)if(price.length()0)this-goodsPrice=price;string BaseGoods:getGoodsPrice()return goodsPrice;void BaseGoods:setGoodsCount(string count)if(count.length()0)this-goodsCount=count;string BaseGoods:getG

30、oodsCount()return goodsCount;void BaseGoods:setGoodsType(string type)this-goodsType=type;string BaseGoods:getGoodsType()return goodsType;void BaseGoods:deleteGoods(string goodsNum) /删除商品DataBase db;string sql=delete from goods where 编号=+goodsNum+;const char *c_sql=sql.c_str();mysql_query(db.conn,c_s

31、ql); int flag=mysql_affected_rows(db.conn);if(flag0) cout删除flag条记录成功endl;elsecout删除失败endl;mysql_close(db.conn);void BaseGoods:getAllGoods(string type) /按类型查询商品DataBase db;string sql=SELECT * FROM goods where 类型=+type+;const char *c_sql=sql.c_str();if(mysql_query(db.conn, c_sql) /查询成功返回非0 coutmysql_q

32、uery failed!endl;elsedb.resSet = mysql_store_result(db.conn); /查询失败返回NULLif(db.resSet=NULL)coutresSet is nullendl;elsedb.numFields = mysql_num_fields(db.resSet);for(int i=0; i db.numFields; i+)db.field = mysql_fetch_field_direct(db.resSet, i);coutsetw(10)name;coutendl;while (db.row = mysql_fetch_row(db.resSet) != NULL)for (int i = 0; i mysql_num_fields(db.resSet); i +)coutsetw(10)db.row

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁