课程设计报告课程名称《C语言程序设计》课题名称超市收银系统的设计与实现专业统计学班级1201班学号************姓名马游指导教师杨子华陈世清李杰君2013年5月20日湖南工程学院课程设计任务书课程名称《C语言程序设计》课题超市收银系统的设计与实现专业班级统计1201班学生姓名马游学号************指导老师杨子华陈世清李杰君审批任务书下达日期2013 年5月20日任务完成日期2013年6月23 日目录1.系统需求分析 (1)1.1系统要求1.2功能要求2.总体设计 (1)2.1模块划分2.2系统功能模块图2.3模块功能说明2.4商品函数数据类型3.详细设计 (3)3.1商品进货流程图3.2商品修改流程图4.程序调试分析 (4)5.总结 (9)6.系统使用说明 (9)附件:源程序清单1.系统需求分析1.1系统要求:实现对超市商品的收银以及各项数据的显示、查询、修改、排序等操作的管理。
1.2功能要求:1)本系统采用一个结构体数组,数据的结构应当包括:商品编号、商品名称、单价、库存量、购买量、总价、成本、利润。
2)本系统显示这样的菜单:请选择系统功能项:a、收银b、数据查询c、数据管理⑴入库⑵删除⑶修改d、利润统计⑴按类统计利润并排序⑵统计总利润e、退出系统3)执行一个具体的功能之后,程序将重新显示菜单。
4)将数据保存到文件中。
5)进入系统前要求先输入密码2.总体设计2.1模块划分首先输入管理员的账号、密码,成功登入系统,然后系统模块分为“商品管理”、“商品销售”、“查看利润”三个部分。
商品管理又包含:商品进货,商品添加,商品浏览,商品搜索,商品删除,商品修改或返回上一级。
2.2系统功能模块图2.3模块功能说明(1).登入模块:输入账号,密码登入。
(2).商品管理模块:对商品条形码,名称,单价,库存量,购买量,成本价,利润等信息录入的管理。
还可对已建立的商品信息进行查询,并且可根据需要选择按商品名查询或按商品种类查询或按商品进货量查询。
(3).商品销售模块:输入要销售商品条形码,名称以及数量,最后进行付款,找零,或者打印小票。
(4).进货模块:录入需要管理的商品信息并将信息保存于文件中,以方便日后进行打印、读取、更新等操作。
(5).删除模块:可对过期的商品做删除处理。
(6).修改模块:可根据需要对多件商品信息进行修改,也可随时对个别项进行修改。
(7).浏览模块:将所有商品信息或想要查询的商品信息显示于屏幕,用于打印商品信息或查找某些商品信息。
(8).利润模块:统计商品的利润进行统计。
(9).返回上一级:选择该项,自动返回上一级的选择。
2.4商品函数数据类型3.详细设计3.1 商品进货流程图3.2商品修改流程图 ynn4. 程序调试分析1.首先输入账号、密码,登入收银系统修改商品名称:进货单价: 库存数量: 销售单价: 是否继续修改:(y/n) 结束修改输入2到修改模块继续修改进货信息2.选择商品菜单功能3..输入进货的商品条码、名称、单价、数量、售价4.修改商品名称、单价、售价、库存 5.浏览所有商品信息6.查找商品 7.添加商品8.删除部分商品 9.购买商品5. 总结此次实践课编写的是一个应用程序,相对于以前我们见到的程序,它要大得多,于是就按课本上的例子编了超市管理系统,先把界面弄好然后再添加各模块。
忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。
尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。
这过程艰辛,但只要你持之以恒,成功指日可待。
在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学, 学到了课本上没有的知识。
从而启发我,要想写好程序,在写好课本知识的同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学的知识综合起应用,除此之外,写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。
在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。
当然由于自己学的不够好,知识不够丰富,在选题报告中还有一些不够完美的地方。
希望自己继续努力,下次能做的更好。
同时我想向所有为我的实习提供帮助和指导的老师和同学致谢,感谢你们为我的顺利实习所作的努力和帮助。
通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学洗C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。
6. 系统使用说明(1)初次使用先添加管路员的账号、密码,密码需要再次输入。
(2)输入正确的账号、密码即可登入成功,进入商品管理。
(3)添加商品时,只可添加已有条码商品的数量,若添加新的商品则进入进货模块。
(4)修改商品时,可修改商品全部信息,也可以只是修改商品部分的信息。
(5)退出再次进入系统时,原来进货的商品信息依然存在,方便操作。
(6)退出系统,再次登入,直接输入账号、密码即可,无需再添加账户。
计算机与通信学院课程设计评分表教师签名:日期:附件:源程序清单#include <stdio.h>#include<string>#include<windows.h>void jieshao()//软件介绍{printf("\t**************************************************\n");printf("\t***** 欢迎来到超市收银系统 ******\n"); printf("\t*************************************************\n"); }float zongjine=0;//消费总金额float chengben=0;//保存使用的成本float yingli=0;//保存盈利金额int guanshuliang=0;//记录管理员数量int xiaoshuliang=0;//记录销售员数量int chenggong=0;//0则是管理员,非0则是销售员。
证明登陆是否成功int zhonglei=0;//记录货物种类int zhenjia=0; //记录是否是会员 0则不是会员1则是会员int diji=0;//记录是会员编号int zongjifen=0;//记录一共接受了多少积分struct huiyuan//定义会员信息结构{float jifen;//记录会员积分char name[50];//帐户char mima[50];//密码};huiyuan hui[1000000];//会员信息struct shangpin//定义商品结构体{char name[50];//商品名char tiaoxinma[50];//条形码float xiaoshoudanjia;//销售单价float jinhuodanjia;//进货单价int kucun;//库存};shangpin shp[10000000];//用于保存商品的信息struct xiaoshouyuan//定义销售员结构体{int cunzai;//用于记录该销售员是否存在,=-1则表示被删除char zhanghu[20];//销售员帐户char mima[20]; //销售员密码};xiaoshouyuan xiao[50];struct guanliyuan//定义管理员结构体{int cunzai;//用于记录该管理员员是否存在,=-1则表示被删除char zhanghu[20];//管理员帐户char mima[20]; //管理员密码};guanliyuan guan[100];FILE *fp;//定义一个FILE类型的*fp指针//保存商品结构体数组void Saveshangpin()//wb为二进制写,如果文件不存在则自动创建文件shangpin.dat {fp=fopen("shangpin.dat","wb");if(fp) //如果文件被成功打开的话(有可能文件不存在){for(int i=0;i<zhonglei;i++){if(fwrite(&shp[i],sizeof(struct shangpin),1,fp)!=1)printf("文件写入错误!\n");}fclose(fp);}}//读取商品结构体数组到文件void Loadshangpin(){fp=fopen("shangpin.dat","rb");if(fp) //如果文件被成功打开的话(有可能文件不存在){for(int i=0;fread(&shp[i],sizeof(struct shangpin),1,fp);i++){zhonglei++;}fclose(fp);}}//保存管理员结构体数组void Saveguanliyuan()//wb为二进制写,如果文件不存在则自动创建文件{fp=fopen("guanliyuan.dat","wb");if(fp) //如果文件被成功打开的话(有可能文件不存在){for(int i=0;i<guanshuliang;i++){if(fwrite(&guan[i],sizeof(struct guanliyuan),1,fp)!=1)printf("文件写入错误!\n");}fclose(fp);}}void Loadguanliyuan()//读取管理员结构体数组到文件{fp=fopen("guanliyuan.dat","rb");if(fp) //如果文件被成功打开的话(有可能文件不存在){guanshuliang=0;for(int i=0;fread(&guan[i],sizeof(struct guanliyuan),1,fp);i++){guanshuliang++;}fclose(fp);}}//保存销售员结构体数组void Savexiaoshouyuan()//wb为二进制写,如果文件不存在则自动创建文件shangpin.dat{fp=fopen("xiaoshouyuan.dat","wb");if(fp) //如果文件被成功打开的话(有可能文件不存在){for(int i=0;i<xiaoshuliang;i++){if(fwrite(&xiao[i],sizeof(struct xiaoshouyuan),1,fp)!=1)printf("文件写入错误!\n");}fclose(fp);}}void Loadxiaoshouyuan()//读取销售员结构体数组到文件{fp=fopen("xiaoshouyuan.dat","rb");if(fp) //如果文件被成功打开的话(有可能文件不存在){xiaoshuliang=0;for(int i=0;fread(&xiao[i],sizeof(struct xiaoshouyuan),1,fp);i++) {xiaoshuliang++;}fclose(fp);}}void guanlicaidan()//管理员权限菜单{printf("\n\n\t********* 管理员权限菜单: **************\n");printf("\t**************************************************\n");printf("\t********** 1. 商品管理 **********\n");printf("\t \n");printf("\t********** 2. 查看利润 **********\n");printf("\t \n");printf("\t********** 0. 返回身份选择! **********\n");printf("\t**************************************************\n");}void xiaocaidan()//销售员权限菜单{printf("\n\n\t******** 销售员权限菜单: ***********\n");printf("\t \n");printf("\t******* 1. 浏览商品信息 *******\n");printf("\t \n");printf("\t******* 2. 销售 *******\n");printf("\t \n");printf("\t******* 0. 返回身份选择! *******\n");printf("\t**************************************************\n");}void jinhuo()//进货{Loadshangpin();char choose;int i=zhonglei;int shi=1;//记录条形码是否被使用-数则表示被使用了do{shi=1;//在判断条码前为非负数printf("购买商的条码:");fflush(stdin);scanf("%s",shp[i].tiaoxinma);if(zhonglei>0){for(int a=0;a<zhonglei;a++){if(a!=i&&shp[a].kucun>=0){if(strcmp(shp[i].tiaoxinma,shp[a].tiaoxinma)==0){printf("错误!!此条码已经被使用!\n");shi=-1;//条码被使用。