C语言超市收银管理系统实现详解

合集下载

c语言课程设计超市收银系统

c语言课程设计超市收银系统

c语言课程设计超市收银系统一、教学目标本课程旨在通过超市收银系统的设计与实现,让学生掌握C语言编程的基本语法、数据结构及算法,培养学生的实际编程能力和问题解决能力。

通过本课程的学习,学生应能熟练运用C语言进行简单应用程序的开发,理解面向对象编程的基本概念,掌握基本的调试技巧。

在技能目标方面,学生应掌握C语言的基本语法,包括数据类型、运算符、控制结构等;能运用函数进行模块化编程;了解并使用面向对象编程思想,包括类、对象、继承、封装等;掌握基本的算法设计和分析方法,能够编写并调试简单的C 语言程序。

在情感态度价值观目标方面,通过超市收银系统的设计与实现,使学生体验到编程的乐趣,增强对计算机科学的兴趣;培养学生的团队合作意识,提高学生解决实际问题的能力;培养学生勇于探索、创新的精神,以及对编程工作的敬业精神和责任感。

二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、面向对象编程和算法设计。

具体包括以下几个部分:1.C语言基本语法:数据类型、变量、运算符、控制结构(循环、分支)、函数等。

2.数据结构:数组、链表、栈、队列等。

3.面向对象编程:类与对象、继承与封装、多态性等。

4.算法设计与分析:排序算法、查找算法、常用算法思想等。

5.超市收银系统的设计与实现:需求分析、系统设计、编码实现、测试与调试等。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。

1.讲授法:用于讲解C语言的基本语法、数据结构、面向对象编程和算法设计等理论知识。

2.案例分析法:通过分析具体的编程案例,使学生更好地理解编程思想和方法。

3.实验法:让学生通过动手实践,完成超市收银系统的各个模块的设计与实现,提高实际编程能力。

4.小组讨论法:在课程进行过程中,学生进行小组讨论,培养团队合作精神和问题解决能力。

四、教学资源为了支持本课程的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C程序设计语言》(K&R)、《C++ Primer》等。

超市收银c语言课程设计

超市收银c语言课程设计

超市收银c语言课程设计一、教学目标本节课的教学目标是让学生掌握超市收银系统的的基本流程,通过C语言编程实现一个简单的超市收银系统。

具体来说,知识目标包括掌握C语言的基本语法、数据结构和算法;技能目标包括能够使用C语言编写程序,解决实际问题;情感态度价值观目标包括培养学生的编程兴趣,提高学生解决问题的能力。

二、教学内容本节课的教学内容主要包括C语言的基本语法、数据结构和算法。

具体安排如下:1.C语言基本语法:介绍C语言的数据类型、运算符、控制语句等基本语法知识。

2.数据结构:讲解常用的数据结构,如数组、链表、栈和队列等,以及如何在程序中使用这些数据结构。

3.算法:介绍常用的排序和查找算法,如冒泡排序、选择排序、插入排序等,并讲解如何在程序中实现这些算法。

三、教学方法为了达到本节课的教学目标,将采用以下教学方法:1.讲授法:讲解C语言的基本语法、数据结构和算法,让学生掌握相关知识。

2.案例分析法:通过分析实际案例,让学生了解如何使用C语言解决实际问题。

3.实验法:让学生动手编写程序,巩固所学知识,提高编程能力。

四、教学资源为了支持本节课的教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供学习参考。

2.参考书:提供相关的参考书籍,丰富学生的知识体系。

3.多媒体资料:制作精美的PPT,直观展示C语言编程过程。

4.实验设备:为学生提供电脑等实验设备,方便学生动手实践。

通过以上教学设计,相信能够帮助学生更好地掌握C语言编程知识,提高解决问题的能力。

五、教学评估本节课的教学评估将采用多元化的评价方式,以全面、客观、公正地评价学生的学习成果。

评估方式包括:1.平时表现:评价学生在课堂上的参与程度、提问回答、小组讨论等,以考察学生的学习态度和积极性。

2.作业:布置相应的编程作业,要求学生独立完成,以检验学生对C语言编程知识的掌握程度。

3.考试:安排一次期末考试,测试学生对C语言基本语法、数据结构和算法的掌握情况。

超市收银c语言课程设计

超市收银c语言课程设计

超市收银c语言课程设计一、课程目标知识目标:1. 学生能理解C语言在超市收银系统中的应用,掌握基本的数据类型、变量、运算符和语法结构。

2. 学生能掌握结构体和数组的使用,实现对商品信息和收银数据的存储与管理。

3. 学生能运用函数和模块化编程思想,实现超市收银系统的各个功能模块。

技能目标:1. 学生能运用C语言编写简单的超市收银系统程序,具备基本的编程能力。

2. 学生能通过调试和修改程序,解决超市收银系统中的常见问题,提高问题解决能力。

3. 学生能运用所学知识,对超市收银系统进行优化和扩展,提高系统性能。

情感态度价值观目标:1. 学生通过课程学习,认识到编程在现实生活中的应用价值,激发对计算机编程的兴趣和热情。

2. 学生在团队协作中学会沟通、分享和合作,培养良好的团队精神。

3. 学生在课程实践中,体验编程带来的成就感,增强自信心,培养积极向上的学习态度。

本课程针对高年级学生,结合C语言学科特点,注重理论与实践相结合。

在教学过程中,关注学生的个体差异,激发学生的兴趣和潜能,培养学生编程思维和实际操作能力。

课程目标明确,分解为具体学习成果,便于后续教学设计和评估。

通过本课程的学习,使学生能够掌握C语言编程技能,为实际应用打下坚实基础。

二、教学内容1. C语言基础语法:数据类型、变量定义、运算符、表达式、输入输出语句。

- 教材章节:第一章至第三章- 进度安排:2课时2. 控制结构:顺序结构、选择结构、循环结构。

- 教材章节:第四章- 进度安排:3课时3. 函数:函数定义、调用、参数传递、递归。

- 教材章节:第五章- 进度安排:3课时4. 结构体与数组:结构体定义、数组应用、结构体数组。

- 教材章节:第六章、第七章- 进度安排:4课时5. 文件操作:文件打开、读写、关闭。

- 教材章节:第十章- 进度安排:2课时6. 超市收银系统设计:需求分析、模块划分、代码编写、系统测试。

- 教材章节:综合应用- 进度安排:5课时教学内容依据课程目标进行选择和组织,注重科学性和系统性。

C语言课程设计_超市管理系统

C语言课程设计_超市管理系统

图6 程序主界面这个界面是运行函数后首先出现的界面,运行函数时,该函数是一个菜单函数,用switch 语句来实现各功能模块的转移,出来该页面后用户可根据提示输入信息,从而实现各种目的。

②键盘输入1,进入商品详细目录用以显示全部商品详细信息图7 显示信息界面该页面用printf输出,在利用指针读出链表中数据并利用合理计算计算出净利润等数据,再用while语句进行循环输出部数据③输入2按回车进入商品买卖页面。

如图8所示图8 买卖信息界面用scanf输入数据,用if语句和while语句来实现循环每一次修改的数据④输入3按回车会进入商品登陆页面,此页面用来登陆商品。

如图9所示图9 登录信息界面将数据登陆入链表个变量中⑤输入4按回车进入商品修改模块如图10所示图10修改信息界面6输入5按回车进入商品删除模块如图11所示使用printf()函数和scanf( )函数,并且利用指针从而实现各种功能。

其中用到了while 循环语句,实现对链表中个数据的重写功能。

运行完后退出该函数图11删除信息界面4.设计体会原文已完。

下文为附加文档,如不需要,下载后可以编辑删除,谢谢!施工组织设计本施工组织设计是本着“一流的质量、一流的工期、科学管理”来进行编制的。

编制时,我公司技术发展部、质检科以及项目部经过精心研究、合理组织、充分利用先进工艺,特制定本施工组织设计。

一、工程概况:西夏建材城生活区27#、30#住宅楼位于银川市新市区,橡胶厂对面。

本工程由宁夏燕宝房地产开发有限公司开发,银川市规划建筑设计院设计。

本工程耐火等级二级,屋面防水等级三级,地震防烈度为8度,设计使用年限50年。

本工程建筑面积:27#楼3824.75m2;30#楼3824.75 m2。

室内地坪±0.00以绝对标高1110.5 m为准,总长27#楼47.28m;30#楼47.28 m。

总宽27#楼14.26m;30#楼14.26 m。

设计室外地坪至檐口高度18.6 00m,呈长方形布置,东西向,三个单元。

C语言超市收银管理系统实现

C语言超市收银管理系统实现

C语言超市收银管理系统实现引言:随着社会经济的发展,超市作为一种新型的购物场所,逐渐取代了传统市场的地位,成为人们购物的首选。

超市管理面临诸多的挑战,因此,使用计算机技术来实现超市收银管理系统具有重要意义。

本文将介绍如何使用C语言实现超市收银管理系统。

1.系统需求分析:超市收银管理系统的主要功能包括商品信息管理、销售管理、库存管理和报表管理等。

这些功能对于超市管理人员来说是非常重要的,因此,我们需要分析每个功能所需的具体要求。

(1)商品信息管理:记录商品的信息,包括商品编号、商品名称、商品数量、商品价格等。

这些信息可以使用文件来存储和读取。

(2)销售管理:记录每次销售的详细信息,包括销售时间、销售员、商品名称、销售数量和销售金额等。

此外,还需要实时更新商品的库存信息。

(3)库存管理:根据销售信息实时更新商品的库存数量,当库存数量低于设定的预警值时,系统应发出警报。

(4)报表管理:生成各种销售报表,包括每日销售额、每月销售额、每类商品的销售情况等。

这些报表可以帮助管理人员了解超市的销售情况并进行分析。

2.系统设计:(1)数据结构设计:根据系统需求,我们需要设计一些数据结构来存储不同的数据,比如商品信息、销售信息和库存信息等。

可以使用结构体来表示每个数据项,同时可以使用链表或数组来保存多个数据项。

(2)功能模块设计:根据系统需求,我们可以把系统功能分为不同的模块,比如商品信息管理模块、销售管理模块、库存管理模块和报表管理模块等。

每个模块可以对应一个函数来实现相应的功能。

(3)界面设计:为了方便用户使用,我们可以设计一个简单的控制台界面,用户通过输入相应的命令来调用功能模块。

比如用户输入"add"可以调用商品信息管理模块来添加商品信息。

3.系统实现:(1)商品信息管理模块:实现商品信息的添加、删除、修改和查询功能。

可以使用文件来存储商品信息。

(2)销售管理模块:实现销售信息的记录和销售金额的计算功能。

超市管理系统(C语言课程设计报告)

超市管理系统(C语言课程设计报告)
本设计运用C语言程序设计了一个超市管理系统。主要实现的功能有进货功能、退货功能、商品销售功能、商品信息查询功能、商品信息浏览功能。
1.开发工具和编程语言:
开发工具:Microsoft Visual C++ 6.0
编程语言:C语言
2.模块划分
3.系统功能与函数的对应关系
本系统包括一个主函数和6个被调函数,分别如下:
jez=jez-sl*s[i].shoujia ;//重新计算总金额
printf("取消购买成功\n");
}
}
}
zl=ssje-jez;//找零
printf("找零%5.1f\n",zl);
printf("购买成功\n");
}
if(a!=2)
{
printf("请选择:");
printf("1.返回开始菜单");
for(i=0;i<b;i++)
if((strcmp(str,s[i].bh)==0)||(strcmp(str,s[i].bhstr)==0))//查找要取消购买的商品
{
printf("请输入取消购买的数量");
scanf("%d",&sl);
s[i].kucun =s[i].kucun +sl;//修改库存信息
printf("2.继续购买商品");
scanf("%d",&a);
jez=0;
}
}
}
(3)运行效果
输入:3
输出:请输入购买商品的编号:
输入:1

c语言课程设计超市管理系统

c语言课程设计超市管理系统

c语言课程设计超市管理系统一、教学目标本节课的教学目标是使学生掌握C语言编程基础,能够运用C语言实现简单的超市管理系统。

具体目标如下:1.知识目标:–掌握C语言的基本语法和数据类型。

–了解函数的定义和调用。

–掌握数组的声明和使用。

–理解指针的概念和应用。

2.技能目标:–能够使用C语言编写简单的程序。

–能够运用函数实现模块化编程。

–能够使用数组存储和管理数据。

–能够运用指针处理内存地址和数据。

3.情感态度价值观目标:–培养学生的编程兴趣和自信心。

–培养学生解决问题的能力和创新精神。

–培养学生团队合作和交流分享的意识。

二、教学内容本节课的教学内容主要包括C语言的基本语法、数据类型、函数、数组和指针。

具体安排如下:1.C语言的基本语法和数据类型:介绍C语言的构成要素,包括变量、常量、运算符、表达式等。

2.函数的定义和调用:讲解函数的声明、定义和调用方式,并通过实例演示函数的使用。

3.数组的声明和使用:介绍数组的声明、初始化和使用方法,并通过实例展示数组在超市管理系统中的应用。

4.指针的概念和应用:讲解指针的定义、声明和使用,并通过实例说明指针在超市管理系统中的应用。

三、教学方法本节课采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:通过讲解C语言的基本语法、数据类型、函数、数组和指针的概念和用法。

2.案例分析法:通过分析超市管理系统的实际案例,引导学生运用C语言编程解决实际问题。

3.实验法:安排课堂实验,让学生动手实践,加深对C语言编程的理解和应用。

4.讨论法:学生分组讨论,促进学生之间的交流与合作,培养团队合作精神。

四、教学资源本节课所需的教学资源包括:1.教材:选用权威、实用的C语言教材,为学生提供系统、全面的学习资料。

2.参考书:提供相关领域的参考书籍,拓展学生的知识面。

3.多媒体资料:制作课件、教学视频等多媒体资料,增强课堂教学的趣味性和生动性。

4.实验设备:准备计算机、编程环境等实验设备,确保学生能够动手实践。

C语言程序设计超市管理系统1

C语言程序设计超市管理系统1

程序设计——超市管理系统学院:专业:班级:姓名:学号:指导老师:超市管理系统课程设计1)需求分析:设计题目:超市管理系统设计要求:有一个小型超市,出售N(N>=10)种商品,设计并实现一个系统系统功能需求分析:1.保存及输出:超市中的各种商品信息保存在指定文件中,可以把它们输出显示。

2.计算并排序:计算每类商品的总价值(sum,单精度)及平均价(aver,单精度,输出一位小数),将每类商品按平均价从大到小的顺序排序打印出来。

3.统计:统计输出库存量低于100的货号及类别。

统计输出有两种以上(含两种)商品库存量低于100的商品类别。

2)概要设计:系统总体设计框架:系统功能模块图:3)详细设计:主要功能模块的算法设计思路:本程序主要分为八个模块:主模块、信息输出修改模块、新建信息模块、排序模块、计算模块、统计模块1、统计模块2、打印模块。

1)主模块:通过调用各分模块实现功能;2)信息输出修改模块:输出显示文件中商品信息内容,添加商品信息,删除商品信息,修改商品信息;3)新建商品信息模块:建立一个新结构体,为链表存信息用,并且将信息保存在指定的文件中;4)排序模块:把文件中顺序零乱的商品信息按单价的大小从高到低进行排序,放到链表里存储;5)计算模块:将所有商品的价格与库存量进行累加求和;6)打印模块:将商品信息按每类平均价格排序(从高到低)按顺序打印出来;7)统计模块1:统计库存量低于100的货名及类别;8)统计模块2:统计商品库存量有2种以上(含2种)低于100的商品类别工作流程图:4)主要源程序代码:#include "stdio.h" /*输入,输出头文件*/#include "stdlib.h" /*申请空间头文件*/#include "string.h" /*对字符串加工头文件*/#include "conio.h" /*清屏头文件*/FILE *fp;int n=0; /*定义文件指针类型*/int i,j,a[4],m; /*定义整数类型*/float aver[4],sum[4],g[4],h; /*定义浮点类型*/char c[5]="elec"; /*定义字符数组类型*/char d[5]="comm"; /*定义字符数组类型*/char e[5]="food"; /*定义字符数组类型*/char f[5]="offi"; /*定义字符数组类型*/struct good /*定义结构体*/{int num; /*商品编号*/char name[20]; /*商品名称*/char kind[40]; /*商品类型*/float price; /*商品价格*/char unit[10]; /*商品单位*/int quantity; /*商品数量*/struct good *next; /*定义结构体指针类型*/}*head,*p1,*p2;struct good *createlist() /*创建链表函数*/{struct good *head1,*p1,*p2; /*定义结构体指针类型*/if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}head1=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/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->u nit,&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=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/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);return head1; /*返回头指针*/}scanf("%s %s %f %s %d",p1->name,p1->kind,&p1->price,p1->unit,&p1->qua ntity); /*输入商品信息*/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;}}struct good *paixu(struct good*head2) /*链表排序函数*/{struct good *p6,*p7,*r,*s; /*定义结构体指针类型*/for(i=0;i<=3;i++) /*赋初值值*/{a[i]=0;sum[i]=0; aver[i]=0; }p6=(struct good *)malloc(sizeof(struct good)); /*申请新空间*/ p6->next=head2;head2=p6;while(p6->next!=NULL) /*判断循环结束条件*/{p7=p6->next;r=p6;while(p7->next!=NULL) /*判断循环结束条件*/{if((p7->next->price)>(r->next->price)) /*判断是否调换*/r=p7;p7=p7->next;}if(p6!=r) /*判断循环结束条件*/{s=r->next; /*指针调换*/r->next=s->next;s->next=p6->next;p6->next=s;}p6=p6->next;}p6=head2;head2=head2->next;free(p6); /*释放第一个无效空间*/return head2;}void jisuan(){p1=head;do{if(strcmp(p1->kind,c)==0) /*判断是否为电器类型*/ {sum[0]=sum[0]+(p1->price)*(p1->quantity); /*求电器总价*/a[0]=a[0]+p1->quantity; /*求电器总件数*/}if(strcmp(p1->kind,d)==0) /*判断是否为日用品类型*/{sum[1]=sum[1]+(p1->price)*(p1->quantity); /*求日用品总价*/a[1]=a[1]+p1->quantity; /*求日用品总件数*/}if(strcmp(p1->kind,e)==0) /*判断是否为办公用品类型*/ {sum[2]=sum[2]+(p1->price)*(p1->quantity); /*求办公用品总价*/a[2]=a[2]+p1->quantity; /*求办公用品总件数*/}if(strcmp(p1->kind,f)==0) /*判断是否为食品类型*/{sum[3]=sum[3]+(p1->price)*(p1->quantity); /*求食品总价*/a[3]=a[3]+p1->quantity; /*求食品总件数*/}p1=p1->next;}while (p1!=NULL); /*遍历链表结束条件*/for(i=0;i<4;i++)aver[i]=sum[i]/a[i]; /*求每类商品平均价*/printf("****************************************************\n"); printf("商品类型 \t 平均价\t 总库存量\n");printf("****************************************************\n"); printf("____________________________________________________\n"); printf("电器总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[0],aver[0],a[0]);printf("____________________________________________________\n"); printf("日用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[1],aver[1],a[1]);printf("____________________________________________________\n"); printf("食品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[2],aver[2],a[2]);printf("____________________________________________________\n"); printf("办公用品总价值:%0.1f\t平均价:%0.1f\t总库存量:%d\n",sum[3],aver[3],a[3]);printf("____________________________________________________\n"); }void shuchu() /*输出商品信息函数*/{do{struct good *p3,*p4,*p5; /*定义结构体指针类型*/int n=0,p=0,q=0,r=0;printf("所有商品信息:\n");printf("编号,名称,类型,价格,单位,数目\n");printf("**********************************\n");if((fp=fopen("goods message.txt","rb+"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}head=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/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=(struct good *)malloc(sizeof(struct good)); /*申请头结点空间*/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);if(n==1) /*添加商品信息*/{printf("请输入商品编号名称类型价格单位数目\n");printf("**********************************\n");p4=(struct good *)malloc(sizeof(struct good)); /*申请空间*/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("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");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");}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->next;while(p3!=NULL) /*判断循环结束条件*/{if((p3->num)==p){p5=p3->next;free(p3); /*释放空间*/p4->next=p5;break;}p3=p3->next;p4=p4->next;}}if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}p3=head;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); /*关闭文件*/}if(r==2)continue; /*继续循环*/printf("**********************************\n");printf("__________________________________\n");printf("------------请按4返回-------------\n");printf("__________________________________\n");printf("**********************************\n");}if(n==3) /*修改某商品信息*/{printf("请输入需要修改的商品编号\n");scanf("%d",&q);while(p3!=NULL) /*判断循环结束条件*/{if((p3->num)==q) /*判断是否为所需要修改的商品*/{printf("请输入商品单价与库存量(如果单价不变请输入原来的单价)\n");scanf("%f %d",&p3->price,&p3->quantity); /*输入商品价格与库存量*/}p3=p3->next;}if((fp=fopen("goods message.txt","w"))==NULL) /*判断能否打开文件*/{printf("can not open the file");exit(0); /*结束程序*/}p3=head;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");}if(n==4) /*退出*/break;}printf("**********\n");printf("1 继续修改\n---------\n2 返回\n");printf("**********\n");scanf("%d",&p);if(p==1)continue; /*继续循环*/if(p==2)break; /*跳出循环*/}while(n!=2);fclose(fp); /*关闭文件*/}void printf0(struct good *p) /*遍历链表并打印电器类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,c)==0) /*判断商品类型是否为电器类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->price,p3->unit,p3->quantity); /*输出电器类商品信息*/printf("________________________________________________\n");}p3=p3->next;}return;}void printf1(struct good *p) /*遍历链表并打印日用品类商品函数*/ {struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,d)==0) /*判断商品类型是否为日用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->pr ice,p3->unit,p3->quantity); /*输出日用品类商品信息*/printf("________________________________________________\n");}p3=p3->next;}return;}void printf2(struct good *p) /*遍历链表并打印办公用品类商品函数*/ {struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,e)==0) /*判断商品类型是否为办公用品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->pr ice,p3->unit,p3->quantity); /*输出办公用品类商品信息*/printf("________________________________________________\n");}p3=p3->next;}return;}void printf3(struct good *p) /*遍历链表并打印食品类商品函数*/{struct good *p3; /*定义结构体指针类型*/p3=p;while (p3!=NULL) /*判断遍历链表循环结束条件*/{if(strcmp(p3->kind,f)==0) /*判断商品类型是否为食品类型*/{printf("%d\t%s\t%s\t%0.1f\t%s\t%d\n",p3->num,p3->name,p3->kind,p3->pr ice,p3->unit,p3->quantity); /*输出食品类商品信息*/ printf("________________________________________________\n");}p3=p3->next;}return;}void shunxudayin(){for(i=0;i<4;i++)g[i]=aver[i]; /*将平均价赋给新数组*/for(j=0;j<3;j++) /*将新数组用冒泡排序法排序*/for(i=j+1;i<4;i++){if(g[j]<g[i]){h=g[j];g[j]=g[i];g[i]=h;}}printf("\n****************************\n");printf("商品平均价格排序表(从高到低)\n");printf("****************************\n");printf("________________________________________________\n");printf("编号\t名称\t类别\t单价\t单位\t数量\n");printf("________________________________________________\n");for(j=0;j<4;j++)for(i=0;i<4;i++){if (aver[i]==g[j]) /*判断每类商品平均价格的先后顺序*/switch(i){case 0:printf0(head); /*调用遍历链表并打印电器类商品函数*/break;case 1:printf1(head); /*调用遍历链表并打印日用品类商品函数*/break;case 2:printf2(head);/*调用遍历链表并打印办公用品类商品函数*/break;case 3:printf3(head); /*调用遍历链表并打印食品类商品函数*/break;}}}void tongji1(){p1=head;printf("\n************************\n");printf("库存量低于100的货名及类别\n");printf("************************\n");printf("________________________\n");printf("商品名称\t商品类型\n");printf("________________________\n");while(p1!=NULL) /*判断遍历链表循环结束条件*/{if(p1->quantity<100) /*判断库存量是否小于100*/{printf("%s\t%s\n",p1->name,p1->kind); /*输出商品名称及类别*/ printf("________________________\n");}p1=p1->next;}}void tongji2(){printf("\n**********************************************\n"); printf("商品库存量有2种以上(含2种)低于100的商品类别:\n"); printf("**********************************************\n");printf("________\n");if((a[0]<100)&&(a[0]>=2)) /*判断电器类库存量是否为2种以上(含2种)低于100*/{printf("电器\n");printf("________\n");}if((a[1]<100)&&(a[1]>=2)) /*判断日用品类库存量是否为2种以上(含2种)低于100*/{printf("日用品\n");printf("________\n");}if((a[2]<100)&&(a[2]>=2)) /*判断食品类库存量是否为2种以上(含2种)低于100*/{printf("食品\n");printf("________\n");}if((a[3]<100)&&(a[3]>=2)) /*判断办公用品类库存量是否为2种以上(含2种)低于100*/{printf("办公用品\n");printf("________\n");}}int main(int argc, char* argv[]){struct good *p1,*p2; /*定义结构体指针类型*/while(1){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);if(m==1)shuchu(); /*调用输出信息函数*/if(m==2){system("cls");head=createlist(); /*调用建立链表函数*/}if(m==3){printf("统计结果如下\n");head=paixu(head); /*调用链表排序函数*/ jisuan(); /*调用计算函数*/shunxudayin(); /*调用顺序打印函数*/tongji1(); /*调用统计1函数*/tongji2(); /*调用统计2函数*/}if(m==4){p1=head;while(p1!=NULL) /*判断遍历链表结束条件*/{p2=p1->next;free(p1); /*释放空间*/p1=p2;}break;}}return 0; /*结束程序*/}5)调试分析过程描述:测试数据:01 milk drink 2.5 box 502 apple fruit 3 kilo 2测试输出结果:存在问题的思考:源代码出错,漏了一些分号导致程序频频出错,在进行编写时注意小地方别出错!否则会影响大局!6)总结:学习体会与收获:通过这个超市管理系统程序设计实验,我从理论知识跨越到实践上,感到收效良多,从崇拜计算机到学会控制计算机,在心理上不再觉得计算机是万能的,人的大脑才是万能的,算法才是万能的数学才是万能的,在这次实验中,实现一个完整的程序大大加深了我对C语言课程的兴趣!对C语言课程设计的认识以及自己的建议:C语言课程设计就是通过编译实现需要的功能的一种程序的设计,建议自己以后在这方面多下功夫,真正实现自己编译以个完整的C程序,实现自己的梦想和未来!如有侵权请联系告知删除,感谢你们的配合!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

超市收银管理程序的设计与实现1摘要和关键字1.1摘要该系统主要用于超市商品管理人员对于商品的信息(包括商品号、商品名、单价)进行输入、删除、修改和查询。

除此之外,当销售人员输入商品号及销售数量时,系统应计算应收钱数,并根据实际收银计算找零数量。

最后,系统能对销售情况进行查询。

AbstractThe system is mainly used in the supermarket goods management personnel of the product information (including commodity number, name of goods, unit price) input, delete, modify, and query. In addition, when sales staff input article number and sales volume, the system should be calculated according to the actual amount receivable, and cashier calculation quantity change. Finally, the system can inquire the sales situation.1.2 关键字登陆系统操作菜单建立信息库查询付款KeywordsLogin system Operation menu Set up information database Inquire Pay2 正文2.1 引言随着经济的发展,人们每天接触并且需要处理的信息越来越多,人们就需要寻求一个工具来实现信息的管理和处理。

尤其是超市里,需要管理各种商品的数目及销售情况,而超市收银管理程序则是针对这种问题而产生的,系统能够实现对商品信息的录入、修改、查询、删除操作,并且在销售时能计算出应收钱数,并能根据实际收钱而计算找零,最后能对销售情况进行查询。

2.2 需求分析(1)销售人员能对商品信息(商品号、商品名、单价)进行输入,建立商品信息库。

(2)输出商品信息库中全部商品的信息(商品号、商品名、售价、数量),并且输出所购商品清单。

(3)销售人员根据顾客需求录入所购商品的商品号及数量,并能实现所购商品的数量修改以及商品删除。

(4)根据所购商品的数量及单价计算出应付钱数,并根据实际收钱数目计算找零数目,并输出。

(5)销售人员通过此程序能查询销售情况,输出商品的信息(商品号、商品名、单价、剩余数量),并计算卖出商品的获利情况。

2.3 数据结构设计struct good goods[N]:总体商品信息数组,全局变量struct good buy_g[j]:所购商品信息数组,全局变量Int j:累计所购商品种类Int select:操作选项build():建立商品信息库函数display():输出商品信息库中信息函数buy():购买商品函数money():计算应付钱数和找零函数add():添加所购商品函数(add()函数子函数)check():查看销售情况函数fp:指向文件的指针total():应付钱数pay():实收钱数2.4 算法设计该系统主要包括登陆系统、商品信息库建立系统、商品信息库输出系统、购物系统、结账系统以及销售情况查询系统。

其中购物系统包括商品添加及显示系统、修改购买商品系统以及删除购买商品系统,逻辑结构清晰,使用方便。

2.4.1 登陆系统登陆系统由销售人员操作,是系统选择门户,其中选择1则执行商品信息库建立的操作,选择2执行商品信息库输出操作,选择3执行购物操作,选择4执行结账操作,选择5执行销售情况查询操作。

void main(){void build(),display(),buy(),money();void add(),check();int select;printf("***************************\n");printf("1.建立商品信息库\n");printf("2.输出商品信息\n");printf("3.购买商品\n");printf("4.结账\n");printf("5.查看销售情况\n");printf("6.退出\n");printf("***************************\n");while(1){printf("请输入选择序号\n");scanf("%d",&select);if(select<1||select>6){printf("输入有误,请重新输入\n");}elseswitch(select){case 1:build();continue;case 2:display();continue;case 3:buy();continue;case 4:money(j);continue;case 5:check();continue;case 6:printf("谢谢使用。

\n");exit(0);}}}2.4.2 商品信息库建立系统由工作人员操作,用于录入超市商品的信息(商品序号、商品名、进价、售价、数量),并建立商品信息库。

void build(){FILE *fp;int i;printf("请依次输入商品信息\n");for( i=0;i<N;i++){printf("商品序号:");scanf("%s",goods[i].num);printf("商品名:");scanf("%s",goods[i].name);printf("进价:");scanf("%f",&goods[i].in_price);printf("售价:");scanf("%f",&goods[i].out_price);printf("数量:");scanf("%d",&goods[i].amount);}if((fp=fopen("goods","w"))==NULL){printf("can't open the file\n");return;}fwrite(goods,sizeof(struct good),N,fp);fclose(fp);printf("***************************\n");}2.4.3 商品信息库输出系统商品信息库输出系统用于输出超市所有商品信息,用于检查商品信息录入是否有误。

void display(){int i;FILE *fp;if((fp=fopen("goods","r"))==NULL){printf("can't open the file\n");return;}for(i=0;fread(goods+i,sizeof(struct good),1,fp)!=0;i++){printf("商品序号商品名售价数量\n");printf("%5s\t%7s\t%8.2f\t%d\n",goods[i].num,goods[i].name,goods[i].out_price,goods[i] .amount);printf("***************************\n");}fclose(fp);}2.4.4 购物系统用于顾客购买商品时操作,通过录入商品序号实现查找,其中包括购买商品及显示系统、修改系统及删除系统三个子函数。

选择1执行购买商品及显示操作,选择2执行修改商品数量操作,选择3执行删除操作,选择4退出,返回上一层。

void buy(){int menu();void add();void revise();void show();void del();while(1){switch(menu()){case 1:add();show();break;case 2:revise();break;case 3:del();break;case 4:printf("***************************\n");printf("1.建立商品信息库\n");printf("2.输出商品信息\n");printf("3.购买商品\n");printf("4.结账\n");printf("5.查看销售情况\n");printf("6.退出\n");printf("***************************\n");return;}}}int menu (){int choose;printf("***************************\n");printf("1.购买商品\n");printf("2.修改数量\n");printf("3.删除商品\n");printf("4.退出\n");printf("***************************\n");printf("请选择操作序号\n");while(scanf("%d",&choose)){if(choose<1||choose>5){printf("输入错误,请重新输入!\n");continue;}else break;}return choose;}2.4.4.1 商品添加及显示系统通过输入商品序号并且与商品信息库中数据比较实现查找,并输出所选商品的信息(商品号、商品名、售价、数量),在输入所购数量后,存入buy_g[]数组中存储,并且显示出所购商品的信息以及购买数量。

相关文档
最新文档