课程设计--大学生超市商品信息管理系统_第1页
课程设计--大学生超市商品信息管理系统_第2页
课程设计--大学生超市商品信息管理系统_第3页
课程设计--大学生超市商品信息管理系统_第4页
课程设计--大学生超市商品信息管理系统_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.高级语言程序设计(1)课程设计专业 数学与应用数学 班级 1001 学号 201001030104 姓名 张瑶 完成日期 2011.06.22 指导教师:王小燕1.程序设计说明书【设计题目】大学生超市商品信息管理系统【问题描述】 大学生超市有N种商品,每种商品的信息用该软件通过键盘敲入并以文本文件方式存放在磁盘,内容为五列:商品编号、商品名称、商品产地、商品数量、商品单价。编写一个程序,管理超市物品信息情况。【软件功能】1. 通过此软件可以直接录入每种商品的信息并将其自动保存到磁盘上;2. 可以对已录入每种商品的信息进行修改,并且修改完成后会将更改后的信息情况自动保存到原磁盘文件中;3. 可

2、以进行商品信息查询以及浏览。【算法思想】 构造一个结构体类型,其成员包括五项:3个字符型数组,分别存放商品编号、商品名称、商品产地;1个整型变量,存放商品数量;1个浮点型变量,存放商品单价。录入各商品信息时,通过循环语句将商品信息输入到结构体中并写入文本文件中,并存入磁盘。修改各物品信息时,先将文件读出到结构体中,通过字符的比较查找所修改的商品所在处,如果没有找到则输出警告语句,找到后则通过输入输出函数进行修改,并将修改过后的各个商品信息写入文本文件中,并存入磁盘。 商品信息浏览时,先将文件读出到结构体中,如果文件不存在则输出警告语句,否则通过循环语句和输出函数将结果显示在屏幕上。商品信息查询

3、时,先将文件读出到结构体中,如果文件不存在则输出警告语句,否则通过输入函数直接输入商品货号,通过条件语句找出该商品货号信息并将输出结果显示在屏幕上。【模块划分及调用关系】 main函数main 函数readfile函数Save函数Quit函数Scan函数Lookup函数Correct函数Input函数 readfile 函数 save 函数 quit 函数 lookup 函数 scan 函数 correct 函数 input 函数 main 函数分别调用: input(); /新购物品录入 correct(); /物品信息修改 lookup(); /物品信息查询 scan(); /物品信息浏览

4、 quit(); /程序退出input 函数调用: save(); /数据存储correct 函数调用: save(); /数据存储scan 函数调用: readfile(); /读文件【模块流程图】 main函数 输入 choice1=>choice 2=>choice 3=>choice 4=>choice 5=>choice else商品信息 商品信息 商品信息 商品信息 程序录入 修改 查询 浏览 退出 input函数 创建商品信息文件 文件创建成功 文件创建失败输入:商品编号(id) 商品名称(name) 商品产地(produce) 商品数量(num)商

5、品单价(price) 直到输入完N个商品的信息 通过循环,将所输入内容写入文件中,保存在磁盘里 correct函数读取文件读入文件成功 读入文件失败 输入要修改的物品编号id 在文件中找到 在文件中未找到输入更改后的: 商品名称(name)商品产地(produce)商品数量(num)商品单价(price)通过save函数将更改后的内容写入文件关闭文件 lookup函数 读取文件 读取文件成功 读取文件失败输入要查询的商品编号id 在文件中找到 在文件中未找到 输出查询到的: 商品编号(id) 商品名称(name)商品产地(produce) 商品数量(num)商品单价(price) 关闭文件 s

6、can函数读取文件读取文件成功 读取文件失败调用readfile函数,读取文件中的商品信息 通过循环语句,将各个商品的信息情况进行输出 关闭文件 quit函数 输入ch Y=>ch N=>ch else=>ch 退出 返回 程序 主菜单 【程序使用方法】(1)执行程序,按照界面提示进行选择。输入 “1”,进入商品添加。(2)按照程序提示,分别输入商品编号、商品名称、商品产地、商品数量、商品价格。(注:这里默认为有3个物品,可以通过宏定义进行修改。)(3)输入成功后,自动返回主界面。输入“4”,进入商品信息浏览,程序自动将各商品信息情况输出到屏幕上。(4)浏览成功后,自动返回主

7、界面。输入“2”,进入商品信息修改,按照提示进行输入。(5)输入成功后,自动返回主界面。输入“3”,进入商品物品信息查询,按照提示进行输入,程序将要查询的商品信息情况输出到屏幕上。(6)查询成功后,自动返回主界面。输入“5”,进入程序退出,输入“Y”退出程序,输入“N”返回主界面。2.程序上机调试报告【语法错误及其排除】(1) 调用fscanf()函数时,忘记前面的文件指针;(2) If(strcmp(s1,s2),少了括号;(3)调用scanf()函数时,字符型变量应直接用数组名。【算法错误及其排除】(1)在结束一次循环时使用了break语句,终止了循环导致错误,应该使用continue语句

8、;(2)商品信息查询时,输入商品编号id然后通过循环比较字符串是否相等,最后当m=N-1时,找不到对应的id,而不是m=N。3.程序测试结果【测试数据】 001 山椒凤爪 重庆 120 1.2 002 脉动饮料 北京 52 3.5 003 阿尔卑斯 上海 260 10.5【输出结果】 【收获及体会】 通过这次的课程设计,一方面:在不断的修改,编译过程使我对c语言的一些语法规则更加深刻的理解与认识,在这过程中也锻炼了自己的逻辑思维,更是提高了自己做事的严谨性;另一方面:这次也是理论应用于实践的一次践行,真正做到学有所用,对于word文档的制作也是次练习。也相信经过这次的课程设计,自己在以后的学习

9、生活中对待问题会更加的严谨,也会更加注重理论应用实际。4. 源程序代码#include "stdio.h" /预编译命令#include "stdlib.h" /预编译命令#include "string.h" /预编译命令#define N 3struct information /定义商品信息的结构体 char id20; /商品编号 char name20; /商品名称 char produce20; /商品产地 int num; /商品数量 float price; /商品价格 goodsN;/*/void save() /创

10、建商品信息的文件 int i; FILE *fp; if(fp=fopen("E:商品信息.txt","w")=NULL) printf("无法建立文件!请检查是否E盘不存在!n"); exit(0); /如果建立失败,输出警告信息,并自动关闭程序 for(i=0;i<N;i+)fprintf(fp,"%-10st%-10st%-10st%-6dtt%-6fn",goodsi.id,,duce,goodsi.num,goodsi.price);/写入文件fclose(

11、fp); /关闭文件,防止数据丢失 /*/void input() /商品信息录入 void main();/对主函数进行声明 int i; FILE *fp; if(fp=fopen("E:商品信息.txt","w")=NULL) printf("无法建立文件!请检查是否E盘不存在!n"); exit(0); /*如果建立文件成功,则提示输入商品信息*/ printf("=* 商品信息录入 *=n"); printf("请输入:ntt商品编号 商品名称 商品产地 商品数量 商品价格n"); f

12、or(i=0;i<N;i+) scanf("%s%s%s%d%f",goodsi.id,,duce,&goodsi.num,&goodsi.price); /输入值到结构体中 save(); printf("n文件保存成功!系统返回主菜单.nn"); main();/返回主函数 /*/void correct() /商品信息修改 void main(); /对主函数进行声明 int i,k; char id20; /定义要修改的物品信息 char name20; char produce20

13、; int num; float price; FILE *fp=fopen("E:商品信息.txt","r"); if(fp=fopen("E:商品信息.txt","r")=NULL) printf("无法打开文件!请检查文件是否存在!nn"); exit(0); for(i=0;i<N;i+) fscanf(fp,"%s%s%s%d%f",goodsi.id,,duce,&goodsi.num,&goodsi

14、.price);printf("=* 商品信息修改 *=n");printf("请输入所修改的商品编号:");scanf("%s",id);for(i=0;i<N;i+) k=i; /*使用strcmp函数将输入的编号与已录入的编号比较*/ if(strcmp(goodsi.id,id)=0) printf("请输入更改后的信息:ntt商品名称 商品产地 商品数量 商品价格n"); scanf("%s%s%d%f",name,produce,&num,&price); st

15、rcpy(,name); /用修改后的信息覆盖错误信息 strcpy(duce,produce); goodsi.num=num; goodsi.price=price; save(); /调用save函数 printf("n修改成功!系统自动返回主菜单.nn"); break; /如果修改成功则中断循环,并输出警告信息 else if(k=N-1) printf("信息不存在或输入有误!系统返回主菜单.nn"); else continue;/如果在一次循环中没找到信息,则中断此次循环 fclose(fp);

16、/关闭文件,防止数据丢失 main(); /返回主函数/*/int M; /定义全局变量void readfile() /读文件 struct information product; /定义结构体变量 FILE *fp; M=0; if(fp=fopen("E:商品信息.txt","r")=NULL) printf("无法打开文件!请检查文件是否存在!nn"); exit(0); while(!feof(fp) /当未到文件末尾时进行循环 fscanf(fp,"%s%s%s%d%f",product.id,pro

17、,duce,&product.num,&product.price); M+; /*/void lookup() /商品信息查询 void main(); int i,m; char id20; FILE *fp=fopen("E:商品信息.txt","r"); if(fp=fopen("E:商品信息.txt","r")=NULL) printf("无法打开文件!请检查文件是否存在!nn"); exit(0); /如果打开失败,输出警告信息

18、,并自动关闭程序 for(i=0;i<N;i+) fscanf(fp,"%s%s%s%d%f",goodsi.id,,duce,&goodsi.num,&goodsi.price); printf("=* 商品信息查询 *=n"); printf("请输入所查询的商品编号:"); scanf("%s",id); for(i=0;i<N;i+) m=i;if(strcmp(goodsi.id,id)=0)/使用strcmp函数进行字符串的比较 pr

19、intf("nn商品编号t商品名称t商品产地t商品数量t商品价格n"); printf("%-10st%-10st%-10st%-6dtt%-6fn",goodsi.id,,duce,goodsi.num,goodsi.price); printf("n查询成功!系统自动返回主菜单.nn"); break; else if(m=N-1) printf("信息不存在或输入有误!系统返回主菜单.nn"); else continue; fclose(fp); /关闭文件,防止数

20、据丢失 main(); /返回主函数 /*/void scan() /商品信息浏览 void main(); int i; FILE *fp=fopen("E:商品信息.txt","r"); if(fp=fopen("E:商品信息.txt","r")=NULL) printf("无法打开文件!请检查文件是否存在!nn"); exit(0); else readfile(); printf("=* 商品信息浏览 *=n"); printf("nn商品编码t商品名称t商

21、品产地t商品数量t商品价格n"); for(i=0;i<M-1;i+)/读出文件内容,并输出内容到屏幕上 fscanf(fp,"%s%s%s%d%f",goodsi.id,,duce,&goodsi.num,&goodsi.price); printf("%-10st%-10st%-10st%-6dtt%-6fn",goodsi.id,,duce,goodsi.num,goodsi.price); fclose(fp); /关闭文件,防止数据丢失 main(); /返回主函数 /*/void quit() /退出程序 void main(); char ch; printf("tt您确定要退出系统吗?n"); printf("ttY->退出程序 N->返回主菜单"); Cycle: /语句标号 ch=getchar(); if(ch='Y'|ch='y') printf("系统退出,欢迎再次使用!nn"); /退出程序 return; else if(ch='N'|ch='

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论