1、设计内容及要求在计算机中建立相应的结构体数组,利用程序实现商品销售信息的导入、查询、增、删、改、统计、浏览、保存等操作。理解和运用结构化程序设计的思想和方法,提高利用C语言进行程序设计的能力,初步掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的基本方法;学会利用流程图表示算法。根据题目要求,运用所学知识,完成课程设计所要求的任务。程序书写风格:锯齿型(缩进式)书写格式,各功能模块、函数、主要语句块,以及变量等必须有文字注释说明,并按照科技论文的书写规范,撰写课程设计报告。设计参数该程序主要分为以下8个模块组成:(1).数据导入导入已存在的文本文件中记录数据;(2).数据输入新建文件和
2、追加记录(3).浏览能按分类中的数据进行多种条件的浏览(4).汇总按多种指定的条件汇总(5).修改一个或多个字段(6).删除一条或全部记录(7).保存保存和另存为(8).退出退出通讯录管理系统商品销售信息包括:商品编号、商品类别、商品名称、商品型号、生产厂商、商品单价、销售数量、总金额、销售部门、销售日期。注:总金额单价数量;汇总模块要求能够分别按商品名称、生产厂商、销售部门、销售日期等字段对销售数量、总金额进行汇总。进度要求第16周周一布置任务,学生分组,领会设计内容第16周周二查阅相关资料,实现总体设计第16周周三详细设计,编写程序代码第16周周四 程序调试第16周周五第17周周一第17周
3、周二第17周周三第17周周四 撰写课程设计报告第17周周五系统验收,学生答辩,收取报告参考资料1 谭浩强.C程序设计(第三版).清华大学出版社.2010.52 何钦铭 颜晖.语言程序设计.高等教育出版社.2008年3 崔武子.C程序设计教程.清华大学出版社,2009.8其它成绩评定:平时表现成绩20、程序质量40、答辩20、课程设计报告20。其中平时考勤缺勤次数达到1/4者,或者抄袭别人成果者直接判定为不及格。说明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。教
4、研室主任: 指导教师:周力 王成敏 摘要本程序设计是针对商品销售管理系统,主要包括了九个模块,有载入记录、新建记录、浏览记录、排序记录、添加记录、修改记录、查询记录、删除记录、保存和退出。主要运用了结构体和一维数组来实现。每种商品的信息包括商品编号、商品类别、商品名称、商品型号、生产厂商、商品单价、销售数量、销售部门、销售日期、销售总金额。通过本次课程设计,综合运用所学过的C语言基础知识,掌握结构化程序设计的基本思路、方法和技能,提高自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题的能力,加深对所学知识的理解与掌握。基本设计步骤包括:1、根据课题题目描述,设计数据结构类型和存储方式;
5、2、分析系统功能,划分功能模块,确定各模块函数名称;3、主程序算法设计和各模块算法设计,绘制程序流程图;4、编程实现;5、调试和测试;6、完成课程设计报告。关键字:结构体、数组、商品销售管理系统第 1 章 软件需求分析 本商品销售管理系统主要实现九个功能,分别为载入记录、新建记录、浏览记录、排序记录、添加记录、修改记录、查询记录、删除记录、保存和退出。每种商品的基本信息包括商品编号、商品类别、商品名称、商品型号、生产厂商、商品单价、销售数量、销售部门、销售日期、销售总金额。导入的数据必须运用文本形式先列下来并保存,数据使用结构体数据处理、利用数据文件保存数据。同时可以对其进行新建、浏览、排序、
6、添加、修改、查询、删除、保存等基本操作。新建信息时按商品编号、商品类别、商品名称、商品型号、生产厂商、商品单价、销售数量、销售部门、销售日期等顺序新建。浏览数据时,数据中应包含每种商品的基本信息。排序信息时可以按照商品单价、销售数量和销售总金额等三种方法。添加新信息时按商品编号、商品类别、商品名称、商品型号、生产厂商、商品单价、销售数量、销售部门、销售日期等顺序进行添加。在修改模块中,数据应该逐个修改并且数据间互不影响。查询信息时可以按照商品编号、商品类别、商品名称和生产厂商等四种方法进行。在删除模块中,数据可以进行两种删除,即可以逐个删除又可以全部删除,且互不影响。保存时应注明保存路径。第
7、2 章 系统分析与设计2.1 软件界面设计商品销售管理系统的总体流程图如图2.1所示。图2.1总体流程图2.2 软件的数据结构设计2.2.1 结构体定义一个商品信息的结构体struct goodsstruct goods char no10; /商品编号 int model; /商品型号 int amount; /销售数量 char sort10; /商品类别 char name10; /商品名称 char address10; /生产厂商 char department10; /销售部门 double price; /商品单价 double sum; /总金额 struct date D;/
8、销售日期;定义了一个日期的结构体struct date struct date int year; int month; int day;其次,在主函数中应用switch语句实现多分枝选择机构,在后面的程序中,运用了多个循环语句。2.2.2一维数组要定义数组时必须在程序中先定义数组,即由哪些数据组成数组,数组中有多少元素,属于哪个数据类型。一般形式为:类型符 数组名【常量表达式】2.3软件的算法设计2.3.1主函数:main()显示系统工作菜单,罗列该系统所有功能。先声明所有将会调用到的函数名。再运用选择函数switch即可根据使用者所输入的功能代号进入对应的功能程序。2.3.2数据导入:Lo
9、ad()首先判断fopen只读打开“wor.txt”是否成功,若其返回值不为零,继续下面操作。用for循环通过fscanf语句将文件中的商品信息取出放到结构数组里面,最后关闭文件。可以用伪代码来实现。void Load() /读入文件中的数据 FILE *fp; int i; char filepath20; printf(输入要读入的文件路径:); fflush(stdin); gets(filepath); if(fp=fopen(filepath,r)=NULL) printf(找不到%s文件!n,filepath); system(pause exit(0); now_no=0; fo
10、r(i=0;i MAX & !feof(fp);i+) fscanf(fp,t%st%st%st%dt%st%lft%dt%st%d,%d,%dttn ,&godi.no,&godi.sort,&godi.name,&godi.model,&godi.addressgodi.price,&godi.amount,&godi.department,&godi.D.year,&godi.D.month,&godi.D.day); godi.sum=godi.price*godi.amount; now_no+; fclose(fp);保存的在文件%s中的所有信息已经读入! system(cls r
11、eturn;2.3.3新建记录输入一些数据,其中包括了每种商品的各项基本信息。此部分可用伪代码来实现。void Input() /原始数据录入模块 int i=0; char ch; dotttt1.录入商品信息n输入第%d个商品的信息n,i+1);n输入商品编号: fflush(stdin); gets(godi.no);n输入商品类别: gets(godi.sort);n输入商品名称: gets(godi.name);n输入商品型号: scanf(%d,&godi.model);n输入生产厂商: gets(godi.address);n输入商品单价:%lfgodi.price);n输入销售
12、数量:godi.amount);n输入销售部门: gets(godi.department);n输入销售日期:%d,%d,%dnn i+; now_no=i; while(1) printf(是否继续输入记录?(Y/N) fflush(stdin); ch=toupper(getchar(); if(ch=N| ch=Y) break; while(ch!=nch!2.3.4浏览记录不管是导入的数据或者是原始的输入数据,我们都要通过浏览来检验程序是否正确。通过调用load函数后,用for循环输出每个职工的各种信息。这一部分用伪代码实现。void Browse() /显示数据模块 char as
13、; Sumrage();ttt商品销售信息列表tttnt编号t类别t名称t型号t厂商t单价t销量t销部t日期tt总金额n for(i=0;inow_no & godi.name0;t%st%st%st%dt%st%.2ft%dt%st%d,%d,%dt%.2fn,godi.no,godi.sort,godi.name,godi.model,godi.address,godi.price,godi.amount,godi.department,godi.D.year,godi.D.month,godi.D.day,godi.sum);nt按任意键返回主菜单. as=getch(); while(
14、!as);2.3.5排序记录对导入的商品信息和输入的商品信息进行排序时,就要用到排序这一模块,在此用流程图来表示,如图图2.3.5 排序流程图2.3.6添加记录 在已有商品的基础上进行添加,这一部分用伪代码实现。void Add() /添加数据模块printf(ntt当前已有%d个商品的信息n,now_no);ntt请输入新商品的信息n gets(godnow_no.no); gets(godnow_no.sort); gets(godnow_no.name); scanf(godnow_no.model); gets(godnow_no.address);godnow_no.price);g
15、odnow_no.amount); gets(godnow_no.department);godnow_no.D.year,&godnow_no.D.month,&godnow_no.D.day); now_no=now_no+1; Sort();是否继续添加记录? while(ch!2.3.7查询记录图2.3.7 查询记录2.3.8 删除记录对商品的信息进行删除,此处用流程图表示。如图图2.3.8 删除记录2.3.9 修改记录 在这一板块中主要实现的是商品基本信息的修改,用伪代码实现。void Modify() /修改数据模块 char str20;输入要修改的商品名称: gets(str)
16、;now_no; if(!strcmp(godi.name,str) system(ntt输入新插入商品的信息n gets(godi.no); gets(godi.sort); gets(godi.name); scanf( gets(godi.address);n输入商品销售数量:n输入商品销售部门: gets(godi.department);n输入商品销售日期: break; return;2.3.10 保存记录void Save() /保存数据模块输入要保存的文件路径:wn保存失败! fprintf(fp,t%st%st%st%dt%st%.2ft%dt%st%d,%d,%dn ,go
17、di.no,godi.sort,godi.name,godi.model,godi.address ,godi.price,godi.amount,godi.department,godi.D.year,godi.D.month,godi.D.day);商品信息已保存在%s中!第3章 软件测试3.1 初始界面测试1运行程序,显示商品信息管理系统主菜单 在这一部分遇到的问题是,当定义主函数里数据为整型时,选择功能时,选择1-9进入各个模块,但是选择字符时也可进入。修正方法是把整型改为字符型,如图3.1所示。 图3.1 主菜单2用fscanf语句时,漏写地址符。调试和链接都没问题,但点击运行后,总
18、出现一个提示出错的蓝色小窗口。经老师提时候发现了错误所在。解决:在wori.name等之前加上地址符。3.浏览函数display()遇到的问题虽然不大,但解决起来很麻烦。理想的运行结果是美观整齐。即下面的职工信息分别与第一个printf输出的中文项目提示对齐。解决方法:不断修改空格个数,不断运行察看效果。3.2 载入功能测试载入新数据时,输入保存在文件中的路径,如图3.2所示图3.1 载入模块3.3 新建功能测试 新建时输入商品的基本信息如图3.3所示如图3.3 新建模块3.4 浏览功能测试商品信息录入后如图3.4所示 图3.4 浏览模块3.5 排序功能测试商品信息录入后,可按如下功能排序,如
19、图3.5所示图3.5 排序模块3.6 添加功能测试在原有商品的基础上,可以继续添加商品信息,如图3.6所示 图3.6 添加模块3.7 删除功能测试删除时可按逐条删除和全部删除两种方法,如图3.7.1所示图3.7.1 删除模块商品信息删除后可按3种功能进行排序,如图3.7.2所示 图3.7.2删除模块3.8 修改功能测试在已录入的商品信息的的基础上,可对其进行修改,如图3.8所示 图3.8 修改模块3.9 查询功能测试按照已经录入的商品信息,可按以下四种方法进行查询,如图3.9所示 图3.9 查询模块3.10 保存功能测试商品信息录入后,输入要保存的文件路径,如图3.10所示 图3.10 保存模
20、块小结 经过一学期的C语言学习,我们掌握了C语言的基础知识,大致能够读懂别人用C语言设计的程序。平时的程序设计大多是以填空的形式出现,虽然有所接触,但都不完全。而这两周的课程设计,却让我们完完全全用自己学到的知识编写一个完整的体统程序。这是一个新的挑战,也是一种新的学习。我设计的是备选题目中的第五个商品销售管理系统。这需要我们自己设计一个系统,用来实现数据的导入、新建、浏览、添加、排序、查询、修改、删除、保存和退出九种功能。初看到这个题目觉得很简单,但当我做到电脑前准备开始编写代码的时候才发现无从下手。通过去图书馆查找程序设计相关的书籍,和上网参考前人编写的类似程序,我脑中才有了一个大概方向。在本程序中主要是运用结构体以
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1