超市商品信息管理系统Word格式文档下载.docx
《超市商品信息管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《超市商品信息管理系统Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
(7)退出功能:
每回回到菜单界面,您可以根据菜单提示退出系统。
(9)有一个美观的欢迎界面,输入任意键,可以进入系统菜单。
(10)有一个清晰美观的系统菜单界面来调用各个功能。
3.要求
(1)整个系统均用C语言实现;
(2)利用指针来实现学生成绩的数据结构设计;
(3)系统具有添加,删除,修改,查询,浏览,退出等基本功能;
(4)系统的各个功能模块都用函数的形式来实现;
(5)可以将商品信息保存在文件中。
(6)可以将商品信息从文件中读取出来。
4.设计内容
整个系统除了主函数外,另外还有8个函数,实现九大功能:
添加功能、删除功能、修改功能、查询功能、浏览功能、退出功能、保存功能、读取功能、判断功能。
各个函数的详细设计说明分别如下:
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.调试分析
(1)刚开始写好后,经过调试发现很多错误,这其中有粗心犯下的,例如没有注意到中英文之间的切换,忘记写分号,函数名称拼写不一致等等。
(2)由于对文件知识的陌生,每回写到文件就会卡在那里,然后翻阅书籍,慢慢想,应该如何打开,用什么方式打开,有时候还会忘记关闭文件,反正遇到各种各样的问题,后来通过上网查阅和求助同学,才把文件一块的很多内容完成。
(3)有时候在写循环时,很多时候搞不清要循环多少次,也就是其中的判断条件不好确定,后来没办法,我就一个一个去试,再通过观察,写出条件。
(4)本来一开始写的时候我每个函数后面没有重新回到主菜单这一步骤,每次运行的结果都是堆积在屏幕上的,很不美观,但是我看到其他同学的每次运行完后可以回到菜单,于是向同学请教,也终于做到了这一点。
6.总结:
C语言已学习了两个学期了。
总算对其有了初步的认识与了解!
虽然不能算上手,但基本能看懂许多代码。
当然让自己独立编写有某些功能的程序还是十分吃力的。
比如这次的超市商品信息管理系统,虽然基本算法还算简易,但从文件的各种打开方式和读取开始就很难把持。
只有照着书上的例题去理解,去套用!
才能略有小成的把程序做出来,当然缺陷百出!
怎么讲呢?
总觉得时间不够用!
写程序时感觉时间过得很快,一边写的过程中也在一边学习,每天要消化的东西很多!
通过这次课题编写,使我对C语言有了更深入、更全面的了解,同时也发现自己的英文和函数基础不是很好,对很多地方不是特别懂,甚至对有些概念都还很模糊,但通过这次课程设计,使我对C语言有了新的认识和了解。
平常在书上学的这些知识在我看来是些最基本的知识!
其实C语言应该还包括很多,但就这些基本的知识我们学起来还是很辛苦的,我个人认为C语言的语句块中无非是3个东西,顺序,判断与循环,编写的语句块中没发现过超出这3种东西的,就算调用的函数,在函数里面还是这3个东西,可以说是极其简单,但就这3种东西拼凑在一起时,就能发挥强大的功能与作用。
可谓三个臭皮匠顶个诸葛亮!
一般在没有多数的嵌套下还是能很清晰明了的读写代码,可一旦嵌套一多,就开始晕晕眩眩了。
函数的话,我的理解比较浅,我只能说它的作用除了被人调来调去之外,没有别的功能了!
当然使用函数会是程序别的清晰明了,这点在编写超市商品信息管理系统时也体会到了!
当然我感觉这其中还有一点是至关重要的,那就是算法,也就是自己的设计思路。
我应该如何引用这些函数,什么时候引用以及整个程序的一个构局,这些都要考虑到。
怎么说呢,终于把课题做完了,当看到自己的劳动成果展现在自己眼前,心中的喜悦无以言表。
也同时惊叹计算机的伟大和C语言的神奇,我相信在以后的学习中对C语言会有更深一步的学习和了解,并充分运用好C语言这样一种神奇的语言。
以下是源程序:
/**************************************************头文件***********************************************/
#include<
stdio.h>
stdlib.h>
string.h>
conio.h>
/************************************************定义结构体*********************************************/
structgoods
{
intid;
/*商品编号*/
charname[20];
/*商品名称*/
charproduce[20];
/*商品生产地*/
intnumber;
/*商品数量*/
floatbid;
/*进货价格*/
floatprice;
/*卖出价格*/
};
/************************************************函数原型************************************************/
voidmenu();
/*系统菜单函数*/
voidTianjia();
/*商品信息的添加*/
voidDelete();
/*商品信息的删除*/
voidXiugai();
/*商品信息的修改*/
voidChaxun();
/*商品信息的查询*/
voidLiulan();
/*浏览商品信息*/
voidTuichu();
/*退出管理系统*/
voidmain();
/*主函数*/
/**********************************************系统菜单函数**********************************************/
voidmenu()
intchoice;
printf("
\n\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"
);
--------------------------------系统菜单显示如下--------------------------------"
\n\t①=====================【新购商品入库】\n"
\n\t②=====================【商品信息删除】\n"
\n\t③=====================【商品信息修改】\n"
\n\t④=====================【商品信息查询】\n"
\n\t⑤=====================【商品信息浏览】\n"
\n\t⑥=====================【退出管理系统】\n"
/**/
\n\t请输入您要选择的菜单......"
scanf("
%d"
&
choice);
/*选择菜单功能*/
switch(choice)
{
case1:
Tianjia();
/*引用添加函数*/
break;
case2:
Delete();
/*引用删除函数*/
case3:
Xiugai();
/*引用修改函数*/
case4:
Chaxun();
/*引用查询函数*/
case5:
Liulan();
/*引用浏览函数*/
case6:
Tuichu();
/*引用退出函数*/
default:
printf("
\n\t\t\t\t\t输入无效,请您重新输入......"
getch();
/*重新输入*/
system("
cls"
/*清屏*/
menu();
/*引用系统菜单函数*/
}
}
/***********************************************判断函数***********************************************/
intPanduan(intid)
{
FILE*fp;
/*定义文件指针*/
structgoodsi;
fp=fopen("
/*以只读的方式打开文件*/
if(fp==NULL)
\t\t\t系统错误,请您重试........"
exit(0);
fread(&
i,sizeof(structgoods),1,fp);
/*从文件中读取*/
while(!
feof(fp))/*判断文件数据是否读完,没读完feof=0,读完feof=1*/
if(i.id==id)
{
fclose(fp);
return1;
/*返回1给Panduan(i.id)*/
break;
}
fread(&
fclose(fp);
/*关闭文件*/
return0;
/*********************************************商品信息的添加*********************************************/
voidTianjia()
{structgoodsi;
charchoice;
ab"
/*以向二进制文件尾追加数据的方式打开*/
labID:
/*设置标签*/
\n\t请您输入要入库商品的信息...\n"
\t\t\t\t商品的编号:
"
i.id);
if(Panduan(i.id)==1)/*引用判断函数的值*/
\t\t\t\t此编号已被使用,请您重新输入......"
gotolabID;
/*跳转到标签*/
\t\t\t\t商品的名称:
%s"
i.name);
\t\t\t\t商品的生产地:
i.produce);
\t\t\t\t商品的数量:
i.number);
printf("
\t\t\t\t商品的进价:
%f"
i.bid);
\t\t\t\t商品的卖价:
i.price);
fwrite(&
/*将以上信息写入文件中*/
\t\t\t\t\t\t商品信息已入库成功!
!
\n"
\n您想继续吗?
(y/n)"
%c"
/*选择是否继续*/
if(choice=='
Y'
||choice=='
else
/*********************************************商品信息的删除********************************************/
voidDelete()
{structgoodsi[1000];
/*定义结构体数组*/
structgoodstemp;
intdelID;
charchoice;
intindex=0;
intj=0;
/*将数据存放到结构体数组中*/
temp,sizeof(structgoods),1,fp);
i[index]=temp;
index++;
\n\t请输入要删除的商品的编号:
delID);
fopen("
w"
/*以只写的方式打开文件*/
for(j=0;
j<
index;
j++)
if(i[j].id!
=delID)
fwrite(&
i[j],sizeof(structgoods),1,fp);
/*写入文件*/
fclose(fp);
\t\t\t\t\t商品信息已清除!
Delete();
/*********************************************商品信息的修改*******************************************/
voidXiugai()
{intindex=0;
intID,j;
structgoodsi[1000];
structgoodstemp;
\\t\t\t系统错误,请您重试........"
\n\t请输入要修改的信息的商品的编号:
ID);
for(j=0;
=index-1;
=ID)
else/*开始修改信息*/
printf("
\t\t商品名称修改为:
scanf("
i[j].name);
\t\t商品生产地修改为:
i[j].produce);
\t\t商品数量修改为:
i[j].number);
\t\t商品进价修改为:
i[j].bid);
\t\t商品卖价修改为:
i[j].price);
/*将以上信息写入文件*/
\t\t\t\t商品信息已修改......"
/*引用系统菜单函数