商品订购系统C 课程设计.doc_第1页
商品订购系统C 课程设计.doc_第2页
商品订购系统C 课程设计.doc_第3页
商品订购系统C 课程设计.doc_第4页
商品订购系统C 课程设计.doc_第5页
免费预览已结束,剩余36页可下载查看

下载本文档

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

文档简介

商品订购系统程序设计综合课程设计目录第一章 设计要求11.1 题目内容和要求1第二章 系统设计分析22.1 系统开发模式,工具及环境22.2 任务需求分析22.3 系统结构功能模块设计22.4 数据结构分析4第三章 具体实现53.1 函数声明53.2 第一模块界面及实现代码63.3 第二模块的界面及实现代码83.4 第三模块的实现及代码103.5 第四模块的实现及代码133.6 第五模块的实现及代码18第四章 运行调试与分析讨论214.1 给出运行屏幕截图214.2 分析运行结果,改进想法。23第五章 设计体会与小结24附录125参考文献25附录226程序清单及相应的注释:26- 38 -第一章 设计要求1.1 题目内容和要求课程设计的任务:该系统主要完成客户对产品订购信息的管理:1. 本系统采用结构体数组/链表进行数据存储。产品结构体记录产品的基本信息(产品名称,产品编号,产品价格,产品产地,库存数量和已订购数量),客户结构体记录客户所选产品的信息(客户ID号,客户姓名,所选产品编号、邮寄地址信息)2. 系统以菜单方式工作,设计菜单应包含以下功能:1. 基本信息录入(产品)2. 商品信息浏览功能输出 3. 客户选购产品; 4. 客户已订购信息浏览;5. 查询功能:按产品编号查询、按已订购商品查询等。3. 要求:1)用C语言实现系统;2)函数功能要划分好(结构化程序设计);3)界面友好(良好的人机交互),加必要的注释;4)提供程序测试方案。第二章 系统设计分析2.1 系统开发模式,工具及环境系统开发模式:采用控制台系统开发模式;系统开发工具及环境:Visual C+6.0 Visual C+6.0 集成开发环境;2.2 任务需求分析 建立两个文件夹分别装放商品和订购物品的信息; 能够实现对物品信息的查找 能够对已订物品信息的浏览 能够输出已订物品的总价格的数据 能够对商品实现添加建立等功能现行系统功能:资料维护:包括对产品信息的录入操作。资料维护:对数据表中的信息进行浏览。系统查询:可以对不同产品的编号,名称进行查询。2.3 系统结构功能模块设计现行系统组织结构图如下:开始选择菜单序号4维护管理3按编号查找0退出系统1信息浏览2按名称查找返回主菜单修改商品删除商品添加商品查看商品输出信息信息存在否输入产品相应信息保存存入文件订购否继续订购?账单显示输入订购信息结束YNYNYNYN 图2-3-1 系统结构模块示意图2.4 数据结构分析使用整型,双精度,字符型定义变量和函数。使用结构体,类等概念实现数据存储。同时也用这些自定义类型定义了变量和函数。体现面向对象设计的特点。第三章 具体实现3.1 函数声明先定义最大商品数目,字符串最大长度,最大订购数量,如下:#define PRODUCTQUANTITY 10/*最大商品数*/#define MAXSTRLEN 21/*最大字符串长度*/#define USERPROMAX 100/*用户最大订购商品数*/成员函数:void DispMainmenu();/*主菜单*/void DispMaintainmenu();/*管理维护菜单*/void open();/*管理员浏览*/void namefind();/*按名称查找*/void typefind();/*按型号查找*/void select();/*选择菜单*/void proincrease();/*增加商品*/void prosave();/*proincrease()调用的存储函数*/void proopen();/*proincrease()调用的显示函数*/void prodelete();/修改商品,开发中*/void promodify();/*修改商品,开发中*/void load();/*浏览商品进入选购*/void order();/*输入编号订购*/void inputaddress();/*输入邮寄地址*/void orderquantity();/*输入订购数量*/void confirmorder();/*确认订购*/void confirmfilesave();/*写入文件*/void confirmfileopen();/*显示订购信息*/void goonorder();/*继续订购*/void account(); /*结账模块*/void loginout();/*退出系统*/void success();/*订购成功,退出*/3.2 第一模块界面及实现代码图如下: 图3-2-1 第一模块的界面图其对应的程序如下:#include #include #include #include void main() /*主程序*/select();int Ordernum=0;int j=0;int Last;float usersum=0.00;struct product/*商品结构*/int productnum;/*商品编号*/char productnameMAXSTRLEN;/*商品名称*/char producttypeMAXSTRLEN;/*商品型号*/float productprice;/*商品价格*/char productplaceMAXSTRLEN;/*商品产地*/int productstock;/*库存数量*/int productordered;/*已订购数量*/proPRODUCTQUANTITY;struct userproduct/*用户结构*/int usernum;/*用户订购商品编号*/int userquantity;/*用户订购数量*/char productnameMAXSTRLEN;/*商品名称*/char producttypeMAXSTRLEN;/*商品型号*/float productprice;/*商品价格*/char productplaceMAXSTRLEN;/*商品产地*/userproUSERPROMAX;void DispMainmenu()/*主菜单*/system(cls);printf(nnnnnn);printf(*欢迎使用商品订购系统v1.0*nn);printf( n);printf( 1.浏览商品 n);printf( 2.按名称查找 n);printf( 3.按型号查找 n);printf( 4.管理维护 n);printf( 0.退出系统 n);printf( nnn);printf(*nnnnn);printf(请选择04:);其中的select();函数用于选择相应的操作步骤,并执行相对应的程序代码。3.3 第二模块的界面及实现代码如果选择的操作是主界面的1时,而产品文件为建立时会显示下图:图3-3-1 第二模块界面图该程序的实现是通过以下代码实现的:void open()/*管理员浏览*/int i;FILE *fp;fp=fopen(shangpin.txt,rb);printf(nnnnnnnn编号 名称 型号 价格 产地 库存 已订购n);for(i=0;iPRODUCTQUANTITY;i+)fread(&proi,sizeof(struct product),1,fp);printf(%4d %-10s %-12s %9.2f %-5s %5d %4dn,ductnum,ductname,ducttype,ductprice,ductplace,ductstock,ductordered);fclose(fp);printf(nnnnn共有%d条记录!nn,i);printf(按任意键继续);getch();如果文件存在则如下图: 图3-3-2 文件信息预览该程序中有getch();函数调用,则此函数时用于上图中下方位置的操作。3.4 第三模块的实现及代码上节中我们提到了getch();函数该函数操作界面如下:输入任意键: 图3-4-1 选购界面如果编号不存在界面如下图: 图3-4-2 输入编号错误界面在选择编号正确后再输入订购数量,如果数量超出规定的数目界面如下:图3-4-3 编号输入正确界面图如果按Esc键界面如下:图3-4-4 按Esc键后界面图即返回主页面。该界面的实现对应的代码如下:void load()/*浏览商品进入选购*/int i;char c3;FILE *fp;fp=fopen(shangpin.txt,rb);printf(nnnnnnnnn编号 名称 型号 价格 产地 库存 已订购n);for(i=0;iPRODUCTQUANTITY;i+)fread(&proi,sizeof(struct product),1,fp);printf(%4d %-10s %-12s %9.2f %-5s %5d %4dn,ductnum,ductname,ducttype,ductprice,ductplace,ductstock,ductordered);fclose(fp);printf(n共有%d条记录!n,i);printf(nnnnnn);printf(进入选购请按任意键,结账请按p,取消请按ESC:);c3=getch();if (c3=27)printf(n);system(cls);select();else if (c3=p|c3=P)account();printf(n);order();void order()/*输入编号订购*/int i,r=0,a;doFILE *fp;fp=fopen(shangpin.txt,rb);doprintf(n请输入您想订购商品的编号:);scanf(%d,&userproj.usernum);for(i=0;iPRODUCTQUANTITY;i+)fread(&proi,sizeof(struct product),1,fp);if (ductnum=userproj.usernum)printf(%4d %-10s %-12s %9.2f %-5s %5d %4dn,ductnum,ductname,ducttype,ductprice,ductplace,ductstock,ductordered);r=r+1;Ordernum=i;a=i;break;while (r=0);fclose(fp);Last=ductordered;if (ductordered!=0)orderquantity();confirmorder();confirmfilesave();goonorder();account();break;elseprintf(n!该商品已售完!系统将自动返回!nn);printf(按任意键返回);getch();select();break;while(1);3.5 第四模块的实现及代码选择订购后界面会显示客户的操作提示,当订购物品正确后,并且订购完毕后,界面如下: 图3-5-1 订购账单界面对应的代码如下:void confirmorder()/*确认订购*/char ch5;printf(确认订购该商品吗?(Y/N)n);doch5=getch();if (ch5=n|ch5=N)load();else if (ch5=y|ch5=Y)printf(已成功添加!n);break;while(1);void confirmfilesave()/*写入文件*/strcpy(ductname,proOductname);strcpy(ductplace,proOductplace);ductprice=proOductprice;strcpy(ducttype,proOducttype);usersum=usersum+ductprice*userproj.userquantity;proOductordered=proOductordered+userproj.userquantity;FILE *fp;if(fp=fopen(dinggou.txt,ab+)=NULL)printf(不能打开文件!n);return;if(fwrite(&userproj,sizeof(struct userproduct),1,fp)!=1)printf(写入文件错误);fclose(fp);j=j+1;FILE *fp1;int i;if(fp1=fopen(shangpin.txt,wb)=NULL)printf(不能打开文件!n);return;for(i=0;iPRODUCTQUANTITY;i+)if(fwrite(&proi,sizeof(struct product),1,fp1)!=1)printf(写入文件错误);fclose(fp1);void confirmfileopen()/*显示订购信息*/int i;FILE *fp;fp=fopen(dinggou.txt,rb);printf(编号 名称 型号 价格 产地 订购数量 合计n);for(i=0;ij;i+)fread(&userproi,sizeof(struct userproduct),1,fp);printf(%4d %-10s %-12s %9.2f %-5s %5d %5.2fn,userproi.usernum,ductname,ducttype,ductprice,ductplace,userproi.userquantity,(ductprice*userproi.userquantity);fclose(fp);void goonorder()/*继续订购*/char c5;printf(继续订购吗?(Y/N)n);doc5=getch();if (c5=Y|c5=y) load();break;else if (c5=n|c5=N)break;while(1);void account()/*结账模块*/char c7;printf(nnnnnnnnnnnn您好,这里是收银台n);printf(n您的订购清单如下:n);confirmfileopen();printf(nn您本次订购的总消费为:%7.2fnn,usersum);if (usersum=0)printf(您没有订购任何商品,按任意键退出系统!n);getch();loginout();printf(nn请再次确认订购,按Y继续,按N取消本次订购并退出:n);doc7=getch();if (c7=y|c7=Y)inputaddress();else if (c7=n|c7=N)loginout();else;while(1);确认订购后按“Y”键,界面将显示: 图3-5-2 确认订购界面此程序将客户订购的物品存放入文件,并整理,将文件输出并且统计订购的价格总值供客户参考。该模块的实现的代码如下:void inputaddress()/*输入邮寄地址*/char ch3;char address41;doprintf(请输入您的邮寄地址:n);scanf(%s,address);printf(您的地址是:%snn,address);printf(确认请按任意键,重输请按ESC);ch3=getch();putchar(n);if (ch3!=27)success();while(ch3=27);该代码中用到了指针,并用到了链表的建立和删除,当然也涉及到了结构体。3.6 第五模块的实现及代码该代码用于产品的存储的,界面如下: 图3-6-1 第五模块界面该代码如下:void DispMaintainmenu()/*管理维护菜单*/printf(nnnnnnn);printf(*管理维护子菜单*nn);printf( n);printf( 1.查看商品 n);printf( 2.增加商品 n);printf( 3.删除商品 n);printf( 4.修改商品 n);printf( 0.返回主菜单 n);printf( nnn);printf(*nnnnn);printf(请选择04:);void select()/*选择菜单*/loop1:DispMainmenu();char ch1;doch1=getch();while (ch14);switch(ch1)case1: load();break;case2: namefind();break;case3: typefind();break;case4: DispMaintainmenu();char ch2;doch2=getch();while (ch24);switch(ch2)case1: open();goto loop1;break;case2: proincrease();break;case3: prodelete();break;case4: promodify();break;case0: goto loop1;break;default:break; break;case0: printf(nnnnnnnnnnnn 谢谢使用,再见!nnnnnnnnnnnnn);break;default:break;该代码用于产品文件的建立生成,存储产品文件。第四章 运行调试与分析讨论4.1 给出运行屏幕截图系统主界面: 图4-1-1 主菜单界面客户订购物品统计界面: 图4-1-2 物品统计界面查找界面: 图4-1-3 查找界面图显示界面: 图4-1-4 产品文件信息显示界面录入界面: 图4-1-5 产品录入界面4.2 分析运行结果,改进想法。当输入错误时一些代码运行会出现错误,但是程序不会主动回到主界面而是自动退出,设计时可添加一个子函数用于提示错误,并返回重新输入。第五章 设计体会与小结1. 在做了课程实验以后,我对c+的了解更深了,很多知识得到了巩固,一些不懂的知识也渐渐明了!这其中主要是对类的封装收获最多,在其类的封装过程中,对数据的访问控制也是比较重要,我相信这对以后的学习其它面向对象程序设计有很大帮助!2. 作了产品订购系统程序后,我对类和对象更加熟悉了,作为c+所特有的指针,类和对象在编写程序过程中运用十分广泛,我必须多加练习才能达到一定的水平,类和对象,指针都是非常重要的!3. 在完完整整得做完一个程序后,我对程序的整体性有了一个明确的认识,做程序必须注意程序前后的联系,要具有清晰的思路,程序要具有层次。对整体性的把握至关重要!4. 学习计算机语言最重要的就是上机操作,我深感自己动手能力比较差,在以后学习中,还必须多多上机调试程序,从实践中多积累经验,为以后工作打下坚实基础。附录1参考文献1谭浩强编c+面向对象程序设计,清华大学出版社,2005年7月版2陈雪飞c+实例入门,中国青年出版社,2004年5月版3互联网,百度.知道,酷狗搜搜等网上题材附录2程序清单及相应的注释:#include #include #include #include #define PRODUCTQUANTITY 10/*最大商品数*/#define MAXSTRLEN 21/*最大字符串长度*/#define USERPROMAX 100/*用户最大订购商品数*/void DispMainmenu();/*主菜单*/void DispMaintainmenu();/*管理维护菜单*/void open();/*管理员浏览*/void namefind();/*按名称查找*/void typefind();/*按型号查找*/void select();/*选择菜单*/void proincrease();/*增加商品*/void prosave();/*proincrease()调用的存储函数*/void proopen();/*proincrease()调用的显示函数*/void prodelete();/修改商品,开发中*/void promodify();/*修改商品,开发中*/void load();/*浏览商品进入选购*/void order();/*输入编号订购*/void inputaddress();/*输入邮寄地址*/void orderquantity();/*输入订购数量*/void confirmorder();/*确认订购*/void confirmfilesave();/*写入文件*/void confirmfileopen();/*显示订购信息*/void goonorder();/*继续订购*/void account(); /*结账模块*/void loginout();/*退出系统*/void success();/*订购成功,退出*/void main() /*主程序*/select();int Ordernum=0;int j=0;int Last;float usersum=0.00;struct product/*商品结构*/int productnum;/*商品编号*/char productnameMAXSTRLEN;/*商品名称*/char producttypeMAXSTRLEN;/*商品型号*/float productprice;/*商品价格*/char productplaceMAXSTRLEN;/*商品产地*/int productstock;/*库存数量*/int productordered;/*已订购数量*/proPRODUCTQUANTITY;struct userproduct/*用户结构*/int usernum;/*用户订购商品编号*/int userquantity;/*用户订购数量*/char productnameMAXSTRLEN;/*商品名称*/char producttypeMAXSTRLEN;/*商品型号*/float productprice;/*商品价格*/char productplaceMAXSTRLEN;/*商品产地*/userproUSERPROMAX;void DispMainmenu()/*主菜单*/system(cls);printf(nnnnnn);printf(*欢迎使用商品订购系统v1.0*nn);printf( n);printf( 1.浏览商品 n);printf( 2.按名称查找 n);printf( 3.按型号查找 n);printf( 4.管理维护 n);printf( 0.退出系统 n);printf( nnn);printf(*nnnnn);printf(请选择04:);void DispMaintainmenu()/*管理维护菜单*/printf(nnnnnnn);printf(*管理维护子菜单*nn);printf( n);printf( 1.查看商品 n);printf( 2.增加商品 n);printf( 3.删除商品 n);printf( 4.修改商品 n);printf( 0.返回主菜单 n);printf( nnn);printf(*nnnnn);printf(请选择04:);void select()/*选择菜单*/loop1:DispMainmenu();char ch1;doch1=getch();while (ch14);switch(ch1)case1: load();break;case2: namefind();break;case3: typefind();break;case4: DispMaintainmenu();char ch2;doch2=getch();while (ch24);switch(ch2)case1: open();goto loop1;break;case2: proincrease();break;case3: prodelete();break;case4: promodify();break;case0: goto loop1;break;default:break; break;case0: printf(nnnnnnnnnnnn 谢谢使用,再见!nnnnnnnnnnnnn);break;default:break;void open()/*管理员浏览*/int i;FILE *fp;fp=fopen(shangpin.txt,rb);printf(nnnnnnnn编号 名称 型号 价格 产地 库存 已订购n);for(i=0;iPRODUCTQUANTITY;i+)fread(&proi,sizeof(struct product),1,fp);printf(%4d %-10s %-12s %9.2f %-5s %5d %4dn,ductnum,ductname,ducttype,ductprice,ductplace,ductstock,ductordered);fclose(fp);printf(nnnnn共有%d条记录!nn,i);printf(按任意键继续);getch();void namefind()/*按名称查找*/int i,k,r=0;char strMAXSTRLEN,c3;FILE *fp;fp=fopen(shangpin.txt,rb);system(cls);printf(n请输入你要查找的名称:);scanf(%s,&str);printf(n您所查找的%sn,str);for(i=0;iPRODUCTQUANTITY;i+)fread(&proi,sizeof(struct product),1,fp);k=strcmp(ductname,str);if (k=0)printf(%4d %-10s %-12s %9.2f %-5s %5d %4dn,ductnum,ductname,ducttype,ductprice,ductplace,ductstock,ductordered);r=r+1;fclose(fp);printf(n共有%d条记录!n,r);if(r!=0)printf(进入选购请按任意键,结账请按p,取消请按ESC:);c3=getch();if (c3=27)printf(n);system(cls);select();else if (c3=p|c3=P)account();printf(n);order();elseprintf(n按任意键继续n);getchar();select();void typefind()/*按型号查找*/int i,k,r=0;char strMAXSTRLEN,c3;FILE *fp;fp=fopen(shangpin.txt,rb);system(cls);printf(n请输入你要查找的型号:);scanf(%s,&str);printf(您查找的是%sn,str);for(i=0;iPRODUCTQUANTITY;i+)fread(&proi,sizeof(struct product),1,fp);k=strcmp(ducttype,str);if (k=0)printf(%4d %-10s %-12s %9.2f %-5s %5d %4dn,ductnum,ductname,ducttype,ductprice,ductplace,ductstock,ductordered);r=r+1;fclose(fp);printf(共有%d条记录!n,r);if(r!=0)printf(进入选购请按任意键,结账请按p,取消请按ESC:);c3=getch();if (c3=27)printf(n);system(cls);select();else if (c3=p|c3=P)account();printf(n);order();elseprintf(n按任意键继

温馨提示

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

评论

0/150

提交评论