



免费预览已结束,剩余23页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选文库实训报告题 目: 超市商品管理系统院 系: 信息科技学院专 业: 计算机科学与技术姓 名: 学 号: 指导教师: 日 期: 桂林电子科技大学信息科技学院目 录1 问题定义 .32 系统设计 321 总体设计322 详细设计32.2.1 数据结构设计 32.2.2 主控流程 32.2.3 信息输入模块 42.2.4 信息增加模块 .42.2.5 信息修改模块 42.2.6 信息删除模块 .42.2.7 信息查看模块 .42.2.8 信息统计模块 42.2.9 函数功能描述 43 系统实现 53.1 编码 53.1.1 程序预处理 .53.1.2 主函数main() .53.1.3 主菜单界面 . 63.1.4 商品信息建立 . .73.1.5 商品信息查看 .93.1.6 商品信息增加 .113.1.7 商品信息删除 .123.1.8 商品信息修改 .143.1.9 商品数目统计 .163.2 测试与调试 223.2.1 概述 .223.2.2 程序测试 .224 系统维护 255 归纳总结 255.1 开发经验 255.2 实训中遇到的问题及解决方法 255.3 设计中的不足之处255.4 感想和心得体会 256 参考资料 25超市商品管理系统本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的单链表的各种基本操作。本程序中涉及结构体、单链表、文件保存等方面的知识。通过本程序的训练,使学生能对C语言的链表的操作有一个更深刻的了解,掌握利用单链表存储结构实现对超市信息管理系统的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。1、问题定义创建一个超市管理系统。该程序具有保存商品信息、查询商品信息、修改商品信息、删除商品信息、统计商品信息并具有自动判断商品价格、库存等的功能。 超市管理系统主界面2、系统设计21 总体设计本程序采用模块化设计方法,即将一个大任务分成一个个小任务,然后分别设计个小任务。划分出来的模块相对独立而又相互关联,容易理解。本程序由5大模块组成:1. 输入信息模块2. 增加信息模块3. 修改信息模块4. 删除信息模块5. 统计信息模块22 详细设计2.2.1数据结构设计定义结构体struct good int num; /*商品编号*/ char name20; /*商品名称*/ char kind40; /*商品类型*/ float price; /*商品价格*/ char unit10; /*商品单位*/ int quantity; /*商品数量*/ struct good *next; /*定义结构体指针类型*/*head,*p1,*p2;单链表good结构体struct good /*定义结构体*/ int num; /*商品编号*/ char name20; /*商品名称*/ char kind40; /*商品类型*/ float price; /*商品价格*/ char unit10; /*商品单位*/ int quantity; /*商品数量*/ struct good *next; /*定义结构体指针类型*/*head,*p1,*p2;2.2.2 主控main()函数执行流程Int main()struct good *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; return 0; 本商品管理系统执行主流程。它先以可读写的方式打开数据文件,此文件默认为“C:goods list.txt”,若该文件不存在,则新建此文件。当打开文件操作成功后,从文件中一次读出一条记录,然后执行显示主菜单和进入主循环操作,进行按键判断。2.2.3 输入信息模块记录可以从以文件形式存储的数据文件中读入,也可从键盘逐个输入商品记录。商品记录由商品的基本信息和成绩信息字段构成。当从数据文件中读入记录时,也就是把在以记录为单位存储的数据文件中,将记录逐条复制到单链表中。2.2.4 增加信息模块 增加信息模块主要实现信息增加2.2.5 修改信息模块 修改信息模块主要实现信息修改2.2.6 删除信息模块 删除信息模块主要实现信息删除2.2.7 查看信息模块 查看信息模块主要实现信息查看2.2.8 统计信息模块 统计信息模块主要实现信息统计2.2.9 函数功能描述shuchu()shuchu()函数用于输出商品信息。l struct good *paixu(struct good*head2) 此函数用于给链表排序。l jisuan()jisuan()函数用于判断商品的类别。l printf0(struct good *p)printf0(struct good *p)函数用于遍历链表并打印电器类商品。l printf1(struct good *p)printf1(struct good *p)函数用于遍历链表并打印日用品类商品。l printf2(struct good *p)printf2()函数用于遍历链表并打印办公用品类商品。l printf3(struct good *p)printf3 struct good *p ()函数用于遍历链表并打印食品类商品。l shunxudayin()shunxudayin()函数用于给商品排序并打印。l tongji1()tongji1()函数用于统计给库存量低于100的货名和类别。l tongji2()tongji2()函数用于统计商品库存量有2种以上(含两种)低于100的商品类别。完成在上述系统设计后,即可着手进行系统实现的工作,开始程序代码的编写。3、系统实现31 编码3.1.1 程序预处理包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。#include stdio.h /*输入,输出头文件*/ #include stdlib.h /*申请空间头文件*/ #include string.h /*对字符串加工头文件*/ #include conio.h /*清屏头文件*/ FILE *fp;int n=0; /*定义文件指针类型*/int i,j,a4,m; /*定义整数类型*/ float aver4,sum4,g4,h; /*定义浮点类型*/ 3.1.2 主函数main()main()函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。Int main()struct good *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; return 0; 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 商品信息建立用户进入商品管理系统时,对某个商品的信息进行处理。struct good /*定义结构体*/ int num; /*商品编号*/ char name20; /*商品名称*/ char kind40; /*商品类型*/ float price; /*商品价格*/ char unit10; /*商品单位*/ 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-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=(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(_nn); fprintf(fp,%d,-1); fclose(fp); return head1; /*返回头指针*/ 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商品信息查看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 %dnn,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=(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); 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-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); 3.1.8商品信息修改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); /*关闭文件*/3.1.9商品信息统计void printf0(struct good *p) /*遍历链表并打印电器类商品函数*/ struct good *p3; /*定义结构体指针类型*/ p3=p; while (p3!=NULL) /*判断遍历链表循环结束条件*/ if(strcmp(p3-kind,c)=0) /*判断商品类型是否为电器类型*/ printf(%dt%st%st%0.1ft%st%dn,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(%dt%st%st%0.1ft%st%dn,p3-num,p3-name,p3-kind,p3-price,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(%dt%st%st%0.1ft%st%dn,p3-num,p3-name,p3-kind,p3-price,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(%dt%st%st%0.1ft%st%dn,p3-num,p3-name,p3-kind,p3-price,p3-unit,p3-quantity); /*输出食品类商品信息*/ printf(_n); p3=p3-next; return;void shunxudayin() for(i=0;i4;i+) gi=averi; /*将平均价赋给新数组*/ for(j=0;j3;j+) /*将新数组用冒泡排序法排序*/ for(i=j+1;i4;i+) if(gjgi) h=gj; gj=gi; gi=h; printf(n*n); printf(商品平均价格排序表(从高到低)n); printf(*n); printf(_n); printf(编号t名称t类别t单价t单位t数量n); printf(_n); for(j=0;j4;j+) for(i=0;iquantityname,p1-kind); /*输出商品名称及类别*/ printf(_n); p1=p1-next; void tongji2() printf(n*n); printf(商品库存量有2种以上(含2种)低于100的商品类别:n); printf(*n); printf(_n); if(a0=2) /*判断电器类库存量是否为2种以上(含2种)低于100*/ printf(电器n); printf(_n); if(a1=2) /*判断日用品类库存量是否为2种以上(含2种)低于100*/ printf(日用品n); printf(_n); if(a2=2) /*判断食品类库存量是否为2种以上(含2种)低于100*/ printf(食品n); printf(_n); if(a3=2) /*判断办公用品类库存量是否为2种以上(含2种)低于100*/ printf(办公用品n); printf(_n); 32 测试与调试3.2.1 概述一般情况下,为解决一个问题所编写的程序代码较长,可能包括几百条甚至成千上万条语句。在检查并排除所有语法错误后,还会有不易发现的逻辑错误,因此要对程序进行认真仔细的测试与调试。测试是通过运行程序发现错误的过程,常见的错误有数据溢出、数组越界、进入死循环、语句顺序颠倒、多加“;”或少加“”等等。调试则是确定测试中找到的错误性质并改正错误的过程。测试与调试通常交替进
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某大型集团管理咨询项目建议书
- 工业废弃地到生态校区的转型策略研究
- 工业旅游发展与城市形象塑造策略研究
- 工业机器人设计与操作流程
- 工业废物处理的先进技术介绍
- 工业机器人技术及发展趋势分析
- 工业污染防治及废弃物管理
- 工业自动化中的智能机器人技术探讨
- 工业涂装的环保要求与措施
- 工业设计中的创新理念与方法
- 乒乓球训练安全协议书
- 办公区安全隐患检查
- 低压电工作业复审培训
- 严寒和寒冷地区居住建筑节能设计标准JGJ26-2010
- 科技助力植树节:无人机、机器人种树新趋势
- 冲刺高考英语词性转换(易错)背诵版默写版(各版本通用)
- 《Python语言程序设计》课程标准
- 电大国开专科(附答案)《办公室管理》形考在线(形考任务五)试题
- 砖混厂房改钢结构施工方案
- 团体保险投保单
- 2022年失业保险基金绩效评价报告(最终稿)
评论
0/150
提交评论