freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于中間件的圖書(shū)管理系統(tǒng)unix課程設(shè)計(jì)-在線瀏覽

2024-09-12 03:41本頁(yè)面
  

【正文】 和數(shù)據(jù)庫(kù)交換數(shù)據(jù) 圖 程序設(shè)計(jì)流程圖 登錄 查詢 管理員 用戶 添加 刪除 借書(shū) 還書(shū) 續(xù)借 中間件 顯示借閱信息 數(shù)據(jù)庫(kù) 服務(wù)器 開(kāi)始 結(jié)束 6 四、詳細(xì)設(shè)計(jì) 基本套接字系統(tǒng)調(diào)用 【 1】創(chuàng)建套接字 — socket() 應(yīng)用程序在使用套接字前 ,必須擁有一個(gè)套接字 ,系統(tǒng)調(diào)用 socket()向應(yīng)用程序提供創(chuàng)建套接字的手段。 該調(diào)用要接收 3 個(gè)參數(shù),根據(jù)這 3 個(gè)參數(shù)建立一個(gè)套接字,并將相應(yīng)的資源分配給它,同時(shí)返回一個(gè)整型套接字號(hào),只和一個(gè)特定的 協(xié)議相聯(lián)系。 domain(協(xié)議族): AF_INET,AF_UNIX,AF_IPX type(類型): SOCK_STREAM,SOCK_DGRAM protocol(協(xié)議): 0讓系統(tǒng)使用指定類型和協(xié)議族上的默認(rèn)協(xié)議。其調(diào)用格式 如下 : include sys/ int bind(int sockfd,const struct sockaddr *my_addr, int addrlen)。 my_addr 為本方地址數(shù)據(jù)結(jié)構(gòu)。 1isten()需在 accept()之前調(diào)用 ,其調(diào)用格式如下 : include sys/ int listen(int s,int backlog)。 backlog 定義最大長(zhǎng)度的 socket 等待隊(duì)列。 accept()用于使服務(wù)器等待來(lái)自某客戶進(jìn)程的實(shí)際連接。 在面向連接的協(xié)議中 ,該調(diào)用導(dǎo)致本地系統(tǒng)和外部系統(tǒng)之間連接實(shí)際建立。 ③ connect 與 accept 的說(shuō)明 調(diào)用 accept()后 ,服務(wù)器等待從編號(hào)為 s 的套接字上接受客戶連接請(qǐng)求 ,連接請(qǐng)求是由客戶方的 connect()調(diào)用發(fā)出的。 新的套接字可用于處理服務(wù)器并發(fā)請(qǐng)求。常用的系統(tǒng)調(diào)用有 send()和 recv()。 int recv(int s,void *buf,int len,int flags)。 在處理二進(jìn)制數(shù)據(jù)處理時(shí),后者優(yōu)于前者。如果 s 涉及一個(gè)打開(kāi)的TCP 連接 ,則該連接被釋放。最好是設(shè)為開(kāi)機(jī)自動(dòng)啟動(dòng)。其常用法為: mysql [OPTIONS] [database] 常用參數(shù)有: ?, help: 幫助 D, database=DB_name: 指定數(shù)據(jù)庫(kù) h, host=Host_name: 指定主機(jī) u, user=DB_user_name: 指定用戶 p[…], password[=…] : 指定密碼 客戶端命令行 命令行提 示符下輸入: mysql 或 mysql –u root 進(jìn)入 mysql系統(tǒng)。 use database。 create table tbl。 select … from tbl … where … insert … into tbl … values … update … tbl … set … where … delete … from tbl … where … MySQL 開(kāi)發(fā)接口 不同版本的 MySql有不同的目錄設(shè)置。mysql)。mysql,localhost,root,0,―mydb,0,NULL,0)。mysql,SELECT * FROM person)。mysql)。 } mysql_free_result(result)。mysql)。 ① 數(shù)據(jù)庫(kù) library,如圖 所示 : 圖 11 ② 數(shù)據(jù)庫(kù) library 中的相關(guān)表,如圖 所示: 圖 ③ 數(shù)據(jù)庫(kù) library 中部分表的內(nèi)容,如圖 所示: 圖 12 2)開(kāi)始時(shí)運(yùn)行服務(wù)器程序 如圖 所示: 圖 服務(wù)器通 信過(guò)程中如圖 所示: 圖 13 3)運(yùn)行中間件程序 ,如圖 所示: 圖 4)運(yùn)行客戶端程序 ,如圖 所示: 圖 14 5) 實(shí)現(xiàn) 查詢圖書(shū) 功能 ,如圖 所示: 圖 6)實(shí)現(xiàn)用戶登錄功能, 且實(shí)現(xiàn)了密碼不回顯功能, 如 所示: 圖 15 7)實(shí)現(xiàn)用戶查詢圖書(shū)功能,如圖 所示: 圖 8)實(shí)現(xiàn)用戶借書(shū)功能,如圖 所示: 圖 16 9)實(shí)現(xiàn)用戶還書(shū)功能,如圖 所示: 圖 10)實(shí)現(xiàn)用戶續(xù)借功能,如圖 所示: 圖 17 11)實(shí)現(xiàn)用戶注銷,如圖 所示: 圖 12)實(shí)現(xiàn)管理員登錄,且實(shí)現(xiàn)了密碼不回顯功 能功能,如圖 所示: 圖 13)實(shí)現(xiàn)管理員查詢圖書(shū)功能,如圖 所示: 圖 18 14)實(shí)現(xiàn)管理員增加圖書(shū)功能,如圖 所示: 圖 15)實(shí)現(xiàn)管理員刪除圖書(shū)功能,如圖 所示: 19 圖 刪除圖書(shū) book10 后再查詢改圖書(shū),提示“未找到該圖書(shū)”,說(shuō)明確實(shí)刪除成功,如圖 所示: 圖 16)實(shí)現(xiàn)管理員注銷功能,如圖 所示: 圖 20 17)退出系統(tǒng) ,如圖 所示: 圖 21 六、設(shè)計(jì)中遇到的問(wèn)題及解決方法 這是我們第一次學(xué)習(xí)關(guān)于中間件的知識(shí),對(duì)它的具體運(yùn)行只是有一定程度的了解,不是很深刻,在設(shè)計(jì)中由于對(duì) UNIX 知識(shí)的掌握不好,導(dǎo)致初期進(jìn)度是相當(dāng)?shù)穆陂_(kāi)始的幾天里差不多就沒(méi)有什么進(jìn)度, 后來(lái)通過(guò)我們小組成員的討論、不斷查閱資料及向老師請(qǐng)教 ,我們開(kāi)始有了一點(diǎn)點(diǎn)的設(shè)計(jì)思路,設(shè)計(jì)過(guò)程中用到的知識(shí)不單單是課本上有的,還有的是課本上沒(méi)介紹過(guò)的,因此這就需要我們多方的查閱資料和向老師請(qǐng)教。還有在數(shù)據(jù)庫(kù)的建立中,由于其基本程序中不帶有數(shù)據(jù)庫(kù),一次我們必須自己建立一個(gè)數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)信息,但是我們不知道怎樣在客戶端和主機(jī)程序中插入數(shù)據(jù)庫(kù),以此來(lái)存儲(chǔ)圖書(shū)信息,在指導(dǎo)老師和同學(xué)的幫助下,還有借助網(wǎng)絡(luò)查了一些資料后終于解決了這一問(wèn)題 , 等等。在仔細(xì)研究代碼后,我在管理員增加圖書(shū)的代碼后添加了 break 語(yǔ)句,成功的解決了錯(cuò)誤。為了解決這個(gè)錯(cuò)誤,我在客戶端的主菜單部分添加了 ifelse語(yǔ)句,對(duì)字符進(jìn)行判斷和錯(cuò)誤處理,成功的解決了該錯(cuò)誤。 22 七、源程序清單 數(shù)據(jù)庫(kù)代碼 編寫(xiě)腳本文件 ,并在腳本中編寫(xiě)如下內(nèi)容: create database library。 create table books( id char(10) not null primary key, name char(50) not null, writer char(50), storage char(10) )。 create table admi ( id char(10) not null primary key, name char(50) not null, password char(15) )。 insert into books values (1,book1,a,5)。 insert into books values (3,book3,c,6)。 insert into books values (5,book5,e,9)。 insert into books values (7,book7,g,7)。 insert into admi values (11111,root,123)。 int i=0,j=0,n=0。 strcpy(temp,buf)。 strtok_r(temp,。op)。,amp。 while((tmp=strtok_r(p,amp。 p=NULL。 } i++。 } free(temp)。 MYSQL_RES *result。 int i,j,n=0。 if(mysql_init(amp。 return 1。 if(!mysql_real_connect(amp。 mysql_close(amp。 return 1。 printf(cmd=%s\n,cmd)。mysql,cmd)!=0) { printf(query database wrong!\n)。mysql)。 } if(flag==1) { printf(bbbbbbbbbbbbb\n)。mysql))==NULL) { mysql_free_result(result)。mysql)。 } n=mysql_num_rows(result)。 j=0。 while((row=mysql_fetch_row(result))) { strcat(buf,。 strcat(buf,row[0])。imysql_num_fields(result)。 strcat(buf,row[i])。 } if(flag==1) { printf(aaaaaaaaaaaaaaaaaaaaa\n)。 } mysql_close(amp。 printf(opdb successfully!\n)。 return n。 sprintf(cmd1,select * from borrow where to_days(now())to_days(b_date)30amp。r_id=\%s\,id)。 if((opdb(cmd1,NULL,1)==0)amp。(opdb(cmd2,NULL,1)4)) { sprintf(cmd,update reader set enable=\1\ where id=\%s\,id)。 } else { sprintf(cmd,update reader set enable=\0\ where id=\%s\,id)。 } printf(Check ok!\n)。 struct servent *sp。 char buf[1024]。 if(argc!=1) service=argv[1]。 fprintf(stderr,\t%s server_name!\n,argv[0])。 exit(1)。 exit(5)。 26 exit(6)。sin,sizeof(sin))。 if(bind(s,(struct sockaddr *)amp。 close(s)。 } if(listen(s,5)==1){ fprintf(stderr,Error: listen)。 exit(6)。 if((ns=accept(s,0,0))==1) { // wait a connection */ fprintf(stderr,error: accept)。 } if((pid=fork())==1){ // coned, and then create child proc fprintf(stderr,server: fork error!)。 exit(1)。 wait(0)。 } if(pid==0){ // entered child proccedure close(s)。 MYSQL mysql。 MYSQL_ROW row。 char *info[3]。 char id[50],
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1