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

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

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

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

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

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。

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

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

显示所有商品信息函数

voiddisplay(void)

显示内存的记录信息。

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

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

增加信息函数

voidaddRecord(void)

增加记录。

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

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

输出表头函数

voidshowTable(void)

输出表头信息。

输出一行表头信息。

商品销售函数

voiddecreaseNum(void)

被售出之商品数量减x。

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

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

商品进货函数

voidincreaseNum(void)

被购进之商品数量增x。

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

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

查找指定记录函数

voidfindRecord(char*,int,int)

查找指定的记录。

char*target:

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

inttargetType:

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

intfrom:

从第from个记录开始找。

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

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

找不到则返回-1。

查询指定商品信息函数

voidqueryInfo(void)

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

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

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

统计销售函数

voidsort(void)

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

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

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

菜单处理函数

voidhandle_menu(void)

处理选择菜单命令。

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

给出结束信息。

菜单选择函数

voidmenu_select(void)

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

int。

返回命令代码的整数值。

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

结束程序运行函数

voidquit(ADDR*)

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

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

主函数

voidmain(void)

控制程序。

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

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

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

(2)主要函数流程图

进货时的流程图

售货时的流程图

(3)编码(附后)

4、系统测试

5、总结:

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

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

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

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

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

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

6、结束语

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

参考文献

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

机械工业出版社,2007.

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

机械工业出版社,2004.

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

机械工业出版社,2008.

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

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

机械工业出版社,2009.

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

机械工业出版社,2000.

[7]董兰芳,等。

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

机械工业出版社,2005.

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

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

清华大学出版社,2008.

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

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

人民邮电出版社,2001.

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

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

McGraw-Hill,1982.

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

附程序清单

#ifndefH_GOODS_HH

#defineH_GOODS_HH

#include<

stdio.h>

stdlib.h>

conio.h>

string.h>

#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

#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"

*************************************************\n"

*******************************************\n"

**************************************\n"

*********************************\n"

**************************\n"

\n"

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

\t※※※※※※※※※※※※※※※※※※※※※※※\n"

\t※13计算机1班50号※\n"

\t※设计者→_→朱冰※\n"

\t※指导老师→_→胡玉平※\n"

用户名:

gets(user);

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

for(i=0;

i<

2;

i++)

str[i]=getch();

*"

if(strcmp(user,"

ZB"

)==0&

&

strcmp(str,"

50"

)==0)

handle_menu();

}

for(;

;

){

switch(menu_select())

{

case1:

addRecord();

break;

case2:

increaseNum();

case3:

decreaseNum();

case4:

display();

case5:

queryInfo();

case6:

sort();

case7:

loadRecords();

case8:

quit();

}

intmenu_select()

chars[2];

intcn=0;

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

\t1.输入商品信息\n"

\t2.进货功能\n"

\t3.售出功能\n"

\t4.显示商品信息\n"

\t5.查找功能\n"

\t6.统计功能\n"

\t7.读取保存的记录\n"

\t8.退出程序\n"

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

gets(s);

cn=atoi(s);

if(cn<

1||cn>

8)printf("

\n\t输入错误,重选1-8:

elsebreak;

returncn;

voidquit(void)

charstr[5];

if(savedTag==1)

是否保存原来的记录呢?

(y/n)"

gets(str);

if(str[0]!

='

n'

str[0]!

N'

saveRecords();

free(records);

exit(0);

add_disp.c

/*****

*输出表头

{printf("

****************************************************************************\n"

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

voiddisplay(void)

inti;

if(num==0)

没有可供选择的商品信息"

return;

showTable();

num;

%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);

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

*****/

charstr[15];

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

else

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

while

(1)

{

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

(y/n)\n"

if(str[0]=='

||str[0]=='

if(num>

=arraySize)

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

if(records==NULL)

{

printf("

memoryfailed!

exit(-1);

}

arraySize=arraySize+INCR_SIZE;

商品编号:

gets(records[num].number);

商品名称:

gets(records[num].name);

生产地:

gets(records[num].address);

单价:

scanf("

%f"

&

records[num].price);

当前销售总数量:

%d"

records[num].amount);

库存余量:

scanf("

records[num].rest);

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

getchar();

num++;

现在共有%d条信息"

num);

savedTag=1;

save__load.c

intsaveRecords()

FILE*fp;

charfname[30];

没有记录可存!

return-1;

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

gets(fname);

if(strlen(fname)==0)

strcpy(fname,"

goo_info"

if((fp=fopen(fname,"

wb"

))==NULL)

不能存入文件\n"

return-1;

\n存文件...\n"

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

fclose(fp);

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

savedTag=0;

//更新是否已保存的标记

return0;

文件读取函数

FILE*fp;

if(num!

=0&

savedTag==0)

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

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

直接回车则覆盖现有记录\n"

)//内存记

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

当前位置:首页 > 党团工作 > 其它

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

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