C语言超市商品管理系统.docx
- 文档编号:9547080
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:31
- 大小:129.06KB
C语言超市商品管理系统.docx
《C语言超市商品管理系统.docx》由会员分享,可在线阅读,更多相关《C语言超市商品管理系统.docx(31页珍藏版)》请在冰豆网上搜索。
C语言超市商品管理系统
实训报告
题目:
超市商品管理系统
院系:
信息科技学院
专业:
计算机科学与技术
姓名:
学号:
指导教师:
日期:
桂林电子科技大学信息科技学院
1问题定义…………………………………………………………………………..3
2系统设计……………………………………………………………………3
2.1总体设计………………………………………………………………………………3
2.2详细设计………………………………………………………………………………3
2.2.1数据结构设计…………………………………………………………3
2.2.2主控流程…………………………………………………………………………3
2.2.3信息输入模块……………………………………………………………………4
2.2.4信息增加模块……………………………………………….…………………4
2.2.5信息修改模块………………………………………………4
2.2.6信息删除模块……………………………………………….…………………4
2.2.7信息查看模块……………………………………………….…………………4
2.2.8信息统计模块…………………………………………………………………4
2.2.9函数功能描述…………………………………………………………………4
3系统实现………………………………………………………………………5
3.1编码………………………………………………………………………5
3.1.1程序预处理……….……………………………………………………………5
3.1.2主函数main()……….………………………………………………………5
3.1.3主菜单界面………….………………………………………………………6
3.1.4商品信息建立…….………………………………………………………….7
3.1.5商品信息查看………….………………………………………………………9
3.1.6商品信息增加……….………………………………………………………..11
3.1.7商品信息删除………….………………………………………………………12
3.1.8商品信息修改………….………………………………………………………14
3.1.9商品数目统计………….………………………………………………………16
3.2测试与调试………………………………………………………………………22
3.2.1概述………….……………………………………………………………22
3.2.2程序测试………….……………………………………………………………22
4系统维护………………………………………………………………………25
5归纳总结………………………………………………………………………25
5.1开发经验………………………………………………………………………25
5.2实训中遇到的问题及解决方法………………………………………………25
5.3设计中的不足之处……………………………………………………………………25
5.4感想和心得体会……………………………………………………………………25
6参考资料………………………………………………………………………25
超市商品管理系统
本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的单链表的各种基本操作。
本程序中涉及结构体、单链表、文件保存等方面的知识。
通过本程序的训练,使学生能对C语言的链表的操作有一个更深刻的了解,掌握利用单链表存储结构实现对超市信息管理系统的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。
1、问题定义
创建一个超市管理系统。
该程序具有保存商品信息、查询商品信息、修改商品信息、删除商品信息、统计商品信息并具有自动判断商品价格、库存等的功能。
超市管理系统主界面
2、系统设计
2.1总体设计
本程序采用模块化设计方法,即将一个大任务分成一个个小任务,然后分别设计个小任务。
划分出来的模块相对独立而又相互关联,容易理解。
本程序由5大模块组成:
1.输入信息模块
2.增加信息模块
3.修改信息模块
4.删除信息模块
5.统计信息模块
2.2详细设计
2.2.1数据结构设计
定义结构体
structgood
{
intnum;/*商品编号*/
charname[20];/*商品名称*/
charkind[40];/*商品类型*/
floatprice;/*商品价格*/
charunit[10];/*商品单位*/
intquantity;/*商品数量*/
structgood*next;/*定义结构体指针类型*/
}*head,*p1,*p2;
单链表good结构体
structgood/*定义结构体*/
{
intnum;/*商品编号*/
charname[20];/*商品名称*/
charkind[40];/*商品类型*/
floatprice;/*商品价格*/
charunit[10];/*商品单位*/
intquantity;/*商品数量*/
structgood*next;/*定义结构体指针类型*/
}*head,*p1,*p2;
2.2.2主控main()函数执行流程
Intmain()
structgood*p1,*p2;
while
(1)
{
if(m==1)
printf("********************************商品信息的查看*******************************\n");
if(m==2)
{
printf("********************************商品信息的输入*******************************\n");
}
if(m==3)
{
printf("********************************商品信息的统计*******************************\n");
}
if(m==4)
{
printf("********************************退出*******************************\n");
}
break;
}
}
return0;
}
本商品管理系统执行主流程。
它先以可读写的方式打开数据文件,此文件默认为“C:
\goodslist.txt”,若该文件不存在,则新建此文件。
当打开文件操作成功后,从文件中一次读出一条记录,然后执行显示主菜单和进入主循环操作,进行按键判断。
2.2.3输入信息模块
记录可以从以文件形式存储的数据文件中读入,也可从键盘逐个输入商品记录。
商品记录由商品的基本信息和成绩信息字段构成。
当从数据文件中读入记录时,也就是把在以记录为单位存储的数据文件中,将记录逐条复制到单链表中。
2.2.4增加信息模块增加信息模块主要实现信息增加
2.2.5修改信息模块修改信息模块主要实现信息修改
2.2.6删除信息模块删除信息模块主要实现信息删除
2.2.7查看信息模块查看信息模块主要实现信息查看
2.2.8统计信息模块统计信息模块主要实现信息统计
2.2.9函数功能描述
shuchu()
shuchu()函数用于输出商品信息。
●structgood*paixu(structgood*head2)
此函数用于给链表排序。
●jisuan()
jisuan()函数用于判断商品的类别。
●printf0(structgood*p)
printf0(structgood*p)函数用于遍历链表并打印电器类商品。
●printf1(structgood*p)
printf1(structgood*p)函数用于遍历链表并打印日用品类商品。
●printf2(structgood*p)
printf2()函数用于遍历链表并打印办公用品类商品。
●printf3(structgood*p)
printf3structgood*p()函数用于遍历链表并打印食品类商品。
●shunxudayin()
shunxudayin()函数用于给商品排序并打印。
●tongji1()
tongji1()函数用于统计给库存量低于100的货名和类别。
●tongji2()
tongji2()函数用于统计商品库存量有2种以上(含两种)低于100的商品类别。
完成在上述系统设计后,即可着手进行系统实现的工作,开始程序代码的编写。
3、系统实现
3.1编码
3.1.1程序预处理
包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。
#include"stdio.h"/*输入,输出头文件*/
#include"stdlib.h"/*申请空间头文件*/
#include"string.h"/*对字符串加工头文件*/
#include"conio.h"/*清屏头文件*/
FILE*fp;
intn=0;/*定义文件指针类型*/
inti,j,a[4],m;/*定义整数类型*/
floataver[4],sum[4],g[4],h;/*定义浮点类型*/
3.1.2主函数main()
main()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。
Intmain()
structgood*p1,*p2;
while
(1)
{
if(m==1)
printf("********************************商品信息的查看*******************************\n");
if(m==2)
{
printf("********************************商品信息的输入*******************************\n");
}
if(m==3)
{
printf("********************************商品信息的统计*******************************\n");
}
if(m==4)
{
printf("********************************退出*******************************\n");
}
break;
}
}
return0;
}
3.1.3主菜单界面
用户进入商品管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。
{
printf("桂林电子科技大学信息科技学院超市管理系统\n");
printf("***********************************************\n");
printf("1----------输出查看或者修改已存信息-----------\n");
printf("-----------------------------------------------\n");
printf("2-----重新输入新信息(并且删除原有信息)------\n");
printf("-----------------------------------------------\n");
printf("3统计商品信息(如果您还没有查看过信息请先按1)\n");
printf("-----------------------------------------------\n");
printf("4-------------------退出---------------------\n");
printf("***********************************************\n");
scanf("%d",&m);
3.1.4商品信息建立
用户进入商品管理系统时,对某个商品的信息进行处理。
structgood/*定义结构体*/
{
intnum;/*商品编号*/
charname[20];/*商品名称*/
charkind[40];/*商品类型*/
floatprice;/*商品价格*/
charunit[10];/*商品单位*/
intquantity;/*商品数量*/
structgood*next;/*定义结构体指针类型*/
}*head,*p1,*p2;
structgood*createlist()/*创建链表函数*/
{
structgood*head1,*p1,*p2;/*定义结构体指针类型*/
if((fp=fopen("goodsmessage.txt","w"))==NULL)/*判断能否打开文件*/
{
printf("cannotopenthefile");
exit(0);/*结束程序*/
}
head1=(structgood*)malloc(sizeof(structgood));/*申请头结点空间*/
p1=head1;
p2=head1;
printf("*********************************************\n");
printf("请输入信息:
编号,名称,类型,价格,单位,数目\n");
printf("(以输入“-1”表示结束输入)\n");
printf("*********************************************\n");
printf("____________________\n");
scanf("%d%s%s%f%s%d",&p1->num,p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity);/*输入商品信息*/
printf("____________________\n");
p1->next=NULL;
fprintf(fp,"%d%s%s%f%s%d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity);/*将商品信息写入文件*/
while
(1)
{
p1=(structgood*)malloc(sizeof(structgood));/*申请新空间*/
printf("*********************************************\n");
printf("请输入信息:
编号,名称,类型,价格,单位,数目\n");
printf("(以输入“-1”表示结束输入)\n");
printf("*********************************************\n");
printf("____________________\n");
scanf("%d",&p1->num);
if(p1->num==-1)/*申请空间结束条件*/
{
printf("____________________\n\n");
fprintf(fp,"%d",-1);
fclose(fp);
returnhead1;/*返回头指针*/
}
scanf("%s%s%f%s%d",p1->name,p1->kind,&p1->price,p1->unit,&p1->quantity);/*输入商品信息*/
printf("________________\n");
fprintf(fp,"%d%s%s%f%s%d",p1->num,p1->name,p1->kind,p1->price,p1->unit,p1->quantity);/*将商品信息写入文件*/
p1->next=NULL;
p2->next=p1;
p2=p1;
}
}
3.1.5商品信息查看
voidshuchu()/*输出商品信息函数*/
{
do
{
structgood*p3,*p4,*p5;/*定义结构体指针类型*/
intn=0,p=0,q=0,r=0;
printf("所有商品信息:
\n");
printf("编号,名称,类型,价格,单位,数目\n");
printf("**********************************\n");
if((fp=fopen("goodsmessage.txt","rb+"))==NULL)/*判断能否打开文件*/
{
printf("cannotopenthefile");
exit(0);/*结束程序*/
}
head=(structgood*)malloc(sizeof(structgood));/*申请头结点空间*/
p3=head;
fscanf(fp,"%d%s%s%f%s%d",&p3->num,p3->name,p3->kind,&p3->price,p3->unit,&p3->quantity);/*从文件中写到链表*/
while
(1)
{
p4=(structgood*)malloc(sizeof(structgood));/*申请头结点空间*/
fscanf(fp,"%d",&p4->num);
if(p4->num!
=-1)/*判断循环结束条件*/
{
fscanf(fp,"%s%s%f%s%d",p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity);/*从文件中写到链表*/
p4->next=NULL;
p3->next=p4;
p3=p4;
}
else
{
p3->next=NULL;
break;
}
}
fclose(fp);/*关闭文件*/
p3=head;
while(p3!
=NULL)
{
printf("%d%s%s%0.1f%s%d\n\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);
printf("__________________________________\n");
p3=p3->next;
}
printf("**********************************\n");
printf("//////////////////////////////////\n");
while(n!
=4)
{
p3=head;
printf("**********************************\n");
printf("1添加商品信息\n");
printf("2删除某商品信息\n");
printf("3修改某商品信息\n");
printf("4返回(当你完成了对某一商品的添加、删除或者修改后请按4返回)\n");
printf("**********************************\n");
scanf("%d",&n);
3.1.6商品信息增加
if(n==1)/*添加商品信息*/
{
printf("请输入商品编号名称类型价格单位数目\n");
printf("**********************************\n");
p4=(structgood*)malloc(sizeof(structgood));/*申请空间*/
scanf("%d%s%s%f%s%d",&p4->num,p4->name,p4->kind,&p4->price,p4->unit,&p4->quantity);/*输入商品信息*/
p4->next=NULL;
while(p3->next!
=NULL)/*判断循环结束条件*/
{
p3=p3->next;
}
p3->next=p4;
p3=head;
if((fp=fopen("goodsmessage.txt","w"))==NULL)/*判断能否打开文件*/
{
printf("cannotopenthefile");
exit(0);/*结束程序*/
}
while(p3!
=NULL)
{
fprintf(fp,"%d%s%s%f%s%d",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity);/*将商品信息写入文件*/
p3=p3->next;
}
fprintf(fp,"%d",-1);
fclose(fp);/*关闭文件*/
printf("**********************************\n");
printf("__________________________________\n");
printf("------------请按4返回-------------\n");
printf("__________________________________\n");
printf("**********************************\n");
}
3.1.7商品信息删除
if(n==2)/*删除商品*/
{
printf("**********************************\n");
printf("请输入需要删除的商品编号\n");
printf("**********************************\n");
scanf("%d",&p);
printf("**********\n");
printf("1确认删除\n2取消删除\n");
printf("**********\n");
scanf("%d",&r);
if(r==1)
{
if((head->num)==p)
{
head=head->next;
free(p3);/*释放空间*/
}
else
{
p4=head;
p3=p4->ne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 超市 商品 管理 系统