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

正文內(nèi)容

數(shù)據(jù)庫管理系統(tǒng)大數(shù)運(yùn)算校園導(dǎo)航哈弗曼編碼(編輯修改稿)

2025-05-09 06:51 本頁面
 

【文章內(nèi)容簡介】 行定位,、刪除等操作。編寫一個while無限循環(huán),引導(dǎo)用戶定義字段,包括輸入字段名和定義字段類型,直至輸入39。$39。結(jié)束,跳出循環(huán)。字段類型可為:string,int,double。用戶每輸入一個字段類型,程序調(diào)轉(zhuǎn)執(zhí)行到loop,也是一個無限while循環(huán),判斷字段類型是否規(guī)范。規(guī)范的字段類型包括:string,int,double。所有字段定義結(jié)束后,輸出定義的全部字段及其類型,方便用戶使用。*/void CreateStruct(Linklist *database[],int *length) /*建立數(shù)據(jù)庫類型*/{ char ch[110],type[110],tou[]=編號 \0。 /*建立庫結(jié)構(gòu)時候自動建立編號字段*/ int row,i。 database[0]=(Linklist *)malloc(sizeof(Linklist))。 strcpy(database[0]data,tou)。 /*建立編號字段*/ strcpy(database[0]type,char)。 /*建立庫結(jié)構(gòu)*/ printf(.請輸入字段 %d 的名稱 以39。$39。結(jié)束輸入\n,*length)。 printf(.)。 scanf(%s,ch)。 if(strcmp(ch,$)==0) printf(數(shù)據(jù)庫沒有構(gòu)建成功!)。 else { printf(.請輸入字段 %d 的類型(string , int , double) \n,*length)。 scanf(%s,type)。loop:while(1) { if(strcmp(type,string)==0||strcmp(type,int)==0||strcmp(type,double)==0) /*判斷結(jié)構(gòu)類型*/ break。 else { printf(您輸入的類型非法!請重新輸入\n)。 printf(.請輸入字段 %d 的類型(string , int , double) \n,*length)。 scanf(%s,type)。 } } while(1) /*循環(huán)輸入庫結(jié)構(gòu)類型 以$結(jié)束輸入*/ { row=strlen(ch)。 ch[row]=39。 39。 ch[row+1]=39。\039。 database[*length]=(Linklist *)malloc(sizeof(Linklist))。 strcpy(database[*length]data,ch)。 strcpy(database[*length]type,type)。 *length=*length+1。 printf(.請輸入字段 %d 的名稱 以39。$39。結(jié)束輸入\n,*length)。 printf(.)。 scanf(%s,ch)。 if(strcmp(ch,$)==0) break。 printf(.請輸入字段 %d 的類型(string , int , double) \n,*length)。 scanf(%s,type)。 goto loop。 /*如果輸入的類型不匹配則跳轉(zhuǎn)到loop*/ } for(i=0。i*length。i++) printf(%s(%s) ,database[i]data,database[i]type)。 /*輸入結(jié)束時輸出數(shù)據(jù)庫字段和類型*/ }}/*(3) 打開數(shù)據(jù)庫函數(shù)模塊以讀寫模式打開已經(jīng)存在的文件,將其中數(shù)據(jù)讀到數(shù)組ch中,然后將獲得的數(shù)據(jù)按行存入二維數(shù)組wj中。其中,以空格為字段值的分隔符,以回車為行的分隔符。*/void Open(char app[],int *,int *row,char bian[], char fabian[]){ /*打開數(shù)據(jù)庫文件并且將文件中的數(shù)據(jù)存入結(jié)構(gòu)體二維數(shù)組中*/ FILE *fp。 char ch。 char mem[110]。 int lie=0。 memset(bian,39。\039。,sizeof(bian))。 /*開始字符型數(shù)組初始化*/ memset(mem,39。\039。,sizeof(mem))。 /*開始字符型數(shù)組初始化*/ memset(fabian,39。\039。,sizeof(fabian))。 /*開始字符型數(shù)組初始化*/ fp=fopen(app,r+)。 /*打開相應(yīng)的數(shù)據(jù)庫文件*/ ch=fgetc(fp)。 /*獲得文件中的每一個字符一直到文件末尾*/ while(ch!=EOF) /*把獲取的字符按行存入到wj數(shù)組里*/ { if(ch==39。 39。) /*如果遇到空格就把mem復(fù)制到wj的一個單元中*/ { strcpy(wj[*row][*].data,mem)。 *=*+1。 memset(mem,39。\039。,sizeof(mem))。 /*把mem復(fù)制到wj的一行后初始化mem數(shù)組*/ lie=0。 } else if(ch==39。\n39。) /*如果遇見回車則結(jié)束wj的一行,開始存儲下一行*/ { *row=*row+1。 *=0。 /*列恢復(fù)0*/ } else { mem[lie]=ch。 /*把在數(shù)據(jù)庫文件中讀出的一行存放在mem數(shù)組中*/ lie++。 } ch=fgetc(fp)。 /*獲取文件的下一個字符*/ } *row=*row+1。 /*每存完一行行數(shù)自加*/ }/*(4) 追加數(shù)據(jù)函數(shù)模塊首先為追加的數(shù)據(jù)自動生成編號:若數(shù)據(jù)庫中已存在記錄,則追加的數(shù)據(jù)標(biāo)號為其上一個數(shù)據(jù)的編號+1。因此,先取出上一條數(shù)據(jù)的編號(字符型),將其轉(zhuǎn)化成int型,然后+1,即為追加的數(shù)據(jù)的編號,再將其轉(zhuǎn)化成字符型,存入數(shù)據(jù)庫。若數(shù)據(jù)庫中沒有數(shù)據(jù),則追加數(shù)據(jù)編號為1,存入數(shù)據(jù)庫。其次,編輯for循環(huán),引導(dǎo)用戶輸入對應(yīng)字段的數(shù)據(jù)信息,將其存入數(shù)據(jù)庫,追加數(shù)據(jù)操作完成。*/void append(char bian[],int fanlen,char fabian[],int bianlen,int *, int *row ) /*追加記錄*/{ int i,j,k=1,sum=0。 memset(bian,39。\039。,sizeof(bian))。/*初始化數(shù)組的值*/ if(*row1) /*自動生成編號的值*/ { j=strlen(wj[*row1][0].data)。 for(i=j1。i=0。i) /*將數(shù)據(jù)庫最后一條記錄的編號值轉(zhuǎn)化為整型*/ { sum=sum+(wj[*row1][0].data[i]39。039。)*k。 k*=10。 } sum++。 /*追加記錄的編號為其最后一條記錄的編號加1*/ Switch(bian,sum)。 } else Switch(bian,1)。 /*將其編號的值轉(zhuǎn)化為相對應(yīng)的字符串*/ fanlen=0。 memset(fabian,39。\039。,sizeof(fabian))。 bianlen=strlen(bian)。 for(i=bianlen1。i=0。i) fabian[fanlen++]=bian[i]。 /*因為轉(zhuǎn)化的字符串為該編號的逆序所以將其反向存貯*/ fabian[fanlen]=39。\039。 strcpy(wj[*row][0].data,fabian)。 for(i=1。i*。i++) /*分別最加各條記錄的值*/ { printf(請輸入:%s ,wj[0][i].data)。 scanf(%s,wj[*row][i].data)。 } *row=*row+1。 /*追加成功后行數(shù)自加*/ printf(該數(shù)據(jù)添加成功!\n)。}/*(5) 瀏覽數(shù)據(jù)庫函數(shù)模塊 此模塊功能為:格式輸出數(shù)據(jù)庫中數(shù)據(jù),起到瀏覽數(shù)據(jù)功能。首先編寫嵌套for循環(huán),記錄每個字段值中最長的字段的長度maxlen。然后,再用嵌套for循環(huán)輸出數(shù)據(jù)庫中數(shù)據(jù),按照最長的字段格式輸出,不足的字段,以空格補(bǔ)充,使得瀏覽輸出的數(shù)據(jù)整齊清晰。*/void Display(char mem[],int *,int *row) /*瀏覽寫進(jìn)數(shù)組中的數(shù)據(jù)*/{ int i,j,k,flen,maxlen=1。 memset(mem,39。\039。,sizeof(mem))。 for(i=0。i*row。i++) /*記錄每個字段值中最大的程度以便調(diào)整輸出的格式*/ for(j=0。j*。j++) { flen=strlen(wj[i][j].data)。 if(flenmaxlen) maxlen=flen。//maxlen是輸出的格式的標(biāo)準(zhǔn) }//輸出的星號的個數(shù)是字段中含字符個數(shù)最多的字段的字符個數(shù)值 for(i=0。i*row。i++) /*輸出wj中所有的字段內(nèi)容*/ { for(j=0。j*。j++) { printf(%s,wj[i][j].data)。 for(k=strlen(wj[i][j].data)。k=maxlen。k++) printf( )。 } printf(\n)。 } printf(\n)。}/*(6) 瀏覽定位函數(shù)模塊DispGo瀏覽定位的數(shù)據(jù),go為瀏覽定位編號。瀏覽數(shù)據(jù)時,首先記錄最長字段的長度,以便調(diào)整輸出格式。然后,以調(diào)整好的格式輸出第一行,也就是輸出數(shù)據(jù)庫的字段名。最后,格式輸出指定的編號為39。go39。的一行數(shù)據(jù)。*/void DispGo(int go,int *,int *row) /*DispGo函數(shù)*/{ int i,j,k,maxlen=1,flen。 for(i=0。i*row。i++) /*記錄每個字段值中最大的程度以便調(diào)整輸出的格式*/ for(j=0。j*。j++) { flen=strlen(wj[i][j].data)。 if(flenmaxlen) maxlen=flen。 } printf(\n)。 for(i=0。i*。i++) /*輸出wj第一行,也就是數(shù)據(jù)庫類型行*/ { printf(%s,wj[0][i].data)。 for(k=strlen(wj[0][i].data)。kmaxlen。k++) printf( )。 } printf(\n)。 printf(\n)。 for(j=0。j*。j++) /*格式化輸出go所指的字段值*/ { printf(%s,wj[go][j].data)。 for(k=strlen(wj[go][j].data)。k=maxlen。k++) printf( )。 } printf(\n)。 printf(\n)。}/*(7) 按條件刪除函數(shù)模塊刪除的命令格式為:delete for 字段名=字段內(nèi)容,先將命令第二個字符串存入link,對比是否為for,若不是,提示命令錯誤;若為for,再用for循環(huán)將字段名=字段內(nèi)容存入數(shù)組value,遍歷該數(shù)組,通過比對=,取出=號前面的字段名,存入數(shù)組zd。類似的,比對雙引號,取出兩個雙引號之間的字符串,即為字段內(nèi)容,存入數(shù)組lx,若沒有,同樣提示命令錯誤。在數(shù)據(jù)庫中字段中匹配zd,若不存在,提示數(shù)據(jù)庫沒有該字段;若存在,定位這個字段,將這個字段下所有的值與lx對比。若存在lx,依次將它后面的數(shù)據(jù)依次前移,覆蓋掉需要刪除的字段,實現(xiàn)刪除功能。*/void Delete(char mem[],int *,int *row)
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1