超市商品信息管理系统.docx

上传人:b****6 文档编号:4440740 上传时间:2022-12-01 格式:DOCX 页数:24 大小:278.68KB
下载 相关 举报
超市商品信息管理系统.docx_第1页
第1页 / 共24页
超市商品信息管理系统.docx_第2页
第2页 / 共24页
超市商品信息管理系统.docx_第3页
第3页 / 共24页
超市商品信息管理系统.docx_第4页
第4页 / 共24页
超市商品信息管理系统.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

超市商品信息管理系统.docx

《超市商品信息管理系统.docx》由会员分享,可在线阅读,更多相关《超市商品信息管理系统.docx(24页珍藏版)》请在冰豆网上搜索。

超市商品信息管理系统.docx

超市商品信息管理系统

苏州科技学院

二○一一~二○一二学年第二学期

电子与信息工程系

课程设计报告书

 

课程名称:

程序设计基础实践

班级:

软件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();/*引用系统

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1