资源描述
服装销售管理系统说明书
46
2020年5月29日
文档仅供参考
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
秋季学期
面向对象 课程设计
题 目: 服装销售管理系统
专业班级: 10级计算机科学与技术1班
姓 名: 孔祥熙
学 号: 10240108
指导教师: 年福忠
成 绩:
目 录
中文摘要 2
序 言 3
1.课程设计概述 目的与意义 4
2.程序说明 5
3.可行性分析 6
4.函数的调用关系图 7
5. 调试分析 9
6. 测试结果 10
7. 设计总结 14
8. 参考文献 15
致 谢 16
附录:源程序(带注释) 17
中文摘要
本文介绍了小型服装管理系统的设计与实现。经过对服装基本功能的分析,该程序实现了对小型服装管理的基本操作。设计要求主要是产品入库、出库、查找及显示服装量等最基本功能操作。在课程设计过程中,对问题的所采用的数据结构和算法分析,及程序设计语言采用VC,程序运行的平台是WindowsXP(visual C++6.0),逐步对基本要求进行分布实现,在设计中采用单链表和文件对录入的基本数据进行存储,最终对产品进行的基本操作如产品入库、出库及查找都基本以实现。该小型服装管理系统的界面可视化程度较高,操作者和使用者使用较为方便。
关键字:服装管理 ;统计分析;存贮
序言
随着计算机技术的飞速发展,以及它在各行各业的广泛应用,给人们的生活及工作带来了很大的便捷。如今人们消费水平的显著提高,人们需求的产品量逐步在增加,需求的产品也逐步趋向多元化,如何来管理这些物品就成企业级公司服装管理者所解决的问题,其中主要面临的问题主要有如何快速准确的对服装的物品进行入库﹑出库﹑分类及查找,从整体上提高服装管理的效率。如今市场经济的竞争变的越来越激烈,如何解决她们的产品的管理问题,提高企业管理水平,显然也成了在竞争中立足的一部分。如今必须利用先进的服装管理手段,提高企业及公司的管理水平,成为了服装发展的关键元素。我们现在处在信息科学的时代,面对时代的机遇和挑战,利用科技手段解决和提高现在企业及公司的管理水平是企业的一条行之有效的途径。然而计算机对企业及公司的管理还存在着很多不足,但经过技术的不断发展改进,计算机的管理所发挥的作用挥越来越大。虽然计算机管理并不是服装管理走向成功的关键因素,但它能够最大限度地发挥准确,快捷,高效等作用,对服装的管理提供强有力的支持。因此,对于企业采用先进全新的计算机网络技术和服装管理系统,已成为提高企业整体管理效率,改进服务水平的重要手段之一。在很大程度上,企业服装管理方面技术化和信息化已成为现代化公司服装的重要标志。随着计算机技术广泛的应用,同时有在推动计算机技术的快速发展。
1.课程设计概述
课程设计的目的:
企业的服装管理往往是很复杂、很繁琐的。由于所掌握的物资种类众多,出入库、管理、供销商的渠道各有差异,各个企业之间的管理体制不尽相同,因此仓库的服装管理必须编制一套服装管理系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案。
根据当前的企业管理体制,一般的服装管理系统,总是根据所掌握的物资类别,相应分成几个模块来进行商品的出入库,服装盘点,以及对供销商的详细记录。为了加强关键物资、设备的管理,要定期掌握其储备,消耗情况,根据计划进行进货,使得各商品不会缺货,使物资设备的储备最佳。
因此有必要开发一套服装管理系统来提高企业工作效率, 而所使用的这套服装管理系统是企业生产经营管理活动中的核心,此系统必须能够用来控制合理的服装费用、适时适量的服装数量,使企业生产活动效率最大化。经过对这些情况的仔细调查,我们开发了下面的仓库服装管理系统。
课程设计的意义:
服装管理的主要目标就是经过对仓库所有入出库活动的管理及对服装数据有效的统计和分析,以保证企业生产中畅通的物流,使决策人员及早发现问题,采取相应措施,同时,经过周期性的仓库盘点,及时补救管理中的漏洞,使服装管理系统实时地反映企业中各个仓库的现时情况,为各类管理人员从不同侧面提供所需信息,以便协调企业经营收到更大效益,服装管理系统是协调企业生产经营的基础,其数据的准确性、方便的查询、有效的分析是整个计算机管理系统顺利运行的关键。对于每个企业来说,随着企业规模的不断扩大,所生产产品的种类也会不断地更新与发展,有关产品的各种信息量也会成倍增长。如何有效地管理服装产品,对这些企业来说是非常重要的,服装管理的重点是销售信息能否及时反馈,从而确保企业运行效益。如何管理这些信息数据,是一项复杂的系统工程,充分考验着仓库管理员的工作能力,工作量的繁重是可想而知的,因此这就需要由服装管理系统来提高服装管理工作的效率,这对信息的规范管理、科学统计和快速查询,减少管理方面的工作量,同时对于调动广大员工的工作积极性,提高企业的生产效率,都具有十分重要的现实意义。
2 程序说明
本系统是一个针对企业商品的仓库管理的软件,我们需要做到的是让企业能够更好的对旗下的仓库进行记录,汇总查询,以及掌握商品的供销商的信息记录。
l 原始产品入库:显示入库商品信息
l 新购成品入库:显示新购产品信息
l 修改产品信息:对商品进行修改操作
l 现实产品情况:商品的现实情况信息
l 查询产品信息:查询所有商品信息,并显示商品总数等
l 打开文件:显示所有商家信息,并显示商品总数等
l 保存文件:保存所有的入库信息
l 退出系统:退出程序系统
服装管理系统
访问函数:
operation
原始产品入库
新购产品入库
修改产品信息
现实服装情况
查询产品信息
产品出库
打开文件
保存文件
刷新屏幕
退出系统
图1.1
3 可行性分析
技术可行性
现在的社会计算机普及应用,各种软件应运而生,不论是一般的应用软件,还是开发软件,都能在一般操作系统(Windows 以上的版本或相应的Windows NT版本)上工作,当然也包括Visual C++ 和SQL Server ,因此用这两种开发平台开发出来的应用软件操作系统在Windows 以上的版本或相应的Windows NT版本系统上也是能够运行的。而且现在计算机技术已经很成熟,设计人员不用自己编写繁琐的代码,很多都是库类中已经存在的,编程人员在需要使用的时候只要调用就能够了。因此综上所述,在技术方面考虑是可行的。
经济可行性
虽然开发该软件是需要一定成本的,比如人力和物力,可是经过该软件的使用能够减少企业管理费用和人力开支,而其它一些繁琐的事物都经过新系统来加以分析解决,不但节省了大量的时间,还为企业的各项决策提供了宝贵的资料,为企业带来的是更大的经济效益。从根本上提高了超市的经济效益,因此从经济上完全是可行的。
操作可行性
本系统采用基于Windows的图形用户界面,因此不必具备计算机的专业技能,只要有一般的计算机知识的人员就能够轻松上手。而整个超市库存管理系统采用友好的交互界面,简洁明了,不需要对数据库进行深入的了解。
由此,该系统的操作是可行的,有必要开发该系统。
综合以上三方面,该系统具有很高的开发可行性,无论是从技术上或者经济上还是操作上。
4 函数的调用关系图
产品入库流程图 :
产品入库
原始产品入库
新购产品入库
继续入库
退出入库
图1.2
产品出库流程图:
产品出库
按总量删除
按名称删除
按时间删除
退出
图1.3
服装销管理系统
Main()
操作函数
Operation()
原品入库
新品入库
产品查询
Query ()
输每个产品信息
printinfor()
输所需产品
void Show()
产品出库
Search()
Creatlist()
Add()
Remove ()
服装显示
图1.4
5 调试分析
调试中遇到的问题及对问题的解决方法:
在我调试过程中遇到了不少的问题,主要是对语法正确的定义,比如,分号的缺失、多加及中英文符号的转换。函数合适的返回类型,还有是函数库的说明,对文件的打开与保存,指针的某些操作。对语法错误的不断改正,和老师同学的帮助,经过长时间的调试,经过了编译。对各个模块的函数进行编译并调试经过运行,但将它们全部写到一块儿,问题非常的多,其中使我最为困惑的是函数的返回类型,经过不懈努力终于经过的编译,可是录入数据,没有数据的输出。经过查课本,查资料,还有在同学老师的热心帮助下完成了程序的调试。而且基本是满足了课题的要求。经过本次的课程设计,我体会到了,调试程序需要耐心,冷静分析每一个问题,对书本基础知识不但要了解,还要会用。
6 测试结果
6.1输入商品C: 图2.1
6.2显示服装量D: 图2.2
6.3:输入新A: 图2.3
6.4:查询Q: 图2.4
6.5:产品出库R: 图2.5
6.6:保存文件S: 图2.6
6.7:打开文件O; 图2.7
6.8:显示总服装D: 图2.8
7 设计总结
在这次算法与数据结构和C++语言程序设计实习中,我的确遇到了很多困难。首先,对以前基本知识的遗忘、生疏,以及以前学习中遗留下的难点——指针和文件。在以前学C语言的时候,指针的基本操作是我最困惑的,虽然每次遇到相关的问题,查书和资料解决了较简单的问题,但从根本上没有理解指针的精髓,更别说现在能够熟练的应用了。
在这三周的课程设计中,我的课题很多地方要用到链表和文件。特别是对产品的入库、出库操作,经过请教老师同学解决了相关的问题。最终,设计完成了小型服装管理系统,它实现了最基本的要求,服装产品的入库、查找、出库、保存及产品显示等基本操作。但对于一些较高的要求未能实现,比如,服装产品的统计。它同时也基本满足了界面友好,便于操作,利于操作使用。从而能够对小型服装进行快速,高效率的管理。
经过本次课程设计,使我的基础知识更加牢固,对以前难的知识不再畏惧,初步掌握了把基础知识与实际问题能够联系起来,运用课本中理论知识去解决实际问题,这样才达到了这门课的实际要求。在本次课设的实习中,我学到了很多东西,学到了在课堂中学习不到的知识,就是思考和解决实际问题的方法。在以后的课设中我会充分利用它来提高自己的水平。
8 参考文献
[1]初小璐.完全掌握SQL Server [M] 机械工业出版社,
[2]Jeraod V.Post.数据库管理系统(英文版.第三版)[美]清华大学出版社, .1
[3]张海藩.软件工程导论[M].北京:清华大学出版社,1998.1
[4]谢希仁.计算机网络(第二版)[M].北京:电子工业出版社, .6
[5]戴志诚,赵国峰.JSP信息化系统建设案例[M].北京:人民邮电出版社, .12
[6]成晓静,毕靖.网页设计三剑客完全学习手册[M].北京:中国电力出版社, .11
[7]赵强.精通JSP编程[M].北京:电子工业出版社, .3
[8]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社, .2
[9]张海藩,李劲,谢兆阳.SQL Server 数据库设计与系统管理[M].北京:清华大学出版社, .9
[10]刘禾,蔡锋.Web数据库假设技巧[M].北京:科技技术出版社,1999.4
[11]徐建波. Internet与Web设计教程[M].北京:中国矿业大学出版社, .12
致谢
在此向所有在这次课程设计中给予我关心、支持和帮助的老师、朋友们,致以最诚挚的谢意,在整个的设计过程中,很多老师、同学们都给予我们莫大的帮助。我深知,只有不断的拼搏进取、不断的前进,才是对大家最好的感谢。老师的严谨的工作作风、亲切的待人方式,渊博的专业知识都给我留下了深刻的印象,老师细心的讲解和指点使我从课程设计之中受益匪浅,使我从实际的算法实现中更好地掌握了理论知识。她深厚的理论水平都使我受益匪浅,无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高,这对于我以后的工作和学习都是一种巨大的帮助!
最后还要感谢我的同学们,感谢她们耐心的讲解和细心的指导,也感谢她们给我提出那么多的解决方案和指导性意见,帮我顺利完成我的课程设计和论文!
附录:源程序(带注释)
# include <fstream.h> //包含文件读写
# include <iostream.h>
# include <string.h> //包含strcmp()字符是否相等
#include <stdlib.h> //包含system("cls")清屏
#define MAX 20 //下列字符数组的大小
struct Date{//日期
char year[MAX];//年
char month[MAX];//月
char day[MAX];//日
};
struct Goods{//物品信息
char name[MAX];//商品名称
char price[MAX];//商品价格
char number[MAX];//商品数量
char cost[MAX];//商品总价
char kind[MAX];//商品的种类
Date indate;//购进日期
Goods * next;//下一个结点
};
class Cangkuguanli { //类定义与实现
private:
int length;//客户数量
Goods * head;//列表的头结点
Goods * current;//当前结点
public:
Cangkuguanli()//构造函数
{
head=new Goods;//创立头结点
current=head;
current->next=NULL;
length=0;//长度为0
}
void Creatlist()//创立新的列表
{
char g='Y';
int s=0;
length=0;//初始长度为0;
current=head;
do {
Goods * temp=new Goods ;//构建新结点信息
length++; //每加一个结点 链表长度增1
temp->next=NULL;
cout<<" 请输入商品名称: ";
cin>>temp->name;
cout<<" 请输入单价 : ";
cin>>temp->price;
cout<<" 请输入商品数量: ";
cin>>temp->number;
cout<<" 请输入总费用 : ";
cin>>temp->cost;
cout<<" 请输入日期 (**** ** **) : ";
cin>>temp->indate.year>>temp->indate.month>>temp->indate.day;
cout<<" 请输入的种类: ";
cin>>temp->kind;
if(head==NULL){head=temp;current=temp;} //head头指针,current尾指针
else {current->next=temp,current=temp;}
do{
cout<<" next ? (Y N) "; //是否继续存入新产品
cin>>g;
if(g!='Y'&&g!='N')
{
cout<<"\n error !!!!\n ";
}
}while(g!='Y'&&g!='N');
}while(g=='Y');//判断是否继续插入新结点
}
void Open ()//打开一个数据文件,并建立链表关联 和文件中的记录对应
{
char fname[20];//文件名称
cout<<" input the name of the file \n";
cin>>fname; //输入要打开的文件名
ifstream infile (fname);//创立输入文件流
infile>>length;
cout<<"\n length is: "<<length<<endl;
//if(length==0)cout<<" 数据为空\n";
for(int i=0;i<length;i++)//创立新的结点保存文件的数据
{
Goods * t=new Goods ;
t->next=NULL;
infile>>t->name>>t->price>>t->number>>t->cost>>t->kind>>
t->indate.year>>t->indate.month>>t->indate.day;
if(head==NULL){head=t;current=t;}//跟上面的链表创立相似
else {current->next=t,current=t;}
}
infile.close();//关闭文件流
}//open
void Save ()//保存链表信息到文件
{
if(length==0)
{
cout<<" 列表为空 不需存盘 \n";
return ;
}
char fname[20];//文件名称
cout<<" input the name of the file you want to put data in \n";
cin>>fname;
ofstream outfile(fname);//创立输出文件流
Goods * temp=head->next;
outfile<<length<<endl;//先写入文件的长度
while (temp!=NULL)//把所有结点写入到文件fname
{
outfile<<temp->name<<" "<<temp->price<<" "<<temp->number<<" "<<temp->cost<<" "<<temp->kind
<< " "<<temp->indate.year<<" "<<temp->indate.month<<" "<<temp->indate.day<<endl; //写入每个结点信息
temp=temp->next;
}
outfile.close();//关闭文件流
}
void printinfor( Goods * current)//输出一个结点的信息到字符界面
{
if(current==NULL)
{
cout<<"\n元素为空!!! \n ";
return;
}
cout.fill(' ');
cout<<current->name;
cout.width(8);
cout.width(8);
cout<<current->price;
cout.width(8);
cout<<current->number;
cout.width(8);
cout<<current->cost; //就是给current->cost10个字符输出,不够往前面加‘ ’空格
cout.width(10);
cout<<current->kind;
cout.width(10);
cout<< current->indate.year<<"."<<current->indate.month<<"."<<current->indate.day;
cout<<endl;
}// printinfor
void Show()//输出所有结点信息到字符界面
{
current=head->next;
if(current==NULL)
{
cout<<"列表为空 \n";
return ;
}
cout.fill(' ');
cout.width(2);
cout<<"名称";
cout.width(8);
cout<<"价格";
cout.width(8);
cout<<"数量";
cout.width(8);
cout<<"总费用";
cout.width(10);
cout<<"商品的种类";
cout.width(15);
cout<<"购进时间";
cout<<endl; //输出属性列
while(current!=NULL)
{ //循环输出所有结点
printinfor( current );
current=current->next;
}
}//show
Goods *Searchindate(Date t){ //按购入日期搜索 返回结点指针temp
//结构体t含有t.year t.month t.day三个信息块
Date d;
bool f=false;
Goods * temp;
current=head->next;
while(current!=NULL)
{
d=current->indate;
if(!strcmp(d.year,t.year)&&!strcmp(d.month,t.month)&&!strcmp(d.day,t.day))
{
temp=current;
f=true;
break;
}
current=current->next;
}
if(f==false)
{
cout<<"\n 没有满足要求的信息 \n";
return NULL;
}
return temp;
}
void Queryindate()//按购入日期查询
{
Date t;
cout<<" input the date (**** ** **): ";
cin>>t.year>>t.month>>t.day;
printinfor(Searchindate (t));
}//Queryindate()
Goods * Searchname (char r[])//搜索商品名 返回结点指针temp
{ Goods * temp;
current=head->next;
bool f=false;
while(current!=NULL)
{
if(strcmp(current->name,r)==0)
{
temp=current;
f=true;
break;
}
current=current->next;
}
if(f==false)
{
cout<<"\n 商品名为 : "<<r<<" 的商品不存在 \n ";
return NULL;
}
return temp;
}
void Queryname() //按商品名查询
{
char r[MAX];
cout<<" input the name: ";
cin>>r;
printinfor(Searchname (r));
}
void Query ()//查询函数 一个次级菜单
{
char m;
do{
cout<<" ********************************************************** "<<endl;
cout<<"*******<a> 按购进的时间查询 ***********"<<endl;
cout<<"*******<b> 按物品的名称查询 ***********"<<endl;
cout<<"*******<c> 退出 ***********"<<endl;
cout<<" ********************************************************** "<<endl;
cin>>m;
switch (m){ //分别调用按不同查询方式下的函数
case 'a': Queryindate();break;
case 'b': Queryname();break;
case 'c': return ;
default: cout<<"error!! ";
}
}while(m!='h');
}//Query
void Removebynumber () //按总量删除某个结点
{
char t[MAX]; //需要删除的总量值
bool f=false; //表示是否找到满足要求的结点
Goods * temp; //指向找到的结点,并删除
cout<<" 请输入产品的数量: ";
cin>>t;
current=head;
while(current->next!=NULL)
{
if(strcmp(current->next->number,t)==0) //判断是否满足条件
{
temp=current->next;
current->next=temp->next;
length--; //没删除一个结点,链表长度减1
f=true;
delete temp;//释放结点
cout<<"已删除此商品\n";
//break; 此处屏蔽break,也就是说找到第一个满足条件的结点,并不退出循环,而是继续删除
}
else{
current=current->next;
}
}
if(f==false)//false没有改动,表示没有满足条件的结点
{
cout<<"此元素不存在 ,无须删除 \n";
}
}//Removebynumber
void Removebyname () //按名称删除某个结点
{
char t[20];
bool f=false;;
Goods * temp;
cout<<" 请输入产品的名称:";
cin>>t;
current=head;
while(current->next!=NULL)
{
if(strcmp(current->next->name,t)==0)
{
temp=current->next;
current->next=temp->next;
length--;
f=true;
delete temp;cout<<"已删除此商品\n";
//break;此处屏蔽break,也就是说找到第一个满足条件的结点,并不退出循环,而是继续删除
}
else{
current=current->next;
}
}
if(f==false)
{
cout<<"此元素不存在 ,无须删除 \n";
}
}//Removebyname
void Removebyindate () //按购进时间删除某个结点
{
Date t,d;
bool f=false;
Goods * temp;
cout<<" 请输入查找产品的日期: ";
cin>>t.year>>t.month>>t.day;
current=head;
while(current->next!=NULL)
{
d=current->next->indate;
if(d.year==t.year&&d.month==t.month&&d.day==t.day)
{
temp=current->next;
current->next=temp->next;
length--;
f=true;
delete temp;
cout<<"已删除此商品\n";
}
else{
current=current->next;
}
}
if(f==false)
{
cout<<"此元素不存在 ,无须删除 \n";
}
}//Removebyindate
void Remove ()//删除函数
{
char g='Y';
do{
cout<<" ********************************************************** "<<endl;
cout<<"*******<a> 按物品总数量删除 ***********"<<endl;
cout<<"*******<b> 按物品名称删除 ***********"<<endl;
cout<<"*******<c> 按购进时间删除 ***********"<<endl;
cout<<"*******<d> 退出 ***********"<<endl;
cout<<" ********************************************************** "<<endl;
cin>>g;
switch (g){
case 'a': Removebynumber ();break;
case 'b': Removebyname();break;
case 'c': Removebyindate();break;
case 'd': return ;
default: cout<<"error!! ";
}
} while(g!='d');
}
void Add()
{
Goods * temp;
current=head;
while(current->next!=NULL)//找到尾指针
{
current
展开阅读全文