超市商品信息管理系统的设计与实现的设计方案.docx
- 文档编号:8108100
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:94
- 大小:46.90KB
超市商品信息管理系统的设计与实现的设计方案.docx
《超市商品信息管理系统的设计与实现的设计方案.docx》由会员分享,可在线阅读,更多相关《超市商品信息管理系统的设计与实现的设计方案.docx(94页珍藏版)》请在冰豆网上搜索。
超市商品信息管理系统的设计与实现的设计方案
超市商品信息管理系统的设计与实现的设计方案
1.题目
《超市商品信息管理系统》的设计与实现
2.功能
(1)每一条记录包括一种商品的编号,商品名,生产地,数量,进货价格和卖出价格。
(2)添加功能:
每回都是录入一条商品信息,但是会有提示问您是否继续接着进行商品信息的录入,如果是,您可以继续添加,不是,则返回主菜单。
每回添加的信息会自动以二进制格式写入文件中。
(3)删除功能:
每回您可以删除一条您所指定编号的信息。
(4)修改功能:
会逐条提示您所要修改的商品信息,修改后的信息会自动以二进制格式写入文件中。
(5)查询功能:
输入您所要查询的商品编号,会显示出您所要查询的商品信息。
(6)浏览功能:
会显示出商品的信息。
(7)退出功能:
每回回到菜单界面,您可以根据菜单提示退出系统。
(9)输入任意键,可以进入系统菜单。
3.要求
(1)利用指针来实现学生成绩的数据结构设计;
(2)系统具有添加,删除,修改,查询,浏览,退出等基本功能;
(3)系统的各个调用函数用函数的形式来实现;
(4)可以将商品信息保存在文件中。
(5)可以将商品信息从文件中读取出来。
4.1主函数voidmain()
任意键进入
4.2系统菜单函数voidmenu()
其中有一个switch循环,利用这个循环实现各个函数的调用,当您输入的数字不在菜单围时,会要求您重新输入,清屏之后重新返回菜单界面,继续操作。
效果如下:
4.3判断函数intPanduan(intid)
这是一个有返回值的函数,它不是被菜单函数引用,而是被添加函数引用,主要是判断您新添加的信息是否和之前的信息重复,如果重复,会返回值1,如果不重复则是返回0。
4.4添加函数voidTianjia()
首先以追加数据的形式打开文件,接着利用判断函数判断所添加的信息是否和先前的信息重复,如果重复,则会提示您重新输入,如果不重复,则会逐条显示提示,根据提示,开始添加信息。
完毕之后,提示您是否继续,如果输入“Y”或“y”,,表示继续,函数则会引用自身,又开始新的添加,如果输入“N”或“n”,表示不继续,则会清屏,重新回到菜单界面。
效果如下:
4.5删除函数voidDelete()
首先以只读的形式打开文件,当文件中没有可以执行的信息时,会显示“系统错误,请您重试”,当有可以执行的操作,函数开始把文件中的数据存放到一个结构体数组中,接着提示您要删除的商品编号,利用循环,将不要删除的信息重新写入文件,将删除的信息不重新写入,就是相当于删除了。
完毕之后,提示您是否继续,如果输入“Y”或“y”,,表示继续,函数则会引用自身,又开始新的删除,如果输入“N”或“n”,表示不继续,则会清屏,重新回到菜单界面。
下过如下:
4.6修改函数voidXiugai()
首先以只读的形式打开文件,当文件中没有可以执行的信息时,会显示“系统错误,请您重试”,当有可以执行的操作,函数开始把文件中的数据存放到一个结构体数组中,关闭文件。
在以只读的方式打开,接着提示您要修改的商品编号,利用循环,将不要修改的信息重新写入文件,而要修改的信息则在提示下修改完后重新写入文件。
修改完毕之后,提示您是否继续,如果输入“Y”或“y”,,表示继续,函数则会引用自身,又开始新的删除,如果输入“N”或“n”,表示不继续,则会清屏,重新回到菜单界面。
4.7查询函数voidChaxun()
首先以只读的形式打开文件,当文件中没有可以执行的信息时,会显示“系统错误,请您重试”,当有信息时,则提示您要查询的商品编号,判断是否有这个商品,如果有,则会显示出该商品信息,完毕之后,提示您是否继续,如果输入“Y”或“y”,,表示继续,函数则会引用自身,又开始新的查询,如果输入“N”或“n”,表示不继续,则会清屏,重新回到菜单界面。
如果没有,则会提示“输入的编号不存在,请您重新输入”。
4.8浏览函数voidLiulan()
首先以只读的形式打开文件,当文件中没有可以执行的信息时,会显示“系统错误,请您重试”,当有信息时,则会逐条显示出所有商品的信息,完毕之后,提示您是否继续,如果输入“Y”或“y”,,表示继续,函数则会引用自身,又开始新的浏览,如果输入“N”或“n”,表示不继续,则会清屏,重新回到菜单界面。
效果如下:
N-S流程图如下:
fp=fopen("goods.txt","r")
fp==NULL
是否
系统错误,!
feof(fp)
请您重试index++
输出信息
是否继续
是否
清屏
引用Liulan()
引用menu()
4.9退出函数voidTuichu
选择退出后首先会清屏,接着显示提示“您确定要退出系统吗?
如果您想退出请按'y',其它键将返回主菜单”,如果选择“Y”或“y”,则会退出系统,如果按其他任一键,则重新回到菜单界面。
5总结:
学习C语言一学期了,只是第一次做这么大的编程.刚刚接到这个任务时,感觉无从下手,感觉自己无法完成。
但是还是抱着试试看的心态去完成了,由于上学期链表掌握的并不是很好,所以在这次的程序设计中并没有使用链表,这也可以算是此程序的一个缺点,抑或是自己的一种遗憾。
在做这个程序的过程中,总是遇到一些自己无法解决的问题,有时候自己根本就不知道错在哪里,这也弄得自己心浮气躁的,过了一段时间,静下心来,仔细检查错误,认真打开以前的C语言书本,对照书上的例题,一个个的排除错误,实在有不会就请教班上C语言学的好的同学,他们度比较热心的帮我解决了问题,终于所编起来的C程序可以完整的运行了,虽然其中的过程有些枯燥,但是做好了之后就会有一种成就感,可能这是自己第一次完成的编程大题目,这就像爬山一样,过程是艰辛的,但是当你登上山顶之后,就会有种畅快淋漓的感觉,我想这就是做编程的乐趣吧,这是我第一个做的编程,我将会留下很深的印象,我相信以后我可以做出更好的编程!
程序如下:
#include
#include
#include
#include
structgoods
{
intid;
charname[20];
charproduce[20];
intnumber;
floatbid;
floatprice;
};
voidmenu();
voidadd();
voidDelete();
voidXiugai();
voidChaxun();
voidLiulan();
voidTuichu();
voidmain();
voidmenu();
voidadd();
voidDelete();
voidXiugai();
voidChaxun();
voidLiulan();
voidTuichu();
voidmain();
voidmenu()
{
intchoice;
printf("\n*************超市商品信息管理系统*****************\n");
printf("--------------------------------系统菜单显示如下--------------------------------");
printf("\n\t1.新商品登记\n");
printf("\n\t2.商品信息删除\n");
printf("\n\t3.商品信息修改\n");
printf("\n\t4.商品信息查询\n");
printf("\n\t5.商品信息浏览\n");
printf("\n\t6.退出管理系统\n");
printf("\n\t请输入您要选择的菜单:
");
scanf("%d",&choice);
switch(choice)
{
case1:
add();
break;
case2:
Delete();
break;
case3:
Xiugai();
break;
case4:
Chaxun();
break;
case5:
Liulan();
break;
case6:
Tuichu();
break;
default:
printf("\n\t\t\t\t\t输入无效,请您重新输入.!
");
getch();
}
getch();
menu();
}
intPanduan(intid)
{
FILE*fp;
structgoodsi;
fp=fopen("goods.txt","r");
if(fp==NULL)
{
printf("\t\t\t系统错误,请您重试........");
exit(0);
}
fread(&i,sizeof(structgoods),1,fp);
while(!
feof(fp))
{
if(i.id==id)
{
fclose(fp);
return1;
break;
}
fread(&i,sizeof(structgoods),1,fp);
}
fclose(fp);
return0;
}
voidadd()
{structgoodsi;
charchoice;
FILE*fp;
fp=fopen("goods.txt","ab");
if(fp==NULL)
{
printf("\t\t\t系统错误,请您重试........");
exit(0);
}
labID:
printf("\n\t请您输入要入库商品的信息...\n");
printf("\t\t\t\t商品的编号:
");
scanf("%d",&i.id);
if(Panduan(i.id)==1)
{
printf("\t\t\t\t此编号已被使用,请您重新输入......");
gotolabID;
}
printf("\t\t\t\t商品的名称:
");
scanf("%s",i.name);
printf("\t\t\t\t商品的生产地:
");
scanf("%s",i.produce);
printf("\t\t\t\t商品的数量:
");
scanf("%d",&i.number);
printf("\t\t\t\t商品的进价:
");
scanf("%f",&i.bid);
printf("\t\t\t\t商品的卖价:
");
scanf("%f",&i.price);
fwrite(&i,sizeof(structgoods),1,fp);
fclose(fp);
printf("\t\t\t\t\t\t商品信息已入库成功!
!
!
\n");
printf("\n您想继续吗?
(y/n)");
scanf("%c",&choice);
if(choice=='Y'||choice=='y')
{
add();
}
else
{
menu();
}
}
voidDelete()
{structgoodsi[1000];
structgoodstemp;
intdelID;
charchoice;
intindex=0;
intj=0;
FILE*fp;
fp=fopen("goods.txt","r");
if(fp==NULL)
{
printf("\t\t\t系统错误,请您重试........");
exit(0);
}
fread(&temp,sizeof(structgoods),1,fp);
while(!
feof(fp))
{
i[index]=temp;
index++;
fread(&temp,sizeof(structgoods),1,fp);
}
fclose(fp);
printf("\n\t请输入要删除的商品的编号:
");
scanf("%d",&delID);
fopen("goods.txt","w");
if(fp==NULL)
{
printf("\t\t\t系统错误,请您重试........");
exit(0);
}
for(j=0;j { if(i[j].id! =delID) { fwrite(&i[j],sizeof(structgoods),1,fp); } } fclose(fp); printf("\t\t\t\t\t商品信息已清除! ! ! \n"); printf("\n您想继续吗? (y/n)"); scanf("%c",&choice); if(choice=='Y'||choice=='y') { Delete(); } else { menu(); } } voidXiugai() {intindex=0; intID,j; charchoice; structgoodsi[1000]; structgoodstemp; FILE*fp; fp=fopen("goods.txt","r"); if(fp==NULL) { printf("\t\t\t系统错误,请您重试........"); exit(0); } fread(&temp,sizeof(structgoods),1,fp); while(! feof(fp)) { i[index]=temp; index++; fread(&temp,sizeof(structgoods),1,fp); } fclose(fp); fp=fopen("goods.txt","w"); if(fp==NULL) { printf("\\t\t\t系统错误,请您重试........"); exit(0); } printf("\n\t请输入要修改的信息的商品的编号: "); scanf("%d",&ID); for(j=0;j<=index-1;j++) { if(i[j].id! =ID) { fwrite(&i[j],sizeof(structgoods),1,fp); } else { printf("\t\t商品名称修改为: "); scanf("%s",i[j].name); printf("\t\t商品生产地修改为: "); scanf("%s",i[j].produce); printf("\t\t商品数量修改为: "); scanf("%d",&i[j].number); printf("\t\t商品进价修改为: "); scanf("%f",&i[j].bid); printf("\t\t商品卖价修改为: "); scanf("%f",&i[j].price); fwrite(&i[j],sizeof(structgoods),1,fp); } } fclose(fp); printf("\t\t\t\t商品信息已修改......"); printf("\n您想继续吗? (y/n)"); scanf("%c",&choice); if(choice=='Y'||choice=='y') { Xiugai(); } else { menu(); } } voidChaxun() { FILE*fp; intfindID; charchoice; structgoodsi; fp=fopen("goods.txt","r"); if(fp==NULL) { printf("\t\t\t系统错误,请你重试........"); exit(0); } printf("\n\t请输入要查询的商品的编号.."); scanf("%d",&findID); fread(&i,sizeof(structgoods),1,fp); while(! feof(fp)) { if(i.id==findID) { printf("\n\n\t***************商品信息******************"); printf("\n\t商品编号...%20d\n",i.id); printf("\n\t-----------------------------------------"); printf("\n\t商品名称...%20s\n",i.name); printf("\n\t-----------------------------------------"); printf("\n\t商品产地...%20s\n",i.produce); printf("\n\t-----------------------------------------"); printf("\n\t进口数量...%20d\n",i.number); printf("\n\t-----------------------------------------"); printf("\n\t批发价格...%20.3f\n",i.bid); printf("\n\t-----------------------------------------"); printf("\n\t卖出价格...%20.3f\n",i.price); printf("\n\t-----------------------------------------"); printf("\n您想继续吗? (y/n)"); scanf("%c",&choice); if(choice=='Y'||choice=='y') { Chaxun(); } else { menu(); } } fread(&i,sizeof(structgoods),1,fp); } {printf("\t\t\t\t\t输入错误,请重试"); menu();} fclose(fp); } voidLiulan() {structgoodsi; intindex=0; charchoice; FILE*fp; fp=fopen("goods.txt","r"); if(fp==NULL) { printf("\t\t\t系统错误,请你重试........"); exit(0); } fread(&i,sizeof(structgoods),1,fp); while(! feof(fp)) { index++; printf("\n\n\t****************商品信息%d*****************",index); printf("\n\t商品编号...%20d\n",i.id); printf("\n\t-----------------------------------------"); printf("\n\t商品名称...%20s\n",i.name); printf("\n\t-----------------------------------------"); printf("\n\t商品产地...%20s\n",i.produce); printf("\n\t-----------------------------------------"); printf("\n\t进货数量...%20d\n",i.number); printf("\n\t-----------------------------------------"); printf("\n\t批发价格...%20.3f\n",i.bid); printf("\n\t-----------------------------------------"); printf("\n\t卖出价格...%20.3f\n",i.price); printf("\n\t-----------------------------------------"); getch(); fread(&i,sizeof(structgoods),1,fp); } fclose(fp); printf("\n您想继续吗? (y/n)"); scanf("%c",&choice); if(choice=='Y'||choice=='y') { Liulan(); } else { menu(); } } voidTuichu() {charchoice; printf("\n\n\n\n\n\n\n\t\t\t您确定要退出系统吗? \n\n\n\t\t\t如果您想退出请按'y',其它键将返回主菜单....."); scanf("%c",&choice); if(choice=='Y'||choice=='y') { printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t您的使用! ! ! "); printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 商品信息 管理 系统 设计 实现 设计方案