C语言课程设计报告商品销售信息管理原创.docx

上传人:b****7 文档编号:11156901 上传时间:2023-02-25 格式:DOCX 页数:61 大小:858.67KB
下载 相关 举报
C语言课程设计报告商品销售信息管理原创.docx_第1页
第1页 / 共61页
C语言课程设计报告商品销售信息管理原创.docx_第2页
第2页 / 共61页
C语言课程设计报告商品销售信息管理原创.docx_第3页
第3页 / 共61页
C语言课程设计报告商品销售信息管理原创.docx_第4页
第4页 / 共61页
C语言课程设计报告商品销售信息管理原创.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

C语言课程设计报告商品销售信息管理原创.docx

《C语言课程设计报告商品销售信息管理原创.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告商品销售信息管理原创.docx(61页珍藏版)》请在冰豆网上搜索。

C语言课程设计报告商品销售信息管理原创.docx

C语言课程设计报告商品销售信息管理原创

HUBEIUNIVERSITYOFAUTOMOTIVETECHNOLOGY

 

C语言程序设计

课程设计报告

 

课设题目:

学生信息管理系统

专业:

电气工程及其自动化

班级:

商品销售管理

姓名:

胡军

成绩:

完成日期:

2012年6月18日-2012年6月22日

指导教师:

史旅华梅琴

1.课程设计目的

1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。

2)通过课程设计,进一步掌握C语言中重要的数据结构。

掌握并熟练运用指针、链表、结构体、文件等数据结构。

3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。

4)通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。

5)通过课程设计,加强了自己的程序分析能力。

2.需求分析

2.1要求

1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。

2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。

3)学会利用数组、结构体、链表进行相关信息表示。

4)功能模块划分清晰,系统结构图符合功能操作要求,且有详尽的功能描述

5)各主要功能模块有详尽的流程图及描述,用函数的形式实现,且调用入口、功能、出口等关系正确。

6)所设计的C程序较好的可读性和可靠性;程序书写风格规范,注释清晰。

7)界面友好(良好的人机互交),凡需要输入信息时,都有较详尽的提示信息,并对输入信息有较完善的值域分析。

8)程序经上机调试通过,不应出现语法型、功能型错误,并获得满意的结果。

9)学会通过各功能性测试用例测试程序的能力,尽可能避免原则性错误的出现。

10)掌握编写、调试和测试C语言程序的基本技巧,充分理解结构化程序设计的基本方法。

11)C语言课程设计报告的内容反应实际设计过程,且符合格式要求,无抄袭现象。

2.2任务描述

此系统以键盘输入和导入文件获得商品信息,通过选择操作码实现录入信息、查询信息、保持你信息等不同的功能。

具体有以下功能:

1)显示主界面并提示用户选择。

2)导入商品信息:

实现从键盘输入或从文件导入10个商品信息。

3)输入销售记录:

从键盘输入销售记录,以进行下面的查询。

4)按编号查询销售历史:

根据输入的商品编号从销售信息中显出对应的销售信息。

5)按顾客姓名查询销售历史:

根据输入的顾客姓名在输入的销售记录查询其购买的商品信息。

6)计算时间段内销售总额:

更具输入的时间从销售信息中计算销售总和。

7)显示顾客信息:

从销售记录中抽取并显示顾客姓名。

8)保存销售信息:

保存所输入的销售信息。

9)保存顾客信息:

保存顾客的编码及姓名。

10)退出:

退出系统,谢谢使用。

2.3运行环境

1)WindowsXP/7系统

2)VC++6.0编译环境

2.4开发工具

C语言

3.总体设计

3.1系统流设计

3.2系统模块设计

1)主菜单界面:

构造函数intselect(),实现系统主菜单的显示。

2)商品信息导入:

构造函数voidEnter_productmessage(),实现商品信息的导入及显示。

并通过分别调用函数voidcomp()和voidfile(),实现从键盘输入信息和通过文件导入信息。

3)输入销售记录:

构造函数voidCreat(),实现对从键盘输入销售记录并通过调用intjudgech(char*a)、intjudgedate(chardate[10])函数判断商品名、销售日期是否合法。

4)按编号查询销售历史:

构造函数voidSearch_num(),实现从键盘输入商品编号查询该编号对应商品的销售记录。

5)按顾客姓名查询销售历史:

构造函数voidSaerch_customername(),实现从键盘输入顾客姓名查询该顾客的购买历史信息。

如果没有该顾客信息可选择新建该顾客销售记录。

6)计算各时段内销售总额:

构造函数voidSearch_date(),实现从键盘输入日期并调用intjudgedate(chardate[10])判断日期输入是否合法查询从输入时间导系统时间内的销售总额。

7)显示顾客姓名:

构造函数voidPrintf_customername(),实现显示所有顾客的姓名。

8)保存销售信息:

构造函数voidSave_product(),实现保存销售商品的信息。

9)保存顾客信息:

构造函数voidSave_customername(),实现保存顾客的信息。

10)退出:

构造函数voidExit(),实现退出系统,显示“谢谢使用”。

4.详细设计

4.1数据结构设计

根据系统要求,系统中需要保存的数据信息,其结构如下:

数据项名称

数据项系统表示

数据类型

数据长度

备注

商品名称

productname

char

20

必须汉子

商品编码

num

int

商品产地

place

char

30

必须汉子

商品价格

price

float

顾客名字

name

char

20

必须汉子

顾客购买编码

num

int

顾客购买数量

count

int

顾客购买日期

date

char

10

顾客编码

ID

int

根据系统要求,系统中需要保存的类别信息,其结构如下:

类别代号

date

cout

ID

name

类别名称

销售日期

销售数量

顾客编码

顾客名字

为了能实现不受限制的增加商品,各科信息,采用链表的结构保存商品和销售信息,在增加商品和顾客的基本信息时,分别创建一个对应的节点,将其插入到对应的链表中,示意图如下。

为此,先声明一个类型为structproduct和sturctsell的结构体,对应的成员分别为商品编码、商品名称、商品售价、商品产地商品库存和顾客代码、顾客姓名、商品编码、销售数量、销售日期信息。

然后通过对指针、链表、文件等数据结构的操作,实现对商品和顾客信息的录入、查询、浏览等一系列操作。

其中,结构体定义如下:

structproduct//定义商品数据结构

{

intnum;//商品编号

charproductname[20];//商品名称

floatprice;//商品售价

charplace[30];//商品产地

intstorage;//商品库存

structproduct*next;

}*head,*p1,*p2;、

structtime//定义时间结构体

{

intyear;//年

intmonth;//月

intday;//天

}

structsell//定义销售数据结构

{

intID;//顾客代码

charcustomername[20];//顾客姓名

intnum;//商品编号

intcount;//销售数量

chardate[10];//日期

structsell*next1;

}*head1;

4.2模块接口设计

1)所有函数模块声明如下:

intselect();//主菜单函数

voidEnter_productmessage();//导入商品信息

voidCreat();//导入销售记录

voidSearch_num();//按编号查询销售历史

voidSearch_customername();//按顾客姓名查询购买历史voidSearch_date();//计算时间段内销售总额

voidPrintf_customername();//显示顾客信息

voidSave_product();//保存销售信息

voidSave_customername();//保存顾客信息

voidExit();//退出程序

intjudgech(char*a)//判断是否为汉字

intjudgedate(chardate[10])//判断日期是否合法

voidfile()//从文件导入商品信息

voidcomp()//从键盘输入商品信息

2)主要模块的实现

系统以主函数intmain()为入口,首先通过intselect()函数,显示课程设计名称、作者信息及主菜单。

提示用户选择,系统接收用户输入的选择,通过主函数根据用户选择进行判断,选择合法后调用相应的函数,进入到下一级菜单进行,在下一个功能中进行对应的工作。

4.3以下是几个主要模块的流程图:

1)主菜单函数:

2)信息导入函数:

3)输入商品信息函数

4)按编码查询函数

5)

按顾客姓名查询函数

6)时间段内销售总额函数

7)保存销售商品信息函数

8)保存顾客信息函数

5.运行结果

5.1主菜单界面:

主菜单界

5.2信息导入界面:

信息导入界面

从文件导入信息界面

从键盘输入商品信息

5.3销售信息录入界面:

从键盘输入销售信息

5.4按编码信息查询界面:

从键盘中输入要查询的商品编码,进行查询,并显示结果。

5.5按顾客姓名信息界面:

从键盘输入要查询顾客的姓名,进行查询,并显示结果。

5.6查询时间段内信息界面:

从键盘输入两个时间,查询改时间内的销售信息,是结果

5.7显示顾客姓名

保存顾客学名

5.8保存销售商品信息

保存销售商品信息

5.9保存顾客信息

保存顾客信息

5.10退出程序

退出程序

6.程序调试与测试

6.1程序调试

导入商品信息模块

从文件导入

从键盘输入

输入销售记录

6.2程序测试

查询:

输入数字大于10

输入1

输入错误顾客姓名

真确姓名

输入时间段不符合(2011-05-05——2011-05-05)

输入真确日期(2011-02-03——2011-02-03)

7.问题与不足

(1)题目重要求判断是否是汉字,要求时间调用系统时间。

但是由于这些并不会,所以借用了判断汉子。

但调用时间任然不会。

(2)在设计中不能一次输入多条商品信息和多条销售记录,而是需选择Y/y后输入下一条。

(3)没有设计一个判断商品信息是否错误的函数。

(4)在编码中由于没有判断商品信息是否合法的函数,使程序很长。

有些是反复使用,有些语句显得太罗嗦。

(5)在调试时,如果看提示信息,不按要求而是乱输可能会导致程序不能正常运行或者结果错误。

8.建议

在本次课设中,在时间上我觉得时间有点短,虽然差不多是两个周,但是由于要准备考试所以不能完全投入到课设中去。

课设的题目分配时难易度不一样,而又不是自己选取题目,这样对于学得好的与学的差的所接受的任务不符合。

对我自己来说,我的题目让同学帮忙,基本都说链表不会。

在辅导时候老师只有两个,有时候有问题却没有老师。

等老师有时间我们自己又不想弄了。

在以后的课设中,我希望老师按照个人所学的程度来分配难易的题目或者都是一样的题目,当然我知道老师也有老师的道理,但是学习是自己的事,想抄袭的人不管啥样的题目他都会抄袭的。

在时间上可以放宽一些以便程序更完美。

辅导老师辛苦些,多加几个老师辅导更多的学生。

9.编程体会

通过这次课设,我知道了自己C语言不懂不会的地方,在前面学习的知识后来不能灵活运用,有些东西虽然当时觉得很简单,也掌握了,但是到自己用的时候却总是出错!

自从上了结构体之后,C语言的学习难度加大,但我依旧不重视,和前面一样的学习。

结果后面的全听不懂,特别是链表和指针。

本次的课设编程题目对我来说是很难的。

里面要用到链表指针但通过课设,这些都是我不会的。

通过请教同学和老师总算编好了程序,同时对链表和指针有些了解,虽然用的不灵活但知道了怎么用。

编完程序我反思自己的学习,发现学习C语言只看懂书是没用的,平时要多练习。

当然不是简单的题,而是难题。

在练习难题的时候多思考,运用不同的方法解决问题。

遇到不懂的要问老师问同学或者看书来解决。

总之,在课设中我清楚的认识了自己C语言的现状,在经后的练习中我会努力克服不足学好C语言、灵活运用C语言。

10.程序源代码:

#include

#include

#include

#include

structproduct//定义商品数据结构

{

intnum;//商品编号

charproductname[20];//商品名称

floatprice;//商品售价

charplace[30];//商品产地

intstorage;//商品库存

structproduct*next;

}*head,*p1,*p2;//定义主结构体数组和备用结构体数组及指针

structtime//定义时间结构体

{

intyear;

intmonth;

intday;

};

structsell//定义销售数据结构

{

intID;//顾客代码

charcustomername[20];//顾客姓名

intnum;//商品编号

intcount;//销售数量

chardate[10];//日期

structsell*next1;

}*head1;//定义头指针head,缓冲指针p1,以及尾指针p2

/*************************函数申明****************************/

voidEnter_productmessage();//导入商品信息

voidCreat();//输入销售记录

voidSearch_num();//按编号查询销售历史

voidSearch_customername();//按顾客姓名查询购买历史

voidPrintf_customername();//显示顾客信息

voidSearch_date();//计算时间段内销售总额

voidSave_product();//保存销售信息

voidSave_customername();//保存顾客信息

voidExit();//退出程序

/***************************主菜单******************************/

intselect()

{

intc;

printf("\t\t************欢迎使用商品销售管理程序**************\n");

printf("\t\tT1123-5班胡军一分耕耘一分收获\n");

printf("\n--------------------------------------------------------------------------------\n");

printf("\n");

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

printf("\t\t**********欢迎使用商品销售管理系统**********\n");

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

printf("\t\t**1:

导入商品信息**\n");

printf("\t\t**2:

输入销售记录**\n");

printf("\t\t**3:

按编号查询销售历史**\n");

printf("\t\t**4:

按顾客姓名查询购买历史**\n");

printf("\t\t**5:

计算时段内各销售总额**\n");

printf("\t\t**6:

显示顾客信息**\n");

printf("\t\t**7:

保存销售信息**\n");

printf("\t\t**8:

保存顾客信息**\n");

printf("\t\t**0:

退出**\n");

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

printf("\n--------------------------------------------------------------------------------\n");

printf("\t\t请输入您的选择(0~8的整数):

");

scanf("%d",&c);

returnc;

}

/********************************主函数***************************/

intmain()

{

for(;;)

{

switch(select())

{

case1:

system("cls");Enter_productmessage();break;

case2:

system("cls");Creat();break;

case3:

system("cls");Search_num();break;

case4:

system("cls");Search_customername();break;

case5:

system("cls");Search_date();break;

case6:

system("cls");Printf_customername();break;

case7:

system("cls");Save_product();break;

case8:

system("cls");Save_customername();break;

case0:

system("cls");Exit();break;

default:

{system("cls");

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

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

printf("\t\t**输入错误!

!

!

请重新输入您的选择(0~8的整数)**\n");

printf("\t\t**请按Enter键返回!

!

!

**\n");

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

getchar();

getchar();

system("cls");

}

}

}

return0;

}

/****************************************************************/

intjudgech(char*a)//判断是否为汉字

{

inti,flag;

for(i=0;a[i]!

='\0';i++)

if(a[i]>=0)

{

flag=0;

break;

}

else

flag=1;

returnflag;

}

intjudgedate(chardate[10])//判断日期是否合法

{

inti,year,month,day,s1=0;//日期格式输入正确则s1=1,否则s1=0

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

if(date[i]=='\0')

{

s1=0;

break;

}

if(date[4]=='-'&&date[7]=='-')

{

if(strlen(date)==10)

{

year=1000*(date[0]-48)+100*(date[1]-48)+10*(date[2]-48)+(date[3]-48);//年月日

month=10*(date[5]-48)+(date[6]-48);

day=10*(date[8]-48)+(date[9]-48);

}

}

if(i==10)

{

if(year%4==0&&month==2&&day>0&&day<=29)s1=1;

elseif(year%4!

=0&&month==2&&day>0&&day<=28)s1=1;

elseif((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day>0&&day<=31)s1=1;

elseif((month==4||month==6||month==9||month==11)&&day>0&&day<=30)s1=1;

}

returns1;

}

voidfile()//读入文件操作

{

inti=0,m=0,k=1,j=1,c=1,o=1,v=1;

FILE*fp;

charfilename[30];

printf("请输入读入文件路径:

");

rewind(stdin);

gets(filename);

rewind(stdin);

p1=p2=head=(structproduct*)malloc(sizeof(structproduct));

if((fp=fopen(filename,"r+"))==NULL)

{

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

printf("\t\t**导入信息文件错误!

请检查文件路径!

!

!

**\n");

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

getchar();

system("cls");

Enter_productmessage();

}

printf("********************************商品信息***********************************\n");

printf("编号(1-10的整数)名称(汉字)价格(数字)产地(汉字)库存数量\n");

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

whi

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

当前位置:首页 > 经管营销 > 经济市场

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

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