



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言商品管理系统11.1 22 2(13 2(256 38 .103.1.2main().8 3.2 20.20.21 4215215.1225.222 5.323 5.423 623养学生工程意识、创新能力、团队精神等综合素质,培养学生的设计能力和解决实际问题的能力。C语言由于其强大的功能,丰富的表达能力,高效的代码,良好的移植性和灵活性,自1C语言课程设计1972 年问世以来,经久不衰,即使现在出现了面向对象的程序设计方法和开发工具,但它仍然是人们学习程序设计的首选语言,用它训练和提高编程技术,以及开发应用程序等。
2、我们通过 C语言程序设计这门课程的学习,已经能编写解决小问题的程序,对程序的开发也有了初步的认识,还掌握了C 语言的基本语法,这一过程确确实实令我们感到欣喜,有点计算机可以完成自我任务的成就感。但是,对于程序设计而言,学习C 的步伐不应该停留于此。我们最终的目的应该是掌握开发大型综合程序的方法,即遵循软件工程的开发步骤和结构化程序设计思想,用C 语言开发出解决复杂问题的大型综合程序。可是对于多数学生来说,学习了C 语言后,除了应付各种考试之外,别无它用,对Turbo C 语言丰富的函数知之甚少,加上DOS环境所限,因而对C语言兴趣不大,也感到C语言比较难以掌握。本实训就是为了让学生在学完C 语
3、言后进一步了解C 语言的知识,掌握C 语言在软件开发方面的使用方法,希望通过此次实训,不仅能提高学生学习C 语言的兴趣,更为今后学习其它专业知识及开发程序打下坚实的基础。本指导书中有些内容借鉴了互联网上相关程序的设计思想,在此对相关者表示衷心的感谢。由于时间、经验及水平的原因,不当、不足之处,请大家提出宝贵意见。编者桂林电子科技大学信息科技学院商品管理系统本题目设计目的是训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉 C 语言的文件和单链表的各种基本操作。本程序中涉及结构体、数组、文件等方面的知识。通过本程序的训练,使学生能对C 语言的文件操作有一个更深刻的了解,掌握利用文件保存实现
4、对商品管理管理的原理,为进一步开发出高质量的管理信息系统打下坚实的基础。1 、问题定义2学生成绩管理制作一个商品管理系统,功能包括商品录入、商品排序、商品查找、商品存储与读入、按条件输出商品单价等。图 1.1 商品管理系统功能需求在问题定义阶段要考虑题目的可行性和需求分析,接下来进入开发阶段,完成系统设计和系统实现的任务。2、系统设计2(1 总体设计采用模块化的程序设计方法,即将较大的任务按照一定的原则分为一个个较小的任务,然后分别设计各个小任务。需要注意的是划分出来的模块应该相对独立但又相关,且容易理解。可以用模块化层次结构图 ( 即模块图 ) 来分析其任务的划分,一般从上到下进行,最上面一
5、层是主模块,下面各层是其上一层模块的逐步细化描述。商品管理系统输入商品显示商品查找商品信息添加商品退出系统信息 信息 信息图 2.1按件输从从按打选按按输按入 单入任文键序开择单序信价 0意件盘号文查价号息查,读输查找件键存询方入入询入式文3图 2.1学生成绩管理系统功能模块图C语言课程设计本商品管理系统采用文件保存实现,如图2.1 所示,它由如下五大功能模块组成 :, 输入商品信息模块。完成将信息输入文件的工作。信息以二进制形式存储的数据文件中读入。商品信息由商品序号,商品生产商,商品单价构成。 , 显示商品模块。完成商品信息的输入后,可以选择打开商品信息存入的文件,并按照商品号或者商品单价
6、的排序形式输出商品信息。, 查找商品信息模块。查找要找的商品信息,打开商品存入的文件并输入商品号显示要查找的商品信息。,添加商品模块。将新添的商品信息存储入指定的文件。,退出系统模块。输入 0 按回车键退出商品管理系统。2(2 详细设计数据结构设计, 商品信息结构体typedef structchar name30; /*商品名称 */int num; /*商品号 */char shang10; /*商品生产厂家*/float price; /*商品单价 */record;结构体 struct student将用于存储商品信息,它将存储到指定的文件。主控 main() 函数执行流程开始新建一个
7、文件,以写入的方式写入文件以可读的方式打开指定的文件调用菜单函数进入 while(1)主循环,运用 switch 语 4句输入 0,4 中的一个数值,选择相应操作学生成绩管理本成绩管理系统执行主流程如图2.2 所示。它先创建文件,将商品信息输入文件,并按提示输入数字 (0-4) 打开文件,通过文件读写来实行商品的显示和添加等。在选择功能时,有效的输入为本0 至 4 之间的任意数值,其他输入都被视为错误按键。若输入为0( 即变量 fn=0) ,它会显示退出系统,并按任意键退出。若选择1,则调用void DataInput(record *com, int *nptr)函数,执行输入商品信息操作;
8、 若选择2,则调用void DataDisPlay( )函数,执行商品显示操作;若选择3,则调用void DataFind( ) ;函数,执行商品查找操作; 若选择4,则调用void DataAdd( )函数,执行商品信息添加操作 ; 若选择 5,则调用 void DataStatistic( )函数,执行退出系统操作。函数功能描述DataInput(record *st, int *q)函数原型 :void DataInput(record *st, int *q)DataInput(record *st, int *q)函数用于输入商品信息,写入文件中。DataStorage(record
9、 *st, int n)函数原型 :void DataStorage(record *st, int n)DataStorage(record *st, int n)DataFind( )5函数用于将商品信息存储入文件中。C语言课程设计函数原型:void DataFind( )DataFind( )函数用于商品信息的查找。DataDisPlay( )函数原型 :void DataDisPlay( )DataDisPlay( )函数用于显示商品信息,按指定的顺序显示出来。void DataAdd( )函数原型 :void void DataAdd( )void DataAdd( )函数用于添加商
10、品信息,写入并存储到指定的文件当中。,主函数 main()整个成绩管理系统控制部分,其详细说明可参考图二。完成在上述系统设计后,即可着手进行系统实现的工作,开始程序代码的编写。 3 、系统实现3(1 编码程序预处理包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。#include <stdio.h>#include <conio.h>#include <string.h>#define S 50typedef structchar name30;int num;char shangjia10;float price;record;void Da
11、taInput(record *st, int *q); int DataRead(record *st,int *q) ;void DataStorage(record *st, int n); /*信息保存到文件*/ void DataFind( );void DataDisPlay( ); void DataAdd( );6学生成绩管理主函数main()main() 函数主要实现了对整个程序的运行控制,以及相关功能模块的调用。详细分析可参考图 2。int main( )record shangpinS;int number=20; /*设商品数 */char a;printf("
12、;t欢迎进入我的商品管理系统主菜单界面用户进入商品管理系统时,需要显示主菜单,提示用户进行选择,完成相应任务。此代码被 main() 函数调用。while(1)printf("ntt1.录入商品 n"); /*显示主菜单*/printf("tt2.显示商品 n");printf("tt3.查找商品 n");printf("tt4.添加商品 n");printf("tt0.退出 ");printf("nt,n");printf("t请输入你的一个选项 ( 数字 0-4
13、): ");fflush(stdin);scanf("%c",&a);puts("n");switch(a) /*切换到不同功能 */case '1':DataInput(shangpin, &number );break; /*录入信息 */case '2':7C语言课程设计DataDisPlay(shangpin,number);break; /*信息显示 */case '3':DataFind(shangpin,number );break; /*信息查找 */case
14、39;4':DataAdd( );break; /*增加 */case '0':return 0;default:puts("tt没有这个项返回主菜单");break;printf("ntt完毕 ! 按任意键继续 ");getch( );puts("n");输入商品信息用户进入商品管理系统时,通过输入商品数量,商品名称,商品号,商品生产厂家,商品单价来录入到文件中。void DataInput(record *st, int *q) /*商品信息录入*/ int i = 0;int n ; /*录入的总数*/c
15、har YesOrNo; /*判断是否保存*/char shangjiaming30; /*商名 */int haoma; /*商品号 */char shangjia10; /* float danjia;单价 */printf("tt请输入商品个数:");8学生成绩管理scanf("%d",&n);*q = n; /*q返回商品个数 */printf("tt现在开始录入这 %d个商品信息 :nn",n);while(i<n)printf("请输入商品的商品名 :",i+1);scanf("
16、%s",&shangjiaming);printf("请输入商品的商品号 :",i+1);scanf("%d",&haoma);printf("请输入商品的生产商 :",i+1);scanf("%s",&shangjia);printf(" 请输入商品的单价 scanf("%f",&danjia);:",i+1);if(danjia>=0&&danjia<=12345) /*有效的单价才录入*/strcpy
17、(,shangjiaming);sti.num = haoma;strcpy(sti.shangjia,shangjia);sti.price = danjia;i =i+1;elseprintf("输入的单价是一个无效的值!nn"); /*结束 while*/printf("要保存您刚才录入的数据吗(Y/N)?"); /*选择保存 */fflush(stdin);scanf("%c",&YesOrNo);if(YesOrNo='y'|YesOrNo='Y')DataStorag
18、e(st,n);else if(YesOrNo='n'|YesOrNo='N')return;elseprintf("输入了不正确的选项 n");return;9C语言课程设计 /*结束函数 */查找商品信息以读出的形式打开文件,通过条件来查找文件中的商品信息,并且以按商品号或者按商品单价的形式由低到高排列出来。void DataFind( ) /* 查找 */void OnNumber(record *st,int n ); /*按商品号排序*/int key; /*key为要查找的关键值*/int low = 0; /*下限 */int
19、high ; /*上限 */int mid ; /*中间值 */char ans; /*选项 */record stS;int n;if(DataRead(st,&n)=1) /*从文件中读取信息 */OnNumber(st,n); /*先按商品号排序 */high = n;doprintf("nntt请输入你要查找的商品号:");scanf("%d",&key);low = 0;high = n;while (low <=high)mid = (high + low)/2;if (key = stmid.num )printf(&
20、quot;ntt 你要找的是第 %d个商品 n",mid + 1); 10学生成绩管理printf("tt结果如下 :nn");printf("序号 tt商品名 t商品号 t生产商 t 单价 n");printf("%3d%17s%12d%12s%8.1fn",mid+1,,stmid.num,stmid.shangjia,stmid.price);break; /*如果找到则退出循环 */if (key > stmid.num ) low = mid + 1;else high = mid - 1
21、;if (low > high)printf("tt,没有找到这个价格!n");printf("ntt还要继续查询吗(Y/N),");ans = getch( );while (ans ='Y'|ans = 'y'); /*结束do.while*/录入商品信息新建一个文件,将输入的商品信息录入文件并保存,成功后,可执行将商品信息添加到该文件中,或者从文件中读取商品信息等功能。void DataStorage(record *st, int n) /*录入保存文件 */int i;FILE *fp;char FileN
22、ame20;printf("请输入您要保存的文件名:");scanf("%s",FileName);printf("正在将商品信息保存到文件,请稍候, n");if(fp=fopen(FileName,"w")=NULL)11C语言课程设计printf("没有该文件 n");elsefor(i=0 ; i<n ; i+)fprintf(fp,"n%17s%12d%12s%8.1f",,sti.num,sti.shangjia,sti.price);fcl
23、ose(fp);int DataRead(record *st,int *q) /*int i=0;char datafile20;FILE *fp;*q = 0;读取文件 */ printf(" 请输入文件名 scanf("%s",datafile);:");if(fp = fopen(datafile,"r") = NULL) /* 打开文件 */printf("没有该文件,请重新输入n");return 0;elseprintf("正在读取商品单价,请稍候, n");while (!feo
24、f(fp)fscanf(fp,"%s%d%s%f",&,&sti.num,&sti.shangjia,&sti.price);i+;*q = i;printf("n");fclose(fp);12学生成绩管理return 1;显示商品信息文件创建成功并且存入了商品信息后,可以通过指定的操作打开文件并将文件的商品信息显示出来。void DataDisPlay()void OnPrice(record *st,int n ); /*按单价 */void OnNumber(record *st,int n );
25、/*按商品号 */int N;int i;record st300;char YesNo; /*是否按顺序显示 */char tp;if(DataRead(st,&N)=1) /*从文件读取数据*/ printf("序号 tt商品名 t商品号 t生产商 t单价 n");for(i=0;i<N;i+)printf("%3d%17s%12d%12s%8.1fn",i+1,,sti.num,sti.shangjia,sti.price);printf("要按顺序显示吗 ,(Y/N)?");fflush(stdi
26、n);scanf("%c",&YesNo);if(YesNo='y'|YesNo='Y')printf("t请输入排序方式 :n");printf("t(1.按价格排序从低到高 ;2. 按商品号排序从低到高 .)");fflush(stdin);scanf("%c",&tp);13C语言课程设计if(tp='1')OnPrice(st,N);else if(tp ='2')OnNumber(st,N);elseprintf("
27、t输入了不正确项 n"); /* 结束显示成绩 */按单价排序商品信息查找商品信息时,按照商品单价的高低查看要查找的商品信息。voidOnPrice(record *st,int n ) /*按单价顺序*/ int i,j;record temp;printf("tt按单价排序 -nn");printf("商品总数为 %d:n",n);for(j=0 ; j<n-1 ; j+)for(i=0 ; i<n-j-1 ; i+)if(sti.price>sti+1.price) temp=sti;sti=sti+1;sti+1=te
28、mp;printf("ntt按成绩排序的结果如下( 按分数从低到高):nn");printf("序号 tt商品名 t商品号 t生产商 t单价 n");for(i=0 ; i<n ; i+)printf("%3d%17s%12d%12s%8.1fn",i+1,,sti.num,sti.shangjia,sti.price);14学生成绩管理按商品序号查找商品信息查找商品信息时,按照商品序号来查看要查找的商品信息。void OnNumber(record *st,int n ) /*按序号顺序*/int i,j;re
29、cord temp;printf("tt按商品号排序-nn");printf("商品总数为%d:n",n);for(j=0 ; j<n-1 ; j+)for(i=0 ; i<n-j-1 ; i+)if(sti.num>sti+1.num)temp=sti;sti=sti+1;sti+1=temp;printf("nt(按商品号从小到大 ):nn");printf("序号 tt商品名 t商品号 t生产商 t 单价 n");for(i=0 ; i<n ; i+)printf("%3d%
30、17s%12d%12s%8.1fn",i+1,,sti.num,sti.shangjia,sti.price);添加商品信息15C语言课程设计打开建立的文件,将要添加的商品信息写入文件当中并且保存。voidDataAdd( ) /*增加 */int i=0,n,m; /*商品名称 */char shangjiaming30;int haoma; /*生产商 */char shangjia10;float danjia;char YesOrNo;record stS;printf("tt读取原有数据信息 -n");if(DataRead(st,&am
31、p;n)=1) printf("tt信息读取完毕 !nn");printf("tt请输入要添加的商品总数:");scanf("%d",&m);printf("tt现在开始录入这 %d个商品信息 :nn",m);while(i<m)printf("第%d个商品的商品名 :",i+1);scanf("%s",&shangjiaming);printf("第%d个商品的商品号 :",i+1);scanf("%d",&am
32、p;haoma);printf("第%d个商品的生产商 :",i+1);scanf("%s",&shangjia);printf("第%d个商品的单价 :",i+1);scanf("%f",&danjia);if(danjia>=0&&danjia<=12345) /*有效的单价才录入 */16学生成绩管理strcpy(sti+,shangjiaming);sti+n.num = haoma;strcpy(sti+n.shangjia,shangjia);st
33、i+n.price = danjia;i =i+1;elseprintf(" 输入的单价不正确,请重新输入 !nn");printf(" 要保存您刚才录入的数据吗 (Y/N)?"); fflush(stdin);scanf("%c",&YesOrNo);if(YesOrNo='y'|YesOrNo='Y')DataStorage(st,n+m);else if(YesOrNo='n'|YesOrNo='N')return;elseprintf("输入了不
34、正确项,返回上一级n");return;3(2 测试与调试概述一般情况下,为解决一个问题所编写的程序代码较长,可能包括几百条甚至成千上万条语句。在检查并排除所有语法错误后,还会有不易发现的逻辑错误,因此要对程序进行认真仔细的测试与调试。测试是通过运行程序发现错误的过程,常见的错误有数据溢出、数组越界、进入死循环、语句顺序颠倒、多加“; ”或少加“ ”等等。甚至有时候一不小心连变量或者函数名写错的都不知道,等到程序编写好了发现错误就很多,改起来也比较麻烦,虽然是简单的错误,但是我们在编写程序的时候还是要仔细认真,避免这样或者那样的小错误。调试则是确定测试中找到的错误性质并改正错误的过程
35、。测试与调试通常交替进行,即测试调试再测试再调试。17C语言课程设计能检查出尚未发现的、各种不同类型错误的测试才是成功的测试。测试程序需要测试用例,测试用例可用如下公式表示: 测试用例 , 测试数据,预期结果。好的测试用例应该是用尽可能少的测试数据发现尽可能多的错误,即发现错误的概率要大。要选择合适的测试数据,使系统在运行时尽量能执行到每条语句,以测试各指令是否正确。还应分别测试输入合法数据与非法数据时,程序的运行情况,。对于合法数据,还要考虑数据的一般性与特殊性,如求最大值的问题,应测试最大值在最前面、最后面、中间某一位置的情况。测试可按模块测试、组装测试和确认测试的步骤进行。(1) 模块测
36、试就是分别对各模块进行测试的过程。在编写一个模块后应立即对其进行测试,因为这时对模块记忆深刻,而且单个模块相对较小,所以容易构造测试数据,能方便地检查和改正错误。(2) 组装测试就是把所有模块 ( 应该是通过模块测试的模块 ) 按预先制定的计划逐步组装和测试的过程。一般情况下,各模块之间要相互传递数据和控制信息,因此组装测试的主要任务是发现模块接口中的错误。(3) 确认测试是最后一个步骤,一般在将软件交付用户之前,应确认软件是否确实满足用户的要求,通常使用接近实际的用例进行测试。测试程序时,用监视窗口可以随时查看变量或表达式的值,有时还可以将部分程序代码用注释符暂时括起来,缩短程序,以便压缩出错代码的范围。程序测试, 在主菜单中选择 1当在菜单中选择输入数字1 时,按回车键可进入商品信息录入界面,将要录入文件的商品信息写入文件中。其输入记录过程如图3.1 所示,这里输入了3 条商品信息。 , , 图3.1, 在主菜单中选择 2, 当输入 2 并按回车键时候可进入商品信息显示界面,显示之前录入的商品信息。并按照18学生成绩管理商品序号或者商品单价的高低来排序,或者可以按N 来取消按顺序显示。如图3.2 所示。, 图 3.2, 在主菜单中选择 3, 在菜单中输入 3 可进入商品信息查找界面,可以通过商品所在的文件名,商品的序号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关注校园环境卫生
- 合同房地产合作专项项目合同4篇
- 电脑及配件销售合同模板6篇
- 急救知识健康宣教
- 儿童预防疾病总结
- 2025西安思源学院辅导员考试试题及答案
- 2025贵州民族大学辅导员考试试题及答案
- 2025苏州工业园区服务外包职业学院辅导员考试试题及答案
- 2025年广东省深圳市龙岗区中考历史二模试卷
- 初中生的卫生管理要点
- 广西建设工程质量检测和建筑材料试验收费项目及标准指导性意见(新)2023.10.11
- 商户撤场退铺验收单
- 国开电大 可编程控制器应用实训 形考任务5实训报告
- PEP英语四年级下册U5 My clothes Read and write(教学课件)
- DB37-T 2671-2019 教育机构能源消耗定额标准-(高清版)
- 部编版小学道德与法治三年级下册期末质量检测试卷【含答案】5套
- 信息系统项目管理师论文8篇
- (完整版)重大危险源清单及辨识表
- 试验室仪器设备检定校准证书和测试报告确认表(公司范本)
- 《传媒翻译》教学大纲
- 新工科的建设和发展思考ppt培训课件
评论
0/150
提交评论