某超市购物系统.docx
- 文档编号:8640713
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:16
- 大小:96.26KB
某超市购物系统.docx
《某超市购物系统.docx》由会员分享,可在线阅读,更多相关《某超市购物系统.docx(16页珍藏版)》请在冰豆网上搜索。
某超市购物系统
课程设计
学号
班级
姓名
指导教师
2009年6月5日
课程设计任务书
一课程设计时间
2008-09第2学期第15周,共计1周,20学时.
二、课程设计内容:
用C语言编写软件完成以下任务:
(1)、录入超市的商品信息保存在文件中(根据情况自定信息内容);
(2)、进货:
可以添加商品信息;
(3)、卖出商品:
该商品的数量减少;
(4)、统计一天的销售额;
三、课程设计要求:
程序质量:
●贯彻结构化程序设计思想。
●用户界面友好,功能明确,操作方便。
用户界面中的菜单至少应包括录入商品的信息、显示商品信息、购物、统计等项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
●课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
●
四、指导教师和学生签字
指导教师:
____________________学生签名:
____________________
五、成绩
六、教师评语
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段4
四、个人总结8
五、参考文献9
六、源程序10
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,再加一个主菜单函数。
他们的功能分别是:
购入函数(brought);卖出函数(sale);显示函数(xianshi);导入函数(daoru);初始化函数(chushihua)。
1.初始化函数(chushihua),用来定位指针的位置;
2、导入函数(daoru),主要功能是导入文件夹实现程序最初运行时商品信息的录入保存在文件中;
3、购入函数(brought),主要添加新的商品信息,为顾客购买查找货物带来便捷;
4、卖出函数(sale),实现对商品数量减少的记录及超市统计一天的销售额获得多少利润的功能。
5、显示函数(xianshi),主要功能是查看超市现有商品名称,数量,销售单价,卖出商品,已获利润。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
二、程序流程图
1.程序总体结构图
2.进够函数流程图
3.售出函数流程图
三、核心技术的实现说明及相应程序段
本程序主要由五个自定义函数和一个主函数组成,其中主函数以switch语句调用其它函数来实现要求的所有功能。
在这些函数当中,购入函数,出售函数,是程序中较为核心的部分。
下面分别进行说明。
1、购入函数
进购函数主要是运用指针将进购商品名称、进价、售价、进购数量等信息输入到文件中,再将指针指向下一行开头,循环进行下一个商品信息输入。
voidbrought()
{
charch;
market*p;
do
{
p=(market*)malloc(sizeof(market));
printf("请输入商品名:
\n");
scanf("%s",p->name);
printf("请输入商品单件进购价格:
\n");
scanf("%d",&p->realmoney);
printf("请输入商品单件销售价格:
\n");
scanf("%d",&p->salemoney);
p->partmoney=0;
p->salecount=0;
printf("请输入商品数量:
\n");
scanf("%d",&p->count);
p->next=NULL;
if(front==NULL)
{
rear=p;
front=p;
}
else
{
rear->next=p;
rear=p;
}
printf("是否继续进货:
(y/n)\n");
getchar();
ch=getchar();
}
while(ch=='y'||ch=='Y');
printf("进货结束:
\n");
}
2、出售函数
出售函数主要是对卖出商品信息进行重新核算,在出售时先判断有无此商品再进行交易,将交易后的数量、获得利润进行计算,并对交易数量进行了限制,即交易数量超过现有数量时,不予交易,并循环返回交易,直到交易结束,退出循环。
voidsale(market*p)
{
charch[20],f;
market*q;
intd;
do
{
printf("请问你要买什么东西:
");
scanf("%s",ch);
p=front;
q=NULL;
while(p->next!
=NULL&&stricmp(p->name,ch)!
=0)
{
q=p;
while(p->next!
=NULL)
{
p=p->next;
}
}
if(p->next==NULL&&stricmp(p->name,ch)!
=0)
{
printf("没有你要的商品:
\n");
}
if(stricmp(p->name,ch)==0)
{
printf("你要的商品是:
%s\n",p->name);
printf("请输入你需要的数量:
\n");
scanf("%d",&d);
if(d>p->count)
{
printf("你所需要的商品数量数量太大,为了别人的利益,不能都卖你.请原谅!
\n");
}
else
{
p->count=p->count-d;
p->salecount=p->salecount+d;
p->partmoney=p->partmoney+d*(p->salemoney-p->realmoney);
totalmoney=totalmoney+d*(p->salemoney-p->realmoney);
}
}
printf("请问你还需要其它东西吗?
(y/n)\n");
getchar();
f=getchar();
}
while(f=='y'||f=='Y');
printf("交易结束:
\n");
}
四、个人总结
这是我学习以来的首次接触课程设计,过去在中学时,只是单纯的掌握了一些纯理论知识,并没能与实践相结合。
上了大学,有了这种将所学知识结合实践的机会。
但当自己着手做时才发现原来课程设计并不像自己想象的那么简单,做了才知道,不仔细研究,不动脑筋,是不可能完成的。
大一时学的C语言学,时隔一年,发现丧失了很多记忆,对很多地方不是特别懂,甚至对有些概念都很模糊。
但在同学热情帮助下,老师细心的指导下,终于完成了。
虽说我的课设不是我百分之百的出自我手,但我为它付出了很多,在这一过程中也学到了很多,我很高兴。
一周的课程设计,使我学到了很多东西,从一个只懂得理论知识不懂得实践的中学生成为了一个自己也能研究简单课题的大学生。
明白了C语言对程序,对电脑的重要性,也增加了我对C语言学习的兴趣,更增强了揭开她神秘面纱的好奇心,我会更加努力的学习她,学懂她,学透她,使之成为我将来立足于社会的一项技能。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include
#include
#include
ints;
inttotalmoney=0;
charchh[20];
typedefstructmarket
{
structmarket*next;
charname[20];//商品名字
intcount;//进货数量
intsalecount;//卖的数量
intrealmoney;//进价
intsalemoney;//售价
intpartmoney;//商品分利润
}m;
typedefmzhizhen;
zhizhen*front,*rear;
intmenu();
voidbrought();//进购函数
voidsale(market*p);//卖出函数
voidxianshi(market*p);//显示函数
voiddaoru();//导入文件函数
voidchushihua(void)//初始化函数,用来定位指针的位置。
{
front=NULL;
rear=NULL;
}
intmenu()
{
intm;
printf("==^-^====^-^==超市购物系统==^-^====^-^==");
printf("\n\t==^-^==1商品购入==^-^==");
printf("\n\t==^-^==2商品售出==^-^==");
printf("\n\t==^-^==3显示现在状况==^-^==");
printf("\n\t==^-^==4退出==^-^==");
printf("\n\t=^-^^-^^-^^-^^-^^-^^-^^-^==");
printf("\nPleasechoose(1to4)tobegin!
:
\n");
scanf("%d",&m);
s=m;
returnm;
}
voidmain()
{market*h;
h=NULL;
chushihua();
daoru();
while(menu()!
=4)
{
switch(s)
{
case1:
brought();break;
case2:
sale(h);break;
case3:
xianshi(h);break;
}
}
}
voidbrought()
{
charch;
market*p;
do
{
p=(market*)malloc(sizeof(market));
printf("请输入商品名:
\n");
scanf("%s",p->name);
printf("请输入商品单件进购价格:
\n");
scanf("%d",&p->realmoney);
printf("请输入商品单件销售价格:
\n");
scanf("%d",&p->salemoney);
p->partmoney=0;
p->salecount=0;
printf("请输入商品数量:
\n");
scanf("%d",&p->count);
p->next=NULL;
if(front==NULL)
{
rear=p;
front=p;
}
else
{
rear->next=p;
rear=p;
}
printf("是否继续进货:
(y/n)\n");
getchar();
ch=getchar();
}
while(ch=='y'||ch=='Y');
printf("进货结束:
\n");
}
voidxianshi(market*p)
{
FILE*fp;
market*q;
q=NULL;
q=front;
printf("\t|商品|\t|商品数量|\t|销售价格|\t|卖出数量|\t|已获利润|\n");
while(q!
=NULL)
{
printf("\t|%s|\t|%d件|\t\t|%d|\t\t|%d|\t\t|%d|\n",q->name,q->count,q->salemoney,q->salecount,q->partmoney);
q=q->next;
}
printf("今天总的收益是:
%d\n",totalmoney);
if((fp=fopen(chh,"w+"))==NULL)
{
printf("Cannotopenthisfile\n");
exit(0);
}
p=front;
while(p!
=NULL)
{
fprintf(fp,"%s%d%d%d%d%d\n",p->name,p->realmoney,p->salemoney,p->count,p->salecount,p->partmoney);/*写入文件*/
p=p->next;
}
fclose(fp);
}
voidsale(market*p)
{
charch[20],f;
market*q;
intd;
do
{
printf("请问你要买什么东西:
");
scanf("%s",ch);
p=front;
q=NULL;
while(p->next!
=NULL&&stricmp(p->name,ch)!
=0)
{
q=p;
while(p->next!
=NULL)
{
p=p->next;
}
}
if(p->next==NULL&&stricmp(p->name,ch)!
=0)
{
printf("没有你要的商品:
\n");
}
if(stricmp(p->name,ch)==0)
{
printf("你要的商品是:
%s\n",p->name);
printf("请输入你需要的数量:
\n");
scanf("%d",&d);
if(d>p->count)
{
printf("你所需要的商品数量数量太大,为了别人的利益,不能都卖你.请原谅!
\n");
}
else
{
p->count=p->count-d;
p->salecount=p->salecount+d;
p->partmoney=p->partmoney+d*(p->salemoney-p->realmoney);
totalmoney=totalmoney+d*(p->salemoney-p->realmoney);
}
}
printf("请问你还需要其它东西吗?
(y/n)\n");
getchar();
f=getchar();
}
while(f=='y'||f=='Y');
printf("交易结束:
\n");
}
voiddaoru()
{
FILE*fp;
market*p;
charch;
intc,d=0;
printf("请输入保存商品信息的文件名,记得后缀txt哦!
\n");
scanf("%s",chh);
printf("请输入旧有商品的种类\n");
scanf("%d",&c);
printf("请问是否导入旧有商品的库存量(y\n):
");
getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
{
if((fp=fopen(chh,"r"))==NULL)
{
printf("Cannotopenthisfile\n");
}
while(!
feof(fp))
{
if(c!
=d)
{
d=d+1;
p=(market*)malloc(sizeof(market));
fscanf(fp,"%s%d%d%d%d%d",p->name,&p->realmoney,&p->salemoney,&p->count,&p->salecount,&p->partmoney);
p->next=NULL;
if(front==NULL)
{
rear=p;
front=p;
}
else
{
rear->next=p;
rear=p;
}
}
elsefgetc(fp);
}
fclose(fp);
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 购物 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)