超市购物系统 C语言课程设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
沈阳航空航天大学设计用纸
构体数组中实现的。在数组中添加商品信息后,还要将更改后的
信息重新写回文件当中,以保证数据的一致性。具体程序段如下:
void putin() {
FILE *fp; struct text stu[N],sup; int n,i; reads(stu,&n); printf("\n 请输入要更改信息的商品的号码,按回车键确认: "); scanf("%s",sup.num); reads(stu,&n); for(i=0;i<n;i++)
8
沈阳航空航天大学设计用纸
{j=getw(fp); rewind(fp); printf("请输入要添加的商品种数,按回车键确认:"); scanf("%d",&n); putw(j,fp); putw(i,fp); fseek(fp,0L,2); for(i=1;i<=n;i++) { printf("\n 请输入第%d 个商品的号码,名称,数量用空格分 开,并按回车键确认:\n",i);
件当中,以保证数据的一致性。具体程序段如下:
void que() { FILE *fp; struct text stu[N],sup;
int n,i; reads(stu,&n); printf("\n 请输入要购买的商品的号码,按回车键确认:"); scanf("%s",sup.num); reads(stu,&n); for(i=0;i<n;i++) if(strcmp(sup.num,stu[i].num)==0)
fwrite(&stu[i],sizeof(struct text),1,fp); fclose(fp); }
11
沈阳航空航天大学设计用纸
4、显示函数 显示函数是在商品经过进货和售出后能对商品进行最后的统
读写方式打开 file37.dat 不成功?
真
假
Return
读出记录总数赋给*n
循环变量 i=0
当 i<=n 时
读出一条商品信息数据给形参数 数组 stu[i] 商品信息写入文件 i++
图 3 读取商品信息数据
4
沈阳航空航天大学设计用纸
(3)顾客买商品函数 que
Read(stu,&n)
循环变量 i=0,输入待购买的商品号码
5
沈阳航空航天大学设计用纸
二、程序流程图 录入并保存超市商品信息
添加商品信息
6
沈阳航空航天大学设计用纸
购买商品
显示
7
沈阳航空航天大学设计用纸
统计商品销售额
四、技术要点 本程序主要由五个自定义函数和一个主函数组成,其中主函
数以菜单的形式调用其他函数来实现要求的所有功能。在这些函 数当中,录入超市商品信息函数,添加信息函数,购买商品函数 是程序中较为核心的部分,下面分别进行说明。 1、录入并保存超市商品信息函数
沈阳航空航天大学
课程设计
学 号 2010041102037 班 级 04110201 姓 名 张俊峰 指导教师 郭建新
2012 年 6 月 21 日
沈阳航空工业学院
课程设计任务书
院系:材料科学与工程学院 专业:材料成型及控制工程 班级:04110201
学号:2010041102037 题目:超市购物系统
一、课程设计时间
2011~2012 第 2 学期第 16 周,共计 1 周,20 学时。
二、课程设计内容
用 C 语言编写软件完成以下任务: 1 超市的商品保存在 file37 中; 2 进货:可以添加商品信息; 3 卖出商品;该商品数量减少: 4 统计一天的销售额:
三、课程设计要求 1. 程序质量:
每一个商品记录都包含号码,名称,数量,价格。在程序当中,将商品 记录类型定义为结构体类型,添加以及追加的商品信息直接写入 D 盘的 file37.dat 文件中,其他函数每次对商品记录的访问,其数据来源都是 file37.dat 文件,这样做不但可以保证商品数据的一致性,而且可以对商品 数据进行永久保存,保证每次运行程序都可以采用原来的数据,用一个数据
当 i<=n-1 时
真
Stu[i]与 number 相等?
假
Break
i++
i>=n?
真
假
输入该商品信息不存在
j=i+1
当 j<n
数组元素信息依次前移 j++
写方式打开文件 file37.dat
假
不成功?
真
i=0 当 i<=n-2
记录写回文件 i++
关闭文件
显示打开文件失败 return
图 4 顾客买商品函数
贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括显示商品
信息、购物、统计等项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参 见提供的模板。
四、指导教师和学生签字
break; if(i>=n) {printf("无此商品信息!"); return; } printf("商品的数量:"); scanf("%d",&sup.n1); stu[i].n1-=sup.n1; if((fp=fopen("e:\\file37.dat","wb"))==NULL) {printf("打开文件失败!"); return; } putw(n,fp); for(i=0;i<n;i++)
库来存储所有数据,保证数据不会丢失。
1
沈阳航空航天大学设计用纸
二、程序流程图
1、程序总体结构图
地时当间(1)
输入值信息
函数
n=3?
void add() 显示函数 真
void show()
添加商品函
数 void putin( )
真
n=4?
购买商品
n=5?
假
函数(que) 统计(sum)
fwrite(&sup,sizeof(struct text),1,fp); } } } fclose(fp); }
2、添加商品信息函数 该函数的核心内容是添加算法以及最终对源文件的更新。该
函数执行时,首先调用 reads 函数将文件中的商品信息读入数组 当中,并由用户输入待添加商品的号码,而后按照该学号进行查 找,采用添加方法进行添加。对商品信息的具体添加算法是在结
退出
图 1 程序总体结构图
2
沈阳航空航天大学设计用纸
2、具体功能框图 (1)录入商品数据信息函数 add
真
读写方式打开文件 file37.dat 不成功?
假
写方式打开文件 file37.dat
真
不成功?
假
输入商品数量
输出文件打开失败
将 n 写入文件
Return
循环变量 i=1
当 i<=n 时
输入号码名称数量 信息写入文件 i++
if(strcmp(sup.num,stu[i].num)==0) break;
if(i>=n) {printf("无此商品信息!"); return; } printf("商品的数量:"); scanf("%d",&sup.n1); stu[i].n1+=sup.n1; if((fp=fopen("e:\\file37.dat","wb"))==NULL) {printf("打开文件失败!"); return; } putw(n,fp); for(i=0;i<n;i++)
指导教师:________ 学生签名:________
五、说明书成绩
六、教师评语
沈阳航空航天大学设计用纸
目录
一、需求分析................................................................................................. 1 二、程序流程图............................................................................................. 2 二、程序流程图............................................................................................. 6 四、技术要点................................................................................................. 8 五、个人总结................................................................................................ 13 六、参考文献................................................................................................ 13 七、源程序.................................................................................................... 14
输入增加的商品数量 n 从文件中读出商品数量赋给 j
文件位置指针重回开头 rewind 商品记录总数 n+j 写入文件 文件位置指针定义在结尾 fseek
循环变量 i=1 当 i<=1 时 输入商品信息 写入文件 i++
关闭文件
图 2 录入商品数据函数
3
沈阳航空航天大学设计用纸
(2)读取商品信息数据 reads
fwrite(&stu[i],sizeof(struct text),1,fp); fclose(fp); }
3、购买商品函数 该函数的核心内容是删除算法以及最终对源文件的更新。该
函数执行时,首先调用 reads 函数将文件中的商品信息读入数组
10
沈阳航空航天大学设计用纸
当中,并由用户输入待删除商品的号码,而后按照该商品编号进 行查找,采用删除算法删除。对商品信息的具体删除算法是在结 构体数组中实现的,当商品的信息被找到后,位于数组中该商品 后面的商品记录依次向前移动一个元素的位置,这些操作完成后, 要删除的商品信息就被后面的数组元素覆盖掉了,也就实现了删 除。在数组中删除学生信息后,还要将更改后的信息重新写回文
I
沈阳航空航天大学设计用纸
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致 分为 5 个模块,其中每一个模块对应一个函数,他们的功能分别 是 : 录 入 并 保 存 超 市 商 品 信 息 函 数 (add) , 添 加 商 品 信 息 函 数 (putin),顾客购买商品函数(que),超市商品信息查询函数(show), 商品销售额的统计函数(sum)。 1、录入并保存超市商品信息函数 主要实现程序最初运行时商 品信息的录入; 2、添加商品信息函数 主要实现程序运行中商品信息的添加; 3、顾客购买商品函数 实现的功能是按照商品号码对商品的数 据记录进行删除; 4、超市商品信息查询函数 允许按照商品号对超市的各种商品信 息进行查询; 5、商品销售额查询 可以直接查看当日的销售额:
添加数据分为两种情况,其一是在创建文件(file37.dat)不 存在的情况下,首先由程序创建一个新文件,并将录入的商品信 息写入该文件当中;其二是在创建文件(file37.dat)已经存在的 情况下,此时文件要以读写方式或追加的方式打开,这样才可以
保证以前已经存在的数据不丢失。具体的程序段如下:
void add()/*添加商品信息*/ {FILE *fp; int n,i,j; struct text sup; if((fp=fopen("e:\\file37.dat","rb+"))!=NULL)
scanf("%s%s%d",sup.num,,&sup.n1); } } else { if((fp=fopen("e:\\text.dat","wb"))!=NULL) { printf("请输入要添加的商品数量,按回车键确认:"); scanf("%d",&n); putw(n,fp); for(i=1;i<=n;i++) { printf("\n 请输入第%d 个商品的号码,名称,数量用空格 分开,并按回车键确认:\n",i); scanf("%s%s%d",sup.num,,&sup.n1);
沈阳航空航天大学设计用纸
构体数组中实现的。在数组中添加商品信息后,还要将更改后的
信息重新写回文件当中,以保证数据的一致性。具体程序段如下:
void putin() {
FILE *fp; struct text stu[N],sup; int n,i; reads(stu,&n); printf("\n 请输入要更改信息的商品的号码,按回车键确认: "); scanf("%s",sup.num); reads(stu,&n); for(i=0;i<n;i++)
8
沈阳航空航天大学设计用纸
{j=getw(fp); rewind(fp); printf("请输入要添加的商品种数,按回车键确认:"); scanf("%d",&n); putw(j,fp); putw(i,fp); fseek(fp,0L,2); for(i=1;i<=n;i++) { printf("\n 请输入第%d 个商品的号码,名称,数量用空格分 开,并按回车键确认:\n",i);
件当中,以保证数据的一致性。具体程序段如下:
void que() { FILE *fp; struct text stu[N],sup;
int n,i; reads(stu,&n); printf("\n 请输入要购买的商品的号码,按回车键确认:"); scanf("%s",sup.num); reads(stu,&n); for(i=0;i<n;i++) if(strcmp(sup.num,stu[i].num)==0)
fwrite(&stu[i],sizeof(struct text),1,fp); fclose(fp); }
11
沈阳航空航天大学设计用纸
4、显示函数 显示函数是在商品经过进货和售出后能对商品进行最后的统
读写方式打开 file37.dat 不成功?
真
假
Return
读出记录总数赋给*n
循环变量 i=0
当 i<=n 时
读出一条商品信息数据给形参数 数组 stu[i] 商品信息写入文件 i++
图 3 读取商品信息数据
4
沈阳航空航天大学设计用纸
(3)顾客买商品函数 que
Read(stu,&n)
循环变量 i=0,输入待购买的商品号码
5
沈阳航空航天大学设计用纸
二、程序流程图 录入并保存超市商品信息
添加商品信息
6
沈阳航空航天大学设计用纸
购买商品
显示
7
沈阳航空航天大学设计用纸
统计商品销售额
四、技术要点 本程序主要由五个自定义函数和一个主函数组成,其中主函
数以菜单的形式调用其他函数来实现要求的所有功能。在这些函 数当中,录入超市商品信息函数,添加信息函数,购买商品函数 是程序中较为核心的部分,下面分别进行说明。 1、录入并保存超市商品信息函数
沈阳航空航天大学
课程设计
学 号 2010041102037 班 级 04110201 姓 名 张俊峰 指导教师 郭建新
2012 年 6 月 21 日
沈阳航空工业学院
课程设计任务书
院系:材料科学与工程学院 专业:材料成型及控制工程 班级:04110201
学号:2010041102037 题目:超市购物系统
一、课程设计时间
2011~2012 第 2 学期第 16 周,共计 1 周,20 学时。
二、课程设计内容
用 C 语言编写软件完成以下任务: 1 超市的商品保存在 file37 中; 2 进货:可以添加商品信息; 3 卖出商品;该商品数量减少: 4 统计一天的销售额:
三、课程设计要求 1. 程序质量:
每一个商品记录都包含号码,名称,数量,价格。在程序当中,将商品 记录类型定义为结构体类型,添加以及追加的商品信息直接写入 D 盘的 file37.dat 文件中,其他函数每次对商品记录的访问,其数据来源都是 file37.dat 文件,这样做不但可以保证商品数据的一致性,而且可以对商品 数据进行永久保存,保证每次运行程序都可以采用原来的数据,用一个数据
当 i<=n-1 时
真
Stu[i]与 number 相等?
假
Break
i++
i>=n?
真
假
输入该商品信息不存在
j=i+1
当 j<n
数组元素信息依次前移 j++
写方式打开文件 file37.dat
假
不成功?
真
i=0 当 i<=n-2
记录写回文件 i++
关闭文件
显示打开文件失败 return
图 4 顾客买商品函数
贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。用户界面中的菜单至少应包括显示商品
信息、购物、统计等项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参 见提供的模板。
四、指导教师和学生签字
break; if(i>=n) {printf("无此商品信息!"); return; } printf("商品的数量:"); scanf("%d",&sup.n1); stu[i].n1-=sup.n1; if((fp=fopen("e:\\file37.dat","wb"))==NULL) {printf("打开文件失败!"); return; } putw(n,fp); for(i=0;i<n;i++)
库来存储所有数据,保证数据不会丢失。
1
沈阳航空航天大学设计用纸
二、程序流程图
1、程序总体结构图
地时当间(1)
输入值信息
函数
n=3?
void add() 显示函数 真
void show()
添加商品函
数 void putin( )
真
n=4?
购买商品
n=5?
假
函数(que) 统计(sum)
fwrite(&sup,sizeof(struct text),1,fp); } } } fclose(fp); }
2、添加商品信息函数 该函数的核心内容是添加算法以及最终对源文件的更新。该
函数执行时,首先调用 reads 函数将文件中的商品信息读入数组 当中,并由用户输入待添加商品的号码,而后按照该学号进行查 找,采用添加方法进行添加。对商品信息的具体添加算法是在结
退出
图 1 程序总体结构图
2
沈阳航空航天大学设计用纸
2、具体功能框图 (1)录入商品数据信息函数 add
真
读写方式打开文件 file37.dat 不成功?
假
写方式打开文件 file37.dat
真
不成功?
假
输入商品数量
输出文件打开失败
将 n 写入文件
Return
循环变量 i=1
当 i<=n 时
输入号码名称数量 信息写入文件 i++
if(strcmp(sup.num,stu[i].num)==0) break;
if(i>=n) {printf("无此商品信息!"); return; } printf("商品的数量:"); scanf("%d",&sup.n1); stu[i].n1+=sup.n1; if((fp=fopen("e:\\file37.dat","wb"))==NULL) {printf("打开文件失败!"); return; } putw(n,fp); for(i=0;i<n;i++)
指导教师:________ 学生签名:________
五、说明书成绩
六、教师评语
沈阳航空航天大学设计用纸
目录
一、需求分析................................................................................................. 1 二、程序流程图............................................................................................. 2 二、程序流程图............................................................................................. 6 四、技术要点................................................................................................. 8 五、个人总结................................................................................................ 13 六、参考文献................................................................................................ 13 七、源程序.................................................................................................... 14
输入增加的商品数量 n 从文件中读出商品数量赋给 j
文件位置指针重回开头 rewind 商品记录总数 n+j 写入文件 文件位置指针定义在结尾 fseek
循环变量 i=1 当 i<=1 时 输入商品信息 写入文件 i++
关闭文件
图 2 录入商品数据函数
3
沈阳航空航天大学设计用纸
(2)读取商品信息数据 reads
fwrite(&stu[i],sizeof(struct text),1,fp); fclose(fp); }
3、购买商品函数 该函数的核心内容是删除算法以及最终对源文件的更新。该
函数执行时,首先调用 reads 函数将文件中的商品信息读入数组
10
沈阳航空航天大学设计用纸
当中,并由用户输入待删除商品的号码,而后按照该商品编号进 行查找,采用删除算法删除。对商品信息的具体删除算法是在结 构体数组中实现的,当商品的信息被找到后,位于数组中该商品 后面的商品记录依次向前移动一个元素的位置,这些操作完成后, 要删除的商品信息就被后面的数组元素覆盖掉了,也就实现了删 除。在数组中删除学生信息后,还要将更改后的信息重新写回文
I
沈阳航空航天大学设计用纸
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致 分为 5 个模块,其中每一个模块对应一个函数,他们的功能分别 是 : 录 入 并 保 存 超 市 商 品 信 息 函 数 (add) , 添 加 商 品 信 息 函 数 (putin),顾客购买商品函数(que),超市商品信息查询函数(show), 商品销售额的统计函数(sum)。 1、录入并保存超市商品信息函数 主要实现程序最初运行时商 品信息的录入; 2、添加商品信息函数 主要实现程序运行中商品信息的添加; 3、顾客购买商品函数 实现的功能是按照商品号码对商品的数 据记录进行删除; 4、超市商品信息查询函数 允许按照商品号对超市的各种商品信 息进行查询; 5、商品销售额查询 可以直接查看当日的销售额:
添加数据分为两种情况,其一是在创建文件(file37.dat)不 存在的情况下,首先由程序创建一个新文件,并将录入的商品信 息写入该文件当中;其二是在创建文件(file37.dat)已经存在的 情况下,此时文件要以读写方式或追加的方式打开,这样才可以
保证以前已经存在的数据不丢失。具体的程序段如下:
void add()/*添加商品信息*/ {FILE *fp; int n,i,j; struct text sup; if((fp=fopen("e:\\file37.dat","rb+"))!=NULL)
scanf("%s%s%d",sup.num,,&sup.n1); } } else { if((fp=fopen("e:\\text.dat","wb"))!=NULL) { printf("请输入要添加的商品数量,按回车键确认:"); scanf("%d",&n); putw(n,fp); for(i=1;i<=n;i++) { printf("\n 请输入第%d 个商品的号码,名称,数量用空格 分开,并按回车键确认:\n",i); scanf("%s%s%d",sup.num,,&sup.n1);