




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
年4月19日C語言程序設(shè)計報告菜單源碼測試文檔僅供參考一:系統(tǒng)功能基本功能:圖書的錄入,刪除,查找,和導(dǎo)入導(dǎo)出等。圖書屬性:書號,書名,第一作者,版次,出版年等。菜單功能:InputRecords(輸入若干條記錄)從鍵盤一次輸入一本書的信息,存放到結(jié)構(gòu)體數(shù)組中,然后顯示。提示信息,確認是否輸入下一條記錄。DisplayAllRecords(顯示所有記錄)按順序顯示所有記錄,每屏顯示10條記錄,按<Enter>鍵繼續(xù)顯示下一屏。DeleteaRecord(按書名查找,刪除一本書)輸入待刪除書的書名,顯示該書名的所有書目,提示輸入待刪除書目的書號,提示是否刪除,確認后,刪除該書。Sort(排序)以書名為升序排列數(shù)組Insertarecord(插入一條記錄)以書名為序排列的數(shù)組中插入一條記錄,插入后,數(shù)組依然有序。輸出插入成功后的信息。Query(查找并顯示一個記錄)輸入書名,查找并顯示包含該書名的所有圖書信息AddRecordsfromaTextFile(從文件讀入圖書信息到結(jié)構(gòu)體數(shù)組中)用戶可事先建立一個文本文件Dictory.txt。存放所有圖書信息,文件格式如下:21182 高等數(shù)學(xué)劉浩榮5同濟大學(xué)出版社7300物理化學(xué)王德明2化學(xué)工業(yè)出版社WritetoaTextFile將數(shù)組中的全部記錄寫入文件Records.txt中,要求格式與Dictory.txt相同。Quit(退出圖書管理系統(tǒng))新增加菜單功能:Changearecord修改某一條記錄的值Menu顯示菜單ClearScreen清屏Pause按暫停,按任意鍵繼續(xù)二:數(shù)據(jù)結(jié)構(gòu)Typedefstruct{charISBN[10];//書號charbook[30];//書名charauthor[20];//作者Intedition;//版本號charpress[50];//出版社名intyear;//出版年}Bookinfo;三:函數(shù)調(diào)用關(guān)系Write_to_Text()Display_main_menu()Change_a_record()Delete()Sort_by_name()Insert()Insert_a_record()AddfromText()Delete_a_record()Display()Query()Query_a_record()Input()main
Write_to_Text()Display_main_menu()Change_a_record()Delete()Sort_by_name()Insert()Insert_a_record()AddfromText()Delete_a_record()Display()Query()Query_a_record()Input()main四:主要算法及實現(xiàn)i=0語句Bn+1是是是否否否b=strcmp((*s).book,dictList[i].book)>=0c=strcmp((*s).book,dictList[i+1].book)<=0語句A:dictList[j]=dictList[j-1];語句B:dictList[i+1]=*s;i++n+1j--語句Aj>i+1j=nb&&ci<n-1i=0插入算法
i=0語句Bn+1是是是否否否b=strcmp((*s).book,dictList[i].book)>=0c=strcmp((*s).book,dictList[i+1].book)<=0語句A:dictList[j]=dictList[j-1];語句B:dictList[i+1]=*s;i++n+1j--語句Aj>i+1j=nb&&ci<n-1i=0排序算法結(jié)束否否是否否是是是p=j語句Ai++j++j<nb>0P!=ip=ij=i+1i<n-1i=0開始b=strcmp(dictList[p].book,dictList[j].book)語句A:t=dictList[p];dictList[p]=dictList[i];dictList[i]=t;
五:源程序(含注釋)結(jié)束否否是否否是是是p=j語句Ai++j++j<nb>0P!=ip=ij=i+1i<n-1i=0開始b=strcmp(dictList[p].book,dictList[j].book)語句A:t=dictList[p];dictList[p]=dictList[i];dictList[i]=t; #include<stdio.h>#include<string.h>#include<stdlib.h>#defineNUM100typedefstruct//定義結(jié)構(gòu)體數(shù)組{charISBN[10];//書號charbook[30];//書名charauthor[20];//作者intedition;//版本號charpress[50];//出版社名intyear;//出版年}Bookinfo;intInput(BookinfodictList[],intn)//從鍵盤輸入數(shù)據(jù),存入結(jié)構(gòu)體數(shù)組dictList{charc1,c2;do{c1=getchar();printf("PleaseinputISBN:\n");gets(dictList[n].ISBN);printf("Pleaseinputbook:\n");gets(dictList[n].book);printf("Pleaseinputauthor:\n");gets(dictList[n].author);printf("Pleaseinputpress:\n");gets(dictList[n].press);printf("Pleaseinputedition:\n");scanf("%d",&dictList[n].edition);printf("Pleaseinputyear:\n");scanf("%d",&dictList[n].year);n+=1;printf("是否輸入下一條?確認(y)|取消(n)\n");//提示信息c1=getchar();}while((c2=getchar())=='y');return(n);//返回值為新的記錄數(shù)量}voidDisplay(BookinfodictList[],intn)//顯示所有記錄,每10個暫停一次,輸入回車繼續(xù)顯示{inti=0,j;charinput,c;printf("%-10s%-23s%-18s%-8s%-15s%-4s\n","ISBN","book","author","edition","press","year");c=getchar();do{j=10;//每10個循環(huán)一次do{printf("%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].book,dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year);i++;j--;}while(j&&i<n);if(i==n)break;//若數(shù)據(jù)全部輸出,則跳出循環(huán),scanf("%c",&input);}while(input=='\n');//輸入回車,執(zhí)行循環(huán)}intdelete(BookinfodictList[],intn,char*ISBN)//只刪除書號為ISBN的第一條記錄{inti,j;for(i=0;i<n;i++){if(!strcmp(dictList[i].ISBN,ISBN))//strcmp()函數(shù)判斷兩個字符串是否相等{for(j=i;j<n-1;j++)dictList[j]=dictList[j+1];//將目標值右面的數(shù)據(jù)全部左移一位return(n-1);//刪除后記錄數(shù)減少1}}return(n);}intDelete_a_record(BookinfodictList[],intn)//刪除某一條記錄{inti,j=0;charbook[30],isbn[10],s,c;c=getchar();printf("請輸入待刪除的書目的書名\n");gets(book);//獲取書名字符串printf("%-10s%-23s%-18s%-8s%-15s%-4s\n","ISBN","book","author","edition","press","year");for(i=0;i<n;i++){if(!strcmp(dictList[i].book,book)){//找到同名的數(shù)據(jù),并輸出printf("%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].book,dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year);j++;}}if(j>0){printf("請輸入待刪除的書目的書號\n");gets(isbn);//獲取要刪除的數(shù)據(jù)的書號printf("確實要刪除該記錄?是(y)|否(n)\n");//提示刪除if((s=getchar())=='y'){for(i=0;i<n;i++){if(!strcmp(dictList[i].ISBN,isbn)){//調(diào)用delete函數(shù)刪除printf("刪除成功!\n");return(delete(dictList,n,dictList[i].ISBN));}}printf("未找到待刪除記錄!\n");//刪除成功后記錄減1}else{printf("已取消刪除!\n");//取消刪除后記錄數(shù)不變returnn;}}elseprintf("未找到待刪除記錄!\n");}voidSort_by_name(BookinfodictList[],intn)//選擇法按書名升序排列{inti,j,p;Bookinfot;for(i=0;i<n-1;i++){p=i;for(j=i+1;j<n;j++)if(strcmp(dictList[p].book,dictList[j].book)>0)p=j;if(p!=i){t=dictList[p];dictList[p]=dictList[i];dictList[i]=t;}}}intinsert(BookinfodictList[],intn,Bookinfo*s)//按書名順序插入記錄{inti,j;Sort_by_name(dictList,n);for(i=0;i<n-1;i++){if(strcmp((*s).book,dictList[0].book)<0){for(j=n;j>0;j--)dictList[j]=dictList[j-1];dictList[0]=*s;return(n+1);}elseif(strcmp((*s).book,dictList[i].book)>=0&&strcmp((*s).book,dictList[i+1].book)<=0){for(j=n;j>i+1;j--)dictList[j]=dictList[j-1];dictList[i+1]=*s;//放在i和i+1之間或者放在最后一個return(n+1);}}dictList[n]=*s;return(n+1);}intInsert_a_record(BookinfodictList[],intn)//出現(xiàn)問題,調(diào)用該函數(shù)時總是全部顯示記錄?{intk;charc;Bookinfos;//輸入數(shù)據(jù)c=getchar();printf("PleaseinputISBN:\n");gets(s.ISBN);printf("Pleaseinputbook:\n");gets(s.book);printf("Pleaseinputauthor:\n");gets(s.author);printf("Pleaseinputpress:\n");gets(s.press);printf("Pleaseinputedition:\n");scanf("%d",&s.edition);printf("Pleaseinputyear:\n");scanf("%d",&s.year);k=insert(dictList,n,&s);//根據(jù)insert的返回值是否大于n判斷插入成功與否if(k>n){printf("插入成功!\n");return(k);}else{printf("插入失敗!\n");return(n);}}intQuery(BookinfodictList[],intn,char*book)//查詢并顯示書名為book的記錄{inti,count=0;printf("%-10s%-23s%-18s%-8s%-15s%-4s\n","ISBN","book","author","edition","press","year");for(i=0;i<n;i++){if(!strcmp(dictList[i].book,book)){printf("%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].book,dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year);count++;}}if(count)returncount;//查詢成功,返回個數(shù)elsereturn-1;//未找到,返回-1}voidQuery_a_record(BookinfodictList[],intn){inti;charbook[30],c;c=getchar();printf("請輸入待查找的書名\n");//輸入書名gets(book);if((i=Query(dictList,n,book))>0)printf("共找到%d條記錄\n",i);//若查到數(shù)據(jù),Query函數(shù)的返回值為正數(shù)elseprintf("未找到所查找的記錄\n");}intAddfromText(BookinfodictList[],intn,char*filename){ inti;Bookinfos; FILE*p;p=fopen(filename,"r");fscanf(p,"%d",&i);//先讀取文件第一行的記錄數(shù)while(i--){fscanf(p,"%s%s%s%d%s%d\n",s.ISBN,s.book,s.author,&s.edition,s.press,&s.year);//讀取記錄的具體值n=insert(dictList,n,&s);//插入到dictList數(shù)組中}fclose(p);printf("讀取成功!\n");return(n);}voidWritetoText(BookinfodictList[],intn,char*filename){FILE*p2; inti;p2=fopen(filename,"w");for(i=0;i<n;i++)//按格式寫入文件fprintf(p2,"%-10s%-23s%-18s%-8d%-15s%-4d\n",dictList[i].ISBN,dictList[i].book,dictList[i].author,dictList[i].edition,dictList[i].press,dictList[i].year);fclose(p2);printf("寫入成功!\n");}voidDisplay_main_menu()//顯示菜單,另外添加了三個功能,顯示菜單,清屏,暫停{printf("\n1.Inputrecords\n2.DisplayAllRecords\n3.DeleteaRecord\n4.sort\n5.InsertaRecord\n6.Query\n7.AddRecordsfromaTextFile\n8.WritetoaTextFile\n9.Changearecord\n0.Quit\n\nTIPS\ta.Menu\n\tb.ClearScreen\n\tc.Pause\n\nGiveyourchoice:\n");}voidChange_a_record(BookinfodictList[],intn)//修改某一記錄的值{inti;charbook[30],ISBN[30],c;c=getchar();printf("請輸入待修改圖書的書名\n");gets(book);if((i=Query(dictList,n,book))>0)//確認找到待修改記錄{printf("共找到%d條記錄\n請輸入待修改圖書的書號\n",i);gets(ISBN);for(i=0;i<n;i++){if(!strcmp(dictList[i].ISBN,ISBN)){printf("請更新書號為%s的圖書數(shù)據(jù)\n",ISBN);//開始修改printf("PleaseinputISBN:\n");gets(dictList[i].ISBN);printf("Pleaseinputbook:\n");gets(dictList[i].book);printf("Pleaseinputauthor:\n");gets(dictList[i].author);printf("Pleaseinputpress:\n");gets(dictList[i].press);printf("Pleaseinputedition:\n");scanf("%d",&dictList[i].edition);printf("Pleaseinputyear:\n");scanf("%d",&dictList[i].year);printf("修改完成!\n");}}}elseprintf("未找到相關(guān)記錄\n");}main(){staticintn=12;charfilename1[30],filename2[30],c;//創(chuàng)立初始結(jié)構(gòu)體數(shù)組,應(yīng)不少于十個Bookinfobooks[NUM]={{"97814842","pythonLanguage","gnusLieland",2,"Berkeley",},{"97871190","historyofChinese","Goaqua",2,"Beijing",},{"97814129","publiccommunication","RonaldE.Rice",3,"London",},{"97836422","culturalcomposition","YangPan",2,"pardon",},{"97801240","analyzingthesocial","Jenniferbeck",1,"Walt",},{"78016958","recoredservicing","ScottishQua",1,"Chinese",},{"01354851","managementguide","FerdinandK.Levy",1,"Englewood",1969},{"1096-424","macroeconomics","Dusk",2,"Gog",1977},{"04448649","competitiveeconomics","KiHangKim",2,"Amsterdam",1983},{"08531419","guidetobanking","RobinPr",7,"London",1973},{"01311606","guidetobanking","JerryS.Rosen",2,"Englewood",1972},{"97875100","dirtpricingdynamic","PamelaLa",1,"Worldbook",}};Display_main_menu();//顯示菜單while(c=getchar())//持續(xù)獲取輸入,并用switch語句調(diào)用相應(yīng)函數(shù){switch(c){case'0':exit(1);break;case'1':n=Input(books,n);break;case'2':Display(books,n);break;case'3':n=Delete_a_record(books,n);break;case'4':Sort_by_name(books,n);break;case'5':n=Insert_a_record(books,n);break;case'6':Query_a_record(books,n);break;case'7':printf("請輸入文件名\n");scanf("%s",filename1);n=AddfromText(books,n,filename1);break;case'8':printf("請輸入文件名\n");scanf("%s",filename2);WritetoText(books,n,filename2);break;case'9':Change_a_record(books,n);break;case'a':Display_main_menu();break;case'b':system("cls");break;case'c':system("pause");break;}}}六:程序執(zhí)行(包含典型測試數(shù)據(jù))1.Inputrecords2.DisplayAllRecords3.DeleteaRecord4.sort5.InsertaRecord6.Query7.AddRecordsfromaTextFile8.WritetoaTextFile9.Changearecord0.QuitTIPSa.Menub.ClearScreenc.PauseGiveyourchoice:1PleaseinputISBN:4296Pleaseinputbook:明朝那些事Pleaseinputauthor:當年明月Pleaseinputpress:浙江出版社Pleaseinputedition:2Pleaseinputyear:是否輸入下一條?確認(y)|取消(n)n2ISBNbookauthoreditionpressyear97814842pythonLanguagegnusLieland2Berkeley97871190historyofChineseGoaqua2Beijing97814129publiccommunicationRonaldE.Rice3London97836422culturalcompositionYangPan2pardon97801240analyzingthesocialJenniferbeck1Walt78016958recoredservicingScottishQua1Chinese01354851managementguideFerdinandK.Levy1Englewood19691096-424macroeconomicsDusk2Gog197704448649competitiveeconomicsKiHangKim2Amsterdam198308531419guidetobankingRobinPr7London1973<Enter>01311606guidetobankingJerryS.Rosen2Englewood197297875100dirtpricingdynamicPamelaLa1Worldbook4296明朝那些事當年明月2浙江出版社3請輸入待刪除的書目的書名明朝那些事ISBNbookauthoreditionpressyear4296明朝那些事當年明月2浙江出版社請輸入待刪除的書目的書號4296確實要刪除該記錄?是(y)|否(n)y刪除成功!42ISBNbookauthoreditionpressyear97801240analyzingthesocialJenniferbeck1Walt04448649competitiveeconomicsKiHangKim2Amsterdam198397836422culturalcompositionYangPan2pardon97875100dirtpricingdynamicPamelaLa1Worldbook08531419guidetobankingRobinPr7London197301311606guidetobankingJerryS.Rosen2Englewood197297871190historyofChineseGoaqua2Beijing1096-424macroeconomicsDusk2Gog197701354851managementguideFerdinandK.Levy1Englewood196997814129publiccommunicationRonaldE.Rice3London<Enter>97814842pythonLanguagegnusLieland2Berkeley78016958recoredservicingScottishQua1Chinese5PleaseinputISBN:84772281Pleaseinputbook:englishlearningPleaseinputauthor:tomPleaseinputpress:AllaPleaseinputedition:2Pleaseinputyear:插入成功!6請輸入待查找的書名recoredservicingISBNbookauthoreditionpressyear78016958recoredservicingScottishQua
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZTSS 0002-2024 同山燒酒評價規(guī)范
- T-ZJSEIA 007-2024 產(chǎn)品碳足跡評價技術(shù)規(guī)范光伏組件
- 二零二五年度健康產(chǎn)業(yè)商家入駐戰(zhàn)略合作協(xié)議
- 2025年度離婚財產(chǎn)分割與子女財產(chǎn)繼承協(xié)議
- 二零二五年度個人之間房產(chǎn)交易保密協(xié)議
- 二零二五年度按揭房屋借款協(xié)議書(公積金貸款)
- 2025年度籃球運動員轉(zhuǎn)會合同解除條件
- 二零二五年度超市租賃合同書:超市租賃及綠色環(huán)保產(chǎn)品合作協(xié)議
- 二零二五年度智能交通投資暗股協(xié)議
- 2025年度職業(yè)電競選手私教訓(xùn)練協(xié)議
- 血液透析并發(fā)糖尿病足護理查房課件
- 超市消防應(yīng)急疏散預(yù)案
- 當代藝術(shù)博覽會的學(xué)術(shù)性建構(gòu)歷程與問題
- 寺廟線上運營策劃方案
- 《Unit2Myfavoriteseason》教學(xué)設(shè)計課件
- 七年級上冊生物期末測試卷(含答案)
- 路基分層-表格-
- 離婚協(xié)議書電子版下載
- 中醫(yī)藥膳學(xué)124張課件
- 汽車法規(guī)第一章
- Kappa測試數(shù)據(jù)分析報告
評論
0/150
提交評論