课程设计报告王玮鸿.docx

上传人:b****3 文档编号:3502061 上传时间:2022-11-23 格式:DOCX 页数:27 大小:280.75KB
下载 相关 举报
课程设计报告王玮鸿.docx_第1页
第1页 / 共27页
课程设计报告王玮鸿.docx_第2页
第2页 / 共27页
课程设计报告王玮鸿.docx_第3页
第3页 / 共27页
课程设计报告王玮鸿.docx_第4页
第4页 / 共27页
课程设计报告王玮鸿.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

课程设计报告王玮鸿.docx

《课程设计报告王玮鸿.docx》由会员分享,可在线阅读,更多相关《课程设计报告王玮鸿.docx(27页珍藏版)》请在冰豆网上搜索。

课程设计报告王玮鸿.docx

课程设计报告王玮鸿

重庆科技学院

《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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1