c語言程序課程設(shè)計日記本管理系統(tǒng)_第1頁
c語言程序課程設(shè)計日記本管理系統(tǒng)_第2頁
c語言程序課程設(shè)計日記本管理系統(tǒng)_第3頁
c語言程序課程設(shè)計日記本管理系統(tǒng)_第4頁
c語言程序課程設(shè)計日記本管理系統(tǒng)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、c語言程序課程設(shè)計日記本管理系統(tǒng)日記管理系統(tǒng)的開發(fā)設(shè)計實(shí)驗(yàn)?zāi)康摹⒁笠弧?shí)驗(yàn)題目:設(shè)計一個簡單實(shí)用個人日記管理系統(tǒng)。二、實(shí)驗(yàn)要求1該實(shí)驗(yàn)的課內(nèi)學(xué)時是4個課時。2程序完成后應(yīng)該完成如下基本功能:1)用自定義日記的存儲結(jié)構(gòu),每篇日記至少包含日期,內(nèi)容等字段;2)使用者必須輸入密碼;3)寫日記與保存功能;4)日記查閱:按日期查看,按關(guān)鍵字查看,按順序查看功能(從某一篇開始)3在完成上述基本功能的前提下,有能力的同學(xué)可以完成如下加強(qiáng)功能:1)實(shí)現(xiàn)日記的永久存儲。2)對保存的密碼進(jìn)行變換,以免泄密。3)允許多人使用。4)在程序的提示語言清晰明確,界面美觀并且適用。實(shí)驗(yàn)步驟與內(nèi)容一)主要設(shè)計思想日記管理系

2、統(tǒng)設(shè)計,應(yīng)分模塊進(jìn)行。首先一個注冊、登錄的用戶界面,編寫函數(shù)保存用戶已錄入信息,及密碼。編寫函數(shù)用于驗(yàn)證用戶登錄信息,并進(jìn)行匹配。有能力的話,可以添加一個用戶密碼修改功能當(dāng)用戶注冊,登錄匹配成功以后,進(jìn)入其個人日記管理界面。其中應(yīng)當(dāng)包含一些日記處理基本操作:寫日記、保存、打開、各種方式查詢、刪除。各個功能分別用函數(shù)來實(shí)現(xiàn),最后主函數(shù)用case語句調(diào)用各函數(shù)。二)主要數(shù)據(jù)結(jié)構(gòu)及其解釋1日記結(jié)構(gòu)體typedefstructLink1 char date10;/char title40; / char content1000;/char keyword20;/int tag; /求,是為 0,否為

3、-1 ,初始值為 struct Link1 *nextd; Diary;日期 格式 2011-05-11標(biāo)題日記內(nèi)容關(guān)鍵字,可用空格隔開用來標(biāo)記該日記是否滿足查閱要0;2用戶結(jié)構(gòu)體typedef struct Link2 char username25;/char password16;/Diary *diarys_list; /用戶名 登錄密碼 該用戶擁有的日記鏈表struct Link2 *nextu; User;三)系統(tǒng)結(jié)構(gòu)圖:四)所有函數(shù)的簡要說明:int Change_Password(User *U2);int Create_NewUser(User *U1);int Delete

4、_Diary(Diary *D); /*/*/*更改用戶密碼*/創(chuàng)建用戶鏈表*/刪除日記 */int Diary_Operation(User *U2,Diary *D1); /*int Encrypt_Password(char password);/*int Enter_Password(char password);/*User *Find_User(User *U1,char username);/*日記操作 */將登錄口令加密 */獲取登錄口令*/查找用戶 */Diary *Init_Diary(Diary *D1);/*初始化日記表*/void Initial_Tag(Diary

5、*D1,int tag);User*Init_User(User*U1);/*初始化用戶表*/intInput_Choose();intOpen_Diary(Diary*D1);Diary*Open_DiaryFile(Diary*D1,charFileName);/*打開顯示日記列表*/進(jìn)入菜單 */進(jìn)入日記菜單*/進(jìn)入日記查閱菜單*/導(dǎo)入用戶信息 */保存日記 */保存用戶信息 */日記查詢 */并導(dǎo)入日記文件*/intPrintf_DiaryList(Diary*D1);/*voidPrint_Menu1(int*choose1);/*voidPrint_Menu2(int*choose

6、2);/*voidPrint_Menu3(int*choose3);/*intPrintf_users(User*U1);/*intSave_Diary(Diary*D1);/*intSave_Users_info(User*U1);/*intSearch_Diary(Diary*D1);/*Diary*Filter_word(Diary*D1,charcmpword,intn);/*按標(biāo)題、日期、關(guān)鍵字查閱*/User*User_Login(User*U1);/*登錄個人用戶*/intWrite_Diary(Diary*D1);/*寫新日記*/試驗(yàn)過程記錄記錄試驗(yàn)中遇到的困難及解決方法;,1

7、. 在編寫字符匹配的函數(shù)時,利用flag當(dāng)監(jiān)視哨,當(dāng)判斷字符匹配成功后,未跳出本次循環(huán),導(dǎo)致單個結(jié)果多次輸出。解決方法:在匹配成功輸出結(jié)果后加一個goto語句跳出循環(huán),進(jìn)行下一個節(jié)點(diǎn)比較。2. 在寫篩選函數(shù)的時候,把篩選查找直接寫成了篩選算法,這樣輸入的數(shù)據(jù)經(jīng)過一次篩選后,不符合條件的就被刪除了。這樣不利于重復(fù)進(jìn)行篩選操作。解決方案:在結(jié)構(gòu)體中加一個fflag單元,當(dāng)每次判斷不符合條件的節(jié)點(diǎn),將其fflag賦值為0,否則賦1。輸出時將fflag!=0的輸出。3. 本程序用到雙鏈表,注意指針指向。實(shí)驗(yàn)結(jié)果記錄以及與預(yù)期結(jié)果比較以及分析記錄每次實(shí)驗(yàn)結(jié)果以及分析情況1. 創(chuàng)建用戶:用戶名jiang,

8、密碼1232. 顯示用戶,及登錄:輸入用戶名jiang,密碼123.3. 寫日記:標(biāo)題:夏熱標(biāo)題:端午4. 保存及讀取:5. 輸入查閱,標(biāo)題:端午輸入關(guān)鍵字晴天,查詢:6. 日記刪除操作:實(shí)驗(yàn)結(jié)論:經(jīng)驗(yàn)證,以上篩選結(jié)果正確。總結(jié)以及心得體會本次試驗(yàn)的其實(shí)很想自己想的,可是自己真的寫不出來這么長的,只能半借鑒半寫,所以我只能說懂這個程序,會用,但是,讓我自己寫,還是很有難度的,太多了,寫的頭痛,糾結(jié)死了,花了我好長時間,一直糾結(jié)到現(xiàn)在,自己寫了300多行,可是有點(diǎn)問題,遠(yuǎn)不如同學(xué)的,就把自己的改了,我只能寫一些小程序,像運(yùn)用到歸納啊,貪心這些。注意一些常出現(xiàn)的錯誤:1. 字符匹配時要注意,字符串

9、長度應(yīng)為輸入長度再加1.(0占一個空間)2. 注意指針指向問題,最好用兩個指針,一個用于判斷結(jié)束,一個用于輸出所需值。3. 可以用flag設(shè)置監(jiān)視哨,判斷是否找到所需結(jié)果。歷經(jīng)千辛萬苦,終于編出來了。發(fā)現(xiàn)指針這一塊還有很多漏洞。比如插入時未將尾指針賦空值,導(dǎo)致了很多問題。還有特別要注意對字符串操作時的長度問題。總之,吃一塹,長一智,在自己編程實(shí)踐,請教同學(xué)的過程中,學(xué)到很多很多。不過指針那方面的知識還是有些模糊不夠熟練,有待加強(qiáng)。指導(dǎo)老師評閱意見指導(dǎo)老師: 年/* 日記管理系統(tǒng)*/#include<stdio.h>#include<stdlib.h>#include&l

10、t;string.h>#include<conio.h>#define ESC 27/#define Enter 13/#define BackSpace 8/* 定義日記結(jié)構(gòu)體*/typedef struct Link1 char date10;/char title40; /char content1000;/char keyword20;/int tag; /求,是為0,否為-1 ,初始值為struct Link1 *nextd; Diary;/* 定義用戶結(jié)構(gòu)體*/typedef struct Link2月日退出鍵回車鍵日期 格式 2009-12-30標(biāo)題日記內(nèi)容關(guān)鍵

11、字,可用空格隔開用來標(biāo)記該日記是否滿足查閱要0;charusername25;/charpassword16;/Diary*diarys_list;/structLink2*nextu;用戶名 登錄密碼 該用戶擁有的日記鏈表User;/*函數(shù)聲明*/intChange_Password(User*U2);/*intCreate_NewUser(User*U1);/*intDelete_Diary(Diary*D);/*更改用戶密碼*/創(chuàng)建用戶鏈表*/刪除日記 */intDiary_Operation(User*U2,Diary*D1);/*intEncrypt_Password(charpas

12、sword);/*intEnter_Password(charpassword);/*User*Find_User(User*U1,charusername);/*日記操作 */將登錄口令加密 */獲取登錄口令*/查找用戶 */Diary*Init_Diary(Diary*D1);/*初始化日記表*/voidInitial_Tag(Diary*D1,inttag);User*Init_User(User*U1);/*初始化用戶表*/intInput_Choose();intOpen_Diary(Diary*D1);Diary*Open_DiaryFile(Diary*D1,charFileNa

13、me);/*打開并導(dǎo)入日記文件*/intPrintf_DiaryList(Diary*D1);/*voidPrint_Menu1(int*choose1);/*voidPrint_Menu2(int*choose2);/*voidPrint_Menu3(int*choose3);/*intPrintf_users(User*U1);/*intSave_Diary(Diary*D1);/*intSave_Users_info(User*U1);/*intSearch_Diary(Diary*D1);/*顯示日記列表*/進(jìn)入菜單 */進(jìn)入日記菜單*/進(jìn)入日記查閱菜單導(dǎo)入用戶信息 */保存日記 */

14、保存用戶信息 */日記查詢 */*/Diary*Filter_word(Diary*D1,charcmpword,intn);/*題、日期、關(guān)鍵字查閱*/按標(biāo)User*User_Login(User*U1);/*登錄個人用戶*/寫新日記 */intWrite_Diary(Diary*D1);/*/*更改用戶密碼*/intChange_Password(User*U2)charoldpw16,newpw116,newpw216;doprintf("nt請輸入舊密碼:t");Enter_Password(oldpw);/調(diào)用輸入密碼函數(shù)Encrypt_Password(oldp

15、w);/調(diào)用對密碼加密函數(shù)if(strcmp(U2->password,oldpw)!=0)/如果輸入的密碼與各個用戶中的密碼不相等printf("nt舊密碼輸入錯誤!nn");while(strcmp(U2->password,oldpw)!=0);/一直到輸入的密碼與用戶密碼相等的時候才退出循環(huán)doprintf("nt請輸入新密碼:t");Enter_Password(newpw1);printf("nt請確認(rèn)新密碼:t");Enter_Password(newpw2);if(strcmp(newpw1,newpw2)

16、!=0)printf("nt密碼確認(rèn)錯誤!nn");while(strcmp(newpw1,newpw2)!=0);/到輸入的新密碼與確認(rèn)的新密碼一樣的時候退出循環(huán)Encrypt_Password(newpw1);/對新密碼進(jìn)行加密strcpy(U2->password,newpw1);/講新密碼復(fù)制給舊密碼,就把舊密碼覆蓋掉了,密碼就修改完畢printf("nnt密碼修改成功!");return1;/*創(chuàng)建用戶鏈表*/intCreate_NewUser(User*U1)intflag=0;charpassword216;User*s,*temp;

17、Diary*D2=NULL;D2=Init_Diary(D2);dos=(User*)malloc(sizeof(User);printf("nt請輸入用戶名:t");scanf("%s",&s->username);temp=Find_User(U1,s->username);if(temp=NULL)doprintf("nt請輸入密碼:t");Enter_Password(s->password);printf("nt請確認(rèn)密碼:t");Enter_Password(password2

18、);if(strcmp(s->password,password2)!=0)printf("nt密碼確認(rèn)錯誤!nn");while(strcmp(s->password,password2)!=0);Encrypt_Password(s->password);s->diarys_list=D2;s->nextu=U1->nextu;U1->nextu=s;flag=0;printf("nt用戶創(chuàng)建成功!n");elseprintf("nnt*對不起*該用戶名已存在!n");printf(&qu

19、ot;nt是否繼續(xù)創(chuàng)建用戶:1/0t");scanf("%d",&flag);while(flag);return1;/*刪除日記*/intDelete_Diary(Diary*D)Diary*p;p=D->nextd;D->nextd=p->nextd;free(p);printf("nt日記刪除成功");return1;/*日記操作*/intDiary_Operation(User*U2,Diary*D1)chartempch='1'intchoose2;charFileName40;Diary*p

20、=NULL;while(tempch!=ESC)printf("nttt歡迎用戶一"§的到來!nn",U2->username);Print_Menu2(&choose2);switch(choose2)case0:return0;case1:Write_Diary(D1);tempch=getch();/用來每次做完一項(xiàng)指令后按回車之后返回選擇操作break;case2:printf("nt請輸入文件路徑及文件名:");scanf("%s",FileName);p=Open_DiaryFile(D1

21、,FileName);/調(diào)用該函數(shù)返回該文件名里面的內(nèi)容并賦值給pif(p!=NULL)Open_Diary(p);/如果該文件夾里面不為空,就調(diào)用打開日記函數(shù),將文件夾里面的內(nèi)容打印出來tempch=getch();break;case 3:printf("nnt該用戶有以下日記:nn");Printf_DiaryList(D1);tempch=getch();break;case 4: if(Search_Diary(D1)=1)tempch=getch();break;/打開幫助文件case 5: Change_Password(U2);tempch=getch();

22、break;return1;/*將登錄口令加密*/intEncrypt_Password(charpassword)inti=0;while(passwordi!='0')if(passwordi>='a'&&passwordi<='z')|(passwordi>='A'&&passwordi<='Z')/當(dāng)passwordi為az或AZ時passwordi=passwordi+4;/將每個字符進(jìn)行加4,if(passwordi>'Z'&

23、amp;&passwordi<='Z'+4|passwordi>'z')passwordi=passwordi-26;elseif(passwordi>='0'&&passwordi<='9')passwordi=passwordi+4;if(passwordi>'9'&&passwordi<='9'+4)passwordi=passwordi-10;elsepasswordi=passwordi+4;i+;return1;

24、/*獲取登錄口令*/intEnter_Password(charpassword)charpassword150;inti=0;將手動輸入的字符將得到的打印出出 *號, 即將密while(password1i=getch()!=Enter)/讀入password1i中,Enter為終結(jié)符passwordi=password1i;/password1中的數(shù)賦給password;password1i='*'printf("%c",password1i);/碼隱藏只打印出*號i+;passwordi='0'rewind(stdin);return1

25、;/*查找用戶*/User*Find_User(User*U1,charusername)User*q;q=U1->nextu;while(q!=NULL&&strcmp(q->username,username)!=0)q=q->nextu;一直循環(huán)到q等于NULL者找到與username一樣的用戶名的用戶if(q!=NULL)returnq;/找到就返回該用戶elsereturnNULL;/否則就返回NULL/*初始化日記表*/Diary*Init_Diary(Diary*D1)為用戶 D1 申請空間D1=(Diary*)malloc(sizeof(Dia

26、ry);/D1->nextd=NULL;returnD1;/*將所有日記記錄的標(biāo)記tag值置為0或-1*/voidInitial_Tag(Diary*D1,inttag)Diary*q;q=D1->nextd;while(q!=NULL)q->tag=tag;q=q->nextd;/*初始化用戶表*/User*Init_User(User*U1)U1=(User*)malloc(sizeof(User);if(U1!=NULL)U1->nextu=NULL;returnU1;elsereturnNULL;/*打開日記*/intOpen_Diary(Diary*D1

27、)printf("nt-n");printf("nt日記日期=>%s",D1->date);printf("nt printf("nnt=>%s",D1->title);關(guān)鍵字=>%s",D1->keyword);printf("nt-n");printf("nnt日記正文如下:n");printf("nt%s",D1->content);return1;/*打開并導(dǎo)入日記文件*/Diary*Open_DiaryF

28、ile(Diary*D1,charFileName)FILE*fp;Diary*p=NULL;if(fp=fopen(FileName,"r")=NULL)/將文件名為FileName的文件賦給文件名fp并打開printf("t文件打開失敗!");returnNULL;elsep=(Diary*)malloc(sizeof(Diary);fscanf(fp,"t日期:%sn",p->date);/將文件fp中的內(nèi)容賦給pfscanf(fp,"t標(biāo)題:%sn",p->title);fscanf(fp,&q

29、uot;t關(guān)鍵字:%sn",p->keyword);fscanf(fp,"t正文如下:nt%sn",p->content);p->tag=0;p->nextd=D1->nextd;/將p接到D1后面,后插法D1->nextd=p;fclose(fp);/對于文件的操作,最后都要對打開的文件進(jìn)行關(guān)閉操作returnp;/返回p/*導(dǎo)入用戶信息*/intOpen_Users_info(User*U1)FILE*fp;User*U2=NULL,*U3=NULL;Diary*D1=NULL,*D2=NULL;charfilepn20,t

30、empstr80;/*用來存放文件保存路徑以及文件名,tempstr是用來保存文件的保存路徑*/if(fp=fopen(filepn,"r")=NULL)printf("不能打開文件!n");return0;elsefscanf(fp,"%sn",tempstr);/將文件fp寫入字符型tempstr中,這樣才可以分別與字符串“User"和"Diary"進(jìn)行復(fù)制while(strcmp(tempstr,"User:")=0&&(!feof(fp)/循環(huán)用來一條一條的讀出

31、文件中的每一個用戶以及用戶的信息U2=(User*)malloc(sizeof(User);/申請一個空間用來存放每一條的用戶信息fscanf(fp,"用戶名:%80sn",U2->username);/將文件中的每一個用戶名寫到U2->username中fscanf(fp,"密碼:%80sn",U2->password);fscanf(fp,"%80s",tempstr);D1=(Diary*)malloc(sizeof(Diary);D1=Init_Diary(D1);U2->diarys_list=D1;

32、將屬于該用while(strcmp(tempstr,"Diary:")=0&&(!feof(fp)/戶的日記信息一條一條的全部讀出D2=(Diary*)malloc(sizeof(Diary);fscanf(fp,"t日期:%sn",D2->date);fscanf(fp,"t關(guān)鍵字:%sn",D2->keyword);fscanf(fp,"t標(biāo)題:%sn",D2->title);fscanf(fp,"t日記內(nèi)容:n%snn",D2->content);f

33、scanf(fp,"%sn",tempstr);D2->tag=0;D2->nextd=D1->nextd;D1->nextd=D2;/D2->nextd=NULL;/由前往后進(jìn)行導(dǎo)入/D1->nextd=D2;/D1=D1->nextd;U2->nextu=U1->nextu;U1->nextu=U2;/跟上面的插入方法是一樣的fscanf(fp,"nn");fclose(fp);return0;)/*顯示日記列表*/intPrintf_DiaryList(Diary*D1)intcount=

34、0;Diary*D;D=D1;printf("n");if(D->nextd=NULL)printf("t沒有日記信息!.n");elsewhile(D->nextd!=NULL)D=D->nextd;if(D->tag=0)count+;printf("t第2崎=>0寸間:-10s日記標(biāo)題:-20st關(guān)鍵字:-sn",count,D->date,D->title);printf("t關(guān)鍵字:-sn",D->keyword);)returncount;)/*進(jìn)入菜單并

35、選擇操作*/voidPrint_Menu1(int*choose1)t”日記管理系統(tǒng)”(ESC退出)n");AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|n");printf("t| 1.|n");用戶登錄2.新建用戶3.顯示用戶列表AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAprintf("t|A|n");doprintf("nt請選擇操作:t");scanf("%d",choose1);

36、while(*choose1<0|*choose1>3);rewind(stdin);/*清空鍵盤緩沖區(qū)里的無用字符*/*進(jìn)入日記菜單并選擇操作*/voidPrint_Menu2(int*choose2)printf("nttt“日記操作”(ESC返回上級)n");printf("t|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|n");printf("t|1.寫日記2.導(dǎo)入日記3.查閱與刪除4.更改用戶密碼|n");printf("t|AAAAA

37、AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdo printf("nt請選擇操作:t");AAAAAAAscanf("%d",choose2);while(*choose2<0|*choose2>5);rewind(stdin);/*清空鍵盤緩沖區(qū)里的無用字符*/*進(jìn)入日記查閱菜單*/voidPrint_Menu3(int*choose3)日記查閱與刪除”一一(t(ESC返回上級)n");printf("t|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

38、AAAAAAAAAAAAAAAAAAAAAAAAA|n");printf("t|1.日記列表2.按標(biāo)題查閱3.按日期查閱4,按關(guān)鍵字查閱|n");printf("t|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|n");do printf("nt請選擇操作:t");scanf("%d",choose3);清空鍵盤緩沖區(qū)里的無用字符*/while(*choose3<0|*choose3>5);rewind(stdin

39、);/*/*顯示用戶列表*/intPrintf_users(User*U1)intcount=0;User*p;p=U1;printf("nnt用戶信息列表如下:nn");if(U1->nextu=NULL)printf("nt沒有用戶信息!.n");elsewhile(p->nextu!=NULL)p=p->nextu;count+;printf("t第用戶=>用戶名:%sn",count,p->username);return1;/*日記保存*/intSave_Diary(Diary*D1)FILE*

40、fp;charFileName40,postfix6=".txt0"printf("t請輸入文件路徑及文件名:");scanf("%s",FileName);if(fp=fopen(FileName,"w+")=NULL)printf("t打開文件失敗!");return0;fprintf(fp,"t日期:%sn",D1->date);fprintf(fp,"t標(biāo)題:%sn",D1->title);fprintf(fp,"t關(guān)鍵字:%

41、sn",D1->keyword);fprintf(fp,"t正文如下:nt%sn",D1->content);fclose(fp);printf("t日記文件保存成功!");return1;/*保存用戶信息*/intSave_Users_info(User*U1)FILE*fp;Diary*D1;inttemp;char filepn20;/*用來存放文件保存路徑以及文件名 */printf("nntn");printf("t是否保存本次使用所做的所有操作?.t1-是0-否t");printf

42、("nt-nt");printf("請選擇操作:t");scanf("%d",&temp);if(temp=1)strcpy(filepn,"Users_info.txt");if(fp=fopen(filepn,"w+")=NULL)printf("不能打開文件!n");return0;while(U1->nextu!=NULL)fprintf(fp,"User:n");U1=U1->nextu;/*下移一個結(jié)點(diǎn)*/fprintf(f

43、p,"用戶名:%sn密碼:sn",U1->username,U1->password);D1=U1->diarys_list;while(D1->nextd!=NULL)D1=D1->nextd;fprintf(fp,"Diary:n");fprintf(fp,"t日期:%snt關(guān)鍵字:%sn",D1->date,D1->keyword);fprintf(fp,"t標(biāo)題:%sn",D1->title);fprintf(fp,"t日記內(nèi)容:n%sn"

44、,D1->content);fclose(fp);return0;/*日記查閱*/intSearch_Diary(Diary*D1)chartempch='1'charcmpword20;intchoose3;Diary*p;while(tempch!=ESC)Print_Menu3(&choose3);p=D1;if(p->nextd=NULL)printf("nt沒有日記n");elseswitch(choose3)case0:return0;case1:printf("nt該用戶有以下日記:nn");Printf

45、_DiaryList(D1);break;case2:Search_order(D1);break;case3:printf("nt請輸入要查閱的日記標(biāo)題:t");scanf("%s",cmpword);Filter_word(D1,cmpword,1);break;/按標(biāo)題查閱case4:printf("nt請輸入要查閱的日記日期(2009-4-11):t");scanf("%s",cmpword);Filter_word(D1,cmpword,2);break;/按日期查閱case5:printf("

46、nt請輸入要查閱的關(guān)鍵字(如:想你):t");scanf("%s",cmpword);Filter_word(D1,cmpword,3);break;/按關(guān)鍵字查閱Initial_Tag(D1,0);tempch=getch();rewind(stdin);/*清空鍵盤緩沖區(qū)里的無用字符*/return1;/*按標(biāo)題、日期、關(guān)鍵字查閱*/Diary*Filter_word(Diary*D1,charcmpword,intn)/采用的是篩選算法char*temp=NULL;Diary*D,*D2;Initial_Tag(D1,0);/將每一篇日記都編輯成可查找狀態(tài)D

47、=D1;while(D->nextd!=NULL)/對沒有都進(jìn)行比較if(n=1)temp=strstr(D->nextd->title,cmpword);/strstr函數(shù)是對D->nextd->title和cmpword進(jìn)行模糊比較,并將找到的賦給指針tempelseif(n=2)temp=strstr(D->nextd->date,cmpword);elseif(n=3)temp=strstr(D->nextd->keyword,cmpword);if(temp=NULL)/如果找不到相似的標(biāo)題,日期,關(guān)鍵字,就將日記編輯成不可查找狀態(tài)D->nextd->tag=-1;D=D->nextd;/比較下一個printf("nnt有以下的日記符合查閱要求:n");D2=Search_order(D1);Initial_Tag(D1,0);returnD1;/*登錄個人用戶*/User*User_Login(User*U1)/登錄成功返回改用戶的日記鏈表指針inti=0,temp;User*s=NULL,*tempU=NULL;printf("nt-n");printf("t是否要

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論