商品库存管理系统课程设计说明书.pdf
《商品库存管理系统课程设计说明书.pdf》由会员分享,可在线阅读,更多相关《商品库存管理系统课程设计说明书.pdf(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、燕山大学课课 程程 设设 计计 说说 明明 书书题目:题目:商品库存管理系统商品库存管理系统学院学院(系):理学院系):理学院年级专业:年级专业:1313 级应用软件级应用软件学学号号:130108010020:130108010020学生姓名:杨亚南学生姓名:杨亚南指导教师指导教师:聂栋栋聂栋栋燕山大学课程设计(论文燕山大学课程设计(论文)任务书任务书院(系):理学院信息与计算科学系基层教学单位:学 号130108010020学生姓名杨亚南专业(班级)应用软件设计题目 商品库存管理系统设计技术参数设计要求1.2.3.4.以 C+面向对象的设计思想完成设计任务;详细说明设计中的各个类,尤其是各
2、类的属性及所提供的接口;要求对任务问题进行详细分析,说明程序所实现的功能;通过具体的应用程序对所实现的功能进行测试,并给出结果;1 详细说明程序的总体设计,及各个类的设计细节;2 写出各自对这次设计的心得体会;3 要求 4 篇以上参考文献;4 报告正文在 5000 字以上;1.主要包括程序的编码实现和数据库的设计2.代码总行数为 307 行,数据库中两张表工作量工作计划第一周:进行需求分析和业务流程图,实体关系图的绘制,建立逻辑模型第二周:进行类的设计和数据库的设计,编码测试1马光志等编著.C+程序设计实践教程。华中科技大学出版社,2001 年2黄维通等编著。Visual C+面向对象与可视化
3、程序设计。清华大学出版社,2000 年3刘瑞新等编著。Visual C+面向对象程序设计教程。机械工业出版社基层教学单位主任签字参考资料指导教师签字说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。年月日燕山大学课程设计评审意见表燕山大学课程设计评审意见表指导教师评语:成绩:指导教师:年月日答辩小组评语:成绩:组长:年月日课程设计总成绩:答辩小组成员签字:年月日燕 山 大 学 课 程 设 计 说 明 书目录摘要.51.引言.51。1 面向对象程序设计思想.51.2 面向对象程序设计的优点.52.总体设计.52。1 需求分析.52。2 程序流程图.52.3 实体关系模型.62.4 类
4、的设计.72.4。1 管理员类.72。4.2 商品基类.72。4。3 零售商品类.72。4。4 散称商品类.72.4。5 数据库连接类.72。5 数据库的设计.73。实现方法.83.1 类的定义.83。2 类的实现.103。3 类的应用.153.4 程序源代码.164。运行结果及分析.255。结论.266。心得体会.26参考文献.28共页第页燕 山 大 学 课 程 设 计 说 明 书摘要商品库存管理系统是商店中不可缺少的部分,本篇主要利用 C+面向对象编程的方法设计了一个商品库存管理系统,后台数据库采用轻量级数据库mysql 5。0,管理员通过账号密码登录系统后实现对库存商品的增加,删除,修改
5、,查询等功能,进而实现对商品库存的管理.1。引言面向对象程序设计与结构化程序设计考虑问题的角度不同,他的重点不是对问题本身的功能分解和各个功能的具体算法实现,而是从系统组成的角度进行分解,对问题进行自然分解,以更接近人类思维的方式建立问题域模型。1。1 面向对象程序设计思想将数据及对数据的操作方法进行封装,作为一个有机体对象。封装使得算法和数据形成了相互依存的关系.通过采用抽象、封装、继承和多态性等概念和措施,以一种模拟人类认知的方式对软件系统建模,从而构造出可重用性好、易维护的软件,提高软件的开放效率.1。2 面向对象程序设计的优点1)程序模块之间的关系更为简单,程序模块的独立性、数据的安全
6、性有良好的保障.2)通过继承与多态性,可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。2.总体设计2。1 需求分析管理员可以登录系统,登录成功后对查询所有商品的名称,编号,数量,价格以及类型;通过商品编号修改某一商品的价格;通过商品编号删除该商品;输入商品的名称,编号,数量,价格,类型进行添加;2。2 业务流程图共页第页燕 山 大 学 课 程 设 计 说 明 书输入用户名以及密码登录验证是操作选择132查询添加删除注销用户结束2.3 实体关系模型编号密码1管理员管理姓名开始否4修改0退出数量n价格商品类型名称编号共页第页燕 山 大 学 课 程 设 计 说 明 书2.4 类的设计 2
7、.4。1 管理员类管理员类静态属性有管理员姓名,管理员密码,管理员编号动态方法有登录 login();2。4.2 商品基类商品基类静态属性有商品名称,商品价格,商品数量,商品编号,商品类型动态方法有添加商品 addGoods(),更新商品价格updateGoods(),删除商品 deleteGoods(),查询所有商品 getAllGoods();其中添加商品 addGoods()为纯虚函数,因为考虑到散称和零售商品添加的时候商品价格表示不同,所以设置成纯虚函数,由各自的类重写该方法。2.4.3 零售商品类重写了添加商品 addGoods();价格设置成:元/件 2。4。4 散称商品类重写了添
8、加商品 addGoods();价格设置成:元/kg 2.4。5 数据库连接类主要负责数据库的连接,操作指针的生成.方法有构造方法 DataBase();初始化数据库连接2.5 数据库的设计数据库中总共有两个表,管理员表 adminer,商品表 goods管理员表 adminer 结构如下:adminId 管理员在数据库中的 id adminName 管理员姓名adminPasswd 密码 adminNum 管理员编号管理员表 adminer 的内容如下:共页第页燕 山 大 学 课 程 设 计 说 明 书商品表 goods 的结构如下:商品表的内容如下:3.实现方法3。1 类的定义/*mysql
9、 数据库操作类/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);/登录方法;/*商品基类*/class BaseGoodsprotected:int goodsId;/数据库自增 idstri
10、ng 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(string num);string getGoodsNum();void setGoodsPrice(string price
11、);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 goodsNum);void deleteGoods(string goodsNum);/删除商品void getAllGoods(s
12、tring type);/查看所有商品void getGoodsByCount(string type,int count);/条件查询库存数量低于count的商品;/*散装商品类*/class BulkGoods:public BaseGoods共页第页燕 山 大 学 课 程 设 计 说 明 书public:void addGoods(BaseGoods*goods);;/零售商品类/class RetailGoods:public BaseGoodspublic:void addGoods(BaseGoods goods);3。2 类的实现/*mysql 数据库操作类*/DataBase:
13、: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;/管理员类/bool Adminer:login(string user,str
14、ing 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)共页第页燕 山 大 学 课 程 设 计 说 明 书cout”resSet is null0)thisgoodsId
15、=id;int BaseGoods:getGoodsId()return goodsId;void BaseGoods:setGoodsName(string name)if(name。length()0&name.length()=20)thisgoodsName=name;string BaseGoods::getGoodsName()return goodsName;void BaseGoods::setGoodsNum(string num)if(num.length()0num。length()=5)thisgoodsNum=num;string BaseGoods::getGood
16、sNum()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)thisgoodsCount=count;string BaseGoods::getGoodsCount()re
17、turn goodsCount;void BaseGoods::setGoodsType(string type)thisgoodsType=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
18、=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)/查询成功返回非 0cout”mysql_query faile
19、d!”endl;else共页第页燕 山 大 学 课 程 设 计 说 明 书db。resSet=mysql_store_result(db.conn);/查询失败返回 NULLif(db。resSet=NULL)coutresSet is null”endl;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)db。fieldname;coutendl;while((db。row=m
20、ysql_fetch_row(db。resSet)!=NULL)for(int i=0;i 0)cout”修改”flag”条记录成功”endl;elsecout修改失败0)cout插入flag”条记录成功”endl;elsecout”插入失败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);/执行插入一条商品记录操作共
21、页第页燕 山 大 学 课 程 设 计 说 明 书int flag=mysql_affected_rows(db.conn);if(flag0)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;
22、while(flag2)/登录判断cout”请输入用户名和密码”endl;cinuserpassword;result=b.login(user,password);if(result)coutuser”欢迎使用endl;flag2=false;break;elsecout”用户名或密码错误”endl;if(result)cout”请输入操作号 1.查看所有商品 2.添加商品 3。删除商品 4.修改商品 0.退出”num;共页第页燕 山 大 学 课 程 设 计 说 明 书goodsType;switch(num)case 0:flag=false;break;case 1:goods-getA
23、llGoods(”零售);goodsgetAllGoods(”散装);break;case 2:coutgoodsPricegoodsCountbg.setGoodsName(goodsName);bg。setGoodsNum(goodsNum);bg。setGoodsPrice(goodsPrice);bg。setGoodsCount(goodsCount);bg.setGoodsType(goodsType);goodsaddGoods(goods);/向上转型 分别调用对象各自的函数break;case 3:coutgoodsNum;goods-deleteGoods(goodsNum)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 商品 库存 管理 系统 课程设计 说明书
限制150内