统计学专业毕业论文—C语言课程设计超市收银课设0.doc
课 程 设 计 报 告课程名称 C语言程序设计 课题名称 超市收银系统的设计与实现 专 业 统计学 班 级 学 号 201210020112 姓 名 指导教师 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程序调试分析45总结96系统使用说明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商品函数数据类型编号名称单价数量总价成本利润charcharfloutint floutfloutflout3详细设计输入1到进货模块 3.1 商品进货流程图输入商品条码: 商品名称进货单价:进货数量:销售单价:是否继续进货:(y/n) y继续输入进货信息 n n 结束进货 3.2商品修改流程图输入2到修改模块修改商品名称:进货单价:库存数量:销售单价:是否继续修改:(y/n) y继续修改进货信息 n n 结束修改 4. 程序调试分析 1.首先输入账号、密码,登入收银系统 2选择商品菜单功能 3.输入进货的商品条码、名称、单价、数量、售价4修改商品名称、单价、售价、库存 5浏览所有商品信息 6查找商品 7添加商品 8删除部分商品 9购买商品5. 总结 此次实践课编写的是一个应用程序,相对于以前我们见到的程序,它要大得多,于是就按课本上的例子编了超市管理系统,先把界面弄好然后再添加各模块。忙碌了一个多星期,在大家的共同努力下,我们总算将此程序设计出来。尽管不是自己独立完成,但仍然很高兴,因为在设计的过程中,让我了解到要设计一个大型程序,查找资料是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,现在在操作本程序时可根据提示进行相关操作,能正确输出结果。这过程艰辛,但只要你持之以恒,成功指日可待。在这次设计过程中,不仅复习课本上所学知识,还通过查资料、问同学, 学到了课本上没有的知识。从而启发我,要想写好程序,在写好课本知识的同时还需要多读和专业有关的一些书籍,同时还需要多动脑子,尽量把所学的知识综合起应用,除此之外,写程序时必须要细心,不能输错一个字符标点,就连全角半角也得注意。在修改时要有耐心,编译出错后必须逐个错误去改正,绝不能心急浮躁,否则修改之后还会有新的错误。当然由于自己学的不够好,知识不够丰富,在选题报告中还有一些不够完美的地方。希望自己继续努力,下次能做的更好。同时我想向所有为我的实习提供帮助和指导的老师和同学致谢,感谢你们为我的顺利实习所作的努力和帮助。通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学洗C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。6. 系统使用说明(1)初次使用先添加管路员的账号、密码,密码需要再次输入 。 (2)输入正确的账号、密码即可登入成功,进入商品管理。(3)添加商品时,只可添加已有条码商品的数量,若添加新的商品则进入进货模块。(4)修改商品时,可修改商品全部信息,也可以只是修改商品部分的信息。(5)退出再次进入系统时,原来进货的商品信息依然存在,方便操作。 (6)退出系统,再次登入,直接输入账号、密码即可,无需再添加账户。计算机与通信学院课程设计评分表课程名称: C语言程序设计 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: 附件:源程序清单#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 name50;/帐户char mima50;/密码;huiyuan hui1000000;/会员信息struct shangpin/定义商品结构体char name50;/商品名char tiaoxinma50;/条形码float xiaoshoudanjia;/销售单价float jinhuodanjia;/进货单价int kucun;/库存;shangpin shp10000000;/用于保存商品的信息struct xiaoshouyuan/定义销售员结构体int cunzai;/用于记录该销售员是否存在,=-1则表示被删除char zhanghu20;/销售员帐户char mima20;/销售员密码;xiaoshouyuan xiao50;struct guanliyuan/定义管理员结构体int cunzai;/用于记录该管理员员是否存在,=-1则表示被删除char zhanghu20;/管理员帐户char mima20;/管理员密码;guanliyuan guan100;FILE *fp;/定义一个FILE类型的*fp指针/保存商品结构体数组void Saveshangpin()/wb为二进制写,如果文件不存在则自动创建文件shangpin.datfp=fopen("shangpin.dat","wb");if(fp)/如果文件被成功打开的话(有可能文件不存在)for(int i=0;i<zhonglei;i+)if(fwrite(&shpi,sizeof(struct shangpin),1,fp)!=1)printf("文件写入错误!n");fclose(fp);/读取商品结构体数组到文件void Loadshangpin()fp=fopen("shangpin.dat","rb");if(fp)/如果文件被成功打开的话(有可能文件不存在)for(int i=0;fread(&shpi,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(&guani,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(&guani,sizeof(struct guanliyuan),1,fp);i+)guanshuliang+;fclose(fp);/保存销售员结构体数组void Savexiaoshouyuan()/wb为二进制写,如果文件不存在则自动创建文件shangpin.datfp=fopen("xiaoshouyuan.dat","wb");if(fp)/如果文件被成功打开的话(有可能文件不存在)for(int i=0;i<xiaoshuliang;i+)if(fwrite(&xiaoi,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(&xiaoi,sizeof(struct xiaoshouyuan),1,fp);i+)xiaoshuliang+;fclose(fp);void guanlicaidan()/管理员权限菜单printf("nnt* 管理员权限菜单: *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("nnt* 销售员权限菜单: *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;/记录条形码是否被使用-数则表示被使用了doshi=1;/在判断条码前为非负数printf("购买商的条码:");fflush(stdin);scanf("%s",shpi.tiaoxinma);if(zhonglei>0)for(int a=0;a<zhonglei;a+)if(a!=i&&shpa.kucun>=0)if(strcmp(shpi.tiaoxinma,shpa.tiaoxinma)=0)printf("错误!此条码已经被使用!n");shi=-1;/条码被使用。标记为-数;break;if(shi!=-1)printf("商品的名称:");fflush(stdin);scanf("%s",shpi.name);printf("进货单价:");fflush(stdin);scanf("%f",&shpi.jinhuodanjia);printf("进货数量:");fflush(stdin);scanf("%d",&shpi.kucun);printf("销售价格:");fflush(stdin);scanf("%f",&shpi.xiaoshoudanjia);i+;zhonglei+;printf("是否继续进货:(y/n)");fflush(stdin);scanf("%c",&choose);while(choose='y'|choose='Y');Saveshangpin();void xiaoshou()/销售物品int i=0;int shiyongjifen=0;/保存每次的使用积分int dayin1000;/标记打印,若值为1则为打印商品char tiaoma50;char choose;int shuliang=0;/保存购买数量int geshu1000;/记录多次购物的个数float shifu=0;/保存实付金额float zhaoling=0;/找零int chaochu;/标记购买量是否超出库存if(zhenjia=1)dochaochu=0;printf("n请输入条形码:");fflush(stdin);scanf("%s",tiaoma);printf("数量:");fflush(stdin);scanf("%d",&shuliang);for(i=0;i<zhonglei;i+)if(shpi.kucun>=0)if(strcmp(tiaoma,shpi.tiaoxinma)=0)printf("n购买商品信息如下:n");printf("t商品名:%st进货单价:%.2ft销售单价:%.2fn",shpi.name,shpi.jinhuodanjia,shpi.xiaoshoudanjia);if(shuliang>shpi.kucun) chaochu=-1;/标记为-数表示超出printf("没有足够库存!nn");break;dayini=1;geshui=shuliang;shpi.kucun=shpi.kucun-shuliang;zongjine+=shpi.xiaoshoudanjia*shuliang;/计算应付金额chengben+=shpi.jinhuodanjia*shuliang;/计算成本huidiji.jifen+=shpi.xiaoshoudanjia*shuliang;break;if(i=zhonglei) printf("没有此商品!n");if(chaochu!=-1)printf("是否继续购买(y/n):");fflush(stdin);scanf("%c",&choose);while(choose='y'|choose='Y'|chaochu=-1);printf("应付金额%.2fn",zongjine);printf("实付金额:");fflush(stdin);scanf("%f",&shifu);printf("100积分=1元,是否使用积分?(y/n)");fflush(stdin);scanf("%c",&choose);if(choose='y'|choose='Y')printf("剩余积分%.2fn",huidiji.jifen);printf("使用多少积分?");fflush(stdin);scanf("%d",&shiyongjifen);zongjifen+=shiyongjifen;zhaoling=shifu-zongjine+shiyongjifen/100.0;huidiji.jifen-=shiyongjifen;else zhaoling=shifu-zongjine;if(zhenjia!=1)doprintf("请输入条形码:");fflush(stdin);scanf("%s",tiaoma);printf("数量:");fflush(stdin);scanf("%d",&shuliang);for(i=0;i<zhonglei;i+)if(shpi.kucun>=0)if(strcmp(tiaoma,shpi.tiaoxinma)=0)/找到被销售的商品printf("n购买商品信息如下:n");printf("t商品名:%st进货单价:%.2ft销售单价:%.2fn",shpi.name,shpi.jinhuodanjia,shpi.xiaoshoudanjia);if(shpi.kucun<=10) printf(" 提示:该商品库存不足10份!请及时补充!n");/提示库存信息if(shuliang>shpi.kucun)/判断是否有足够库存chaochu=-1;/-数表示超出printf("没有足够库存!n");break;dayini=1;/销售的商品标记打印为1;用于打印小票geshui=shuliang;shpi.kucun-=shuliang;/库存=原库存-销售数量zongjine+=shpi.xiaoshoudanjia*shuliang;/计算应付金额chengben+=shpi.jinhuodanjia*shuliang;/计算成本break;if(i=zhonglei) printf("没有此商品!n");printf("n是否继续购买(y/n):");fflush(stdin);scanf("%c",&choose);while(choose='y'|choose='Y'|i=zhonglei);printf("应付金额%.2fn",zongjine);printf("实付金额:");fflush(stdin);scanf("%f",&shifu);zhaoling=shifu-zongjine;printf("是否打印小票(y/n)");fflush(stdin);scanf("%c",&choose);if(choose='y'|choose='Y')/打印小票printf("nn条形码t名称t销售单价t数量t金额n");for(i=0;i<zhonglei;i+)if(dayini=1)printf("%st%st%.2ftt%dt%.2fn",shpi.tiaoxinma,shpi.name,shpi.xiaoshoudanjia,geshui,shpi.xiaoshoudanjia*geshui);if(zhenjia=1) printf("使用%d积分!n",shiyongjifen);printf("应付金额%.2f元t实付金额%.2f元t找零%.2f元n",zongjine,shifu,zhaoling);yingli+=zongjine-chengben;/盈利=收入金额-成本zongjine=0;chengben=0;Saveshangpin();void lirun()/利润函数printf("共接受了%d的抵价积分!n",zongjifen);/显示共接受的积分量printf("今日已赚%.2f元n",yingli);/显示盈利量void shanchu()/删除商品Loadshangpin();char tiaoma50;char choose;doprintf("请输入要删除的商品的条码:");fflush(stdin);scanf("%s",tiaoma);for(int i=0;i<zhonglei;i+)if(shpi.kucun!=-1)if(strcmp(tiaoma,shpi.tiaoxinma)=0)/找到要删除的商品printf("n原信息如下:n");printf("t商品名:%st进货单价:%.2ft销售单价:%.2f库存:%dn",shpi.name,shpi.jinhuodanjia,shpi.xiaoshoudanjia,shpi.kucun);shpi.kucun=-1; /删除则将库存标为负数printf("该商品已删除!n");break;if(i=zhonglei) /没有找到商品printf("没有此商品!n"); break;printf("n是否继续删除(y/n):");fflush(stdin);scanf("%c",&choose);while(choose='y'|choose='Y');Saveshangpin();void xiugai()/修改商品Loadshangpin();char tiaoma50;char choose;doprintf("请输入要修改的商品条码:");fflush(stdin);scanf("%s",tiaoma);for(int i=0;i<zhonglei;i+)if(shpi.kucun>=0) /判断是否被删除if(strcmp(tiaoma,shpi.tiaoxinma)=0)/找到要修改的商品printf("n原信息如下:n");printf("t商品名:%st进货单价:%.2ft销售单价:%.2f库存:%dn",shpi.name,shpi.jinhuodanjia,shpi.xiaoshoudanjia,shpi.kucun);printf("n修改商品名:");fflush(stdin);scanf("%s",shpi.name);printf("修改进货单价:");fflush(stdin);scanf("%f",&shpi.jinhuodanjia);printf("修改销售单价:");fflush(stdin);scanf("%f",&shpi.xiaoshoudanjia);printf("修改库存:");scanf("%d",&shpi.kucun);break;if(i=zhonglei)printf("没有此货物!n");printf("n是否继续修改?(y/n)");fflush(stdin);scanf("%c",&choose);while(choose='y'|choose='Y');Saveshangpin();void liulanshp()/浏览所有商品printf("条形码t名称t销售单价t进货单价t库存n");for(int i=0;i<zhonglei;i+)if(shpi.kucun>=0)if(shpi.jinhuodanjia!=0)/判断是否存在printf("%st%st%.2ftt%.2ftt%dn",shpi.tiaoxinma,shpi.name,shpi.xiaoshoudanjia,shpi.jinhuodanjia,shpi.kucun);if(zhonglei=i) break;void sousuo()/搜索商品char tiaoma50;printf("请输入您要查找的商品条形码:");fflush(stdin);scanf("%s",tiaoma);for(int i=0;i<zhonglei;i+)if(shpi.kucun>=0)/判断是否存在if(strcmp(tiaoma,shpi.tiaoxinma)=0)/找到商品printf("n条形码t名称t销售单价t进货单价t库存n");if(shpi.jinhuodanjia!=0)printf("%st%st%.2ftt%.2ftt%dn",shpi.tiaoxinma,shpi.name,shpi.xiaoshoudanjia,shpi.jinhuodanjia,shpi.kucun);break;if(zhonglei=i) printf("没有此商品!n");void tianjia()/添加货物数量Loa