版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 附件1:封面</b></p><p> 《Linux課程設(shè)計(jì)》</p><p><b> 報(bào) 告</b></p><p> 設(shè)計(jì)題目: 手機(jī)交費(fèi)系統(tǒng) </p><p> 專 業(yè): 軟件工程 </p>
2、<p> 2015年06月26日</p><p><b> 目錄</b></p><p><b> 一、需求分析2</b></p><p><b> 1.功能介紹2</b></p><p><b> 2.目的及意義3</b><
3、;/p><p><b> 2.1.目的3</b></p><p><b> 2.2.意義3</b></p><p><b> 二、總體設(shè)計(jì)3</b></p><p><b> 1.功能介紹3</b></p><p>&l
4、t;b> 2.模塊關(guān)聯(lián)4</b></p><p><b> 三、詳細(xì)設(shè)計(jì)6</b></p><p><b> 1.結(jié)構(gòu)說明6</b></p><p> 2.功能的關(guān)鍵代碼9</p><p> 四、測(cè)試及運(yùn)行結(jié)果36</p><p><
5、;b> 1.調(diào)試36</b></p><p><b> 2.運(yùn)行結(jié)果36</b></p><p> 五、 測(cè)試總結(jié)40</p><p><b> 一、需求分析</b></p><p><b> 1.功能介紹</b></p><
6、;p> 這個(gè)設(shè)計(jì)實(shí)現(xiàn)了手機(jī)繳費(fèi)功能,分別是通過管理員操作和用戶自主網(wǎng)上操作,功能</p><p> 包括可以查看手機(jī)余額,以及銀行卡交費(fèi)和銀行卡余額查詢等功能</p><p><b> 2.目的及意義</b></p><p><b> 2.1.目的</b></p><p> 基于UN
7、IX Socket和MySQL數(shù)據(jù)庫,設(shè)計(jì)一個(gè)交易型中間件系統(tǒng)。</p><p> 這里的中間件是指交易型中間件。交易型中間件是指用在不同行業(yè)、不同部門間的通訊轉(zhuǎn)發(fā)和協(xié)議轉(zhuǎn)換的軟件,在不同的行業(yè)、不同的系統(tǒng)間提供通訊轉(zhuǎn)發(fā)和協(xié)議轉(zhuǎn)換的橋梁作用。例如電子商務(wù)、銀行代理業(yè)務(wù)軟件等都是這種類型的軟件。本設(shè)計(jì)不是基于WEB的,不需要很多與WEB開發(fā)相關(guān)的知識(shí),主要是利用linux系統(tǒng)提供的Socket庫在網(wǎng)絡(luò)底層,開發(fā)交
8、易型中間件。</p><p> 模擬手機(jī)繳費(fèi)系統(tǒng),通過對(duì)移動(dòng)通信話費(fèi)查詢與繳費(fèi)業(yè)務(wù)進(jìn)行了系統(tǒng)全面的分析研究。針對(duì)現(xiàn)有系統(tǒng)中實(shí)時(shí)性不足而造成用戶欠費(fèi)太多使公司企業(yè)蒙受損失的問題。采用開發(fā)工具Linux進(jìn)行系統(tǒng)設(shè)計(jì)?;趌inux Socket和mysql數(shù)據(jù)庫,設(shè)計(jì)一個(gè)交易型中間件系統(tǒng)。提供通訊轉(zhuǎn)發(fā)和協(xié)議轉(zhuǎn)換的橋梁作用。例如電子商務(wù)、銀行代理業(yè)務(wù)軟件等都是這種類型軟件。這里的中間件是指交易型中間件。交易型中間件是
9、指用在不同行業(yè)、不同部門間的通訊轉(zhuǎn)發(fā)和協(xié)議轉(zhuǎn)換的軟件,在不同的行業(yè)、不同的系統(tǒng)間。這里主要是利用linux系統(tǒng)提供的Socket庫在網(wǎng)絡(luò)底層,開發(fā)交易型中間件。</p><p> 本次設(shè)計(jì)要求實(shí)現(xiàn)對(duì)移動(dòng)話費(fèi)信息輸入、查詢、編輯以及話費(fèi)統(tǒng)計(jì)各明細(xì)項(xiàng)目的數(shù)據(jù)編輯;可自主設(shè)定條件從而達(dá)到對(duì)話費(fèi)數(shù)據(jù)的多角度查詢功能;方便導(dǎo)入、導(dǎo)出數(shù)據(jù)及輸出報(bào)表</p><p><b> 2.2.意義
10、</b></p><p> 本次設(shè)計(jì)實(shí)現(xiàn)了管理員操作交費(fèi)和用戶通過網(wǎng)絡(luò)銀行交費(fèi)等功能,實(shí)現(xiàn)了這個(gè)系統(tǒng),對(duì)于Linux下的c編程了解了不少,學(xué)到了很多知識(shí)。Linux操作系統(tǒng)對(duì)于編程人員來說要比Windows操作系統(tǒng)功能要強(qiáng)大的多,Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用
11、程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。</p><p><b> 二、總體設(shè)計(jì)</b></p><p><b> 1.功能介紹</b></p><p><b> 系統(tǒng)模型:</b></p>&l
12、t;p> 這個(gè)程序是模擬手機(jī)交費(fèi)系統(tǒng),所以運(yùn)行時(shí)服務(wù)器一直處于工作狀態(tài),等待來自中間件發(fā)過來的服務(wù)或數(shù)據(jù)。而中間件只有在客戶端傳來數(shù)據(jù)或者要求服務(wù)時(shí)才處于運(yùn)行狀態(tài)。C/S應(yīng)用程序中復(fù)制尋找數(shù)據(jù)的步伐只需要訪問一個(gè)中間件系統(tǒng),由中間件完成網(wǎng)絡(luò)中獲得的數(shù)據(jù)源或服務(wù),進(jìn)行事先傳輸客戶請(qǐng)求,重組回復(fù)信息,最后將結(jié)果送回應(yīng)用程序的任務(wù)。</p><p><b> 2.模塊關(guān)聯(lián)</b><
13、/p><p><b> 流程圖:</b></p><p><b> 系統(tǒng)流程圖:</b></p><p><b> 三、詳細(xì)設(shè)計(jì)</b></p><p><b> 1.結(jié)構(gòu)說明</b></p><p><b> 數(shù)據(jù)
14、庫:</b></p><p><b> 2.功能的關(guān)鍵代碼</b></p><p><b> client:</b></p><p> #include <stdio.h></p><p> #include <stdlib.h></p>&
15、lt;p> #include <sys/types.h></p><p> #include <sys/socket.h></p><p> #include <netinet/in.h></p><p> #include <sys/un.h></p><p> #includ
16、e <netdb.h></p><p> #include <unistd.h></p><p> #include <fcntl.h></p><p> #include <termios.h></p><p> #include <unistd.h></p>
17、<p> #include <errno.h></p><p> #include <time.h></p><p> #define rec_length50</p><p> #define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL)</p><p>
18、 void strsplit(char *sourceStr,char **v,char d);//字符串拆分函數(shù),拆分傳遞的信息</p><p> int getpasswd(char* passwd, int size);</p><p> int set_disp_mode(int fd,int option);//用于控制是否開啟輸入回顯功能 </p><p
19、> void gettime(char datafull[]);</p><p> main(int argc,char **argv)</p><p><b> {</b></p><p> structhostent *hp;</p><p> structsockaddr_in sin;<
20、/p><p> structservent *sp;</p><p> char connbuf[80],buf[80],oprname[20],usrname[20],bankno[20],bankpwd[20],num[20],deposite[30];</p><p> char quebuf[80],readbuf[80],queoprpwd[20],q
21、ueusrpwd[20];</p><p> char oprpwd[20],usrpwd[20];</p><p> char phoneno[12],testStr[10],tmp[10];</p><p> int s,pid;</p><p> char money[10],nowtime[30],logbuf[100],l
22、ogbuf1[100],logbuf2[20];</p><p> int k=1,t=1,m=1,n=1,q=1,r=1,w=1,z=1;</p><p> char *service,*dest;</p><p> char option,chose,ch[5];</p><p> char d='-',**v=(
23、char**)malloc(sizeof(char*) * 10);</p><p> static int wf;</p><p> if(argc==3){ </p><p> service=argv[1];</p><p> dest=argv[2];</p><p><b> }</
24、b></p><p><b> else {</b></p><p> fprintf(stderr,"NO service assigned!\nUsage:");</p><p> fprintf(stderr,"%s service_name destination!\n",argv[0
25、]);</p><p> fprintf(stderr,"Note: service_name is defined in /etc/services\n");</p><p> fprintf(stderr," destination is defined in /etc/hosts\n");</p><p>
26、<b> exit(-1);</b></p><p><b> }</b></p><p> if((wf=open("client.log",O_WRONLY|O_SYNC|O_CREAT|O_APPEND,0644))==-1)</p><p><b> {</b>&l
27、t;/p><p> printf("Log file 'client' open error!\a\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p><b> while(k)<
28、;/b></p><p><b> {</b></p><p> k=1,t=1,m=1,n=1,q=1,r=1,w=1,z=1;</p><p> system("clear");</p><p> printf("\t*******************話費(fèi)服務(wù)----充
29、值交費(fèi)*****************\n");</p><p> printf("\t\t1.現(xiàn)金交費(fèi)\t\t\t2.個(gè)人網(wǎng)上服務(wù)\n\t\t3.退出\n");</p><p> printf("請(qǐng)選擇您的操作(1或2或3):");</p><p> setbuf(stdin,NULL);</p>
30、;<p><b> do{</b></p><p> option=getchar();</p><p> }while(option=='\n'|| option=='\r');</p><p> setbuf(stdin,NULL);</p><p> swit
31、ch(option)</p><p><b> {</b></p><p> case '1':</p><p><b> while(t)</b></p><p> {system("clear");</p><p>
32、; printf("\t\t*******************話費(fèi)服務(wù)----現(xiàn)金交費(fèi)******************\n");</p><p> printf("請(qǐng)您(操作員)登錄!(輸入'exit'返回上一級(jí))\n\n");</p><p> printf("請(qǐng)輸入用戶名(或exit):");&l
33、t;/p><p> scanf("%s",&oprname);</p><p> setbuf(stdin,NULL);</p><p> if(strcmp(oprname,"exit")==0)</p><p><b> {</b></p><p
34、><b> m=0;</b></p><p><b> break;</b></p><p><b> }</b></p><p> setbuf(stdin,NULL);</p><p> set_disp_mode(STDIN_FILENO,0);&
35、lt;/p><p> //調(diào)用getpasswd函數(shù)獲得用戶輸入的密碼</p><p> getpasswd(oprpwd, sizeof(oprpwd));</p><p> printf("%s password is %s",oprname,oprpwd);</p><p> getchar();</p&g
36、t;<p> set_disp_mode(STDIN_FILENO,1);</p><p> setbuf(stdin,NULL);</p><p> if((sp=getservbyname(service,"tcp"))==NULL){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(ge
37、tservbyname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> if((hp=gethostbyname(dest))==0){</p><p> fprintf(stderr,"與接服務(wù)
38、器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> bzero(&sin,sizeof(sin));</p><p> bcopy(hp->h_addr,
39、&sin.sin_addr,hp->h_length);</p><p> sin.sin_family=hp->h_addrtype;</p><p> sin.sin_port=sp->s_port;</p><p> if((s=socket(AF_INET,SOCK_STREAM,0))==-1){</p>&l
40、t;p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> if(connect(s,(struct sockaddr*)&sin,sizeo
41、f(sin))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b> close(s);</b></p><p><b> exit(-1);</b></p><p><b>
42、}</b></p><p> sprintf(buf,"phoneSer-0-%s-%s",oprname,oprpwd);</p><p> if(write(s,buf,rec_length)!=rec_length){ //to server</p><p> fprintf(stderr,"Write Sock
43、et s ERROR!\n");</p><p> fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><p> close(s); </p><p><b> exit(-1);</b></p><p>
44、;<b> }</b></p><p> if(read(s,buf,rec_length)==0){ //get replay from server</p><p> fprintf(stderr,"Read Socket s Error!\n");</p><p> fprintf(stderr,"請(qǐng)
45、按任意鍵返回!\n");</p><p> getchar();</p><p><b> close(s);</b></p><p><b> exit(-1);</b></p><p><b> }</b></p><p> if
46、(strcmp(buf,"OK")!=0)</p><p><b> {</b></p><p> printf("用戶名不存在或密碼錯(cuò)誤!請(qǐng)按任意鍵重新輸入。\n");</p><p><b> close(s);</b></p><p> getc
47、har();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> t=0;</b></p><p><b> clos
48、e(s);</b></p><p><b> }</b></p><p><b> }</b></p><p><b> while(m)</b></p><p><b> {</b></p><p> sys
49、tem("clear"); </p><p> printf("\t\t***************話費(fèi)服務(wù)----現(xiàn)金交費(fèi)**************\n");</p><p> printf("登錄成功!操作員:%s。\t(輸入'exit'返回主菜單)\n\n",oprname);</p>
50、<p> printf("請(qǐng)輸入手機(jī)號(hào)碼:");</p><p> scanf("%s",&phoneno);</p><p> setbuf(stdin,NULL);</p><p> if(strcmp(phoneno,"exit")==0)</p><
51、p><b> break;</b></p><p> if((sp=getservbyname(service,"tcp"))==NULL){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservbyname)!\n");</p><p><b>
52、exit(-1);</b></p><p><b> }</b></p><p> if((hp=gethostbyname(dest))==0){</p><p> fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p>&l
53、t;b> exit(-1);</b></p><p><b> }</b></p><p> bzero(&sin,sizeof(sin));</p><p> bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);</p><p>
54、; sin.sin_family=hp->h_addrtype;</p><p> sin.sin_port=sp->s_port;</p><p> if((s=socket(AF_INET,SOCK_STREAM,0))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n"
55、;);</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p> fprintf(stderr,&quo
56、t;與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b> close(s);</b></p><p><b> exit(-1);</b></p><p><b> }</b></p><p> sprintf(buf,"pho
57、neSer-1-%s",phoneno);</p><p> if(write(s,buf,rec_length)!=rec_length){ //to server</p><p> fprintf(stderr,"Write Socket s ERROR!\n");</p><p> fprintf(stderr,"
58、請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><p> close(s); </p><p><b> exit(-1);</b></p><p><b> }</b></p><p> if(read(s,buf,rec_l
59、ength)==0){ //get replay from server</p><p> fprintf(stderr,"Read Socket s Error!\n");</p><p> fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><
60、;p><b> close(s);</b></p><p><b> exit(-1);</b></p><p><b> }</b></p><p> strsplit(buf,v,d);</p><p> if(strcmp(v[0],"OK&qu
61、ot;)!=0)</p><p><b> {</b></p><p> printf("手機(jī)號(hào)碼不存在或輸入錯(cuò)誤!請(qǐng)按任意鍵重新輸入。\n");</p><p><b> close(s);</b></p><p> getchar();</p><
62、p> getchar();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> close(s);</b></p><p>
63、;<b> while(r)</b></p><p><b> {</b></p><p> printf("機(jī)主:%s\t余額:%-10.2f\n",v[1],atof(v[2]));</p><p> printf("要繼續(xù)操作嗎?(y|n):");</p>
64、<p> setbuf(stdin,NULL);</p><p> scanf("%s",ch);</p><p> setbuf(stdin,NULL);</p><p> if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)</p><
65、p><b> {</b></p><p> printf("請(qǐng)輸入交費(fèi)金額:");</p><p> scanf("%s",&money);</p><p> setbuf(stdin,NULL);</p><p> if((sp=getservbyname
66、(service,"tcp"))==NULL){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservbyname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p>&
67、lt;p> if((hp=gethostbyname(dest))==0){</p><p> fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b><
68、/p><p> bzero(&sin,sizeof(sin));</p><p> bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);</p><p> sin.sin_family=hp->h_addrtype;</p><p> sin.sin_port=sp-
69、>s_port;</p><p> if((s=socket(AF_INET,SOCK_STREAM,0))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b> exit(-1);</b></p><p>
70、<b> }</b></p><p> if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b> close(s);<
71、;/b></p><p><b> exit(-1);</b></p><p><b> }</b></p><p> sprintf(connbuf,"phoneSer-2-%s-%s-%s",phoneno,money,oprname);</p><p> if
72、(write(s,connbuf,rec_length)!=rec_length){ </p><p> fprintf(stderr,"Write Socket s ERROR!\n");</p><p> fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p&
73、gt;<p> close(s); </p><p><b> break;</b></p><p><b> }</b></p><p> if(read(s,connbuf,rec_length)==0){ </p><p> fprintf(stderr,"R
74、ead Socket s Error\n");</p><p> fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><p><b> close(s);</b></p><p> break; </p&
75、gt;<p> }</p><p><b> close(s);</b></p><p> if(strcmp(connbuf,"OK")==0)</p><p><b> {</b></p><p> gettim
76、e(nowtime);</p><p> sprintf(logbuf,"[%s] 給%s[繳費(fèi)成功],充值金額為:%s ",nowtime,phoneno,money); </p><p> write(wf,logbuf,strlen(logbuf));</p><p> write(wf,"\n",
77、strlen("\n"));</p><p> printf("交費(fèi)成功!\n\n");</p><p> gettime(nowtime);</p><p> printf("手機(jī)交費(fèi)回執(zhí)單:\n");</p><p> printf("-------------
78、-----------------------------------------------------\n");</p><p> printf("機(jī)主:%s 號(hào)碼:%s 金額:%-10.2f 操作員:%s\n日期:%s\n",v[1],phoneno,atof(money),oprname,nowtime);</p><p> p
79、rintf("------------------------------------------------------------------\n");</p><p> printf("\n請(qǐng)按任意鍵繼續(xù)!");</p><p><b> m=0;</b></p><p> getchar()
80、;</p><p><b> break;</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> printf("交費(fèi)失
81、敗!\n");</p><p> scanf("%s",tmp);</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b></p><p> el
82、se if(strcmp(ch,"n")==0||strcmp(ch,"N")==0)</p><p><b> break;</b></p><p><b> else</b></p><p><b> {</b></p><p>
83、; printf("輸入錯(cuò)誤!請(qǐng)按任意鍵重新輸入(y或n)。\n");</p><p> getchar();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p>
84、<p><b> }</b></p><p><b> close(s);</b></p><p><b> break;</b></p><p><b> case '2':</b></p><p><b>
85、 while(n)</b></p><p><b> {</b></p><p> system("clear");</p><p> printf("\t\t*******************話費(fèi)服務(wù)----自助服務(wù)**************\n");</p>&l
86、t;p> printf("網(wǎng)上手機(jī)交費(fèi)系統(tǒng)登錄!\t(輸入'exit'返回主菜單)\n\n");</p><p> printf("請(qǐng)輸入手機(jī)號(hào)碼:");</p><p> scanf("%s",&usrname);</p><p><b> q=1;<
87、/b></p><p> setbuf(stdin,NULL);</p><p> if(strcmp(usrname,"exit")==0)</p><p> break;</p><p> set_disp_mode(STDIN_FILENO,0);</p><p> g
88、etpasswd(usrpwd,sizeof(usrpwd));</p><p> set_disp_mode(STDIN_FILENO,1);</p><p> setbuf(stdin,NULL);</p><p> if((sp=getservbyname(service,"tcp"))==NULL){</p><
89、p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservbyname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> if((hp=gethostbyname(dest))==0){</p&g
90、t;<p> fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> bzero(&sin,sizeof(sin));<
91、;/p><p> bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);</p><p> sin.sin_family=hp->h_addrtype;</p><p> sin.sin_port=sp->s_port;</p><p> if((s=socket(AF_
92、INET,SOCK_STREAM,0))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> if(co
93、nnect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b> close(s);</b></p><p><b> exit(-1);&l
94、t;/b></p><p><b> }</b></p><p> sprintf(connbuf,"phoneSer-3-%s-%s",usrname,usrpwd);</p><p> if(write(s,connbuf,rec_length)!=rec_length){ </p><p
95、> fprintf(stderr,"Write Socket s ERROR!\n");</p><p> fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><p> close(s); </p><p><b> ex
96、it(-1);</b></p><p><b> }</b></p><p> if(read(s,connbuf,rec_length)==0){ </p><p> fprintf(stderr,"Read Socket s Error\n");</p><p> fprint
97、f(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><p><b> close(s);</b></p><p><b> exit(-1);</b></p><p><b> }</b></p>
98、;<p><b> close(s);</b></p><p> if(strcmp(connbuf,"failed")==0)</p><p><b> {</b></p><p> printf("手機(jī)號(hào)不存在或密碼錯(cuò)誤!請(qǐng)按任意鍵重新輸入。\n");<
99、;/p><p> getchar();</p><p> getchar();</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> st
100、rsplit(connbuf,v,d);</p><p><b> while(q)</b></p><p><b> {</b></p><p><b> w=1;</b></p><p> system("clear");</p>
101、<p> printf("%s,歡迎您!\n",v[1]);</p><p> printf("*********************話費(fèi)服務(wù)----網(wǎng)上交費(fèi)************************\n");</p><p> printf("*\t1.網(wǎng)銀交費(fèi)\t2.手機(jī)余額查詢\t\t3.銀行余額查詢 *\
102、t\t\n*\t4.注銷\t\t5.返回主菜單\t\t0.退出\t\t*\n");</p><p> printf("*****************************************************************\n");</p><p> printf("請(qǐng)選擇您的操作:");</p>
103、<p> setbuf(stdin,NULL);</p><p> scanf("%c",&chose);</p><p> setbuf(stdin,NULL);</p><p> switch(chose)</p><p><b> {</b></p>
104、<p><b> case '1':</b></p><p><b> while(w)</b></p><p><b> {</b></p><p> printf("請(qǐng)輸入手機(jī)號(hào)碼(或exit返回):");</p><p&
105、gt; scanf("%s",&phoneno);</p><p> if(strcmp(phoneno,"exit")==0)</p><p><b> {</b></p><p><b> z=0;</b></p><p><b>
106、; break;</b></p><p><b> }</b></p><p> if((sp=getservbyname(service,"tcp"))==NULL){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservbyname)!\n");&l
107、t;/p><p><b> exit(-1);</b></p><p><b> }</b></p><p> printf("phoneno-dest:%s",dest);</p><p> if((hp=gethostbyname(dest))==0){</p>
108、;<p> fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> bzero(&sin,sizeof(sin));<
109、/p><p> bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);</p><p> sin.sin_family=hp->h_addrtype;</p><p> sin.sin_port=sp->s_port;</p><p> if((s=socket(AF_I
110、NET,SOCK_STREAM,0))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> if(con
111、nect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b> close(s);</b></p><p><b> exit(-1);<
112、;/b></p><p><b> }</b></p><p> sprintf(quebuf,"phoneSer-1-%s",phoneno);</p><p> if(write(s,quebuf,rec_length)!=rec_length){</p><p> fprintf(
113、stderr,"Write Socket s ERROR!\n");</p><p> fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><p> close(s); </p><p><b> z=0;</b>&l
114、t;/p><p><b> break;</b></p><p><b> }</b></p><p> if(read(s,quebuf,rec_length)==0){ </p><p> fprintf(stderr,"Read Socket s Error\n");&
115、lt;/p><p> fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><p><b> close(s);</b></p><p><b> z=0;</b></p><p><b>
116、; break;</b></p><p><b> }</b></p><p> if(strcmp(quebuf,"failed")==0)</p><p><b> {</b></p><p> printf("手機(jī)號(hào)不存在!請(qǐng)重新輸入。\n&
117、quot;);</p><p><b> close(s);</b></p><p><b> z=0;</b></p><p> getchar();</p><p> getchar();</p><p><b> }</b></p&
118、gt;<p><b> else</b></p><p><b> {</b></p><p><b> w=0;</b></p><p><b> close(s);</b></p><p><b> }</b&g
119、t;</p><p><b> }</b></p><p><b> if(w==0)</b></p><p><b> {</b></p><p> printf("請(qǐng)輸入交費(fèi)金額:");</p><p> scanf(&
120、quot;%s",&money);</p><p><b> z=1;</b></p><p><b> }</b></p><p><b> close(s);</b></p><p><b> while(z)</b><
121、/p><p><b> {</b></p><p> printf("請(qǐng)輸入銀行卡號(hào)(或exit返回):");</p><p> scanf("%s",&bankno);</p><p> if(strcmp(bankno,"exit")==0)&l
122、t;/p><p><b> break;</b></p><p> setbuf(stdin,NULL);</p><p> set_disp_mode(STDIN_FILENO,0);</p><p> getpasswd(bankpwd,sizeof(bankpwd));</p><p>
123、 printf("%s number is %s",bankno,bankpwd);</p><p> getchar();</p><p> set_disp_mode(STDIN_FILENO,1);</p><p> setbuf(stdin,NULL);</p><p> if((sp=getservby
124、name(service,"tcp"))==NULL){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservbyname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p>
125、;<p> if((hp=gethostbyname(dest))==0){</p><p> fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b>
126、</p><p> bzero(&sin,sizeof(sin));</p><p> bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);</p><p> sin.sin_family=hp->h_addrtype;</p><p> sin.sin_port
127、=sp->s_port;</p><p> if((s=socket(AF_INET,SOCK_STREAM,0))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b> exit(-1);</b></p><p
128、><b> }</b></p><p> printf("socket\n");</p><p> if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect
129、)!\n");</p><p><b> close(s);</b></p><p><b> exit(-1);</b></p><p><b> }</b></p><p> printf("connect\n");</p>
130、<p> sprintf(quebuf,"bankSer-0-%s-%s",bankno,bankpwd);</p><p> if(write(s,quebuf,rec_length)!=rec_length){ </p><p> fprintf(stderr,"Write Socket s ERROR!\n");</p
131、><p> fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><p> close(s); </p><p><b> break;</b></p><p><b> }</b></p&
132、gt;<p> printf("%s\n",quebuf);</p><p> printf("write\n");</p><p> if(read(s,quebuf,rec_length)==0){ </p><p> fprintf(stderr,"Read Socket s Error!
133、\n");</p><p> fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><p><b> close(s);</b></p><p><b> break;</b></p><
134、p><b> }</b></p><p> printf("%s\n",quebuf);</p><p> printf("reading\n");</p><p><b> close(s);</b></p><p> if(strcmp(q
135、uebuf,"failed")==0)</p><p><b> {</b></p><p> printf("銀行卡不存在或密碼錯(cuò)誤!請(qǐng)重新輸入。\n");</p><p> getchar();</p><p><b> }</b></p&g
136、t;<p><b> else</b></p><p><b> {</b></p><p> if((sp=getservbyname(service,"tcp"))==NULL){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservb
137、yname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> if((hp=gethostbyname(dest))==0){</p><p> fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)
138、(gethostbyname)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> bzero(&sin,sizeof(sin));</p><p> bcopy(hp->h_addr,&s
139、in.sin_addr,hp->h_length);</p><p> sin.sin_family=hp->h_addrtype;</p><p> sin.sin_port=sp->s_port;</p><p> if((s=socket(AF_INET,SOCK_STREAM,0))==-1){</p><p>
140、; fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b> exit(-1);</b></p><p><b> }</b></p><p> printf("quebuf-OK - socket\n");</p>
141、<p> if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p> fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b> close(s);</b></p><p><
142、b> exit(-1);</b></p><p><b> }</b></p><p> printf("quebuf-OK - connect\n");</p><p> sprintf(quebuf,"both-%s-%s-%s-%s",bankno,phoneno,mone
143、y,usrname);</p><p> printf("%s\n",quebuf);</p><p> if(write(s,quebuf,rec_length)!=rec_length){ </p><p> fprintf(stderr,"Write Socket s ERROR!\n");</p>
144、<p> fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p> getchar();</p><p> close(s); </p><p><b> break;</b></p><p><b> }</b></p>&
145、lt;p> printf("quebuf-OK write\n");</p><p> if(read(s,quebuf,rec_length)==0){</p><p> printf("quebuf-OK read is error!\n");</p><p> fprintf(stderr,"Re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 手機(jī)繳費(fèi)系統(tǒng)linux課程設(shè)計(jì)
- 課程設(shè)計(jì)--學(xué)生繳費(fèi)注冊(cè)管理系統(tǒng)
- linux操作系統(tǒng)課程設(shè)計(jì)
- linux課程設(shè)計(jì)報(bào)告--linux操作系統(tǒng)應(yīng)用
- linux仿qq通信系統(tǒng)課程設(shè)計(jì)
- linux課程設(shè)計(jì)論文
- linux課程設(shè)計(jì)論文
- 課程設(shè)計(jì)—手機(jī)銷售管理系統(tǒng)
- 手機(jī)銷售系統(tǒng)課程設(shè)計(jì)論文
- linux課程設(shè)計(jì)報(bào)告
- linux課程設(shè)計(jì)76359
- linux課程設(shè)計(jì)76359
- 手機(jī)銷售管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- linux操作系統(tǒng)基礎(chǔ)課程設(shè)計(jì)
- 手機(jī)鍵盤課程設(shè)計(jì)
- 課程設(shè)計(jì)---操作系統(tǒng)課程設(shè)計(jì)之linux磁盤空間管理
- linux內(nèi)核裁剪課程設(shè)計(jì)
- 手機(jī)通信錄管理系統(tǒng)課程設(shè)計(jì)
- linux課程設(shè)計(jì)---linux操作系統(tǒng)u盤驅(qū)動(dòng)設(shè)計(jì)分析報(bào)告
- linux課程設(shè)計(jì) 說明書
評(píng)論
0/150
提交評(píng)論