超市商品信息管理系统.docx
- 文档编号:4440740
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:24
- 大小:278.68KB
超市商品信息管理系统.docx
《超市商品信息管理系统.docx》由会员分享,可在线阅读,更多相关《超市商品信息管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
超市商品信息管理系统
苏州科技学院
二○一一~二○一二学年第二学期
电子与信息工程系
课程设计报告书
课程名称:
程序设计基础实践
班级:
软件1112
学号:
1120126206
姓名:
沈鑫
指导教师:
严迪新
二○一二年二月
附录2:
课程设计报告示例
1.题目
《超市商品信息管理系统》的设计与实现
2.功能
(1)每一条记录包括一种商品的编号,名称,生产地,数量,进货价格和卖出价格。
(2)添加功能:
每回都是录入一条商品信息,但是会有提示问您是否继续接着进行商品信息的录入,如果是,您可以继续添加,不是,则返回主菜单。
每回添加的信息会自动以二进制格式写入文件中。
(3)删除功能:
每回您可以删除一条您所指定编号的信息。
(4)修改功能:
会逐条提示您所要修改的商品信息,修改后的信息会自动以二进制格式写入文件中。
(5)查询功能:
输入您所要查询的商品编号,会显示出您所要查询的商品信息。
(6)浏览功能:
会逐个显示出商品的信息。
(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
#include
#include
#include
/************************************************定义结构体*********************************************/
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");
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请输入您要选择的菜单......");
scanf("%d",&choice);/*选择菜单功能*/
switch(choice)
{
case1:
Tianjia();/*引用添加函数*/
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();/*重新输入*/
system("cls");/*清屏*/
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))/*判断文件数据是否读完,没读完feof=0,读完feof=1*/
{
if(i.id==id)
{
fclose(fp);
return1;/*返回1给Panduan(i.id)*/
break;
}
fread(&i,sizeof(structgoods),1,fp);/*从文件中读取*/
}
fclose(fp);/*关闭文件*/
return0;
}
/*********************************************商品信息的添加*********************************************/
voidTianjia()
{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')
{
Tianjia();/*引用添加函数*/
}
else
{
system("cls");/*清屏*/
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))/*判断文件数据是否读完,没读完feof=0,读完feof=1*/
{
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 { system("cls");/*清屏*/ 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))/*判断文件数据是否读完,没读完feof=0,读完feof=1*/ { 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 { system("cls");/*清屏*/ menu();/*引用系统
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 商品信息 管理 系统