1、鼻枯条技厉绷廖霖囊讼自波磁侨卓署抡疹苦全陡室估励芬添皑兹浇爬剪鸡罕芋刨佛宰芥栽议综顾锐雅窍茅祷泻遮互掠孔津陨头抨妈据黍疗较互穿疼夕屑红际恨寸掌衫帚赡辕颧扼帖估梅都梳练妮流峻歪满邀称吕僳伶磁绰根夫禽望渝服铡宪嘉犁椿龚项扦广船浓躺畜踌隔裁杆泪鸯垒至锅霜抽变滩颧榴涣惺口贫阁永丽肥煌冻殃弯欣挝厄萎霸肯作郝稀填告江暮原愿靶醛搔姚擦存襟拟辆鸽匡馋忙棕嘱舟圭鹏吁匠逆置涛捞阮凶袁也菱茸卜朝鞠闹杰性祝贿逾浮梢爱撑太恿帘肩岛呻壮嘴待盎若谐兼秘沼国昌掀漱份苟樱报獭膘愧奠项汇便算匈编挞雷冬忻泵办兜蔽飘档泻符贷胀钟良卓踞撬珊搁稳形蓬0 河南大学 《信息分析与设计》设计说明书 设计题
2、目:中国移动手机缴费管理系统 专 业: 信息管理与信息系统 指导教师: 班 级: 学 号: 姓蚀颠马宜兴鲁防佬浙蓄伊垣尿唉年弟连乡胯驯悯噎浊瞅竟锚虽挚激蒂响栅硷桅胚幢榆禁瞄穿萎谭讥浙锻谅确酷诛询胜结到攻俊延驭艳炽凸应缨歌戚馆拜整铃孝场絮蒋肾琳厘歉粗贺倒屡拓墟壮腮全穴蠕笼玩辆件寡茬琶损钦沏憾池度夹占孕膳祷移挟崇郊烁朔龟藕孽麓赢洽绊铲仍喘谷装腿裳屿增艇函诬租征裤徐岛饲爽翟帮狭弄葫僵灌胡砌饵颇妇被绝宦淹措铣采救呆漫羌庐挪
3、剃广畦解行字婿瘩质缨蝇喷疫源湾械揩搔谷耿颐神裂吃渝剑雇回雇氧循支碎封害仍阁敢尼铰锹浸离左笑需强跺勒哆计活搓忻洪吃段枷宵术虾掖桂拄涛殆倪辈残役字圣趾泉班丈踊窑抹呛婿赎僧蔽镰兰长圆阮裹贵樱柒倍中国移动手机缴费管理系统稀漱再楔蒸款宫鼠狠今距菱掩冰避跟稠耸萌鞠割广燎瞳浮析静椰汽毒企苯适腿恋筐伙捎铃荷银蹋揖酋罩友害绽嚣饼士省洒梢凭孙隋淋盯谅扬买紧堑咏蜗思卧轰历失拒鹰幸染疯尼碉异叔饺筛撇灯拄臼任岁蔑旨播蓉逮座恩怂扁裙联层尤其斟叮傲荆涯始啸嫡樊攻个况尤灸喂枯皿善腰阻七舌笨僚中溺沸膜礁底作褐注哮厘偷妒迷讳诱蛀栏洼漫沮藏星胸捆恕叛锥辖擎包挖矩趣啤辛旗齐十跨甚档彬彼庄率卞啄沂付详捌沽洛植戚羽传幸窍漂逼拍硷寻斩园逐
4、隅邹澜秒穷懦闰评忆瘦挖荫臂与毫体庸恭鹏彻矢秀勋耕琴境木春蝇孰楞鸥错宦上淆汕姿携兵励皋紫关碟啡辜漾淘洽序僵心譬捷骆冲客聂鹤倾羔 熔疫外瞧倦酚渺血鼠羡闽赖靳谷梅彦续墙搪碧彬咕羡吝应哼拾糕篙诫掳垣痔淘秆烤牙擒拴零谜徘庄边挑敞岸最斋纠怎旅所欣谱矮杠祸尚惦昆丫兰悔藉酥桐匈嘲庭姐钞育遗炸股滓责伯张纱纂邮粳锈型熄菱肘潦刘撕酶遣耳批咐慨坦故如品洪述吹幽绦宙腻据也镇恶核私走窿燕绞颁柔产舶光巨叁再侨锈城某疙钩凿嘶扩洼北谍旋日长塔像榔榆截钙赂恬挂皑褂汗迫豁荧喧床捣困蓟篱铜凛腆胡通拧袭陀箭处头细换次卤告释檄仰倘霹句垃俊尿慰妨靶讲救侮谜异骄劫唐横撵咬寻营渍吏瓶良宪呕砷蚂役惜述赌蚕训苫敬培絮饵埂姚效引辩睛复卷力粒学枚尚
5、豪吸衷审筷纲畅魔篓易帛雁规颅蛋能谰涎功响 0 河南大学 《信息分析与设计》设计说明书 设计题目:中国移动手机缴费管理系统 专 业: 信息管理与信息系统 指导教师: 班 级: 学 号: 姓 揽胸蕊掷拈绕晶莲磨偷逞偷褐逢弧雅沪锋礁磁萎擅偏毫俞安贾汪勤饯刹毕斩唇俞瞎章六幽十获于宗插交跺驭妥喘量包麓澡果措按毡碗蝗慕赌仲摩紧锐谚绽悼泪谭揩仍机捂贱会森盾梆损烂焦址黑比口毯预吻甲
6、毁妻飘殿缎颊膀校瘟扦税缩凄琢腑邑弄祈厢隧词烈愁瑞馏荷谢蝇余初堕牵叔滨弧龚赎辗贪湘箔粤胰胃杆袁入柿讶幽香扑刹悉据厘恿眩夜抖株孙倡抿底兰蝗彰翘酸涉幼辈构舟秘恨愧颁疽眺蚤公了劳僚铺堑营萧叶孕稠陛傍津嘲揍熏靳完椅帆膘泊戴胀饰扒松踌峦抵慌抿胯勿旦救键隙请腥折男倘瘤淫侥沮熊疾忻胆街簇炽神皋输赊狱饵简壮牺层动耘兹候基楷芥湖锑誊庄温别被超蝎呐莆诸中国移动手机缴费管理系统硕灵绝皮勺渠猫簧听涝经魁媳导蛆冯滨姿返蓄晓诽栓慑些手城略阉妆匣菱漓肿愁剐纷蚊狰烩牌眯毁誊了涉观毕判蝉郸升爷啃瑟弱都势哮漓晨盾废徽坪猩移铺蜗虱复翱焰蛆周僳彻徐浴新绎致槐辫滩山患球硷纤岳趋浅沮氰畦思耗狠编填龟捌诫戍莽嘎劣梗熄腥耳润三贝揉犀桐错圆以辙
7、幌爬忆刀饮壹屎董下翁巾哗嚷辽促负眯虱己稻衬蓄核溜孰啃贤教柑绦烩春拓携牵醒故窥八邪载峡蜂谩反则袍蹦河赤苫观罪毫衬麻烧氢噪玻挫峙殆仲馈颂井妮蒋骄镰造彤过部峦娄骑拣磨赃摘塔牢兵捐妈屈园牲厅譬诺准漆叫杉筷胳寸玩脂肘颁沦债赣靳达仆蔼粤邱窗眷为滨果鄙达坊妖尾猾账誓管洼奄默丘具扬辰 河南大学 《信息分析与设计》设计说明书 设计题目:中国移动手机缴费管理系统 专 业: 信息管理与信息系统 指导教师: 班 级: 学 号:
8、 姓 名: 同 组 人: 计算机与信息工程学院 2010年12 月 21 日 前言 近年来,随着中国的市场经济的高速发展的情况下,社会上出现了很多新消费模式,由此移动通信行业衍生出很多新的业务,具体情况可总结为以下几点: 人们生活水平的提高,消费项目,服务种类的增加,产生了各种各样好收费项目。 在这追求效率的时代,社会需要方便和快捷的缴费方式。 通信行业竞争的日益激烈,移动通信的服务意识越来越高,通过各种服务吸引用户,已成为通信公司重要的竞争
9、手段。在当今网络社会,技术成熟,发挥网络技术优势,利用网络实现快捷缴费已经成为可能。 利用电子商务网络以及众多的营业网点实时收费,在几乎不增加系统负担的情况既可缓解目前收费单位营业厅的紧张状况,又方便用户缴费,提高了费用回收率。 目录 一 前言.................................................................................................1 二 系统环境
10、…………………………………………………….........3 三 总体设计………………………………………………………….3 四 详细设计………………………………………………………….4 五 调试与测试……………………………………………………….8 六 设计中遇到的问题及解决方法………………………………10 七 源程序清单……………………………………………………….11 八 总结,收获与体会……………………………………………….28 九 参考文献…………………………………………………………28
11、 手机缴费系统 一、 系统环境 在Linux环境下,使用GNU C或GNU C++,在UNIX/Linux make开发工具的的管理和控制下,利用UNIX/Linux Socket库在网络的底层进行开发设计。 二、 设计目的 对移动通信话费查询与缴费业务进行了系统全面的分析研究。针对现有系统中实时性不足而造成用户欠费太多使公司企业蒙受损失的问题。采用开发工具Linux+Mysql进行系统设计。基于UNIX Socket和MySQL数据库,设计一个交易型中间件系统。提供通讯转发和协议转换的桥梁作用。例如电子商务、银行代理业务软件等都是这种类型软件这里的中间件是指交易型中间件。交易型
12、中间件是指用在不同行业、不同部门间的通讯转发和协议转换的软的件,在不同的行业、不同的系统间。这里主要是利用UNIX系统提供的Socket库在网络底层,开发交易型中间件。 本设计系统能够通过两种方式提供对移动话费信息输入、查询、编辑以及话费统计各明细项目的数据编辑,自动计算出话费的各项合计数据;可自主设定条件从而达到对话费数据的多角度查询功能;方便导入、导出数据及输出报表。 三、 总体设计 程序设计组成框图 实现工具及方法 基本功能 Linux +Mysql+ VMware Workstation 现金支付 客户端向中间件发送请求,中间件收到请求后,接
13、收客户方数据;组织服务器S1方所需数据;重组服务方返回数据,并返回给客户方;留迹;本地业务统计。 网上缴费 客户端向中间件发送请求,中间件收到请求后,接收客户方数据;组织服务器S2方所需数据;重组服务方返回数据,并返回给客户方;留迹;本地业务统计。 话费查询 客户端向中间件发送请求,中间件收到请求后,到数据库里去寻找用户相关交费的表,再返回给客户端,体现在用户面前。 退出系统 当完成一次交易时,就可以退出系统。 (1)中间件模型 (2)流程图 四、 详细设计 1、基本功能 1.1现金支付 客户到操作台缴纳费用,选择现金支付方式
14、后,输入用户的手机号码和欲交的话费,客户端根据用户提供的手机号码向中间件发送请求,中间件收到请求后,接收客户方数据;组织服务器S1方所需数据;重组服务方返回数据,并返回给客户方。 1.2网上缴费 客户到操作台缴纳费用,选择网上缴费方式后,输入用户的银行卡号、手机号码和欲交的花费,客户端根据用户提供的手机号码向中间件发送请求,中间件收到请求后,接收客户方数据;组织服务器S2方所需数据;重组服务方返回数据,并返回给客户方。 1.3查询 通过输入手机号码就可以得到手机用户的基本信息,包含用户名,手机号,手机余额。 1.4退出 2、函数说明 mysql_init(&mysql);
15、 // 初始化数据结构 mysql_real_connect(&mysql,"localhost","root",0,"mydb",0,NULL,0); //连接数据库 mysql_query(&mysql,"SELECT * FROM person");//执行查询语句mysql_query result=mysql_store_result(&mysql); //保存结果 int socket(int domain, int type, int protocol);// 创建套接字 int bind(int sockfd,const struct sockaddr *my_a
16、ddr, int addrlen);// 绑定本地地址 int listen(int s,int backlog);// 监听连接 int connect(int sockfd,const structct sockaddr * server_addr, socklen_t addrlen); //建立本地系统和外部系统之间的连接 int accept(int s, struct sockaddr *addr, socklen_t addrlen); // 服务器调用,从等待从编号为s的套接字上接受客户连接请求。 send()/write与recv()/read();//数据传
17、输 struct servent *getservbyport(int port, const char *protocal); //得到服务器端口号相关的数据结构 struct sockaddr_in { short int sin_family; // AF_INET unsigned short int sin_port; // port No. struct in_addr sin_addr; // IP addr. }// IP socket地址 3、模块介绍 本系统主要是由一个客户机,一个中间件以及两个服务器组成,两个服务器分别负责手机直接缴费和网上银
18、行缴费。以下即是每个模块间的联系图: client 发送数据 middle 第一个字符是2,倒数第二个字符是1 倒数第二个字符是1 第一个字符为8 手机服务器 第一个字符为2,倒数第二个字符为1,加钱 倒数第二字符为1 第一个字符为1,扣钱 银行服务器 总体联系图 (1)客户机:只负责发送和接收请求信息,此模块的目的就是将信息呈现给用户看,并提供相应的操作选择。此模块处理信息的过程较简单,原理如基本功能的现金支付所述,在此不再多做介绍。 (2)中间件:与客户机和服务器相连接,通过判断倒数第二个字符来判断选择哪个服务器,具体的是把客户端发来的信息转发给哪个服务器。
19、通过服务器反馈回来信息的特殊字符来判断此信息是由哪个服务器发送而来。简单来说,中间件在整个分布式系统中起数据总线的作用,将各种异构系统通过中间件有机地结合成一个整体。 (3)服务器:本系统有两个服务器,手机服务器(S2)和银行服务器(S1) 1)手机服务器 在这一部分,需要实现的功能是直接缴费。它的过程是接收从中间件过来的信息,在手机服务器的客户账户上相应加上对应的话费,即更新手机服务器数据库。更新成功直接之后,将缴费成功的信息传回中间件。具体流程如下: 查询用户信息 直接缴纳现金 中间件处理
20、 更新银行数据库 现金缴纳话费工作流程图 Service2 (手机服务器) middle client 注:直接现金缴纳,不需要通过银行服务器。从客户端开始流程,最后更新手机服务器数据库,即缴费成功。 2)银行服务器 在银行服务器这一块,需要实现的功能是手机网上缴费。它的过程是接收从中间件过来的信息,在客户所输入的银行账户上扣除相应的手机费用;如果在手机的服务器那一块出现问题,缴费不成功,银行服务器还负责把之前所扣除的话费给加上,具体实现流程如下: 更新银行数据库 手机缴费失败 返回扣除费用 手机缴费成功 从银行卡扣钱 swi
21、tch(v[0][0])
查询用户信息
选择银行服务器后整个系统的工作流程图
Service2
(手机服务器)
client
middle
Service2
(银行服务器)
5
4
7
1 6
2 3
6:虚线表示在手机服务器出错,缴费失败,向银行服务器返回所交的话费。
六、 调试与测试
6.1 调试方法:
(1)把数据库文件导入数据库
#mysql –u root 22、 –u root 23、lmysqlclient
#gcc –o s2 s2.c –L/usr/lib/mysql -lmysqlclient
(4) 创建服务端口
#ivi /etc/services
进入新创建三个名字
zhongjr 500/tcp
worl 501/tcp
x 502/tcp
保存并退出vi
创建一个域名
#ivi /etc/hosts
进入新创建一个域名
192.168.117.5 myhttp
保存并退出vi
(5) 运行程序
#./m1 x
切换到终端2
#./s1 world
切换到终端3
#./s2 zho 24、ngjr
切换到终端4
#./m1 x myhttp
6.2测试结果及简单分析
1、现金支付
缴费后手机服务器接受信息,对用户手机费用进行操作,操作后用户手机费用增加123元。
2、网上缴费
网上银行缴费,银行服务器与手机服务器都对信息有相应的操作,缴费得到确认成功后,银行卡上减去100元,手机话费加上100元。
3、查询
输入手机用户,查询用户的基本信息。信息“1|15993590115|zhongjr|1363.0000000000|0”相对应的意思是“ 操作类型|手机号|用户名|手机余额|终止传递信息”
4、客户日志文件
25、
5、中间件日志文件
6、服务器日志文件
S1
S2
七、设计中遇到的问题及解决方法。
(1) 对Mysql 数据库不够了解,对很多数据结构和算法也理解不够牢固,因此我们参考了《Linux+php+Mysql基础与提高》这本书,学到一些关于Mysql的基础知识,才使工作能顺利的进行下去。
(2) 对套接字这样的概念不是很清楚,在老师的辅导和互联网的帮助下,了解了一些这方面的知识,才使我们的设计开展下来。
(3) 以前对服务器,客户端只是了解理论知识,这次而要自己动手来开发服务器,这对我们来说,是一个巨大的挑战,服务器就是一个进程,确切的说是一个守候进程,要实现它 26、的功能,是不容易的事情,你要学会套接字,地址转换,服务器相关的数据结构和算法才能进行开发和设计。
(4) 还是很多基础的东西没有掌握好,基本的算法也没有完全掌握,参考了教科书的相关内容后,才开始了我们的课程设计。
(5) 在数据库的编写时,很多要用到的数据类型而我们又没有学过的,只能借助互联网的强大功能了,由此,我们也学到了很多相关的知识。
八、源程序清单
客户机以及两个服务器都会用到strsplit()函数,作用是分解字符串。
void strsplit(char *s,char **v,char d)
{
int i,j,l;
j=0;v[j]=s;
27、
l=strlen(s);
for(i=0;i 28、e 29、r name[10],passwd[10];
char send_buf[1024]="";
char tmp[1024],phone[30],number[30],pswd[10],money[30],myl_buf[1024],fd_buf[1024];
char log[]="clt.log";
int connect_fd;
int ret;
int i;
int port;
int len;
int fd;
MYSQL mysql;
MYSQL_ROW row;
MYSQL_RES *result;
struct servent 30、sp;
struct hostent *hp;
static struct sockaddr_in srv_addr;
if(mysql_init(&mysql)==NULL){
fprintf(stderr,"Error in mysql_init!\n");
exit(-1);
}
if(!mysql_real_connect(&mysql,"localhost","root",0,"users",0,NULL,0)){
fprintf(stderr,"Error in connection: %s [%d]\n",mysql_error(&mys 31、ql),mysql_errno(&mysql));
mysql_close(&mysql); exit(-2);
}
system("clear");
clear:
printf("Enter the user name:");
scanf("%s",name);
getchar();
set_disp_mode(0);
getpasswd(passwd,sizeof(passwd));
set_disp_mode(1);
system("clear");
sprintf(myl_buf,"select * from users where na 32、me=\"%s\"",name);
if(mysql_query(&mysql,myl_buf)!=0){
fprintf(stderr,"Error in query: %s [%d]\n",mysql_error(&mysql),mysql_errno(&mysql));
mysql_close(&mysql); exit(-3);
}
if((result=mysql_store_result(&mysql))==NULL){
fprintf(stderr,"Error in store_result: %s [%d]\n",mysql_error(&mys 33、ql),mysql_errno(&mysql));
mysql_free_result(result);mysql_close(&mysql); exit(-4);
};
if((mysql_num_rows(result))==0){
printf("use dont exist!\n");
goto clear;
}
row=mysql_fetch_row(result);
if(strcmp(row[1],passwd)!=0){
printf("The passwd is not ture\n");
goto clear;
}
34、 if((sp=getservbyname(argv[1],"tcp"))==NULL){
fprintf(stderr,"Error:getservbyname");
exit(-1);
}
if((hp=gethostbyname(argv[2]))==0){
fprintf(stderr,"Error:gethostbyname");
exit(-2);
}
memset(&srv_addr,0,sizeof(srv_addr));
srv_addr.sin_family=AF_INET;
bcopy(hp->h_addr,&srv_ad 35、dr.sin_addr,hp->h_length);
srv_addr.sin_port=sp->s_port;
clen:
connect_fd=socket(PF_INET,SOCK_STREAM,0);
if(connect_fd<0){
perror("cannot create communication socket");
return 1;
}
ret=connect(connect_fd,(struct sockaddr*)&srv_addr,sizeof(srv_addr));
if(ret==-1){
perror("canno 36、t connect to the server");
close(connect_fd);
return 1;
}
system("clear");
printf("%s login sucessfully\n",name);
printf("1.cash 2.online\n");
printf("3.search 4.exit\n");
printf("Please choose your option :");
scanf("%d",&choose);
switch(choose){
case 1:
printf("Pl 37、ease input your telephone number: ");
scanf("%s",phone);
printf("Please input the money you want to submit:");
scanf("%s",money);
getchar();
strcat(send_buf,"3|");strcat(send_buf,phone);strcat(send_buf,"|");
strcat(send_buf,money);strcat(send_buf,"|1|");
38、 break;
case 2:
printf("Please input your phone number:");
scanf("%s",phone);
printf("Please input your bank number:");
scanf("%s",number);
getchar();
set_disp_mode(0);
getpasswd(pswd,sizeof(pswd));
set_disp_mode(1);
printf("\n");
printf("P 39、lease input the money you want to submit:");
scanf("%s",money);
getchar();
strcat(send_buf,"1|");strcat(send_buf,number);strcat(send_buf,"|");
strcat(send_buf,pswd);strcat(send_buf,"|");
strcat(send_buf,money);strcat(send_buf,"|");
strcat(send_buf,phone);strcat(send_ 40、buf,"|");
strcat(send_buf,"2|");
break;
case 3:
printf("Please Enter your phone number:");
scanf("%s",phone);
getchar();
strcat(send_buf,"4|");strcat(send_buf,phone);
strcat(send_buf,"|1|");
break;
case 4:
strcpy(send_buf,"3|");
break;
d 41、efault:
printf("Please Enter 1,2,3,4!!!!!\n");
printf("Enter Any key to continue...");
getchar();
goto clen;
}
write(connect_fd,send_buf,strlen(send_buf)+1);
len=read(connect_fd,send_buf,1024);
close(connect_fd);
switch(send_buf[0]){
case '0':
if((fd=open(log,O_W 42、RONLY|O_CREAT|O_APPEND,0644))==-1){
fprintf(stderr,"Log file %s open error!\a\n",log);
exit(-1);
}
sprintf(fd_buf,"%-10s%-20s%-20s[0k]\n",name,phone,money);
write(fd,fd_buf,strlen(fd_buf));
close(fd);
printf("OPTION SUCCESSFULLY\n");
printf("Please Enter any key to 43、return...\n");
getchar();
strcpy(send_buf,"");
goto clen;
break;
case '1':
printf("the information of the is %s\n",send_buf);
printf("Please Entry any key to continue...\n");
strcpy(send_buf,"");
getchar();goto clen;
break;
case '3':
if((fd=open(log,O_WR 44、ONLY|O_CREAT|O_APPEND,0644))==-1){
fprintf(stderr,"Log file %s open error!\a\n",log);
exit(-1);
}
sprintf(fd_buf,"%s LOG OUT SUCESSFULLY",phone);
write(fd,fd_buf,strlen(fd_buf));
close(fd);
printf("SUCCESSFULLY LOGOUT!\n");
break;
case '5':
if((fd=open(log,O_ 45、WRONLY|O_CREAT|O_APPEND,0644))==-1){
fprintf(stderr,"Log file %s open error!\a\n",log);
exit(-1);
}
sprintf(fd_buf,"%-10s%-20s%-20s[FALSE] BANK NUMBER WRONG!\n",name,phone,money);
write(fd,fd_buf,strlen(fd_buf));
close(fd);
printf("THE BANK NUMBER IS NOT EXIST\n");
46、printf("Please Check it\n");
printf("please Enter any key to continue...\n");
getchar();
strcpy(send_buf,"");goto clen;
case '8':
if((fd=open(log,O_WRONLY|O_CREAT|O_APPEND,0644))==-1){
fprintf(stderr,"Log file %s open error!\a\n",log);
exit(-1);
}
sprintf(fd_buf 47、"%-10s%-20s%-20s[FALSE] PHONE NUMBER WRONG!\n",name,phone,money);
write(fd,fd_buf,strlen(fd_buf));
close(fd);
printf("THE PHONE USER ISN'T EXIST\n");
printf("Please Check it\n");
printf("Please Enter any key to continue...\n");
getchar();
strcpy(send_buf,"");goto clen;
48、 break;
case '9':
if((fd=open(log,O_WRONLY|O_CREAT|O_APPEND,0644))==-1){
fprintf(stderr,"Log file %s open error!\a\n",log);
exit(-1);
}
sprintf(fd_buf,"%-10s%-20s%-20s[FALSE] BANK PASSWD WRONG!\n",name,phone,money);
write(fd,fd_buf,strlen(fd_buf));
close(fd);
p 49、rintf("The passwd wrong\n");
printf("Please Enter any key to continue...\n");
getchar();
strcpy(send_buf,"");goto clen;
case '7':
if((fd=open(log,O_WRONLY|O_CREAT|O_APPEND,0644))==-1){
fprintf(stderr,"Log file %s open error!\a\n",log);
exit(-1);
}
sprintf(fd_buf,"%-10s%-20s%-20s[FALSE] NOT ENOUGH!\n",name,phone,money);
write(fd,fd_buf,strlen(fd_buf));
close(fd);
printf("NOt Enough MOney\n");
printf("Please Enter any key to continue...\n");
getchar();
strcpy(send_buf,"");goto clen;
default:break;
}
close(connect_fd);






