计算机课程设计----销售管理系统.doc_第1页
计算机课程设计----销售管理系统.doc_第2页
计算机课程设计----销售管理系统.doc_第3页
计算机课程设计----销售管理系统.doc_第4页
计算机课程设计----销售管理系统.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

目 录1 需求分析说明12 概要设计说明23 详细设计说明34 调试分析45 用户使用说明56 测试结果57 主程序12需求分析说明产品进销存管理系统总体功能要求:产品进销存管理系统总体目标:在turbo c2.0 的开发环境下,利用所学c语言和数据结构的相关知识,开发一个小程序,实现商店日常基本操作,通过其显示结果对本系统的性能有一个直观的了解。基本功能如下:(1)界面友好,易与操作。采用菜单进行选择。(2)实现各种基本操作。包括商品产品的存储,销售,查询,更改,已达到为商家减少日常不必要的麻烦。以下是各功能模块的功能描述:1.主函数模块本模块的主要功能是初始化图形界面,调用各模块,实现系统功能。2.初始化模块本模块的主要功能是初始化本系统,进行系统基本操作的演示。3.添加模块本模块的主要功能是可进行商品类的添加,产品的添加。4.查询模块本模块的主要功能是能够查询库房每种产品的总量,进货日期,销售数量,产品单价,销售日期,销售收益 ,产品剩余库存量。 5.删除模块本模块的主要功能是能够进行商品类的删除,产品的删除。6.库存模块本模块的主要功能是使商家随时随地的查看商店的整体运作情况。例如每一种商品的销售数量,销售收益等。7.更改模块本模块的主要功能是能够更改库房每种产品的总量,进货日期,销售数量,产品单价,销售日期,销售收益 ,产品剩余库存量。 8.密码模块本模块的主要功能是使本系统更趋于安全。 概要设计说明#define ok 1#define error 0#define overflow 0#define sqmoutlink_init_size 100#define sqmoutlinkincrement 10/*日期*/typedef struct date int year; int month; int day;date;/*产品*/typedef struct productnode char product_name40; /产品名称 int product_quantity; /产品总量 int sales_quantity; /销售数量 double product_price; /产品单价 double product_income; /销售收益 int product_stock; /产品库存 date buy_time; /进货日期 date sales_time; /销售日期 struct productnode *next;productnode,*plinklist;/*货物种类*/typedef struct kindnode productnode * first_product; /头指针 char pkindname40; /商品名称 int kind_number; /产品种类个数kindnode;/*销售链表*/typedef struct kindnode* kindelem; int length; int listsize;sqlist;int init(sqlist &l)/*初始化l*/ int add(sqlist &l) /*添加*/void alter(sqlist &l)/*更改*/ int create(sqlist &l)/*创建*/void delete(sqlist &l)/*删除*/ void display(sqlist &l)/*输出*/void view(sqlist &l)/*查询*/ void password()/*设置密码*/void check_password()/*验证密码*/ void menu_operation()/*菜单栏*/void main(void)/*功能调用*/详细设计说明1主函数模块 首先是调用password()和check_password()函数进行安全设置,设置密码,当再次登录系统时需输入密码进行身份确认。再次调用init(l)函数进行初始化。然后是功能选择性操作菜单,进行需要的添加,删除,更改,查询等操作,需调用create(l),add(l),alter(l),view(l),delete(l),display(l)函数。2.初始化模块对系统的容量,长度,首地址进行初次预设。3. 添加模块 输入你所要添加的商品,之后需要从第一个商品偏历。如果有该商品则进行插入操作,插入一 个产品。如果没有,则插入一个商品。4. 查询模块 首先从众多商品中选出你所要进行操作的商品类。从第一个商品进行遍历,直到找到该商品。如果没找到则返回相应未找到信息。如果找到,有两种情况:第一种是该商品下已有产品,另一种情况是该商品下没有产品。有产品时需要进行产品的遍历,找到要操作的产品。找到产品,switch()选择,选择查询选项,产品的总量,进货日期,销售数量,产品单价,销售日期,销售收益 ,产品剩余库存量5.删除模块 首先从众多商品中选出你所要进行操作的商品类。从第一个商品进行遍历,直到找到该商品。如果没找到则返回相应未找到信息。如果找到,需要进行产品的遍历,找到要操作的产品,删除该产品。6.库存模块从第一个商品进行遍历,输出所有产品的信息。7.更改模块 首先从众多商品中选出你所要进行操作的商品类。从第一个商品进行遍历,直到找到该商品。如果没找到则返回相应未找到信息。如果找到,需要进行产品的遍历,找到要操作的产品,更改产品的属性。8.密码模块如果没有设置密码,则通过文件读入的方式进行密码设置。设置完成后如登录系统需输入密码,进行身份验证。输入的密码字符串与文件读出的密码通过strcmp()比较。利用getch的性质进行输入隐藏用*遮蔽。 调试分析我遇到的问题:1:混淆c+中的&引用与c语言中的*指针。2:指针指向问题。 用户使用说明这时你可以创建你的密码。登录界面:测试结果 首先进行初始化操作1; 操作2: 操作6: 操作3: 选择0反回的主界面;操作6查看更改情况: 操作4: 操作5: 操作6查看删除情况: 操作0退出。 主程序 #include#include#include#include#include#define ok 1#define error 0#define overflow 0#define sqmoutlink_init_size 100#define sqmoutlinkincrement 10/*日期*/typedef struct dateint year;int month;int day;date;/*产品*/typedef struct productnode char product_name40; /产品名称 int product_quantity; /产品总量 int sales_quantity; /销售数量 double product_price; /产品单价 double product_income; /销售收益 int product_stock; /产品库存 date buy_time; /进货日期 date sales_time; /销售日期 struct productnode *next;productnode,*plinklist;/*货物种类*/typedef struct kindnode productnode * first_product; /头指针 char pkindname40; /商品名称 int kind_number; /产品种类个数kindnode;/*销售链表*/typedef struct kindnode* kindelem;int length;int listsize;sqlist;/*初始化l*/int init(sqlist &l)int i;l.kindelem=(kindnode*)malloc(sqmoutlink_init_size*sizeof(kindnode); if(!l.kindelem) exit(overflow); l.length=0; l.listsize=sqmoutlink_init_size; for(i=0;il.listsize;i+) (l.kindelemi).first_product=null; (l.kindelemi).kind_number=0; return ok;/*创建商品和产品*/int create(sqlist &l)plinklist p,q; int i,j,k,n; printf(请输入商品类数量:n); do scanf(%d,&n); if(n=0)n); while(n0); for(i=0;in;i+) printf(请输入第%d个商品类的名称:n,(i+1); scanf(%s,&(l.kindelemi.pkindname); printf(请输入这类商品含有的产品种类数量:n); do scanf(%d,&k); if(k=0)n); while(k=1) p=(plinklist)malloc(sizeof(productnode); printf(请输入第%d个产品名称:n,1); scanf(%s,&(p-product_name); printf(请输入产品总量:n); scanf(%d,&(p-product_quantity); printf(请输入产品进货日期(年-月-日):n);scanf(%d-%d-%d,&(p-buy_time).year),&(p-buy_time).month),&(p-buy_time).day); printf(请输入产品单价:n); scanf(%lf,&(p-product_price); printf(请输入产品销售数量:n); scanf(%d,&(p-sales_quantity); printf(请输入产品销售时间(年-月-日):n); scanf(%d-%d-%d,&(p-sales_time).year),&(p-sales_time).month),&(p-sales_time).day); p-product_income=(p-product_price)*(p-sales_quantity); p-product_stock=(p-product_quantity)-(p-sales_quantity); l.kindelemi.first_product=p; p-next=null; for(j=1;jproduct_name); printf(请输入产品总量:n); scanf(%d,&(q-product_quantity); printf(请输入产品进货日期(年-月-日):n); scanf(%d-%d-%d,&(q-buy_time).year),&(q-buy_time).month),&(q-buy_time).day); printf(请输入产品单价:n); scanf(%lf,&(q-product_price); printf(请输入产品销售数量:n); scanf(%d,&(q-sales_quantity); printf(请输入产品销售时间(年-月-日):n); scanf(%d-%d-%d,&(q-sales_time).year),&(q-sales_time).month),&(q-sales_time).day); q-product_income=(q-product_price)*(q-sales_quantity); q-product_stock=(q-product_quantity)-(q-sales_quantity); q-next=p-next; p-next=q; p=q; l.length+; return ok;/*添加*/int add(sqlist &l)plinklist p,q; int k,j,n; char pkindname20;printf(请输入添加产品所属的商品类:n);scanf(%s,&pkindname); for(k=0;kproduct_name); printf(请输入产品总量:n); scanf(%d,&(q-product_quantity); printf(请输入进货日期(年-月-日):n); scanf(%d-%d-%d,&(q-buy_time).year),&(q-buy_time).month),&(q-buy_time).day); printf(请输入产品单价:n); scanf(%lf,&(q-product_price); printf(请输入销售数量:n); scanf(%d,&(q-sales_quantity); printf(请输入销售时间(年-月-日):n); scanf(%d-%d-%d,&(q-sales_time).year),&(q-sales_time).month),&(q-sales_time).day); q-product_income=(q-product_price)*(q-sales_quantity); q-product_stock=(q-product_quantity)-(q-sales_quantity); q-next=null; l.kindelemk.first_product=q; p=l.kindelemk.first_product;for(j=1;jproduct_name); printf(请输入产品总量:n); scanf(%d,&(q-product_quantity); printf(请输入进货日期(年-月-日):n); scanf(%d-%d-%d,&(q-buy_time).year),&(q-buy_time).month),&(q-buy_time).day); printf(请输入产品单价:n); scanf(%lf,&(q-product_price); printf(请输入销售数量:n); scanf(%d,&(q-sales_quantity); printf(请输入销售时间(年-月-日):n); scanf(%d-%d-%d,&(q-sales_time).year),&(q-sales_time).month),&(q-sales_time).day); q-product_income=(q-product_price)*(q-sales_quantity); q-product_stock=(q-product_quantity)-(q-sales_quantity); /*添加*/ q-next=p-next;p-next=q;p=q;else/商品下有产品p=l.kindelemk.first_product;for(j=0;jproduct_name); printf(请输入产品总量:n); scanf(%d,&(q-product_quantity); printf(请输入进货日期(年-月-日):n); scanf(%d-%d-%d,&(q-buy_time).year),&(q-buy_time).month),&(q-buy_time).day); printf(请输入产品单价:n); scanf(%lf,&(q-product_price); printf(请输入销售数量:n); scanf(%d,&(q-sales_quantity); printf(请输入销售时间(年-月-日):n); scanf(%d-%d-%d,&(q-sales_time).year),&(q-sales_time).month),&(q-sales_time).day); q-product_income=(q-product_price)*(q-sales_quantity); q-product_stock=(q-product_quantity)-(q-sales_quantity); /*添加*/for(p=l.kindelemk.first_product;(p-next)!=null;p=p-next);q-next=p-next; p-next=q; p=q;/for/elsebreak;/if/for if(k=l.length)/没有该商品类 strcpy(l.kindelemk.pkindname,pkindname);l.length+;printf(请输入所要添加的产品类数量(个):n); scanf(%d,&n);l.kindelemk.kind_number=n;for(j=0;jproduct_name); printf(请输入产品总量:n); scanf(%d,&(p-product_quantity); printf(请输入产品的进货日期(年-月-日):n); scanf(%d-%d-%d,&(p-buy_time).year),&(p-buy_time).month),&(p-buy_time).day); printf(请输入产品的产品单价:n); scanf(%lf,&(p-product_price); printf(请输入产品的销售数量:n); scanf(%d,&(p-sales_quantity); printf(请输入产品的销售时间(年-月-日):n); scanf(%d-%d-%d,&(p-sales_time).year),&(p-sales_time).month),&(p-sales_time).day); p-product_income=(p-product_price)*(p-sales_quantity); p-product_stock=(p-product_quantity)-(p-sales_quantity); l.kindelemk.first_product=p; p-next=null;/for /if return ok;/*更改*/void alter(sqlist &l) int i,buy_number,order,sales_number,flag=0;double price;char pkindname10,product_name10; plinklist p;printf(请输入你所要修改的商品类:n);scanf(%s,&pkindname); for(i=0;inext)/产品匹配m+;if(strcmp(p-product_name,product_name)=0)/找到产品printf(n); printf(修改选项:n); printf(t1-进货日期n); printf(t2-进货n); printf(t3-销售n); printf(t4-单价变动n); printf(t0-返回n); printf(n);loop: printf(请进行选择:(0-7)n); scanf(%d,&order); switch(order)case 1:printf(新的进货日期(年-月-日):n); scanf(%d-%d-%d,&(p-buy_time).year),&(p-buy_time).month),&(p-buy_time).day); goto loop; case 2: printf(进货(个):n);scanf(%d,&buy_number); p-product_quantity=p-product_quantity+buy_number;p-product_stock=(p-product_stock+buy_number); goto loop; case 3: printf(销售(个):t);scanf(%d,&sales_number);p-sales_quantity=p-sales_quantity+sales_number;p-product_stock=(p-product_stock)-sales_number; goto loop; case 4: printf(新单价(元):t); scanf(%lf,&price);p-product_price=price;p-product_income=(p-sales_quantity)*(p-product_price); goto loop; case 0:system(cls);flag=1; break; default: printf(对不起,你输入有误!); goto loop;/switchbreak;/找到就跳出/if/forif(m=l.kindelemi.kind_number&flag=0)printf(对不起,你要修改的产品没有找到!n);break;/找到就跳出/if/for if(i=l.length) printf(对不起,你所要修改的商品没找到!n);/*查询*/void view(sqlist &l)int i,k,order,flag=0;char pkindname20,product_name20;plinklist p;printf(请输入待查询产品所商品类:n);scanf(%s,&pkindname);for(i=0;inext)/进行产品的匹配 m+;if(strcmp(p-product_name,product_name)=0)/找到产品 printf(查询选项:n); printf(t1-进货日期n); printf(t2-产品总量n); printf(t3-销售数量n); printf(t4-产品单价n); printf(t5-产品库存n); printf(t6-产品销售收益n); printf(t7-全部信息n); printf(t0-返回n);loop:printf(请进行选择:(0-7)n); scanf(%d,&order); switch(order)case 1:printf(*进货日期t); printf(%d-%d-%dn,(p-buy_time).year,(p-buy_time).month,(p-buy_time).day);printf(n);goto loop; case 2:printf(*产品总量t); printf(%dn,p-product_quantity);printf(n); goto loop; case 3:printf(*销售数量t); printf(%dn,p-sales_quantity);printf(n); goto loop; case 4:printf(*产品单价t); printf(%.2lfn,p-product_price);printf(n); goto loop; case 5:printf(*产品库存t); printf(%dn,p-product_stock); goto loop;case 6:printf(*销售收益t); printf(%.2lfn,p-product_income);printf(n); goto loop;case 7:printf(*查询信息如下:n); printf(t); printf(产品的名称t); printf(%st,p-product_name); printf(进货日期t); printf(%d-%d-%dn,(p-buy_time).year,(p-buy_time).month,(p-buy_time).day); printf(t); printf(产品总量t); printf(%dt,p-product_quantity); printf(销售数量t); printf(%dn,p-sales_quantity); printf(t); printf(产品单价t); printf(%.2lft,p-product_price); printf(销售日期t); printf(%d-%d-%dn,(p-sales_time).year,(p-sales_time).month,(p-sales_time).day); printf(t); printf(产品库存t); printf(%dt,p-product_stock); printf(产品销售收益t); printf(%.2lfn,p-product_income);printf(n); goto loop;case 0:system(cls);flag=1; break;default:printf(对不起,你输入有误!); goto loop;/switchbreak;/if/forif(m=l.kindelemi.kind_number&flag=0) printf(对不起,你所查询的产品不存在!n); break;/找到就跳出 /

温馨提示

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

评论

0/150

提交评论