商品月销售信息管理软件设计.docx
- 文档编号:7707612
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:37
- 大小:443.40KB
商品月销售信息管理软件设计.docx
《商品月销售信息管理软件设计.docx》由会员分享,可在线阅读,更多相关《商品月销售信息管理软件设计.docx(37页珍藏版)》请在冰豆网上搜索。
商品月销售信息管理软件设计
课程设计
课程名称程序设计课程设计
设计题目商品月销售信息管理软件设计
班级与班级代码
专业计算机科学与技术
指导教师:
学号:
姓名:
提交日期:
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')//内存记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 商品 销售 信息管理 软件设计