c语言超市管理系统报告书.docx
《c语言超市管理系统报告书.docx》由会员分享,可在线阅读,更多相关《c语言超市管理系统报告书.docx(39页珍藏版)》请在冰豆网上搜索。
c语言超市管理系统报告书
1需求分析:
随着现代生活质量的提高,超市这种便利的服务开始走进我们的生活,同时随着超市涌入我们的生活,如何更便利的对超市进行系统和有序的操作,成为了我们需要考虑的问题,本程序运用C语言程序设计了一个超市管理系统。
关系系统的的功能主要有新购物品入库、物品信息删除、物品信息修改、物品信息查询、物品信息浏览功能,在相应的硬盘上面进行存盘以防止部分数据的丢失。
为了更加人性化使用此管理系统,还在MENU选项总添加了系统颜色设置功能,使用户可以根据自己的喜好修改操作界面。
2概要设计
(1)数据结构
依据给定的物品信息和数据形式,数组必须用结构体实现。
结构类型的层次结构:
structima
{
intid;
charname[20];
charproduce[30];
intnumber;
floatprice;
};
(2)模块划分
依据程序的结构反和功能,遵照“自顶而下”的原则,描述该程序的层次结构图一显示了该程序的层次结构,共5层:
如下图:
图一
图一的层次结构
(3)原函数清单:
1、创建函数
voidchushihua()
2、增加物品函数
Tianjia();
3、删除物品信息函数
Shanchu();
4、修改物品信息函数
Xiugai();
5、查询物品信息函数
Chazhao();
6、浏览物品信息函数
Liulan();
7、系统颜色设置函数
yanseshezhi();
8、应用程序退出函数
Jieshu();
3运行环境:
Win2003,WinXP,Win2000,NT,WinME,Win9X
4开发工具和编程语言:
编程语言:
C语言
开发工具:
microsoftvisualC++6.0
5详细设计:
1、结构体变量的定义:
structima
{
intid;
charname[20];
charproduce[30];
intnumber;
floatprice;
};
3、文件的初始化:
voidchushihua()
{
FILE*fp;
structimai={1,"花生牛奶","湖北武汉",1200,2.5};
fp=fopen("ima.dat","w");
if(fp==NULL)
{
printf("\t\t\t系统错误,请重试........");
exit(0);
}
fwrite(&i,sizeof(structima),1,fp);
fclose(fp);
}
4、欢迎菜单(主函数):
voidmain()
{
printf("\n\n");
system("color1a");
printf("\t\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf("\t\3\3\n");
printf("\t\3\3\n");
printf("\t\3欢迎使用\3\n");
printf("\t\3\3\n");
printf("\t\3\3\n");
printf("\t\3超市库存管理系统\3\n");
printf("\t\3按任意键继续\3\n");
printf("\t\3\3\n");
printf("\t\3\3\n");
printf("\t\3\3\n");
printf("\t\3\3\n");
printf("\t\3\3\n");
printf("\t\3\3\n");
printf("\t\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3");
getch();
system("cls");
menu();
chushihua();
menu();
}
5、选择菜单
voidmenu()
{
intchoice;
printf("\n∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞【超市库存管理系统】∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞\n");
printf("--------------------------------系统菜单显示如下--------------------------------");
printf("\n\t①=====================【新购物品入库】\n");
printf("\n\t②=====================【物品信息删除】\n");
printf("\n\t③=====================【物品信息修改】\n");
printf("\n\t④=====================【物品信息查询】\n");
printf("\n\t⑤=====================【物品信息浏览】\n");
printf("\n\t⑥=====================【系统颜色设置】\n");
printf("\n\t⑦=====================【应用程序退出】\n");
printf("\n\t请输入您要选择的菜单......");
scanf("%d",&choice);
switch(choice)
{
case1:
Tianjia();
break;
case2:
Shanchu();
break;
case3:
Xiugai();
break;
case4:
Chazhao();
break;
case5:
Liulan();
break;
case6:
yanseshezhi();
break;
case7:
Jieshu();
break;
default:
printf("\n\t\t\t\t\t输入无效,请您重新输入......");
getch();
system("cls");
menu();
}
}
6、新购物品入库函数:
intpanduanID(intid)/*判断所输编号是否已存在*/
{
FILE*fp;
structimai;
fp=fopen("ima.date","r");
if(fp==NULL)
{
printf("\t\t\t系统错误,请您重试........");
exit(0);
}
fread(&i,sizeof(structima),1,fp);
while(!
feof(fp))
{
if(i.id==id)
{
fclose(fp);
return1;
break;
}
fread(&i,sizeof(structima),1,fp);
}
fclose(fp);
return0;
}
voidTianjia()
{structimai;
charchoice;
FILE*fp;
fp=fopen("ima.date","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(panduanID(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.price);
fwrite(&i,sizeof(structima),1,fp);
fclose(fp);
printf("\t\t\t\t\t\t物品信息已入库成功!
!
!
\n");
printf("\n您想继续吗?
(y/n)");
scanf("%c",&choice);
if(choice=='Y'||choice=='y')
{
Tianjia();
}
else
{
system("cls");
menu();
}
}
7、物品信息删除函数:
voidShanchu()
{structimai[1000];
structimatemp;
intdelID;
charchoice;
intindex=0;
intj=0;
FILE*fp;
fp=fopen("ima.date","r");
if(fp==NULL)
{
printf("\t\t\t系统错误,请您重试........");
exit(0);
}
fread(&temp,sizeof(structima),1,fp);
while(!
feof(fp))
{
i[index]=temp;
index++;
fread(&temp,sizeof(structima),1,fp);
}
fclose(fp);
printf("\n\t请输入要删除的物品的编号:
");
scanf("%d",&delID);
fopen("f:
\\ima.date","w");
if(fp==NULL)
{
printf("\t\t\t系统错误,请您重试........");
exit(0);
}
for(j=0;j{
if(i[j].id!
=delID)
{
fwrite(&i[j],sizeof(structima),1,fp);
}
}
fclose(fp);
printf("\t\t\t\t\t物品信息已清除!
!
!
\n");
printf("\n您想继续吗?
(y/n)");
scanf("%c",&choice);
if(choice=='Y'||choice=='y')
{
Shanchu();
}
else
{
system("cls");
menu();
}
}
8、物品信息修改函数:
voidXiugai()
{intindex=0;
intID,j;
charchoice;
structimai[1000];
structimatemp;
FILE*fp;
fp=fopen("ima.dat","r");
if(fp==NULL)
{
printf("\t\t\t系统错误,请您重试........");
exit(0);
}
fread(&temp,sizeof(structima),1,fp);
while(!
feof(fp))
{
i[index]=temp;
index++;
fread(&temp,sizeof(structima),1,fp);
}
fclose(fp);
fp=fopen("ima.dat","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(structima),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].price);
}
}
fclose(fp);
printf("\t\t\t\t物品信息已修改......");
printf("\n您想继续吗?
(y/n)");
scanf("%c",&choice);
if(choice=='Y'||choice=='y')
{
Xiugai();
}
else
{
system("cls");
menu();
}
}
9、物品信息查询函数:
voidChazhao()
{
FILE*fp;
intfindID;charchoice;structimai;
fp=fopen("ima.date","r");
if(fp==NULL)
{
printf("\t\t\t系统错误,请你重试........");
exit(0);
}
finID:
printf("\n\t请输入要查询的物品的编号..");
scanf("%d",&findID);
fread(&i,sizeof(structima),1,fp);
while(!
feof(fp))
{
if(i.id==findID)
{
printf("\n\n\t***************物品信息******************");
printf("\n\t物品编号...%30d\n",i.id);
printf("\n\t-----------------------------------------");
printf("\n\t物品名称...%30s\n",i.name);
printf("\n\t-----------------------------------------");
printf("\n\t生产厂家...%30s\n",i.produce);
printf("\n\t-----------------------------------------");
printf("\n\t进口数量...%30d\n",i.number);
printf("\n\t-----------------------------------------");
printf("\n\t批发价格...%30.3f\n",i.price);
printf("\n\t-----------------------------------------");
printf("\n您想继续吗?
(y/n)");
scanf("%c",&choice);
if(choice=='Y'||choice=='y')
{
Chazhao();
}
else
{
system("cls");
menu();
}
}
fread(&i,sizeof(structima),1,fp);
}
fclose(fp);
printf("\t\t\t\t\t输入的编号不存在,请您重新输入......");
gotofinID;
}
10、物品信息浏览函数:
voidLiulan()
{structimai;
intindex=0;
charchoice;
FILE*fp;
fp=fopen("ima.date","r");
if(fp==NULL)
{
printf("\t\t\t系统错误,请你重试........");
exit(0);
}
fread(&i,sizeof(structima),1,fp);
while(!
feof(fp))
{
index++;
printf("\n\n\t****************物品信息%d*****************",index);
printf("\n\t物品编号...%30d\n",i.id);
printf("\n\t-----------------------------------------");
printf("\n\t物品名称...%30s\n",i.name);
printf("\n\t-----------------------------------------");
printf("\n\t生产厂家...%30s\n",i.produce);
printf("\n\t-----------------------------------------");
printf("\n\t进口数量...%30d\n",i.number);
printf("\n\t-----------------------------------------");
printf("\n\t批发价格...%30.3f\n",i.price);
printf("\n\t-----------------------------------------");
getch();
fread(&i,sizeof(structima),1,fp);
}
fclose(fp);
printf("\n您想继续吗?
(y/n)");
scanf("%c",&choice);
if(choice=='Y'||choice=='y')
{
Liulan();
}
else
{
system("cls");
menu();
}
}
11、系统颜色设置函数:
voidyanseshezhi()
{inta;
charchoice;
system("cls");
printf("\n\n\t\t选择以下方案\n");
printf("\n\n\t\t1**************红底黑字\n");
printf("\n\n\t\t2**************白底黑字\n");
printf("\n\n\t\t3**************黑底红字\n");
printf("\n\n\t\t4**************绿底蓝字\n");
printf("\n\n\t\t5**************黄底紫字\n");
printf("\n\n\t\t6**************系统默认\n");
printf("\n\n\t\t\t\t\t请挑选您喜爱的颜色<1-5>......");
scanf("%d",&a);
switch(a)
{
case1:
system("color40");
break;
case2:
system("color70");
break;
case3:
system("color04");
break;
case4:
system("color21");
break;
case5:
system("color65");
break;
case6:
system("color1a");
break;
default:
printf("\n\n\t\t\t\t\t输入无效,重新输入......");
getch();
yanseshezhi();
}
printf("\n选择的颜色您还满意吗?
(y返回主菜单/n继续选择)");
scanf("%c",&choice);
if(choice=='Y'||choice=='y')
{
system("cls");
menu();
}
else
{
yanseshezhi();
}
}
12、应用程序退出函数:
voidJieshu()
{charchoice;
system("cls");
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')
{
system("cls");
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\n");
}
else
{
system("cls");
menu();
}
}
6调试分析:
在此程序的编程前,我上网搜集了一些关于超市管理系统的资料,然后大体决定了编程的大致算法,即利用函数贯穿整个程序,通过SWITCH函数进行各个函数的选择;同时,进过查阅,我添加了系统颜色设置功能,同是应用了清屏函数,课下讲程序大致写好后,我上机进行了调试;但却出现了80几处错误,大都是提示miss“;”beforetybe;经过分析,程序算法并无错误;后来询问老师,才发现原来在我所编的程序中,有需要变量时,都是用的时候才定义,但正确的方法是应该在函数的开头就应该将所要用的变量进行生命,否则就出现了编译错误。
7测试结果:
1、欢迎界面
2、系统选择界面:
3、新购物品入库:
4、物品信息删除:
5、物品信息修改:
6、物品信息查询
7、物品信息浏览:
8、系统颜色设置: