课程设计报告王玮鸿.docx
- 文档编号:3502061
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:27
- 大小:280.75KB
课程设计报告王玮鸿.docx
《课程设计报告王玮鸿.docx》由会员分享,可在线阅读,更多相关《课程设计报告王玮鸿.docx(27页珍藏版)》请在冰豆网上搜索。
课程设计报告王玮鸿
重庆科技学院
《C语言程序设计》
课程设计报告
院(系):
_电气与信息工程学院_班级:
电自专2010-02班
学生姓名:
王玮鸿学号:
2010630144
设计地点:
___计算机基础自主学习中心___________
设计题目:
________商品销售管理系统______________
完成日期:
2011年12月23日
指导教师评语:
_______________________________________
______________________________________________________________________________________________________________________________________________________________
成绩(五级记分制):
________________
教师签名:
_________________________
课程设计任务书
设计题目五:
商品销售管理系统
学生姓名
王玮鸿
学号
2010630144
课程名称
C语言程序设计课程设计
专业班级
电自专2010级
地点
计算机自主学习中心
起止时间
2011年12月12日~12月23日
设计内容及要求
在计算机中建立相应的结构体数组,利用程序实现商品销售信息的导入、查询、增、删、改、统计、浏览、保存等操作。
理解和运用结构化程序设计的思想和方法,提高利用C语言进行程序设计的能力,初步掌握开发一个小型实用系统的基本方法,学会调试一个较长程序的基本方法;学会利用流程图表示算法。
根据题目要求,运用所学知识,完成课程设计所要求的任务。
程序书写风格:
锯齿型(缩进式)书写格式,各功能模块、函数、主要语句块,以及变量等必须有文字注释说明,并按照科技论文的书写规范,撰写课程设计报告。
设计参数
该程序主要分为以下8个模块组成:
(1).数据导入…………导入已存在的文本文件中记录数据;
(2).数据输入…………新建文件和追加记录
(3).浏览………………能按分类中的数据进行多种条件的浏览
(4).汇总………………按多种指定的条件汇总
(5).修改………………一个或多个字段
(6).删除………………一条或全部记录
(7).保存………………保存和另存为
(8).退出………………退出通讯录管理系统
商品销售信息包括:
商品编号、商品类别、商品名称、商品型号、生产厂商、商品单价、销售数量、总金额、销售部门、销售日期。
注:
总金额=单价×数量;
汇总模块要求能够分别按商品名称、生产厂商、销售部门、销售日期等字段对销售数量、总金额进行汇总。
进度
要求
第16周周一
布置任务,学生分组,领会设计内容
第16周周二
查阅相关资料,实现总体设计
第16周周三
详细设计,编写程序代码
第16周周四
程序调试
第16周周五
程序调试
第17周周一
程序调试
第17周周二
程序调试
第17周周三
程序调试
第17周周四
撰写课程设计报告
第17周周五
系统验收,学生答辩,收取报告
参考资料
[1]谭浩强.《C程序设计》(第三版).清华大学出版社.2010.5
[2]何钦铭颜晖.《C语言程序设计》.高等教育出版社.2008年
[3]崔武子.《C程序设计教程》.清华大学出版社,2009.8
其它
成绩评定:
平时表现成绩20%、程序质量40%、答辩20%、课程设计报告20%。
其中平时考勤缺勤次数达到1/4者,或者抄袭别人成果者直接判定为不及格。
说明
1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。
2.若填写内容较多可另纸附后。
3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。
教研室主任:
指导教师:
周力王成敏
摘要
本程序设计是针对商品销售管理系统,主要包括了九个模块,有载入记录、新建记录、浏览记录、排序记录、添加记录、修改记录、查询记录、删除记录、保存和退出。
主要运用了结构体和一维数组来实现。
每种商品的信息包括商品编号、商品类别、商品名称、商品型号、生产厂商、商品单价、销售数量、销售部门、销售日期、销售总金额。
通过本次课程设计,综合运用所学过的C语言基础知识,掌握结构化程序设计的基本思路、方法和技能,提高自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题的能力,加深对所学知识的理解与掌握。
基本设计步骤包括:
1、根据课题题目描述,设计数据结构类型和存储方式;
2、分析系统功能,划分功能模块,确定各模块函数名称;
3、主程序算法设计和各模块算法设计,绘制程序流程图;
4、编程实现;
5、调试和测试;
6、完成课程设计报告。
关键字:
结构体、数组、商品销售管理系统
目录
第1章软件需求分析5
第2章系统分析与设计6
2.1软件界面设计6
2.2软件的数据结构设计7
2.2.1结构体7
2.2.2一维数组8
2.3软件的算法设计8
2.3.1主函数:
main()8
2.3.2数据导入:
Load()8
2.3.3新建记录9
2.3.4浏览记录11
2.3.5排序记录12
2.3.6添加记录13
2.3.7查询记录15
2.3.8删除记录17
2.3.9修改记录17
2.3.10保存记录19
第3章软件测试21
3.1初始界面测试21
3.2载入功能测试21
3.3新建功能测试22
3.4浏览功能测试22
3.5排序功能测试23
3.6添加功能测试24
3.7删除功能测试25
3.8修改功能测试26
3.9查询功能测试26
3.10保存功能测试27
致谢28
第1章软件需求分析
本商品销售管理系统主要实现九个功能,分别为载入记录、新建记录、浏览记录、排序记录、添加记录、修改记录、查询记录、删除记录、保存和退出。
每种商品的基本信息包括商品编号、商品类别、商品名称、商品型号、生产厂商、商品单价、销售数量、销售部门、销售日期、销售总金额。
导入的数据必须运用文本形式先列下来并保存,数据使用结构体数据处理、利用数据文件保存数据。
同时可以对其进行新建、浏览、排序、添加、修改、查询、删除、保存等基本操作。
新建信息时按商品编号、商品类别、商品名称、商品型号、生产厂商、商品单价、销售数量、销售部门、销售日期等顺序新建。
浏览数据时,数据中应包含每种商品的基本信息。
排序信息时可以按照商品单价、销售数量和销售总金额等三种方法。
添加新信息时按商品编号、商品类别、商品名称、商品型号、生产厂商、商品单价、销售数量、销售部门、销售日期等顺序进行添加。
在修改模块中,数据应该逐个修改并且数据间互不影响。
查询信息时可以按照商品编号、商品类别、商品名称和生产厂商等四种方法进行。
在删除模块中,数据可以进行两种删除,即可以逐个删除又可以全部删除,且互不影响。
保存时应注明保存路径。
第2章系统分析与设计
2.1软件界面设计
商品销售管理系统的总体流程图如图2.1所示。
图2.1总体流程图
2.2软件的数据结构设计
2.2.1结构体
定义一个商品信息的结构体structgoods
structgoods
{
charno[10];//商品编号
intmodel;//商品型号
intamount;//销售数量
charsort[10];//商品类别
charname[10];//商品名称
charaddress[10];//生产厂商
chardepartment[10];//销售部门
doubleprice;//商品单价
doublesum;//总金额
structdateD;//销售日期
};
定义了一个日期的结构体structdate
structdate
{
intyear;
intmonth;
intday;
};
其次,在主函数中应用switch语句实现多分枝选择机构,在后面的程序中,运用了多个循环语句。
2.2.2一维数组
要定义数组时必须在程序中先定义数组,即由哪些数据组成数组,数组中有多少元素,属于哪个数据类型。
一般形式为:
类型符数组名【常量表达式】
2.3软件的算法设计
2.3.1主函数:
main()
显示系统工作菜单,罗列该系统所有功能。
先声明所有将会调用到的函数名。
再运用选择函数switch即可根据使用者所输入的功能代号进入对应的功能程序。
2.3.2数据导入:
Load()
首先判断fopen"只读"打开“wor.txt”是否成功,若其返回值不为零,继续下面操作。
用for循环通过fscanf语句将文件中的商品信息取出放到结构数组里面,最后关闭文件。
可以用伪代码来实现。
voidLoad()//读入文件中的数据
{
FILE*fp;
inti;
charfilepath[20];
printf("输入要读入的文件路径:
");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!
\n",filepath);
system("pause");
exit(0);
}
now_no=0;
for(i=0;i feof(fp);i++) { fscanf(fp,"\t%s\t%s\t%s\t%d\t%s\t%lf\t%d\t%s\t%d,%d,%d\t\t\n" &god[i].no,&god[i].sort,&god[i].name,&god[i].model,&god[i].address &god[i].price,&god[i].amount,&god[i].department,&god[i].D.year,&god[i].D.month,&god[i].D.day); god[i].sum=god[i].price*god[i].amount; now_no++; } fclose(fp); printf("保存的在文件%s中的所有信息已经读入! \n",filepath); system("pause"); system("cls"); return; } 2.3.3新建记录 输入一些数据,其中包括了每种商品的各项基本信息。 此部分可用伪代码来实现。 voidInput()//原始数据录入模块 { inti=0; charch; do { printf("\t\t\t\t1.录入商品信息\n输入第%d个商品的信息\n",i+1); printf("\n输入商品编号: "); fflush(stdin); gets(god[i].no); printf("\n输入商品类别: "); fflush(stdin); gets(god[i].sort); printf("\n输入商品名称: "); fflush(stdin); gets(god[i].name); printf("\n输入商品型号: "); fflush(stdin); scanf("%d",&god[i].model); printf("\n输入生产厂商: "); fflush(stdin); gets(god[i].address); printf("\n输入商品单价: "); fflush(stdin); scanf("%lf",&god[i].price); printf("\n输入销售数量: "); fflush(stdin); scanf("%d",&god[i].amount); printf("\n输入销售部门: "); fflush(stdin); gets(god[i].department); printf("\n输入销售日期: "); fflush(stdin); scanf("%d,%d,%d",&god[i].D.year,&god[i].D.month,&god[i].D.day); printf("\n\n"); i++; now_no=i; while (1) { printf("是否继续输入记录? (Y/N)"); fflush(stdin); ch=toupper(getchar()); if(ch=='N'||ch=='Y') break; } system("cls"); }while(ch! ='n'&&ch! ='N'); system("cls"); return; } 2.3.4浏览记录 不管是导入的数据或者是原始的输入数据,我们都要通过浏览来检验程序是否正确。 通过调用load函数后,用for循环输出每个职工的各种信息。 这一部分用伪代码实现。 voidBrowse()//显示数据模块 { inti; charas; Sumrage(); do { printf("\t\t\t商品销售信息列表\t\t\t\n"); printf("\t编号\t类别\t名称\t型号\t厂商\t单价\t销量\t销部\t日期\t\t总金额\n"); for(i=0;i printf("\t%s\t%s\t%s\t%d\t%s\t%.2f\t%d\t%s\t%d,%d,%d\t%.2f\n",god[i].no,god[i].sort,god[i].name,god[i].model,god[i].address,god[i].price,god[i].amount,god[i].department,god[i].D.year,god[i].D.month,god[i].D.day,god[i].sum); printf("\n\t按任意键返回主菜单."); fflush(stdin); as=getch(); }while(! as); system("cls"); return; } 2.3.5排序记录 对导入的商品信息和输入的商品信息进行排序时,就要用到排序这一模块,在此用流程图来表示,如图 图2.3.5排序流程图 2.3.6添加记录 在已有商品的基础上进行添加,这一部分用伪代码实现。 voidAdd()//添加数据模块 { charch; do { printf("\n\t\t当前已有%d个商品的信息\n",now_no); printf("\n\t\t请输入新商品的信息\n"); printf("\n输入商品编号: "); fflush(stdin); gets(god[now_no].no); printf("\n输入商品类别: "); fflush(stdin); gets(god[now_no].sort); printf("\n输入商品名称: "); fflush(stdin); gets(god[now_no].name); printf("\n输入商品型号: "); fflush(stdin); scanf("%d",&god[now_no].model); printf("\n输入生产厂商: "); fflush(stdin); gets(god[now_no].address); printf("\n输入商品单价: "); fflush(stdin); scanf("%lf",&god[now_no].price); printf("\n输入销售数量: "); fflush(stdin); scanf("%d",&god[now_no].amount); printf("\n输入销售部门: "); fflush(stdin); gets(god[now_no].department); printf("\n输入销售日期: "); fflush(stdin); scanf("%d,%d,%d",&god[now_no].D.year,&god[now_no].D.month,&god[now_no].D.day); printf("\n\n"); now_no=now_no+1; Sort(); while (1) { printf("是否继续添加记录? (Y/N)"); fflush(stdin); ch=toupper(getchar()); if(ch=='N'||ch=='Y') break; } system("cls"); }while(ch! ='n'&&ch! ='N'); return; } 2.3.7查询记录 图2.3.7查询记录 2.3.8删除记录 对商品的信息进行删除,此处用流程图表示。 如图 图2.3.8删除记录 2.3.9修改记录 在这一板块中主要实现的是商品基本信息的修改,用伪代码实现。 voidModify()//修改数据模块 { inti; charstr[20]; printf("输入要修改的商品名称: "); fflush(stdin); gets(str); for(i=0;i if(! strcmp(god[i].name,str)) { system("cls"); printf("\n\t\t输入新插入商品的信息\n"); printf("\n输入商品编号: "); fflush(stdin); gets(god[i].no); printf("\n输入商品类别: "); fflush(stdin); gets(god[i].sort); printf("\n输入商品名称: "); fflush(stdin); gets(god[i].name); printf("\n输入商品型号: "); fflush(stdin); scanf("%d",&god[i].model); printf("\n输入生产厂商: "); fflush(stdin); gets(god[i].address); printf("\n输入商品单价: "); fflush(stdin); scanf("%lf",&god[i].price); printf("\n输入商品销售数量: "); fflush(stdin); scanf("%d",&god[i].amount); printf("\n输入商品销售部门: "); fflush(stdin); gets(god[i].department); printf("\n输入商品销售日期: "); fflush(stdin); scanf("%d,%d,%d",&god[i].D.year,&god[i].D.month,&god[i].D.day); printf("\n\n"); break; } system("cls"); return; } 2.3.10保存记录 voidSave()//保存数据模块 { FILE*fp; inti; charfilepath[20]; printf("输入要保存的文件路径: "); fflush(stdin); gets(filepath); if((fp=fopen(filepath,"w"))==NULL) { printf("\n保存失败! "); exit(0); } for(i=0;i { fprintf(fp,"\t%s\t%s\t%s\t%d\t%s\t%.2f\t%d\t%s\t%d,%d,%d\n" god[i].no,god[i].sort,god[i].name,god[i].model,god[i].address god[i].price,god[i].amount,god[i].department,god[i].D.year,god[i].D.month,god[i].D.day); } fclose(fp); printf("商品信息已保存在%s中! \n",filepath); system("pause"); system("cls"); return; } 第3章软件测试 3.1初始界面测试 1.运行程序,显示商品信息管理系统主菜单 在这一部分遇到的问题是,当定义主函数里数据为整型时,选择功能时,选择1-9进入各个模块,但是选择字符时也可进入。 修正方法是把整型改为字符型,如图3.1所示。 图3.1主菜单 2.用fscanf语句时,漏写地址符。 调试和链接都没问题,但点击运行后,总出现一个提示出错的蓝色小窗口。 经老师提时候发现了错误所在。 解决: 在wor[i].name等之前加上地址符。 3.浏览函数display()遇到的问题虽然不大,但解决起来很麻烦。 理想的运行结果是美观整齐。 即下面的职工信息分别与第一个printf输出的中文项目提示对齐。 解决方法: 不断修改空格个数,不断运行察看效果。 3.2载入功能测试 载入新数据时,输入保存在文件中的路径,如图3.2所示 图3.1载入模块 3.3新建功能测试 新建时输入商品的基本信息如图3.3所示 如图3.3新建模块 3.4浏览功能测试 商品信息录入后如图3.4所示 图3.4浏览模块 3.5排序功能测试 商品信息录入后,可按如下功能排序,如图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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 王玮鸿