unix课设购物系统基于服务端和客户端

前言

伴随着Internet的蓬勃发展,网络购物中心作为电子商务的一种形式正以其高效、低成本的优势,逐步成为新兴的经营模式和理念,人们已经不再满足用途信息的浏览和发布,而是渴望着能够充分享受网络所带来的更加多的便利。网络购物正适应了当今社会快节奏地生活,使顾客足不出户便可以方便快捷轻松地选购自己喜欢的商品。

在互联网服务业务方面:电子邮件、搜索引擎、网上银行、在线交易、网络广告、网络新闻、网络游戏等服务业务仍然快速的发展着。在这种发展背景下网上购物如雨后春笋般成长。网上购物系统是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些不经常变动或更新的资源,如公司简介、管理规范和公司制度等;动态信息是指随时变化的信息,如商品报价、会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家与用户方便地传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。

随着计算机技术的发展和网络人口的增加,网络世界也越来越广博,越来越丰富,电子商务已经成为网上的一股潮流。我们相信要不了太长有时间,顾客就可以在网络世界上获得他们在现实世界上可以获得的所有商品和服务。

 


目录

一  系统环境………………………………………………………………4

二  设计目的………………………………………………………………4

三  总体设计……………………………………………………………5

    1.程序设计组成框图………………………………………………5

    2. 流程图……………………………………………………………7

四  详细设计………………………………………………………………8

    1.客户机模块功能说明………………………………………………9

    2.服务器模块功能说明………………………………………………10

    3.数据库模块功能说明………………………………………………10

五  调试与测试……………………………………………………………12

六  源程序及结果分析……………………………………………………14

七  心得体会………………………………………………………………28

八  参考文献………………………………………………………………28


一  系统环境

清华同方pc

Windows xp

Red hat linux 9.0

二  设计目的

近年来,随着Internet的迅速崛起,互联网已日益成为收集提供信息的最佳渠道并逐步进入传统的流通领域。于是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。

网上购物是一种具有交互功能的商业信息系统。它向用户提供静态和动态两类信息资源。所谓静态信息是指那些比经常变动或更新的资源,如公司简介、管理规范和公司制度等等;动态信息是指随时变化的信息,如商品报价,会议安排和培训信息等。网上购物系统具有强大的交互功能,可使商家和用户方便的传递信息,完成电子贸易或EDI交易。这种全新的交易方式实现了公司间文档与资金的无纸化交换。

在美、日等信息化程度较高的国家和地区,网络商店发展速度迅猛,美国的世界级超一流的零售商,如沃尔玛凯玛特,家庭仓储、科罗格、J.C培尼等纷纷挤身于网络经商的行列。调查表明:美国的家庭已越来越习惯于在家中从网上购物。

在我国,网上购物从无到有也不过短短几年时间。我国第一家网上购物发生在1996年,燕莎友谊商场首次通过网上商城售出一个景泰蓝,虽然货款的支付不是在网上进行的,但这毕竟为我国零售业奏出了网上购物的先声。根据CNNIC的统计结果,截止2004年1月中国有互联网用户7950万人,而又有40.7%以上的网民在过去的一年里有过网上购物经历,这就说明中国有网上购物的用户达是3235.7万人,并且这一数字还在以17%左右的速度增长,预计到2006年底中国网上购物用户将达到6962万人,这说明在中国发展网上购物具有良好的群众基础,网上购物方式日趋被大家所接受。

 

 

三 总体设计

   1.程序设计组成框图

  

一般而言,服务器是一个进程,它等待客户机与其联系,提出某种类型的服务要求

 

 

 

 

 

 


                                                 mysql_real_connect

 

 

 

客户端

client

 

服务器

server

 

 

 


                             Socket bind listen

                              Accept read write

 

C/S模式在操作过程中采取的是主动请求方式

服务对客户机服务可将结果或信息返回给客户机(双向),也可不返回(单向)

1)创建套接字—socket()

应用程序在使用套接字前,必须拥有一个套接字,系统调用socket()向应用程序提供创建套接字的手段。其调用格式如下:

#include  <sys/socket.h>

int socket(int domain, int type, intprotocol);

该调用要接收3个参数,根据这3个参数建立一个套接字,并将相应的资源分配给它,同时返回一个整型套接字号,只和一个特定的协议相联系。实际上指定了相关五元组中的“协议”这一元。

domain(协议族):AF_INET,AF_UNIX,AF_IPX,…

type(类型):SOCK_STREAM,SOCK_DGRAM

protocol(协议):0-让系统使用指定类型和协议族上的默认协议。

2)绑定本地地址—bind()

当一个套接字用socket()创建后,存在一个名字空间(地址族),但它没有被命名,bind()将套接字地址(包括本地主机地址和本地端口地址)与所创建的套接字号绑定起来,即将名字赋予套接字,以指定本地半相关。其调用格式如下:

#include  <sys/socket.h>

int bind(int sockfd,const struct sockaddr*my_addr, int addrlen);

说明:

sockfd:为socket成功时的返回值—套接字描述符。

my_addr为本方地址数据结构。

addrlen=sizeof(my_addr).

3)监听连接—listen()

此调用用于面向连接服务器,表明它愿意接收连接。1isten()需在accept()之前调用,其调用格式如下:

#include  <sys/socket.h>

int listen(int s,int backlog);

listen()在执行调用过程中可为没有调用过bind()的套接字s完成所必需的连接,并建立长度为backlog的请求连接队列。

backlog定义最大长度的socket等待队列。默认值为5.

4)connect(),accept()

这两个系统调用用于完成一个完整相关的建立,其中connect()用于客户建立连接。accept()用于使服务器等待来自某客户进程的实际连接。

(1)connect

功能:客户方调用发出的请求

用法:intconnect(int sockfd,const structct sockaddr * server_addr,  socklen_taddrlen);

在面向连接的协议中,该调用导致本地系统和外部系统之间连接实际建立。

(2)accept

服务器调用,从等待从编号为s的套接字上接受客户连接请求

用法:intaccept(int s, struct sockaddr *addr, socklen_t addrlen);

(3)connect与accept的说明

调用accept()后,服务器等待从编号为s的套接字上接受客户连接请求,连接请求是由客户方的connect()调用发出的。

当有连接请求到达时,accept()调用将请求连接队列上的第一个客户方套接字地址及长度放入addr和addrlen,并创建一个与s有相同特性的新套接字号。

新的套接字可用于处理服务器并发请求。

5)数据传输:send()/write与recv()/read()

当一个连接建立以后,就可以传输数据了。常用的系统调用有send()和recv()。send()调用用于在参数s指定的已连接的数据报或流套接字上发送输出数据,格式如下:

int send(int s,void *buf,int len,intflags);

int recv(int s,void *buf,int len,intflags);

recv/send可由文件系统调用read/write所取代。

在处理二进制数据处理时,后者优于前者。

6)关闭套接字:close()

close()关闭套接字s,并释放分配给该套接字的资源;如果s涉及一个打开的TCP连接,则该连接被释放。

close()的调用格式如下:

int close(int s);

2.流程图

 

 

 

 


                                         未搜到

 

 

 


                                       取消

 

 


                           确  定

 

 

 

 

 

 

 

 

 

 

 

 

 


四  详细设计

  1.客户机功能模块说明

客户端程序可命名为client,要求带有两个命令行参数一个是服务(自己定义,定义在/etc/services中,比如mysvr15678),另一个是目的主机(定义在/etc/hosts内,也可使用DNS来解析),缺省时为本机。

客户至少要实现如下功能:用户管理;查询;交易(交费,购物等);撤销;统计。

main(int argc,char **argv)

{

      structhostent *hp;

      structsockaddr_in sin;

      structservent *sp;

      char       buf[50];

      int s,pid;

      char*service,*dest;

      if(argc!=1)

      {

              service=argv[1];

              dest=argv[2];

      }

      else

      {

             fprintf(stderr,"NOservice assigned!\nUsage:");

             fprintf(stderr,"%sservice_name destination!\n",argv[0]);

             fprintf(stderr,"Note:service_name is defined in /etc/services\n");

             fprintf(stderr,"      destination is defined in/etc/hosts\n");

             exit(-1);

      }

      if((sp=getservbyname(service,"tcp"))==NULL)

      {

             fprintf(stderr,"Error:getservbyname");

             exit(-5);

      }

      if((hp=gethostbyname(dest))==0)

      {

             fprintf(stderr,"Error:gethostbyname");

             exit(-6);

      }

      bzero(&sin,sizeof(sin));

      bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);

      sin.sin_family=hp->h_addrtype;

      sin.sin_port=sp->s_port;

      if((s=socket(AF_INET,SOCK_STREAM,0))==-1)

      {

             fprintf(stderr,"Error:socket");

             exit(-6);

      }

      if(connect(s,&sin,sizeof(sin))==-1)

      {

             fprintf(stderr,"Error:connect");

             close(s);

             exit(-6);

      }

      mainmenu(s);

      exit(0);

}

 

2.服务器功能模块设计

 服务器程序可命名为server,要求带有一个服务参数,与中间件的mysvr2同。

服务器方程序要完成客户端或中间件提出的业务请求,并做好留迹工作。

程序如下:

main(int argc, char **argv )   //主函数

{

    structsockaddr_in sin;

    structservent *sp;

    ints,ns,pid;

    char    buf[1024];

    char*service;

    if(argc!=1)service=argv[1];

    else {

       fprintf(stderr,"NO serviceassigned!\nUsage:\n");

       fprintf(stderr,"\t%sserver_name!\n",argv[0]);

       fprintf(stderr,"Note: server_name isdefined in file /etc/services\n");

       exit(-1);

    }

   if((sp=getservbyname(service,"tcp"))==NULL){

    fprintf(stderr,"Error:getservbyname");

    exit(-5);

    }

   if((s=socket(AF_INET,SOCK_STREAM,0))==-1){

    fprintf(stderr,"Error:socket create");

    exit(-6);

    }

   bzero(&sin,sizeof(sin));

   sin.sin_port=sp->s_port;

   if(bind(s,(struct sockaddr *)&sin,sizeof(sin))==-1){

    fprintf(stderr,"Error:bind");

    close(s);exit(-6);

    }

   if(listen(s,5)==-1){

    fprintf(stderr,"Error:listen");

    close(s);exit(-6);

    }

    while(1){

       fprintf(stderr,"\n\t\t\t  ………………等待客户端连接………………\n");

    if((ns=accept(s,0,0))==-1){// wait a connection */

        fprintf(stderr,"error: accept");continue;

        }

    if((pid=fork())==-1){// conneted, and then create child proc

        fprintf(stderr,"server: forkerror!");

        close(s); exit(-1);

        }

    if(pid!=0){//parent proce, nothing to do, and to the next loop

        close(ns);wait(0);continue;

        }

    if(pid==0){// entered child proccedure

        close(s);

        printf("收到客户端连接请求:\n");

 

等待客户端连接,当有连接时,创建子进程处理客户连接,父进程等待连接;


查看全部内容及源码:http://sharehoo.cn/blog/AlbumShow_file.action?userId=21

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一 项目背景和意义 随着时代的发展,信息技术、Internet技术、数据库技术的不断发展完善,网络进程的加快,信息的传递变得越来越重要。通过聊天工具进行聊天,你可以方准确,快速,方便的了解到对你有用的信息。 二 需求分析 在网络越来越发达的今天,人们对网络的依赖越来越多,由此而产生的聊天工具越来越多,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个局域网的网络聊天工具,而且通过制作该程序还能更好的学习网络软件编程知识。 2.1聊天室的可行性分析 随着计算机技术的发展和网络人口的增加,网络世界也越来越广博,越来越丰富,聊天已经成为网上一种习已为常的事。 可行性研究是为了弄清楚系统开发的项目是不是可以实现和值得进行研究的过程,实际上是一次大大简化系统分析和系统设计的过程,所以,进行可执行性的分析是非常必要的,也是很重要的,经过最初的设计目标和进行的市场调查得出以下四点的可行性分析 (1)经济:实现这个平台设计有没有什么经济效益。该平台设计只是作为本小组的课程设计,又因为大家的设计能力有限,其功能还不能完善,所以没有什么经济效益可谈。 (2)技术:现有的技术能否开发该平台,会有哪些困难。 (3)运行:该平台规定的运行方式是否可行。 (4)法律:该平台的开发会不会在社会上引起侵权或其它责任问题。因为该平台是作为课程设计与商业无关,又因为是自主开发设计,因此不会构成侵权,在法律上是可行的。 2.2聊天室的优势 (1)网上聊天使人们之间的通信变得越来越方便,快捷,准确,及时。 (2)还可以在网上认识新的朋友,交流自己的一些想法。 三 系统的总体分析与设计 分析该聊天室系统,制订整个系统框架,主要要求及特点如下: 1.客户可在网上进行注册,成为会员; 2.可以对自己的信息进行查看,修改等操作; 3.可以与会员进行群聊; 4,可以增加好友,可以进行私聊; 5.后台数据库用Microsoft SQL SERVER ; 3.1需求规定 3.1.1系统的功能 1.以会员身份进入,可以查看自己的信息,修改,也可以注销,还可以进行群聊,私聊。 2.以管理员身份进入,可以对会员进行删除,查看所有会员信息。 3.1.2数据库 网上书店的所有数据应当存放在数据库中,因此首先建立一个数据库(ChatRoom sys)。在这个数据库中,建立这样几个基本表:C_user,friend,Login,C_message,C_reg;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值