手機(jī)短信管理系統(tǒng)設(shè)計(jì)_第1頁
手機(jī)短信管理系統(tǒng)設(shè)計(jì)_第2頁
手機(jī)短信管理系統(tǒng)設(shè)計(jì)_第3頁
手機(jī)短信管理系統(tǒng)設(shè)計(jì)_第4頁
手機(jī)短信管理系統(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

圖4-1主函數(shù)流程圖圖4-1主函數(shù)流程圖程序截圖圖4-2主界面截圖圖4-1主界面流程圖圖4-2主界面截圖圖4-1主界面流程圖源代碼/*項(xiàng)目名稱:短信管理系統(tǒng)實(shí)施時(shí)間:2021年12月22日創(chuàng)建人:郭成*///調(diào)用預(yù)處理#include"stdio.h"http://標(biāo)準(zhǔn)輸入輸出#include"stdlib.h"http://常用的系統(tǒng)函數(shù)//函數(shù)聲明voidAddressbookmenu();//通訊錄voidMessagemenu();//短信//主函數(shù)voidmain(){ charfilename[20];//文件名變量 inti; system("title短信管理系統(tǒng)");//設(shè)置cmd窗口標(biāo)題system("color3B");//背景湖藍(lán),字體白 do { system("cls");//清屏 printf("nowdatetime:\n"); system("date/T");//調(diào)用系統(tǒng)日期system("TIME/T");//調(diào)用系統(tǒng)時(shí)間 printf("\n\n\n"); printf("\n\t\t\t\n"); printf("\t\t\t*==============短信管理系統(tǒng)==============*\n"); printf("\n\t\t\t\n"); printf("\t\t**\n"); printf("\t\t***1.通訊錄***\n"); printf("\t\t***2.短信***\n"); printf("\t\t**\n"); printf("\t\t********************\n"); printf("\t\t***0.退出系統(tǒng)***\n"); printf("\t\t**************\n"); printf("\n\t\t\t\n"); printf("\t\t\tYIBIN printf("\n\t\t\t\n"); scanf("%d",&i); switch(i) { case1:system("cls");Addressbookmenu();break;//case1調(diào)用addressbookmenu函數(shù) case2:system("cls");Messagemenu();break;//case2調(diào)用messagemenu函數(shù) case0:break;//case0退出 default:printf("錯(cuò)誤選擇!請(qǐng)重選");break; //default:break;一般用在switch語句里面,它的作用是在比較i和下面的1、2之后都不一致就執(zhí)行。當(dāng)然如果都不滿足也可以不去做任何事,所以就可以省略不用 } }while(i!=0);//當(dāng)i不等于0循環(huán)}通訊錄流程圖開始開始讀出功能代號(hào)添加刪除修改查看顯示關(guān)閉123456結(jié)束退出通訊錄(圖4-3)通訊錄流程圖添加功能:錄入新的聯(lián)系人數(shù)據(jù),姓名、號(hào)碼、類型、郵箱。開始開始讀入編號(hào)錄入數(shù)據(jù)錄入數(shù)據(jù)失敗返回主菜單保存編號(hào)重復(fù)YN錄入成功YN(圖4-4)添加功能流程圖刪除功能:輸入編號(hào),對(duì)其信息進(jìn)行刪除。開始開始讀入編號(hào)刪除刪除失敗返回主菜單保存有此編號(hào)NY(圖4-4)刪除功能流程圖修改功能:輸入編號(hào),對(duì)其信息進(jìn)行修改。開始開始讀入編號(hào)修改修改失敗返回主菜單保存有此編號(hào)NY(圖4-5)修改功能流程圖查看:輸入編號(hào),顯示出此編號(hào)的姓名、號(hào)碼、類型、郵箱。開始開始打開文件輸入編號(hào)沒有此編號(hào)返回主菜單顯示信息有此編號(hào)NY(圖4-6)顯示功能流程圖程序截圖(圖4-7)通訊錄主界面截圖(圖4-8)添加功能截圖(圖4-9)修改功能截圖(圖4-10)顯示功能截圖源代碼/*項(xiàng)目名稱:短信管理系統(tǒng)實(shí)施時(shí)間:2021年12月22日創(chuàng)建人:郭成*/#include"stdio.h"#include"stdlib.h"#include"string.h"http://定義結(jié)構(gòu)體類型typedefstructPatient_Info//typedef自定義結(jié)構(gòu)體類型PatientInfo,可以用PatientInfo來定義變量{ intnumber;//編號(hào) charname[8];//姓名 charphonecode[20];//號(hào)碼 chargroup[10];//類型 charemail[20];//郵箱 charcontent[200];//短信內(nèi)容}PatientInfo;//局部函數(shù)聲明staticvoidInsert(char[]);staticvoidSearch(char[]);staticvoidUpdate(char[]);staticvoidDelete(char[]);staticvoidShow(char[]);//主菜單voidAddressbookmenu(){ charfilename[20];//文件名變量 inti; charAdd[]="Addressbook.dll";//指定文件 strcpy(filename,Add); do { printf("\nnowdatetime:\n"); system("date/T");system("TIME/T"); printf("\n\n\n"); printf("\t\t*==============手★機(jī)★通★訊★錄★管★理★系★統(tǒng)==============*\n"); printf("\t\t**\n"); printf("\t\t*1.添加聯(lián)系人2.刪除聯(lián)系人*\n"); printf("\t\t*3.修改聯(lián)系人4.查看聯(lián)系人*\n"); printf("\t\t*5.顯示所有聯(lián)系人6.關(guān)閉通訊錄*\n"); printf("\t\t**\n"); printf("\t\t********************\n"); printf("\t\t**請(qǐng)輸入序號(hào)**\n"); printf("\t\t********************\n"); printf("\t\t*==============================================================*\n"); scanf("%d",&i); fflush(stdin);//清空輸入緩存,以便不影響后面輸入的東西 switch(i) { case1:system("cls");Insert(filename);break; case2:system("cls");Delete(filename);break; case3:system("cls");Update(filename);break; case4:system("cls");Search(filename);break; case5:system("cls");Show(filename);break; case6:break; default:printf("錯(cuò)誤選擇!請(qǐng)重選");break; } }while(i!=6);}//添加聯(lián)系人voidInsert(charFilename[]){ /* 函數(shù)說明:對(duì)指定文件名進(jìn)行數(shù)據(jù)的插入 形參說明:數(shù)組作為形參,實(shí)參必須是一個(gè)地址,用于傳遞文件名 調(diào)用位置:addressbookmenu函數(shù) 創(chuàng)建人:郭成 創(chuàng)建日期:12月22日 */ intin_number; PatientInfoP;//定義一個(gè)信息的變量 intflag=1; FILE*fp; fp=fopen(Filename,"r");//以只讀方式打開文件,第一個(gè)參數(shù):文件名,第二個(gè)參數(shù)是打開方式,a表示追加寫方式,w表示覆蓋寫,r表示只讀方式,返回值是一個(gè)文件指針 printf("請(qǐng)根據(jù)以下提示信息操作:"); printf("\n編號(hào):");//先查重,再追加插入 scanf("%d",&in_number); while(!feof(fp)&&flag)//feof表示endoffile,表示文件末尾,true表示文件末尾,否則不是文件末尾。&&flag表示還未查找到 { if(fread(&P,sizeof(PatientInfo),1,fp))/*fread是文件輸出函數(shù),從文件中讀取一條聯(lián)系人信息放入P變量中,第一個(gè)參數(shù)是目標(biāo)變量的地址, 第二個(gè)參數(shù)是讀取的長(zhǎng)度單位,第三個(gè)參數(shù)是讀取幾個(gè)單位,第四個(gè)參數(shù)是要讀取的文件,返回值為1表示成功,否則表示失敗*/ { if(P.number==in_number) { printf("\n該編號(hào)已存在,自動(dòng)取消錄入!\n"); flag=0; } } } fclose(fp);//關(guān)閉文件以便追加記錄 if(flag) { fp=fopen(Filename,"a");//以追加方式打開文件準(zhǔn)備追加 } else return; P.number=in_number; printf("請(qǐng)輸入姓名:"); scanf("%s",P.name); printf("請(qǐng)輸入:"); scanf("%s",&P.phonecode); printf("請(qǐng)輸入類型:"); printf("存儲(chǔ)類別:(A.辦公類B.個(gè)人類C.商務(wù)類)"); scanf("%s",P.group); printf("請(qǐng)輸入"); fflush(stdin);//清空輸入緩存,以便不影響后面輸入的東西 scanf("%s",P.email);printf("\n"); if(fwrite(&P,sizeof(PatientInfo),1,fp)!=1)/*fwrite是文件寫函數(shù),從P變量中向文件中寫入一條短信信息,第一個(gè)參數(shù)是來源變量的地址, 第二個(gè)參數(shù)是寫的長(zhǎng)度單位,第三個(gè)參數(shù)是寫幾個(gè)單位,第四個(gè)參數(shù)是要寫的文件*/ { printf("輸入數(shù)據(jù)失敗,請(qǐng)重新輸入!"); } else printf("\n添加成功!"); fclose(fp);}voidSearch(charFilename[]){ /* 函數(shù)說明:從指定文件中查找數(shù)據(jù) 形參說明:數(shù)組作為形參,實(shí)參必須是一個(gè)地址,用于傳遞文件名 調(diào)用位置:addressbookmenu函數(shù) 創(chuàng)建人:郭成 創(chuàng)建日期:12月22日 */ intin_number; PatientInfoP; intflag=1; FILE*fp; fp=fopen(Filename,"r"); printf("\n請(qǐng)根據(jù)以下提示信息操作:"); printf("\n編號(hào):"); scanf("%d",&in_number); system("cls"); while(fread(&P,sizeof(PatientInfo),1,fp)&&flag)//fread是文件輸出函數(shù),返回值為1表示讀成功 { if(P.number==in_number) { printf("\n\t\t\t\n"); printf("\n\t\t\t|編號(hào)\t|姓名\t|\t\t|類型\t|郵箱\t\t\t|"); printf("\n\t\t\t|%d\t",P.number); printf("%s\t",P.name); printf("%s\t",P.phonecode); printf("%s\t",P.group); printf("%s\t|",P.email); printf("\n\n\t\t\t聯(lián)系人%s的信息已顯示出來!\n",P.name); printf("\t\t\t"); flag=0; } } fclose(fp); if(flag) { printf("沒有你要找的聯(lián)系人!"); }}voidUpdate(charFilename[])//{ /* 函數(shù)說明:修改指定文件中的數(shù)據(jù) 形參說明:數(shù)組作為形參,實(shí)參必須是一個(gè)地址,用于傳遞文件名 調(diào)用位置:addressbookmenu函數(shù) 創(chuàng)建人:郭成 創(chuàng)建日期:12月22日 */ intin_number; PatientInfoP; intflag=1; FILE*fp,*fptemp;//必須兩個(gè)文件操作,fp是數(shù)據(jù)源文件,fptemp是臨時(shí)文件,修改后的數(shù)據(jù)臨時(shí)放入該文件中 fp=fopen(Filename,"r");//文件讀 fptemp=fopen("temp.txt","w");//文件寫 printf("\n修改聯(lián)系人信息"); printf("\n請(qǐng)輸入你要修改的聯(lián)系人的編號(hào):");//先查詢,再修改 scanf("%d",&in_number); while(fread(&P,sizeof(PatientInfo),1,fp))//文件讀 { if(P.number==in_number)//讀出修改 { P.number=in_number; printf("請(qǐng)輸入姓名:"); scanf("%s",P.name); printf("請(qǐng)輸入:"); scanf("%s",&P.phonecode); printf("請(qǐng)輸入類型:"); printf("存儲(chǔ)類別:(A.辦公類B.個(gè)人類C.商務(wù)類)"); scanf("%s",P.group); printf("請(qǐng)輸入"); fflush(stdin);//清空輸入緩存,以便不影響后面輸入的東西 scanf("%s",P.email); printf("\n"); flag=0; } fwrite(&P,sizeof(PatientInfo),1,fptemp);/*找沒找到都往臨時(shí)文件中寫,因?yàn)閷?duì)文件操作只有追加和覆蓋寫兩種方方式, 因此修改中間某條記錄不方便,只能引入第二個(gè)文件或者放入數(shù)據(jù)、鏈表中*/ printf("\n修改成功!"); } fclose(fp); fclose(fptemp); if(flag) { printf("沒有你要查詢的結(jié)果!"); } else { fptemp=fopen("temp.txt","r");//從臨時(shí)文件中讀 fp=fopen(Filename,"w");//往源文件中覆蓋寫 while(fread(&P,sizeof(PatientInfo),1,fptemp)) { fwrite(&P,sizeof(PatientInfo),1,fp);//從臨時(shí)文件中回寫 } fclose(fp); fclose(fptemp); }}voidDelete(charFilename[])//{ /* 函數(shù)說明:刪除指定文件中的某條數(shù)據(jù) 形參說明:數(shù)組作為形參,實(shí)參必須是一個(gè)地址,用于傳遞文件名 調(diào)用位置:addressbookmenu函數(shù) 創(chuàng)建人:郭成 創(chuàng)建日期:12月22日 */ intin_number; PatientInfoP; intflag=1; FILE*fp,*fptemp; fp=fopen(Filename,"r"); fptemp=fopen("temp.txt","w"); printf("\n請(qǐng)輸入你想要?jiǎng)h除的聯(lián)系人的編號(hào):");//先查詢,再刪除 scanf("%d",&in_number); while(fread(&P,sizeof(PatientInfo),1,fp)) { if(P.number!=in_number)//如果找到要?jiǎng)h除的記錄則不寫,否則都要寫 fwrite(&P,sizeof(PatientInfo),1,fptemp); else flag=0; } fclose(fp); fclose(fptemp); if(flag) { printf("沒有你要?jiǎng)h除的編號(hào)!"); } else { fp=fopen(Filename,"w"); fptemp=fopen("temp.txt","r"); while(fread(&P,sizeof(PatientInfo),1,fptemp)) { fwrite(&P,sizeof(PatientInfo),1,fp); } printf("刪除成功!"); fclose(fp); fclose(fptemp); }}voidShow(charFilename[]){ /* 函數(shù)說明:顯示指定文件中的所有數(shù)據(jù) 形參說明:數(shù)組作為形參,實(shí)參必須是一個(gè)地址,用于傳遞文件名 調(diào)用位置:addressbookmenu函數(shù) 創(chuàng)建人:郭成 創(chuàng)建日期:12月22日 */ PatientInfoP; intflag=1; FILE*fp; fp=fopen(Filename,"r"); while(fread(&P,sizeof(PatientInfo),1,fp)) { printf("\n\t\t\t\n"); printf("\n\t\t\t|編號(hào)\t|姓名\t|\t\t|類型\t|郵箱\t\t\t|"); printf("\n\t\t\t|%d\t",P.number); printf("%s\t",P.name); printf("%s\t",P.phonecode); printf("%s\t",P.group); printf("%s\t|",P.email); printf("\n\t\t\t"); } printf("\n\t\t\t所有聯(lián)系人信息已全部顯示出來!\n"); fclose(fp);}短信錄流程圖開始開始讀出功能代號(hào)新建刪除修改查看顯示關(guān)閉123456結(jié)束關(guān)閉短信錄(圖4-11)短信錄主函數(shù)流程圖 新建功能:在新建短信輸入編號(hào)時(shí),將判斷此編號(hào)在通訊錄上有無,如果有則顯示出來,并對(duì)此編號(hào)發(fā)送信息,如果沒有此編號(hào)則新建一條信息。開始開始讀入編號(hào)顯示此編號(hào)信息發(fā)送短信返回主菜單保存編號(hào)是否存在NY(圖4-12)新建短信流程圖(刪除、修改、查看、顯示流程圖均與通訊錄相差不大,這里就不畫出來了)程序截圖(圖4-13)短信錄主界面截圖(圖4-14)短信錄新建短信截圖(圖4-15)短信錄顯示短信截圖(圖4-16)短信錄刪除短信截圖源代碼/*項(xiàng)目名稱:短信管理系統(tǒng)實(shí)施時(shí)間:2021年12月22日創(chuàng)建人:郭成*/#include"stdio.h"#include"stdlib.h"#include"string.h"#include"windows.h"http://定義了Windows的所有資料型態(tài)、函數(shù)調(diào)用、資料結(jié)構(gòu)和常數(shù)識(shí)別字#include"conio.h"http://進(jìn)行輸入、輸出的//定義結(jié)構(gòu)體類型typedefstructPatient_Info//typedef自定義結(jié)構(gòu)體類型PatientInfo,可以用PatientInfo來定義變量{ intnumber;//編號(hào) charname[8];//姓名 charphonecode[20];//號(hào)碼 chargroup[10];//類型 charemail[20];//郵箱 charcontent[200];//短信內(nèi)容}PatientInfo;//局部函數(shù)聲明staticvoidAdd(char[]);staticvoidSearch(char[]);staticvoidAlter(char[]);staticvoidDel(char[]);staticvoidShow(char[]);//主菜單voidMessagemenu(){ inti; charFilename[20];//文件名變量 charMes[]="Message.dll";//指定文件 strcpy(Filename,Mes); do { printf("\nnowdatetime:\n"); system("date/T");system("TIME/T"); printf("\n\n\n"); printf("\t\t*================手★機(jī)★短★信★管★理★系★統(tǒng)================*\n"); printf("\t\t**\n"); printf("\t\t*1.新建信息2.刪除信息*\n"); printf("\t\t*3.修改信息4.查看聯(lián)系人*\n"); printf("\t\t*5.顯示所有信息6.關(guān)閉短信錄*\n"); printf("\t\t**\n"); printf("\t\t********************\n"); printf("\t\t**請(qǐng)輸入序號(hào)**\n"); printf("\t\t********************\n"); printf("\t\t*==============================================================*\n"); scanf("%d",&i); fflush(stdin);//清空輸入緩存,以便不影響后面輸入的東西 switch(i) { case1:system("cls");Add(Filename);break; case2:system("cls");Del(Filename);break; case3:system("cls");Alter(Filename);break; case4:system("cls");Search(Filename);break; case5:system("cls");Show(Filename);break; case6:break; default:printf("錯(cuò)誤選擇!請(qǐng)重選");break; } }while(i!=6);}//新建短信voidAdd(charFilename[])//{ /* 函數(shù)說明:對(duì)指定文件名進(jìn)行數(shù)據(jù)的插入 形參說明:數(shù)組作為形參,實(shí)參必須是一個(gè)地址,用于傳遞文件名 調(diào)用位置:messagemenu函數(shù) 創(chuàng)建人:郭成 創(chuàng)建日期:12月22日 */ intin_number; PatientInfoP;//定義一個(gè)信息的變量 intflag=1; FILE*fp,*fptemp;//fp是數(shù)據(jù)源文件,fptemp是臨時(shí)文件 fptemp=fopen("Addressbook.dll","r");//已只讀方式臨時(shí)打開通訊錄文件,此操作是為了才看通訊錄里是否有相同的編號(hào),如果有則顯示出來 printf("請(qǐng)根據(jù)以下提示信息操作:"); printf("\n編號(hào):"); scanf("%d",&in_number); while(!feof(fptemp)&&flag) { if(fread(&P,sizeof(PatientInfo),1,fptemp)) { if(P.number==in_number) { printf("\n該編號(hào)已存在,自動(dòng)顯示該編號(hào)聯(lián)系人!\n"); printf("\n\t\t\t\n"); printf("\n\t\t\t|編號(hào)\t|姓名\t|\t\t|類型\t|郵箱\t\t\t|"); printf("\n\t\t\t|%d\t",P.number); printf("%s\t",P.name); printf("%s\t",P.phonecode); printf("%s\t",P.group); printf("%s\t|",P.email); printf("\n\n\t\t\t聯(lián)系人%s的信息已顯示出來!\n",P.name); printf("\t\t\t"); } } } fclose(fptemp);//關(guān)閉通訊錄文件以便短信內(nèi)容儲(chǔ)存在短信文件內(nèi) fp=fopen(Filename,"a");//以追加方式打開短信文件準(zhǔn)備追加 printf("\n新建短信:\n"); P.number=in_number; printf("姓名:"); scanf("%s",P.name); printf(":"); scanf("%s",&P.phonecode); printf("短信內(nèi)容:"); scanf("%s",P.content); printf("\n\t\t\t"); if(fwrite(&P,sizeof(PatientInfo),1,fp)!=1) { printf("輸入數(shù)據(jù)失敗,請(qǐng)重新輸入!"); } else printf("\n添加成功!"); fclose(fp);}voidSearch(charFilename[]){ /* 函數(shù)說明:從指定文件中查找數(shù)據(jù) 形參說明:數(shù)組作為形參,實(shí)參必須是一個(gè)地址,用于傳遞文件名 調(diào)用位置:messagemenu函數(shù) 創(chuàng)建人:郭成 創(chuàng)建日期:12月22日 */ intin_number; PatientInfoP; intflag=1; FILE*fp; fp=fopen(Filename,"r"); printf("\n請(qǐng)根據(jù)以下提示信息操作:");//先查重,再追加插入 printf("\n編號(hào):"); scanf("%d",&in_number); system("cls"); while(fread(&P,sizeof(PatientInfo),1,fp)&&flag)//fread是文件輸出函數(shù),返回值為1表示讀成功 { if(P.number==in_number) { printf("\n\t\t\t\n"); printf("\n\t\t\t|編號(hào)\t|姓名\t|\t\t|短信內(nèi)容\t\t\t|"); printf("\n\t\t\t|%d",P.number); printf("|%s\t",P.name); printf("|%s\t",P.phonecode); printf("|%s\t",P.content); printf("\n\n\t\t\t聯(lián)系人%s的信息已顯示出來!\n",P.name); printf("\t\t\t"); flag=0; } } fclose(fp); if(flag) { printf("沒有你要找的信息!"); }}voidAlter(charFilename[])//{ /* 函數(shù)說明:修改指定文件中的數(shù)據(jù) 形參說明:數(shù)組作為形參,實(shí)參必須是一個(gè)地址,用于傳遞文件名 調(diào)用位置:messagemenu函數(shù) 創(chuàng)建人:郭成 創(chuàng)建日期:12月22日 */ intin_number; PatientInfoP; intflag=1; FILE*fp,*fptemp;//必須兩個(gè)文件操作,fp是數(shù)據(jù)源文件,fptemp是臨時(shí)文件,修改后的數(shù)據(jù)臨時(shí)放入該文件中 fp=fopen(Filename,"r");//文件讀 fptemp=fopen("temp.txt","w");//文件寫 printf("\n修改聯(lián)系人信息"); printf("\n請(qǐng)輸入你要修改的聯(lián)系人的編號(hào):");//先查詢,再修改 scanf("%d",&in_number); while(fread(&P,sizeof(PatientInfo),1,fp))//文件讀 { if(P.number==in_number)//讀出修改 { P.number=in_number; printf("\n姓名:"); scanf("%s",P.name); printf(":"); scanf("%s",&P.phonecode); printf("短信內(nèi)容:"); scanf("%s",P.content); printf("\n\t\t\t"); flag=0; } fwrite(&P,sizeof(PatientInfo),1,fptemp);/*找沒找到都往臨時(shí)文件中寫,因?yàn)閷?duì)文件操作只有追加和覆蓋寫兩種方方式, 因此修改中間某條記錄不方便,只能引入第二個(gè)文件或者放入數(shù)據(jù)、鏈表中*/ printf("\n修改成功!"); } fclose(fp); fclose(fptemp); if(flag) { printf("沒有你要查詢的結(jié)果!"); } else { fptemp=fopen("temp.txt","r");//從臨時(shí)文件中讀 fp=fopen(Filename,"w");//往源文件中覆蓋寫 while(fread(&P,sizeof(PatientInfo),1,fptemp)) { fwrite(&P,sizeof(PatientInfo),1,fp);//從臨時(shí)文件中回寫 } fclose(fp); fclose(fptemp); }}voidDel(charFilename[])//{ /* 函數(shù)說明:刪除指定文件中的某條數(shù)據(jù) 形參說明:數(shù)組作為形參,實(shí)參必須是一個(gè)地址,用于傳遞文件名 調(diào)用位置:messagemenu函數(shù) 創(chuàng)建人:郭成 創(chuàng)建日期:12月22日 */ intin_number; PatientInfoP; intflag=1; FILE*fp,*fptemp; fp=fopen(Filename,"r"); fptemp=fopen("temp.txt","w"); printf("\n請(qǐng)輸入你想要?jiǎng)h除的聯(lián)系人的編號(hào):");//先查詢,再刪除 scanf("%d",&in_number); while(fread(&P,sizeof(PatientInfo),1,fp)) { if(P.number!=in_number)//如果找到要?jiǎng)h除的記錄則不寫,否則都要寫 fwrite(&P,sizeof(PatientInfo),1,fptemp); else flag=0; } fclose(fp); fclose(fptemp); if(flag) { printf("沒有你要?jiǎng)h除的編號(hào)!"); } else { fp=fopen(Filename,"w"); fptemp=fopen("temp.txt","r"); while(fread(&P,sizeof(PatientInfo),1,fptemp)) { fwrite(&P,sizeof(PatientInfo),1,fp); } printf("刪除成功!"); fclose(fp); fclose(fptemp); }}voidShow(charFilename[]){ /* 函數(shù)說明:顯示指定文件中的所有數(shù)據(jù) 形參說明:數(shù)組作為形參,實(shí)參必須是一個(gè)地址,用于傳遞文件名 調(diào)用位置:messagemenu函數(shù) 創(chuàng)建人:郭成 創(chuàng)建日期:12月22日 */ PatientInfoP; intflag=1; FILE*fp; fp=fopen(Filename,"r"); while(fread(&P,sizeof(PatientInfo),1,fp)) {printf("\n\t\t\t\n"); printf("\n\t\t\t|編號(hào)\t|姓名\t|\t\t|短信內(nèi)容\t\t\t|"); printf("\n\t\t\t|%d",P.number); printf("|%s\t",P.name); printf("|%s\t",P.phonecode); printf("|%s\t",P.content); printf("\n\t\t\t"); } printf("\n\t\t\t所以聯(lián)系人的信息已顯示出來!\n"); fclose(fp);}總結(jié)經(jīng)過二個(gè)周的程序設(shè)計(jì)實(shí)驗(yàn),我清楚并且深刻地認(rèn)識(shí)到了編寫一個(gè)計(jì)算機(jī)程序的不易。要成功實(shí)現(xiàn)一個(gè)C程序的編譯與運(yùn)行,前提是熟練掌握C語言中基本的命令指示符,并且要能熟練運(yùn)用各種語句結(jié)構(gòu)及算法。其次,好的開始才能帶動(dòng)一個(gè)好的過程,一個(gè)程序的設(shè)計(jì)離不開一個(gè)清晰的邏輯框架和程序模塊,同時(shí)也需要我們嚴(yán)格并有條理地按照既有的設(shè)計(jì)思路來進(jìn)行代碼的編寫。代碼的編寫對(duì)我來說可以說是最大的一道坎,對(duì)于只有一學(xué)期C語言學(xué)習(xí)經(jīng)歷的我來說,要編寫這么龐大復(fù)雜的程序是幾乎是不可能的,但是,在代碼編寫過程中我不斷學(xué)習(xí),不斷去想那些師兄問問題,找同學(xué)互相學(xué)習(xí),終于把代碼基本編寫了出來。最后,程序的調(diào)試也是個(gè)極其困難的過程,要么是語法錯(cuò)誤,要么修改后有些功能實(shí)現(xiàn)不了,那些簡(jiǎn)單的語法錯(cuò)誤我們改正還比較容易,功能實(shí)現(xiàn)的問題就比較困難了,我還得四處搜集資料,或者請(qǐng)教老師和一些水平比較高的同學(xué)。一門技術(shù)的理論學(xué)習(xí)是辛苦的,但要懂得一門技術(shù)的運(yùn)用更要付出勞動(dòng)和汗水。雖然我的程序還有很多欠缺,比如,當(dāng)刪除或修改通訊錄中一個(gè)人的信息后,他在短信錄中的信息還是沒變,但最后我還是值得高興,就像自己完成了一個(gè)奇跡一樣,做了一件自己一個(gè)人幾乎不可能完成的任務(wù),那種成就感無法用語言表達(dá)。雖然程序設(shè)計(jì)困難重重,但我都堅(jiān)持了下來。這兩周的實(shí)驗(yàn)也讓我明白,雖然自己手中的玩起來很容易,但其實(shí)的背后是多大的人力物力的堆積啊,這都是現(xiàn)代科技的成果!總而言之,這兩周的實(shí)驗(yàn)讓我收益匪淺。它不僅將理論與實(shí)際相結(jié)合,培養(yǎng)了我動(dòng)手操作和獨(dú)立思考的能力,為我以后步入社會(huì)做準(zhǔn)備。這次的實(shí)驗(yàn)激發(fā)了我不斷學(xué)習(xí)興趣,它讓還我明白了,不論困難多大,只要我們積極思考,勇于實(shí)踐,就一定能夠解決問題。

引力波的實(shí)驗(yàn)探測(cè)給我們的啟示摘要:引力理論的發(fā)展經(jīng)歷了數(shù)百年,從牛頓到愛因斯坦,從萬有引力定律到廣義相對(duì)論。在這過程中,科學(xué)家們引力波的預(yù)言質(zhì)疑不休、爭(zhēng)論不止。而引力波的實(shí)驗(yàn)探測(cè)無疑證明了一切。引力波的發(fā)現(xiàn),彌補(bǔ)了愛因斯坦的廣義相對(duì)論的漏洞,也確定了他的理論的正確。這是人類史上出現(xiàn)的又一契機(jī),它將為人類社會(huì)帶來重大變革?!捌莆濉笔侵袊鴤鹘y(tǒng)迎財(cái)神的日子。2016年的這一天,卻一個(gè)讓全世界物理學(xué)界沸騰的日子,甚至許多的物理學(xué)家為之痛哭流涕——被預(yù)言已經(jīng)百年的引力波,終于被探測(cè)到了。引力是什么?在今天人們所知道的物質(zhì)的四種基本相互作用中,引力作用為最弱。四種相互作用按作用強(qiáng)度比例順序是:強(qiáng)相互作用(1),電磁相互作用(10),弱相互作用(10),引力相互作用(10)。因此,在研究基本粒子的運(yùn)動(dòng)時(shí),引力一般略去不計(jì)。但在天文學(xué)領(lǐng)域內(nèi),由于涉及的對(duì)象的質(zhì)量極其巨大,引力就成為不僅支配著天體的運(yùn)動(dòng),而且往往是天體的結(jié)構(gòu)和演化的決定因素。引力并不是一種所謂的“力”,而是一種屬性。牛頓在1687年出版的《自然哲學(xué)的數(shù)學(xué)原理》一書中首次提出萬有引力定律,基于此,他結(jié)識(shí)了彗星的運(yùn)動(dòng)軌道和地球上的潮汐現(xiàn)象,并根據(jù)萬有引力定律成功地預(yù)言并發(fā)現(xiàn)了海王星。萬有引力定律出現(xiàn)后,才正式把研究天體的運(yùn)動(dòng)建立在力學(xué)理論的基礎(chǔ)上,從而創(chuàng)立了天體力學(xué)。簡(jiǎn)單的說,質(zhì)量越大的東西產(chǎn)生的引力越大,地球的質(zhì)量產(chǎn)生的引力足夠把地球上的東西全部抓牢。1905年,愛因斯坦提出狹義相對(duì)論,突破了絕對(duì)時(shí)間和絕對(duì)空間的概念,否定了瞬時(shí)超距作用,從根本上動(dòng)搖了建立在這些舊觀念基礎(chǔ)上的牛頓引力理論。經(jīng)過十年的探索后,愛因斯坦于1915年提出了迄今為止最成功的近代引力理論——廣義相對(duì)論。廣義相對(duì)論中,引力被歸咎于時(shí)空的彎曲。這種彎曲是由物質(zhì)造成的,物質(zhì)的質(zhì)量越大,所形成的扭曲也就越嚴(yán)重。但是這種彎曲,對(duì)于人類來說根本感知不到,一是因?yàn)槿祟惏殡S這種彎曲一起彎曲了,而是由于這種彎曲太微小。大質(zhì)量物體發(fā)生的扭曲引起了震動(dòng),而這種震動(dòng),就是引力波。科學(xué)家們通過探測(cè)這種時(shí)空震蕩,來證實(shí)引力波的存在。早在1916年,愛因斯坦在廣義相對(duì)論中就預(yù)言了引力波的存在。而科學(xué)家們普遍認(rèn)為,這次LIGO這一發(fā)現(xiàn)是愛因斯坦相對(duì)論實(shí)驗(yàn)驗(yàn)證中最后一塊缺失的“拼圖”,證實(shí)了愛因斯坦廣義相對(duì)論的正確性,彌補(bǔ)了愛因斯坦的廣義相對(duì)論的漏洞,驗(yàn)證了已故科學(xué)家愛因斯坦的預(yù)言。探測(cè)的儀器叫做邁克爾遜干涉儀,或是LIGO。LIGO的“兩條腿”都有4千米長(zhǎng),最近的一次升級(jí)就花去了幾十億美元。LIGO的原理是什么?簡(jiǎn)單來說是利用光速不變,在同樣的直線路程里測(cè)試耗時(shí),而通過時(shí)間的偏差(盡最大可能排除誤差,也是耗資巨大的原因)來判定空間確實(shí)存在震動(dòng)。這樣的實(shí)驗(yàn)設(shè)置基于愛因斯坦的假設(shè):光速不變,是因?yàn)橐怨獾囊暯强?,它沿途?jīng)過的空間發(fā)生了折疊伸縮??赡艿囊Σㄌ綔y(cè)源包括致密雙星系統(tǒng)(白矮星,中子星和黑洞)。在2016年2月11日,LIGO科學(xué)合作組織和Virgo合作團(tuán)隊(duì)宣布他們已經(jīng)利用高級(jí)LIGO探測(cè)器,首次探測(cè)到了來自于雙黑洞合并的引力波信號(hào)。在過去的數(shù)十年里,許多物理學(xué)家和天文學(xué)家為證明引力波的存在進(jìn)行了大量研究。其中,泰勒和赫爾斯由于第一次得到引力波存在的間接證據(jù)榮獲1993年諾貝爾物理學(xué)獎(jiǎng)。到目前為止,類似的雙中子星系統(tǒng)已經(jīng)發(fā)現(xiàn)了近十個(gè),但是雙黑洞系統(tǒng)卻是首次。在實(shí)驗(yàn)方面,第一個(gè)對(duì)直接探測(cè)引力波作偉大嘗試的人是韋伯。雖然他的共振棒探測(cè)器最后沒能找到引力波,但是韋伯開創(chuàng)了引力波實(shí)驗(yàn)科學(xué)的先河,為如今的碩果打下了基礎(chǔ)。因?yàn)樵诘孛嫔虾苋菀资艿礁蓴_,所以物理學(xué)家們也在向太空進(jìn)軍。歐洲的空間引力波項(xiàng)目eLISA(演化激光干涉空間天線)。eLISA將由三個(gè)相同的探測(cè)器構(gòu)成為一個(gè)邊長(zhǎng)為五百萬公里的等邊三角形,同樣使用激光干涉法來探測(cè)引力波。此項(xiàng)目已經(jīng)歐洲空間局通過批準(zhǔn),正式立項(xiàng),目前處于設(shè)計(jì)階段,計(jì)劃于2034年發(fā)射運(yùn)行。作為先導(dǎo)項(xiàng)目,兩顆測(cè)試衛(wèi)星已經(jīng)于2015年12月3日發(fā)射成功,目前正在調(diào)試之中。中國的科研人員,在積極參與目前的國際合作之外之外,也在籌建自己的引力波探測(cè)項(xiàng)目。引力波的實(shí)驗(yàn)探測(cè)引起了世界范圍的轟動(dòng),這些探測(cè)極其不易,宇宙中發(fā)生爆炸性的大事件時(shí)產(chǎn)生的引力波,才相對(duì)容易探測(cè)到,例如黑洞合并、星系合并、超新星爆炸等。100年前,愛因斯坦在預(yù)言引力波存在時(shí)就曾說:“這些數(shù)值是如此微小,她們不會(huì)對(duì)任何的東西產(chǎn)生顯著的作用,沒人能夠去測(cè)量它們?!辈桃环蚪o出解釋:“時(shí)間發(fā)生得越早,距離越遠(yuǎn),越會(huì)在宇宙中傳播期間被紅移。紅移指的是由于宇宙本身的膨脹將所有的波動(dòng)的波長(zhǎng)拉直拉平,這樣其波動(dòng)性就難以被探測(cè)到。例如,這次LIGO探測(cè)到的引力波,是13億年以前兩個(gè)大約30個(gè)太陽質(zhì)量的黑洞并合所產(chǎn)生的引力波,振幅之小,是在原子核尺寸的千分之一的尺度。能探測(cè)到真的是非常不容易,LIGO實(shí)驗(yàn)組的科學(xué)家們也是在幾十年里經(jīng)歷多次挫折,不斷調(diào)整方案,改進(jìn)儀器,才最終探測(cè)到的?!彼运某晒μ綔y(cè)也標(biāo)志著在這個(gè)領(lǐng)域人類的技術(shù)進(jìn)步到了前所未有的水平。而它所具有的里程碑意義不止在科學(xué)情感上,更在于能夠打開人類的一個(gè)新的世界——每個(gè)人都對(duì)它滿懷期待。如果電磁波探測(cè)是人類的眼睛,那么人類又多了一雙聆聽外界的耳朵。馬克斯·普朗克引力物理研究所說:“在《星際穿越》和《三體》中,都不約而同地將引力波選為了未來科技發(fā)達(dá)的人類的通訊手段,這也許只能是美好的幻想,但對(duì)于天文研究而言,引力波的確開啟了一扇新的窗口。吹進(jìn)來的第一縷清風(fēng),就帶來了一個(gè)重大的信息:極重的恒星級(jí)雙黑洞系統(tǒng)存在并可以在足夠短的時(shí)間(10億年)內(nèi)并合。這是讓我們始料未及的。誰能知道在將來的更多的探測(cè)中,LIGO和一眾引力波探測(cè)器能帶給我們什么樣的驚喜呢?”引力波有兩個(gè)非常重要而且比較獨(dú)特的性質(zhì)。第一:不需要任何的物質(zhì)存在于引力波源周圍。這時(shí)就不會(huì)有電磁輻射產(chǎn)生。第二:引力波能夠幾乎不受阻擋的穿過行進(jìn)途中的天體。比如,來自于遙遠(yuǎn)恒星的光會(huì)被星際介質(zhì)所遮擋,引力波能夠不受阻礙的穿過。對(duì)于天文學(xué)家來說,這兩個(gè)特征允許引力波攜帶有更多的之前從未被觀測(cè)過的天文現(xiàn)象信息,而每一個(gè)電磁波譜的打開,都會(huì)為我們帶來前所未有的發(fā)現(xiàn)。天文學(xué)家們同樣期望引力波也是如此。而引力波本身的性質(zhì)也可能對(duì)基礎(chǔ)物理學(xué)產(chǎn)生巨大的影響。另外,引力波蘊(yùn)含的,很可能是宇宙誕生的畫面。我們從小都被告知一個(gè)最著名的猜想——宇宙是在一場(chǎng)爆炸中誕生的。這意味著,在時(shí)空的開始,宇宙又一次最為劇烈的震動(dòng)。引力波就能讓我們還原這個(gè)震動(dòng)——它是否存在?有多大規(guī)模?不僅如此,引力波還能傳遞信息——我們看不到的宇宙空間在發(fā)生什么?據(jù)科學(xué)家解釋,這次的引力波就是在遙遠(yuǎn)的距離上巨大的黑洞變化引起的。而這一結(jié)果也證明了黑洞真實(shí)存在——至少是廣義相對(duì)論預(yù)測(cè)的由純凈、真空、扭曲時(shí)空組成的完美圓形物體。并且,引力波傳遞的信息可以讓科學(xué)家更精確地估計(jì)宇宙膨脹的速度??偠灾粋€(gè)新的重大科學(xué)發(fā)現(xiàn),總會(huì)給人類社會(huì)帶來無法預(yù)估的發(fā)展。18世紀(jì)面熟電磁波的麥克斯韋理論確認(rèn)的時(shí)候,也沒人知道會(huì)給人類帶來什么,但是現(xiàn)在不管是電視機(jī)還是移動(dòng)電話,都與電磁現(xiàn)象有關(guān)。引力波的發(fā)現(xiàn)類似當(dāng)年的發(fā)現(xiàn)X光一樣,是一種工具。有了這個(gè)工具,我們可以利用引力波的觀察,去觀察遙遠(yuǎn)的宇宙的現(xiàn)象。發(fā)現(xiàn)暗物質(zhì)、時(shí)空穿梭等等才是有可能實(shí)現(xiàn)的事情。如果沒有引力波,以我們現(xiàn)有的技術(shù)是做不到這些HYPERLINK"/s?wd=%E7%A7%91%E5%B9%BB%E4%B8%96%E7%95%8C&tn=440391

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論