C語言程序設計題庫管理系統(tǒng)_第1頁
C語言程序設計題庫管理系統(tǒng)_第2頁
C語言程序設計題庫管理系統(tǒng)_第3頁
C語言程序設計題庫管理系統(tǒng)_第4頁
C語言程序設計題庫管理系統(tǒng)_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、程序設計基礎課程設計報告班 級: 計算機科學與技術1103班 姓 名: 楊廣宇 指導教師: 胡宏濤 完成日期: 2012年9月6日 (題目)1 設計題目與要求(簡要介紹課程設計題目內(nèi)容與要求。)1設計內(nèi)容要求輸入試題(僅限選擇題和填空題)基本信息,實現(xiàn)試題瀏覽.,查詢,修改功能,并將數(shù)據(jù)保存至文本文件。2要求功能完善,界面友好。2 算法設計與描述(要求有相關流程圖) 2.1 算法設計與描述(描述算法設計、實現(xiàn)過程。)1.提供可操作的主菜單:輸出主菜單,用戶可根據(jù)菜單來選擇操作。根據(jù)客戶輸入的選項來運行不同的功能,運行不同的函數(shù)。2.。試題信息的錄入函數(shù):按照提示輸入題的題號,題目內(nèi)容,并提示用

2、戶是否繼續(xù)錄入,每輸入一個記錄,全局變量n就自增,最后最為函數(shù)的返回值返回。3.保存試題信息函數(shù):將文件的所有數(shù)據(jù)通過fprintf來寫入指定文本文檔,完成后關閉文件,沒有返回值4. 載入試題信息函數(shù):通過fopen函數(shù)打開指定文件,通過fscanf來讀取文件里的數(shù)據(jù),最后返回記錄數(shù),避免了每次打開時都要輸入數(shù)據(jù)的麻煩。5. 查詢記錄函數(shù):細分為按題號,題目兩種方式來進行查詢記錄,并能對查詢記錄不存在進行提示。遍歷所有結(jié)構(gòu)體找出符合的輸出。 6. 修改記錄函數(shù):首先判斷用戶要修改的試題序號是否存在,進行相應的系統(tǒng)提示,然后遍歷所有記錄找出符合的,按照提示依次進行修改項目,返回記錄值不變(沒增加

3、也沒減少)。7. 刪除記錄函數(shù):首先判斷用戶要刪除的試題序號是否存在,進行相應的系統(tǒng)提示,然后遍歷所有記錄找出符合的刪除,冰講后面的所有數(shù)據(jù)向前移動一個位置,記錄數(shù)減一并返回。 2.2 主要流程圖(用NS圖描述。)1,、輸入函數(shù)2、保存函數(shù)3、載入函數(shù)4、查詢函數(shù)5、修改函數(shù)6、刪除函數(shù)3 設計軟硬件環(huán)境 硬件設備 系統(tǒng):Microsoft Windows XP Professional 版本 2002 機型:Inter Core2 Duo CPU E8400 3.00GHz 2.99GHz, 2.00 GB內(nèi)存 軟件設備 Microsoft Visual C+ 6.0應用程序調(diào)試4 源程序代

4、碼清單#include #include#include typedef struct char tihao10; /題號char timu15; /題目Data; Data da80; int menu_select() char c; do system(cls); printf(ttt =題庫管理系統(tǒng)= n); printf(ttt n); printf(ttt 1. 題目的輸入 n); printf(ttt 2. 題目的瀏覽 n); printf(ttt 3. 題目信息更改 n); /包括刪除,插入和更改printf(ttt 4. 題目信息查詢 n); printf(ttt 5. 題目

5、文件操作 n); /包括保存,讀取和復制printf(ttt 0. 退出管理系統(tǒng) n); printf(ttt n); printf(ttt = n);printf(ntt請您選擇(0-5):); c=getchar(); while(c5); return(c-0); void tihaosort(Data dat,int n) /題號排序int i,j;Data temp;for(i=0;in;+i)dai=dati;for(i=0;in-1;+i)for(j=i+1;j0)temp=dai;dai=daj;daj=temp;printf(tt=排序成功=n);void SaveText(

6、Data dat,int n) /保存函數(shù)int i; FILE *fp; /*指向文件的指針*/ if(fp=fopen(txl.txt,wb)=NULL) /*打開文件,并判斷打開是否正常*/ printf(t不能打開文件n); /*沒打開*/ exit(1); /*退出*/ fprintf(fp,%d,n); /*將記錄數(shù)寫入文件*/fprintf(fp,rn);for(i=0;in;i+) fprintf(fp,%-8s%-6s,dati.tihao,dati.timu);fprintf(fp,rn); /*將換行符號寫入文件*/ fclose(fp);int LoadText(Dat

7、a dat) /載入函數(shù)int i,n;FILE *fp;if(fp=fopen(txl.txt,r)=NULL)printf(不能打開文件n);exit(1);fscanf(fp,%d,&n); /*讀入記錄數(shù)*/for(i=0;in;i+)fscanf(fp,%s%sn,dati.tihao,dati.timu);/*按格式讀入記錄*/fclose(fp);return n; /*返回記錄數(shù)*/int Charu(Data dat,int n) /插入函數(shù)Data temp; /*新插入記錄信息*/int i=0,j,k;char s20;doprintf(t請插入您的數(shù)據(jù)n);print

8、f(t題號:); scanf(t%s,temp.tihao); for(k=0;kn;k+) /判斷插入數(shù)據(jù)是否存在if(strcmp(datk.tihao,temp.tihao)=0)printf(t-該記錄已存在,請重新輸入!-n);system(pause);system(cls);break;while(strcmp(datk.tihao,temp.tihao)=0);printf(t題目:); scanf(t%s,temp.timu); printf(t請輸入插入位置的題號:);scanf(t%s,s); /*輸入插入位置的題號*/while(strcmp(dati.tihao,s)

9、!=0&i=i;j-) /*從最后一個結(jié)點開始向后移動一條*/strcpy(datj+1.tihao,datj.tihao); /*當前記錄的題號拷貝到后一條*/strcpy(datj+1.timu,datj.timu);strcpy(dati.tihao,temp.tihao); /*將新插入記錄的題號拷貝到第i個位置*/strcpy(dati.timu,temp.timu);n+; /*記錄數(shù)加1*/return n;int Shuru(Data dat,int n) /輸入函數(shù)int i=0; char ch; while(ch!=n&ch!=N) /用來判斷是否繼續(xù)輸入 system(

10、cls);printf(t題號:); scanf(t%s,datn+i.tihao); printf(t題目:); scanf(t%s,datn+i.timu); printf(nt是否繼續(xù)添加?(Y/N); scanf(t%c,&ch);i+; return (n+i); /其實輸入除了N和n的任意鍵均能實現(xiàn)繼續(xù)添加的功能 void List(Data dat,int n) /顯示函數(shù) int i; printf(=共%d條記錄=n,n);printf(n); /*格式*/ printf(題號 題目 n); printf(n); for(i=0;in;i+) printf(%2st%3sn,

11、dati.tihao,dati.timu); /*按格式輸出*/printf(n); system(pause); int Shanchu(Data dat,int n) /刪除函數(shù) char s20; /*要刪除記錄的題號*/int i=0,j; printf(t請輸入想刪除記錄中的題號:); scanf(%s,s); while(strcmp(dati.tihao,s)!=0&in) i+; /*查找要刪除的記錄題號*/if(i=n) printf(t題庫中沒有此題!n); return(n); for(j=i;jn-1;j+) /數(shù)據(jù)交換 strcpy(datj.timu,datj+1.

12、timu); strcpy(datj.tihao,datj+1.tihao); printf(ttt已經(jīng)成功刪除!n); return(n-1); void Chazhao(Data dat,int n) /查詢函數(shù) int j;printf(tn請選擇查詢方式:n); printf(tn); printf(t1-題號 n); printf(t0-返回 n); printf(tn); printf(請選擇:); scanf(%d,&j); if(j=1)char s20; int i=0; printf(t請輸入想查詢的題號:); scanf(t%s,s); while(strcmp(dati

13、.tihao,s)!=0&in) i+; if(i=n) printf(t題庫中沒有此題!n); return; printf(t此題內(nèi)容n); printf(t%5sn,dati.timu); ;void Biangeng(Data dat,int n) /修改函數(shù)char s20; int i=0; printf(t請輸入想修改的試題的題號:); scanf(%s,s); while(strcmp(dati.tihao,s)!=0&in) i+; if(i=n) printf(t題庫中沒有此題!n); return; printf(t題號:); scanf(t%s,dati.tihao);

14、 printf(t題目:); scanf(t%s,dati.timu); printf(nt修改成功!);void CopyText() /復制文件函數(shù) char outfile20; /*目標文件名*/int i,n; Data temp80;FILE *fp,*fc;if(fp=fopen(txl.txt,rb)=NULL) /*打開記錄文件*/ printf(tt不能打開文件n); /*顯示不能打開文件信息*/ exit(1); /*退出*/printf(tt輸入目標文件名(例如c:outfile.txt):);scanf(%s,outfile);if(fc=fopen(outfile,

15、wb)=NULL) /*打開目標文件*/ printf(tt不能打開文件n); /*顯示不能打開文件信息*/ exit(1); /*退出*/ fscanf(fp,%d,&n); /*讀出文件記錄數(shù)*/ fprintf(fc,%d,n); /*寫入目標文件數(shù)*/ fprintf(fc,rn); /*寫入換行符*/ for(i=0;in;i+)fscanf(fp,%s%sn,tempi.tihao,tempi.timu);fprintf(fc,%-8s%-6s,tempi.tihao,tempi.timu);fprintf(fc,rn); /*寫入換行符*/ fclose(fp); /*關閉源文件

16、*/ fclose(fc); /*關閉目標文件*/printf(tt您已成功復制文件!n); /* 主函數(shù) */void main() int n=0; for(;) switch(menu_select() case 1: system(cls);n=Shuru(da,n); break; case 2: system(cls);int k;printf(ttt =題庫信息管理系統(tǒng)= n); printf(ttt n);printf(ttt 1.顯示全部題目 n);printf(ttt 2.按題號排序信息 n);printf(ttt 0.返回上一級菜單 n);printf(ttt n);pr

17、intf(ttt = n);printf(ntt請選擇:); scanf(%d,&k);switch(k)case 1: /顯示信息system(cls);List(da,n);break;case 2:/題號排序tihaosort(da,n);system(pause);break;case 0:; break;case 3: system(cls);int m;printf(ttt =題庫信息管理系統(tǒng)= n); printf(ttt n);printf(ttt 1.題庫信息的修改 n);printf(ttt 2.題庫信息的刪除 n);printf(ttt 3.題庫信息的插入 n);prin

18、tf(ttt 0.返回 n);printf(ttt n);printf(ttt = n);printf(ntt請選擇:);scanf(%d,&m);switch(m)case 1:system(cls);Biangeng(da,n);printf(t); system(pause); break; case 2:system(cls);n=Shanchu(da,n); /*刪除記錄*/ printf(t); system(pause); break; case 3:system(cls);n=Charu(da,n);/插入函數(shù)printf(t); system(pause); break; c

19、ase 0:; break;case 4:system(cls);printf(nt*在題庫中查找記錄*n); Chazhao(da,n); printf(t); system(pause); break;case 5: system(cls);int x;printf(ttt =題庫信息管理系統(tǒng)= n); printf(ttt n); printf(ttt 1.題庫信息的載入 n);printf(ttt 2.題庫信息的保存 n);printf(ttt 3.題庫信息的復制 n);printf(ttt 0.返回 n);printf(ttt n);printf(ttt = n);printf(nt

20、t請選擇:);scanf(%d,&x);switch(x)case 1:n=LoadText(da);printf(tt您已經(jīng)成功的將題目導入到題庫!n);printf(t); system(pause); break; case 2:printf(tt=題庫的保存=n);SaveText(da,n);printf(ntt保存成功n);printf(t); system(pause);break;case 3:CopyText(); /*保存數(shù)據(jù)*/ printf(t); system(pause); break; case 0: ;break;case 0: printf(nttt感謝您的使

21、用,再見!n); exit(0); 5 程序運行結(jié)果(可截屏程序運行界面。)1、主界面顯示2、試題的輸入3、函數(shù)的保存4、試題庫的載入5,、試題的瀏覽與查詢6、函數(shù)的修改與刪除6 設計總結(jié)(重點從設計方法、實現(xiàn)技術、功能等幾方面總結(jié)。)通過此次的程序設計課學到了很多,對C語言也有了更好的了解,同時也對C程序的操作和調(diào)試也有了進一步的掌握。盡管程序中的一部分是從網(wǎng)上復制過來的,但其中都加入了自己手動修改的元素,并且把一些以前不懂的弄懂了,總之經(jīng)過了幾天的奮斗我們都掌握了很多知識,收獲了很多。開學的第一天,老師們就讓我們分組進行程序設計,題目發(fā)下來頓時怵了,只是幾個人在一起商量了一下把程序的大致框

22、架熟悉了一下,但由于是頭一次搞,根本不知道從哪些地方著手,原本學到的只是到真正運用的時候才顯得那么的蒼白,就這樣整整一個上午的時間什么進展都沒有,我們只是在那里看書,熟悉知識。下午有網(wǎng)了,我們便取巧百度了一個程序進行調(diào)試,目的是熟悉分析程序的運轉(zhuǎn)效果,查詢整理我們所需要的應用函數(shù),于是才漸漸摸清了我們要進行的方向。首先,我們要進行的是主體框架的設置,為了節(jié)省時間,我們擬在一個運行程序里進行刪減,從整體中將“肉”剔除,然后得到我們的主體,剛開始不懂得,只知道將哪來的代碼胡亂的刪去了事,后來發(fā)現(xiàn)程序雖然沒錯了,但只剩下了一副空殼,原有的功能都沒有了。 然后,我們商議給這副“骨架”填“肉”,因為這我們也吃了不少口頭,拼命看書了解掌握相應函數(shù)如save& load的相關函數(shù),網(wǎng)上查找相應函數(shù)的用法以及問

溫馨提示

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

評論

0/150

提交評論