用C语言进行商品信息管理系统设计_第1页
用C语言进行商品信息管理系统设计_第2页
用C语言进行商品信息管理系统设计_第3页
用C语言进行商品信息管理系统设计_第4页
用C语言进行商品信息管理系统设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《C语言程序设计》

课程设计报告

专业:电子信息工程(本)

班级:0902

姓名:

学号:

指引教师:

-0-0年十二月二十九日

目录

一.商品信息管理系统设计的目的.........................03

二.商品信息管理系统设计题目描述和规定.................04

三.商品信息管理系统设计报告内容......................04

3.1需求分析.................................04

3.2概要设计.................................04

3.3具体设计.................................05

3.4编写代码.................................06

3.5程序分析.................................11

四.总结...........................................11

五.参照书目.......................................12

六.附源程序.......................................13

二、设计目的

1.纯熟掌握c语言课程中所学的理论知识;

通过课程设计让我们市掌握日勺C语言的理论知识更加纯熟,加深对C语言

的多种数据类型欧I理解,以及在编程中对多种数据类型,运算符和体现示

H勺运用,更加纯熟掌握运用不同H勺构造类型如顺序构造、选择构造、循环结

构,同步掌握数组、构造体在编程中的运用日勺长处。

2.通过综合C语言的基本知识来解决实际问题;

对理论知识有了一定的掌握后,规定我们能做到理论与实践相结合,通过综合C

语言H勺基本知识来解决实际问题,这次的课程设计就是我们理论联系实际的案

例,规定我们编写一种商品信息管理系统,以便对商品欧I各类指标进行存储,查

询,为商店日勺管理带来以便,是我们对解决实际问题时一次尝试。

3.加强分析和解决问题H勺能力。

通过课程设计,加强我们对实际问题日勺分析能力,让我们在学习过程中的某些想

法得到检查,可以让我们的思维在辩证中提高,最重要的是可以分析我们过往的

局限性,对于后来碰到类似问题可以更加迅速、完善的解决,同步让我们积累了

一定的经验,为此后的发展奠定了基本。

二.程序设计题目描述和规定

设计对n种商品进行管理的商品信息管理系统,商品信息管理系统是为了商品信

息管理日勺以便而做的一套商品信息管理系统。本管理系统只有获得权限日勺顾客才

可以管理商品信息,否则不可以进行操作,提高了管理系统的安全性。获得权限

日勺顾客可以进行商品信息修改、商品信息删除、商品信息杳询、计算总价格和平

均价格H勺基本操作,还可以轻而易举得到记录信息,即商品编号,商品名称,出

厂日期,商品价格。充足展示了一种商品信息管理系统所带来的以便。(可是本

系统不支持商品信息永久保存的功能)

系统功能涉及:

1.系统以菜单方式工作,密码登陆。

2.商品信息口勺录入功能(增长数据)。用数组数据类型赋初值的措施把商品信息

送到各个数组中(但注意要是合法数据),然后把它们输出显示。

3.商品信息日勺删除(删除数据)。任意输入一种商品的编号,将它所有的信息从组

数中删除。

4.商品信息H勺浏览功能(查找数据)。任意输入一种商品H勺编号,打卬出她的所有

数据。规定能多次查找。

5、商品信息的删除(修改数据)。任意输入一种商品的编号,打印出所有有关信

息后,可对某一项信息进行修改并保存。

6、商品信息欧I计算并排序。计算所有商品日勺总价格及平均价格(aver,单精度,输

出一位小数),将涉及所有数据日勺数组元素按价格从低到高日勺顺序排序打印出

来。

三.程序设计报告内容

3.1需求分析:

题目规定设计的系统满足如下某些规定:

菜单方式工作;添加商品信息;删除指定商品信息;修改指定商品信息;浏览指

定商品日勺信息;计算所有商品的总价格和平均价格;

对于排序,根据题目的规定和自身设计的需求,本程序按照每种商品的价格从低

到高的方式进行排序。

3.2概要设计:

本系统分为如下几种模块来实现其功能:

密码登陆验证模块,为单独设计函数,放在主体main函数中;

任务选择主菜单模块,涉及:增长商品信息模块,删除商品信息模块,查找商品

信息模块,修改商品信息模块,计算商品总价格及商品平均价格模块,退出系统

模块;以上各模块除退出系统直接调用系统exil函数外,其他模块均单独放在一

种函数里;分支选择运用的是switch语句。增长商品信息模块所用的函数接口

为ADD,无参数调用;

删除商品信息模块所用曰勺函数接口为DELETEC【避免和系统的DELETE函数冲

突】,无参数调用;

查找商品信息模块的函数接口为FIND,无参数调用;

修改商品信息模块的函数接口为MODIFY无参数调用;

计算商品平均价格和总价格日勺函数

为AVER,无参数调用;

主菜单功能选择模块函数接口为choose,无参数调用。

系统使用的数据构造为构造体链表。构造体成员涉及构造体成员变量和构造体措

施,成员变量涉及:

Number,商品编号;name,商品名称;date,商品的出场日期;factory,制造商的I

名字;price,商品的价格;

next构造体指针,指向链表/、J下一种节点;pre构造体指针,指向链表的上一种节

点。

构造体成员列表涉及:

Course,构造函数;output,输出目前节点H勺信息,也就是商品H勺信息。链表有一

种头节点:stan,一种链表尾节点:cur,添加商品信息通过操作尾节点cur实现;

删除商品信息,查找商品信息和修改商品信息都从starl节点开始操作。本

系统预设密码为“12345”,不提供密码修改功能。

3.3具体设计:

Main函数:

case1:ADD();brea<;增长商品

case2:DELETEC();break;删除商品

case3:FIND();break;查找商品

case4:MODIFY();break;修改商品信息

case5:AVERO;break;总价格和平均价格

case6:sortSeq;break;按照商品价格排序

case7;SORT();break;

算法:本系统的密码登陆及验证模块,为单独设计的函数,放在主体main函数中。因此主体main

函数涉及了使系统通过密码登陆(本程序通过调试和实际日勺操作反馈出,密码登录次数在程序的

设计过程中没有做出限制,可以说是设计的一种缺陷)。

伪代码如下:

while(密码不匹配)

重新输入密码

endwhile

while(顾客输入选择)

if(选择增长商品信息)

ADD();

elseif(删除指定商品信息)

DELETEC();

elseif(修改指定商品信息)

MODIFY();

elseif(查找指定商品信息)

FIND();

Elseif(计算总价格和平均价格)

AVER();

Elseif(退出系统)

exit();

endwhile

*if•上■上X,

*T**7**?»«»**T**T»*7»»?»*i**Tw*7*»«**i***»*/•*?»«T**T**r»»»»»i»*7»*7*»i**T**7*»7»[、*T*«»**i*****?»»T»«i*

添加商品信息伪代码如下:

ADD:

while(继续添加)

(“输入添加商品的信息”)

New(是一种新的节点,存储添加H勺商品信息)

Endwhile

(“返回主菜单”)

EndADD

•1**1*»1«♦:/4,■1・•1*»J«♦],U,•[,、[■k1•*1••>*♦:■[,■],♦:,、],»1«»1•kJ--工.”/■】,»1•♦:,•],■],*1*»Ja・:,»1<>>*

*T»*7»*?»»1»*7»*7»(、*•»*T»*?»q、*•»*7»*7»4、*i»«*»«7»»C»**»*s»*7*(、*T»*7»*T*q、*7»*7».卜q、q、*7»*7»»T*q、*T»q、

删除商品信息伪代码如下:

DELETEC:

while(继续删除)

输入删除日勺商品编号

for(链表上的节点)

if(目前节点的I编号==待删除节点编号)

删除目前节点,更改前后节点的next和pre指针指向

标记找到节点

elsethen继续遍历

endfor

if(假如没有找到)

输出提醒信息

elsethen

输出删除成功

endwhile

返回主菜单

endDELETEC

*2^彳.彳.彳.彳.*2^彳.彳.彳.彳.

查找商品信息伪代码如下:

FIND:

while(继续查找)

输入查找日勺商品编号

for(链表上的节点)

if(目前节点的编号==等待查找的节点编号)

调用目前节点输出函数output,打印节点信息

标记找到节点

elsethen继续遍历

endfor

if(假如没有找到)

输出提醒信息

endwhile

返回主菜单

endFIND

7.7.«£«q,7,q,7,、>q.*1**3*«.7,、以7,*1*、>*2**2*s*«"«£*q.

rj.rj»rj»*»****,J**?*rj»*J**5*r5*■[•*7•*l«八rj%e5«rj,.[•rj*rj«*2»rj*rj»r}«*1*,卜rj*rj«*1*八*J**y*rj*

修改商品信息伪代码如下:

MODIFY:

while(继续修改)

输入修改口勺商品编号

for(链表上的节点)

if(目前节点的编号==待修改节点编号)

输入新的商品信息

标记找到节点

elsethen继续遍历

endfor

if(假如没有找到)

输出提醒信息

elsethen

提醒修改成功

endwhile

返回主菜单

endMODIFY

*5*:K*3**:*1*:K*3*w:*::K:;:jj*。::;:*j«*::K»j«*j(**:

计算总价格和平均价格伪代码如下:

AVER:

初始化总学分sum为0

for(未达成末尾节点)

将节点学分累加,保存到sum变量中

同步合计节点个数

endfor

打印并输出总价格和平均价格

endAVER

.长斗・.长斗..y.y.y斗..*.¥'.长*■

选择函数伪代码如下:

choose:

打印主菜单,并提醒输入命令编号

然后系统执行指定命令

endchoose

程序流程图如下:

输入密码界面

3.4编写代码

1、作为小组长除了参与主函数的设计外,我在小组内重要负责的模块是,商品

信息输出和俺照价格(从低到高的顺序)进行排序两个模块。

个体任务模块日勺源代码如下:

商品信息输入:

Commodity次cur=NULL,*start=NULL;

Commodity*tp_Pre=NULL;

voidADD()

(

intlabel;〃商品编号

charname[50],商品名称

intelec;

intsco;〃学分

puts("输入添加的商品信息,按照如下格式:编号名称出场年月价格)

puts("返回主菜单输入・1”);

while(true)

(

scanf("%d",&label);

if(-l==label)break;

scanf("%s%d%d",name,

&elec,&sco);

cur=newCommodity(label,name,elec,sco);

if(NULL==start)start=cur;

if(NULL==tp_Pre)tp_Pre=cur;

else

cur->pre=tp_Pre;

tp_Pre->next=cur;

tp_Prc=cur;

)

puts("添加成功,您添加的信息如下

cur->output();/〃〃〃///〃/〃〃〃〃///〃〃〃//

cur=cur->next;

)

system("cls");

)

按照商品价格排序:

sortSeq[MAX];〃构造体数组,用于排序用

intMyCMP(constvoid*a,constvoid*b)

(

structCommodity*aa=(Commodity*)a;

structCommodity*bb=(Commodity*)!5;

returnaa->price-bb->price;

1

Commodity*cur=NULL,"start=NULL;

Commodity*tp_Pre=NULL;

2、具体负责模块日勺功能的设il与实现

a、商品信息输入模块:

voidADD()

(

intlabel;//商品编号

charname[50];〃商品名称

intelec;

intsco;〃学分

puts("输入添加I的商品信息,按照如下格式:编号名称出场年月价格)

puts("返回主菜单输入-1");

while(true)

(

scanf(”%d”,&label);〃输入添加的商品编号

if(-l==label)break;//假如输入-1,表达退出

scanf("%s%d%d",name,

&elec,&sco);〃否则,继续输入剩余信息

cur=newCommodity(label,name,elec,sco);〃构造一种新节点,存储新

加商晶H勺信息

if(NULL==start)start=cur;〃假如是第一件商品,那么讲链表头结点

指向她

if(NULL==tp_Pre)tp_Pre=cur;//同上,将目前指针指向第一种节点

else

〃否则,更改节点指向关系

(

cur->pre=tp_Pre;

tp_Pre->next=cur;

lp_Pre=cur;

)

puts("添加成功,您添加的信息如下:");

cur->output();〃输出新加商品的信息,用于确认录入的对的性

cur=cur->next;〃目前指针移向下一种节点位置

}

system("cls");

b、按照价格排序模块:

voidSORT。//排序函数

(

Commodity*tp=start;//构造一种临时构造指针,获取链表头指针

doubleaver=();〃存储节点价格的平均值

intent=0;〃计数商品个数

while(NULL!=tp)〃从链表头结点开始遍历,获取每个节点,存到

〃构造数组sorlSeq中,便于下面调用系统的迅速排序函数,由于链表不支持

排序

sortSeqfcnt++]=*tp;

Ip=Ip->next;

I

〃调用系统H勺迅速排序函数对构造数组按照价格核心字进行排序

qsort(sortScq,ent,sizeof(Commodity),MyCMP);

inti;

〃将排好序内构造数组按照排序规则:价格从小到大挨个输出

for(i=0;i<ent;++i)sortSeq[i].output();

3.5程序分析

一方面在和各成员完毕自己日勺模块后,我们进行了系统的集成和调试。在此过程

中我们也碰到了诸多的问题,但是在教师和同窗的协助下都基本上解决了。

1.本系统采用以菜单工作方式,并采用密码登陆(程序不提供密码修改功能,且

不限制密码输入日勺次数)。

2.商品信息口勺录入功能(输入数据,由于系统内没有自带商品信息,这一步是一

方面操作的,否则其她功能不能实现)。用数组数据类型赋初值的措施把商品信

息送到各个数组中(但是注意必须是合法数据),然后系统会自动将它们输出并

显示。

3.商品信息日勺删除(删除数据)。任意输入一种商品的编号,将它所有的信息从组

数中删除并显示“删除成功”,假如没有此数据,系统会输出未找到指定商

品。

4.商品信息的浏览功能(查找数据)。任意输入一种商品口勺编号,打印出她的所有

数据。本系统能进行多次查找,假如没有此编号,系统会输出“未找到指定商品”。

5.商品信息日勺修改(修改数据)。任意输入一种商品的编号,系统会自动打印出所

选商品H勺所有有关信息,可对某一项信息进行修改并保存,系统会输出“输入新

H勺商品信息,系统将会自动覆盖原有信息:",假如没有此商品,系统会输出

未找到指定商品。。

6、商品信息的计算并排序。计算所有商品日勺总价格及平均价格(aver,单精度,输

出一位小数),将涉及所有数据的数组元素按价格从低到高口勺顺序排序打印出

来。

7、本系统输入0键,可以退出程序。

四.总结与心得体会

通过一周的程序设计实践,感慨颇多,特别是同窗之间的合作和互助精神

让我极为感动。

商品信息管理程序设计,在我们六人密切合作及同窗教师的帮忙下花了整

整一周日勺时间才得以完毕。这是我入大学以来第一次感觉整个过程我有学到东西,

当调试到最后一种错误时那种胜利的喜悦让我无法用言语体现,那是一种强烈

的成就感。

固然,在整个设计过程中,我付出了诸多,也懂得了只有付出才有回报.同

样在这次设计中,我碰到了诸多困难,但我没有向困难低头,通过查询资料,

自学构造体知识,虚心向同窗、教师请教,积极参与讨论,问题都一一得到理解

决。我发现平时学的太少了,在此后我一方面要?巴教师在课堂讲日勺弄懂,弄透,

在此基本上运用课余时间多看课外书籍,拓宽知设面。同样在设计过程中,合作

精神必不可少。单凭一种人日勺力量是不能完毕的,毕竟一种人学H勺很有限。每个

人掌握的不同。态度决定一切,只有努力才有收获。

程序设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题

的重要环节,是对学生实际工作能力的具体训练和考察过程.科学技术日勺发展日

新月异,当今计算机应用在生活中可以说是无处不在。因此作为21世纪日勺大学来

说掌握计算机软件开发技术十分重要。最鲜明的例子就是charpass[MAX];这个

我刚开始写成了char*ass,没有进行内存申请下面就直接使用,因此报错,

这个问题本来是可以避免的。可见细心是多么的重要

时确,回忆起本次程序设计,自从拿到题目到完毕整个程序设计,不仅巩

固了此前所学过MJ知识,通过这次程序设计使我们懂得了理论与实际相结合的

重要性,只有理论知识是远远不够的),只有把所学的I理论知识与实践相结合起

来,从理论中得出结论,才干真正为社会服务,从而提高自己的实际动手能力

和独立思考日勺能力。

通过这次程序设计我总结了有关软件开发要具有一下素质:

1.很强的团队精神和协作能力

2.此外编程是一项高精度的工作因此我们要有规范化,原则化的代码编写

习惯

3.通过这次编程我们深深的感受到对函数的变量命名,输入格式。良好的编

写习惯,不仅有助于函数的移植和纠错,也有助于不同人员之间的协作。

4.我们要有有错就改和虚心接受别人的意见日勺诚恳态度。程序设计像做数学

题,只要你日勺成果没错无论你的措施是什么都可以。每个人思考题目的方式都不

同,一种问题要达成某种成果可以通过多种途径与措施,别人的措施也有你借

鉴的价值。

5.我们还要有模块化思维能力,模块化思维就是编程任何一种功能模块或函

数日勺时候,耍多想某些,不要局限在完毕目前任务的简朴思绪上,想想看该模

块与否可以脱离这个系统存在,与否可以通过简朴的)修改参数的方式在其她系

统和应用环境下直接引用,这样就能极大避免反复性的开发工作,

6.善于总结,也是学习能力日勺一种体现,每次完毕一种编程任务,完毕一

段代码,都应当有目的H勺跟踪该程序H勺应用状况,随时总结,找到自己的H限

性,这样所编写日勺程序才干逐渐提高。

生活就是这样,汗水见证了获。通过实际动手做,我们才真正领略至U“苦奋斗”

一词的真正含义,我们想说,编程日勺确有些辛劳,但苦中也有乐,在这个团队

的任务中,一起日勺工作可以让我们有说有笑,互相协助,配合默契。对我们而言,

知识上日勺收获重要,精神上日勺满足同样是难得的。挫折是一份财富,经历是i份

拥有。这次实际操作必将成为我们人生旅途上一种非常美好的回忆!

最后我想说的是,不管我们做什么事,只要专心去做,就一定会做得较好,不

要觉得自己做不好,核心是要保持那份去努力的精神!

五、参照书目

1.谭浩强,《C语言程序设计教程》,北京,清生大学出版社,

2.谭浩强,《C语言课程设计》,北京,清华大学出版社,

3、谭浩强,张基温,唐永炎编著《C语言程序设计》北京:高等教育出版社。

6.附录一一源程序

constintMAX=100;//默认最多存储MAX件商品

structCommodity

{

public://构造体里日勺成员和措施是公有的,在任何地方都能访问

intlabel;〃商品编号

charname[50];〃商品名称

intelective;〃出「年月

intprice;//价格

Commodity*pre;〃前驱指针节点,链表的节点指针

Commodity*next;〃后继指针节点,把一种个的节点连接起来

Commodity(intlab,charnam[],inielect,intscor)

(

label=lab;

strcpy(namc,nam);

elective=elect;

price=scor;

next=NULL;

pre=NULL;

)

Commodity。]}〃由于有数组,重载一种无参构造函数

voidoutput()

(

primf("商品编号:\t%d\n”,label);

printf("商品名称:\t%s\n",name);

printf("出厂年月:\t%d\n",elective);

printf("商品价格:\t%d\n",price);

puls(”............-......................");

)

)

sortSeq[MAX];〃构造体数组,用于排序用

intMyCMP(constvoid*a,constvoid*b)

structCommodity*aa=(Commodity*%;

structCommodity*bb=(Commodity*)b;

returnaa->price-bb->price;

I

Commodity*cur=NULL,*start=NULL;

Commodity*tp_Pre=NULL;

voidADD()

{

intlabel;//商品编号

charname[50];〃商品名称

intelec;

intsco;〃学分

puts("输入添加口勺商品信息,按照如下格式:编号名称出场年月价格”);

puts("返回主菜单输入・1”);

while(true)

(

scanf(”%d”,&label);

if(-l==label)break;

scanf("%s%d%d",name,

&elec,&sco);

cur=newCommodity(label,name,elec,sco);

if(NULL==start)start=cur;

if(NULL==tp_Pre)tp_Pre=cur;

else

cur->pre=tp_Pre;

tp_Pre->next=cur;

tp_Prc=cur;

)

puts("添加成功,您添加的信息如下

cur->output();〃/〃/〃〃〃〃〃/〃〃〃/〃〃/〃/

cur=cur->next;

)

system("cls");

1

voidDELETECO

(

puts(”输入要删除的商品编号,-1退出)

intlab;

while(true)

(

scanf("%d",&lab);

if(-l==lab)break;

intfind=0;

Commodity*lp=start;

intent=0;

while(NULL!=tp)

++ent;

if(tp->label==lab)

(

find=1;

break;

I

tp=tp->next;

)

if(l==find)

(

Commodity*bak=tp;

puts(“你要删除H勺商品是:");

tp->output();

if(l==cnl)

(

tp=tp->next;

start=start->next;

)

if(NULL==bak->next)〃链表最后一种元素

tp->pre->next=NULL;

cur=tp->pre;

1

else

(

tp->prc->ncxt=tp->ncxt;

ip->next->pre=tp->pre;

}

deletebak;

puts("删除成功");

)

elsepuls("未找到指定商品”);

)

system("cls");

I

voidFIND()

(

puts("输入要查找的商品编号,返回主菜单请输入-1");

while(true)

(

intlab;

scanf("%d",&lab);

if(-l==lab)break;

intfind=0;

Commodity*tp=start;

while(NULL!=tp)

(

if(tp->label==lab)

(

find=1;

break;

I

tp=tp->next;

)

if(l==find)

(

puts("商品信息如下

tp->output();

)

elseputs("未找到指定商品)

)

system(ncls");

)

voidMODIFYO

(

puis("输入要修改的商品编号,返回主菜单输入-1");

intlab;

while(truc)

scanf(”%d”,&lab);

if(-l==lab)break;

intfind=0;

Commodity*tp=start;

while(NULL!=tp)

(

if(tp->label==lab)

{

find=1;

break;

1

tp=tp->next;

)

if(l==find)

{

puts(“你要修改H勺商p力信息如下厂);

tp->output();

puts(”输入新的商品信息,系统将会自动覆盖原有信息

scanf(H%d%s%d%d",&tp->label,tp->name,

&tp->elective,&lp->price);

puts("修改完毕”);

)

elseputs("未找到指定商品)

)

system("cls");

}

voidAVER()

{

Commodity*tp=start;

intsum=0;

doubleaver=0;

intent=0;

whilc(NULL!=tp)

(

sum+=tp->price;

++ent;

tp=tp->next;

)

printf("所有商品总价格为:\t%d\n所有商品平均价格为:sum,1.0*sum/ent);

)

voidSORT。//排序函数

|

Commodity*tp=start;

double

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论