商品月销售信息管理软件设计.docx

上传人:b****6 文档编号:7707612 上传时间:2023-01-25 格式:DOCX 页数:37 大小:443.40KB
下载 相关 举报
商品月销售信息管理软件设计.docx_第1页
第1页 / 共37页
商品月销售信息管理软件设计.docx_第2页
第2页 / 共37页
商品月销售信息管理软件设计.docx_第3页
第3页 / 共37页
商品月销售信息管理软件设计.docx_第4页
第4页 / 共37页
商品月销售信息管理软件设计.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

商品月销售信息管理软件设计.docx

《商品月销售信息管理软件设计.docx》由会员分享,可在线阅读,更多相关《商品月销售信息管理软件设计.docx(37页珍藏版)》请在冰豆网上搜索。

商品月销售信息管理软件设计.docx

商品月销售信息管理软件设计

课程设计

课程名称程序设计课程设计

设计题目商品月销售信息管理软件设计

班级与班级代码

专业计算机科学与技术

指导教师:

学号:

姓名:

提交日期:

2014年6月18日

 

广东财经大学教务处制

 

姓名课程设计成绩

评语:

评价内容

不及格

及格

表达精练,格式准确,基本无错别字

内容完整,思路清晰,结构严谨,设计科学,可操作性强

程序能完成课程设计任务书所规定的任务,功能完善,

独立分析和解决问题能力较好。

代码简洁,算法清晰,可读性强

无抄袭现象且课程设计报告体会深刻

 

指导教师(签名)

年月日

商品月销售信息管理软件设计

1系统功能要求(需求分析):

采用结构体数组或文件形式存储每种商品的信息,每种商品包含如下几方面的信息:

商品编号、商品名称、单价、生产地、本月当前销售总数量、本月当前销售总金额、库存余量。

软件由主函数(含欢迎界面)和下列5个功能模块组成:

(1)导入商品信息;

(2)售出功能;(3)进货功能;(4)查找功能;(5)统计功能;(6)退出程序。

2系统总体(概要)设计思想

(1)开发与设计的总体思想

商品月销售信息管理软件算法说明:

STEP1预处理,定义结构体

STEP2进入欢迎界面,输入密码,

STEP3导入商品信息

STEP4提示用户选择,根据提示输入一个字母

STEP5选择某一种功能

STEP6对于输入的字母编辑关于售出.进货.查找.统计功能的函数

STEP7如果输入的字母表示退出,退出系统

(2)系体模块结构图

 

(3)系统文件及函数组成、功能

源文件

函数或其他成分

功能

goods.c

main

总控函数

menu_select

菜单选择

handle_menu

菜单处理

quit

结束运行

add_display.c

showTable

输出表头

addRecord

在表尾追加信息

display

显示信息

sell_buy.c

decreaseNum

减少指定的商品数量

increaseNum

增加指定的商品数量

find_count.c

findRecord

查找指定的记录

queryInfo

查询指定商品的信息

sort

查询销售总金额最大的商品

sav_load.c

save

文件存储

load

文件读取

goods.h

常数

提供常数

结构声明

商品信息结构

库函数及函数原型声明

引用库函数及函数

3系统详细设计

(1)函数的描述

文件存储操作函数

函数原型:

intsaveRecords(void)

功能:

将记录存入默认文件goods_info或者指定文件。

参数:

void

返回值:

成功0,失败-1。

工作方式:

数组records被保存至指定文件。

要求:

报告是否有记录可存、是否能正常建立或打开文件、根据要求执行存入操作并报告存入记录的条数。

文件读取操作函数

函数原型:

intloadRecords(void)

功能:

将默认文件goods_info或者指定文件里的记录取入内存。

参数:

void。

返回值:

成功0,失败-1。

工作方式:

records为从指定文件中读取出的记录。

要求:

报告是否有记录可存、是否能正常打开文件、是否覆盖已有记录以及读取记录的条数。

显示所有商品信息函数

函数原型:

voiddisplay(void)

功能:

显示内存的记录信息。

参数:

void。

返回值:

void。

工作方式:

从头部开始逐个显示记录内容。

要求:

报告是否有记录及记录条数和内容。

增加信息函数

函数原型:

voidaddRecord(void)

功能:

增加记录。

参数:

void。

返回值:

void。

工作方式:

从尾部开始逐个追加记录。

要求:

将新记录追加在记录尾部,并对记录进行计数。

输出表头函数

函数原型:

voidshowTable(void)

功能:

输出表头信息。

参数:

void。

返回值:

void。

工作方式:

输出一行表头信息。

要求:

输出一行表头信息。

商品销售函数

函数原型:

voiddecreaseNum(void)

功能:

被售出之商品数量减x。

参数:

void。

返回值:

void。

工作方式:

可以按照商品编号、商品名称、单价、生产地找到要销售的商品,确认后方可销售。

要求:

同时要求该商品本月当前销售总数量、本月当前销售总金额按实际增加。

商品进货函数

函数原型:

voidincreaseNum(void)

功能:

被购进之商品数量增x。

参数:

void。

返回值:

void。

工作方式:

可以按照商品编号、商品名称、单价、生产地找到要销售的商品,确认后方可进货。

要求:

同时要求该商品本月当前销售总数量、本月当前销售总金额不变。

查找指定记录函数

函数原型:

voidfindRecord(char*,int,int)

功能:

查找指定的记录。

参数:

char*target:

欲查找记录的某一项与target相同。

inttargetType:

表明通过哪一项来查找,0为商品编号,1为商品名称,3为单价,4为生产地。

intfrom:

从第from个记录开始找。

返回值:

int(找到的记录的序号),若找不到则返回-1。

工作方式:

根据给定的关键字,查找符合记录的序号。

要求:

找不到则返回-1。

查询指定商品信息函数

函数原型:

voidqueryInfo(void)

功能:

将一个文件的内容追加到另一个文件的尾部。

参数:

void。

返回值:

void。

工作方式:

可以按照商品编号、商品名称、单价、生产地来查询。

要求:

打印查询到的学生的信息或给出相关信息。

统计销售函数

函数原型:

voidsort(void)

功能:

找出当前销售总金额最大的商品。

参数:

void。

返回值:

void。

工作方式:

使用冒泡排序法排序,并显示当前销售总金额最大的商品信息。

要求:

只能按销售总金额最大来排序。

菜单处理函数

函数原型:

voidhandle_menu(void)

功能:

处理选择菜单命令。

参数:

void。

返回值:

void。

工作方式:

根据命令,调用相应函数。

要求:

给出结束信息。

菜单选择函数

函数原型:

voidmenu_select(void)

功能:

接收用户选择的命令代码。

参数:

void。

返回值:

int。

工作方式:

返回命令代码的整数值。

要求:

只允许选择规定建,如果输入不合要求,则提醒用户重新输入。

结束程序运行函数

函数原型:

voidquit(ADDR*)

功能:

接收用户选择的命令代码。

参数:

void。

返回值:

void。

工作方式:

根据要求决定在退出之前是否将修改的记录存入文件。

要求:

结束运行之前,询问是否对修改的记录进行存储。

主函数

函数原型:

voidmain(void)

功能:

控制程序。

参数:

void。

返回值:

void。

要求:

管理菜单命令并完成初始化。

goods.h

功能:

声明函数原型,包含文件及自定义宏和数据结构。

要求:

报告是否能正常打开文件执行存入操作及存入记录的条数。

(2)主要函数流程图

进货时的流程图

 

 

售货时的流程图

 

 

(3)编码(附后)

 

4、系统测试

 

 

 

 

 

 

 

 

5、总结:

通这次实验,我收获颇多,也发现自己不足之处语言有些知识学得不够扎实,很多看不懂,需要老师指导。

在做这个实验的过程,自己编写函数方面能力也有点不足,而且不够有时候数据类型不对应,有时候甚至是字符错误。

不过也让我记住了出现错误的原因。

基础不扎实,导致一些错误。

通过这次我也懂得一个道理:

不懂之处最好要自己试着解决,不行再向他人请教,还要利用网络资源补充知识。

6、结束语

感谢老师的耐心解惑和指导,也感谢思慧同学、李佳同学以及蔡师兄的热情帮助,耐心且尽力解答我的问题。

 

参考文献

[1]刘振安,等.C语言程序设计[M].北京:

机械工业出版社,2007.

[2]刘振安,等.C程序设计课程设计[M].北京:

机械工业出版社,2004.

[3]刘振安,等.C/C++程序设计教程[M]北京:

机械工业出版社,2008.

[4]刘振安,等.C程序设计教程[M].北京:

机械工业出版社,2008.

[5]刘燕君,等.C程序设计实践教程[M]北京:

机械工业出版社,2009.

[6]SartajSahni.数据结构、算法与应用——C++语言描述[M].汪诗林,等译.北京:

机械工业出版社,2000.

[7]董兰芳,等。

UML课程设计[M].北京:

机械工业出版社,2005.

[8]裘宗燕.从问题到程序——程序设计与C语言引论[M].北京:

机械工业出版社,2005.

[9]刘振安,等.C语言程序设计[M].2版.北京:

清华大学出版社,2008.

[10]裘宗燕译.程序设计实践[M].北京:

机械工业出版社,2000.

[11]张龙祥.UML与系统分析设计[M].北京:

人民邮电出版社,2001.

[12]谭浩强.C程序设计[M].北京清华大学出版社,2001.

[13]LesHancock,MorrisKrieger.TheCPrimer[M].NewYork:

McGraw-Hill,1982.

[14]BrianWKernighan,DennisMRitchie.C程序设计语言[M].徐宝文,李志,译.2版,新版.北京:

机械工业出版社,2004.

 

附程序清单

goods.h

#ifndefH_GOODS_HH

#defineH_GOODS_HH

#include

#include

#include

#include

#defineINITIAL_SIZE100//数组初始大小

#defineINCR_SIZE50//数组每次增加的大小

structgoods_info{

charnumber[15];//商品编号

charname[20];//商品名称

intamount;//商品销售数量

floatprice;//商品单价

charaddress[15];//商品生产地

intrest;//现库存量

floatsum;//商品月总销售量

 

};

typedefstructgoods_infoGooInfo;

externintnum;//记录的商品数

externGooInfo*records;//记录商品信息的数组

externintarraySize;//数组大小

externcharsavedTag;//信息是否已保存的标志,0为已保存,1为未保存

voidhandle_menu(void);

intmenu_select(void);

voiddecreaseNum(void);

voidaddRecord(void);

voiddisplay(void);

voidqueryInfo(void);

voidincreaseNum(void);

voidsort(void);

intsaveRecords(void);

intloadRecords(void);

voidquit(void);

voidshowTable(void);

intfindRecord(char*target,inttargetType,intfrom);

voidcopyRecord(GooInfo*dest);

#endif

 

goods.c

#include"goods.h"

/****

初始化

****/

intnum=0;//记录的商品数

GooInfo*records=NULL;//记录商品的数组

charsavedTag=0;

intarraySize;

charstr[2];

charuser[10];

inti;

/***

主函数

***/

intmain()

{

system("colorFD");//修改软件背景颜色

//初始化数组

records=(GooInfo*)malloc(sizeof(GooInfo)*INITIAL_SIZE);

if(records==NULL)

{

printf("memoryfail!

");//内存不够,退出程序

exit(-1);

}

arraySize=INITIAL_SIZE;

printf("\n");

printf("*************************************************\n");

printf("*******************************************\n");

printf("**************************************\n");

printf("*********************************\n");

printf("**************************\n");

printf("\n");

printf("欢迎进入商品月销售管理系统\n");

printf("\n");

printf("**************************\n");

printf("*********************************\n");

printf("*******************************************\n");

printf("*************************************************\n");

printf("\n");

printf("\t※※※※※※※※※※※※※※※※※※※※※※※\n");

printf("\t※13计算机1班50号※\n");

printf("\t※设计者→_→朱冰※\n");

printf("\t※指导老师→_→胡玉平※\n");

printf("\t※※※※※※※※※※※※※※※※※※※※※※※\n");

printf("用户名:

");

gets(user);

printf("O(∩_∩)O请输入密码:

");

for(i=0;i<2;i++)

{

str[i]=getch();

printf("*");

}

if(strcmp(user,"ZB")==0&&strcmp(str,"50")==0)

{

handle_menu();

}

}

 

/***

菜单处理函数

***/

voidhandle_menu(void)

{

for(;;){

switch(menu_select())

{

case1:

addRecord();

break;

case2:

increaseNum();

break;

case3:

decreaseNum();

break;

case4:

display();

break;

case5:

queryInfo();

break;

case6:

sort();

break;

case7:

loadRecords();

case8:

quit();

}

}

}

/***

菜单选择函数

***/

intmenu_select()

{

chars[2];

intcn=0;

printf("\n");

printf("\t么么哒╭(╯3╰)╮\n");

printf("\t1.输入商品信息\n");

printf("\t2.进货功能\n");

printf("\t3.售出功能\n");

printf("\t4.显示商品信息\n");

printf("\t5.查找功能\n");

printf("\t6.统计功能\n");

printf("\t7.读取保存的记录\n");

printf("\t8.退出程序\n");

printf("\n\t数字对应功能选择,请选择1-8:

");

for(;;)

{

gets(s);

cn=atoi(s);

if(cn<1||cn>8)printf("\n\t输入错误,重选1-8:

");

elsebreak;

}

returncn;

}

voidquit(void)

{

charstr[5];

if(savedTag==1)

{

printf("是否保存原来的记录呢?

(y/n)");

gets(str);

if(str[0]!

='n'&&str[0]!

='N')

saveRecords();

}

free(records);

exit(0);

}

add_disp.c

#include"goods.h"

/*****

*输出表头

****/

voidshowTable(void)

{printf("****************************************************************************\n");

printf("编号\t名称\t生产地\t单价\t销售数量\t现库存量\t销售总额\n");

}

voiddisplay(void)

{

inti;

if(num==0)

{

printf("没有可供选择的商品信息");

return;

}

showTable();

for(i=0;i

printf("%s\t%s\t%s\t%.2f\t%8d\t%8d\t%.2f\n",records[i].number,records[i].name,records[i].address,records[i].price,records[i].amount,records[i].rest,records[i].sum);

printf("****************************************************************************\n");

}

/****

*在当前表的末尾添加新的信息

*****/

voidaddRecord(void)

{

charstr[15];

if(num==0)

printf("\n原来没有商品信息记录,现在建立新表\n");

else

printf("下面在当前表的末尾增加新的信息\n");

while

(1)

{

printf("你将要添加一组新的信息,确定么?

(y/n)\n");

gets(str);

if(str[0]=='n'||str[0]=='N')

break;

if(num>=arraySize)

{

records=realloc(records,(arraySize+INCR_SIZE)*sizeof(GooInfo));

if(records==NULL)

{

printf("memoryfailed!

");

exit(-1);

}

arraySize=arraySize+INCR_SIZE;

}

printf("商品编号:

");

gets(records[num].number);

printf("商品名称:

");

gets(records[num].name);

printf("生产地:

");

gets(records[num].address);

printf("单价:

");

scanf("%f",&records[num].price);

printf("当前销售总数量:

");

scanf("%d",&records[num].amount);

printf("库存余量:

");

scanf("%d",&records[num].rest);

records[num].sum=records[num].amount*records[num].price;

getchar();

num++;

}

printf("现在共有%d条信息",num);

savedTag=1;

}

 

save__load.c

#include"goods.h"

/***

文件存储操作函数

***/

intsaveRecords()

{

FILE*fp;

charfname[30];

 

if(num==0)

{

printf("没有记录可存!

");

return-1;

}

 

printf("请输入要存入的文件名(直接回车选择文件goo_info)");

gets(fname);

if(strlen(fname)==0)

strcpy(fname,"goo_info");

 

if((fp=fopen(fname,"wb"))==NULL)

{

printf("不能存入文件\n");

return-1;

}

 

printf("\n存文件...\n");

fwrite(records,sizeof(GooInfo)*num,1,fp);

fclose(fp);

printf("%d条记录已经存入文件,请继续操作\n",num);

savedTag=0;//更新是否已保存的标记

return0;

}

/***

文件读取函数

***/

intloadRecords(void)

{

FILE*fp;

charfname[30];

charstr[5];

if(num!

=0&&savedTag==0)

{

printf("请选择您是要覆盖现有记录(y)还是要将");

printf("读取的纪录添加到现有记录之后(n)?

\n");

printf("直接回车则覆盖现有记录\n");

gets(str);

if(str[0]=='n'||str[0]=='N')//内存记

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

当前位置:首页 > 自然科学 > 化学

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

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