版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p> 一、題目總體介紹4</p><p><b> 二、需求分析5</b></p><p><b> 三、總體設(shè)計(jì)6</b></p><p> 1、現(xiàn)行系統(tǒng)組織結(jié)構(gòu)圖:6</p><p&
2、gt; 2、數(shù)據(jù)結(jié)構(gòu)分析6</p><p><b> 3、工作原理等6</b></p><p><b> 三、詳細(xì)設(shè)計(jì)6</b></p><p> 四.系統(tǒng)調(diào)試與結(jié)果分析19</p><p><b> 六、總結(jié)22</b></p><p&
3、gt;<b> 七、附件22</b></p><p><b> 參考文獻(xiàn)23</b></p><p><b> 一、題目總體介紹</b></p><p> (一)、課程設(shè)計(jì)題目:</p><p><b> 學(xué)生信息管理</b></p&g
4、t;<p> ?。ǘ?、課程設(shè)計(jì)內(nèi)容與主要功能:</p><p> 設(shè)計(jì)與開發(fā)一個學(xué)生信息管理系統(tǒng),對學(xué)生的學(xué)號、姓名、性別、年齡等基本信息進(jìn)行管理、主要功能如下:</p><p><b> 1).輸入記錄</b></p><p><b> 2).顯示全部記錄</b></p><p&
5、gt;<b> 3).查找記錄</b></p><p><b> 4).刪除記錄</b></p><p><b> 5).插入記錄</b></p><p><b> 6).保存文件</b></p><p><b> 7).讀文件<
6、/b></p><p> 8).按學(xué)號顯示記錄</p><p><b> 9).按姓名排序</b></p><p> (三)、目的與要求: </p><p><b> 1、目的: </b></p><p> (1)要求學(xué)生達(dá)到熟練掌握C語言的基本知識和技能;
7、</p><p> ?。?)基本掌握C語言程序設(shè)計(jì)的基本思路和方法; </p><p> ?。?)能夠利用所學(xué)的基本知識和技能,解決簡單的C語言程序設(shè)計(jì)問題。 </p><p><b> 2、基本要求: </b></p><p> 1)設(shè)計(jì)正確,方案合理。</p><p> 2)界面友好,使
8、用方便。</p><p> 3)程序精煉,結(jié)構(gòu)清晰。</p><p><b> 3、創(chuàng)新要求: </b></p><p> 在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如根據(jù)查找結(jié)果進(jìn)行修改的功能。 </p><p> 4、寫出設(shè)計(jì)說明書 </p><p> ?。ㄋ模⒃O(shè)計(jì)方法和基本原理: <
9、/p><p> 1、問題描述(功能要求): </p><p> (1)能夠從屏幕上讀取一個學(xué)生的信息并將信息存入到數(shù)據(jù)文件中。</p><p> ?。?)能夠?qū)⒅付ǖ男畔奈募袆h除。</p><p> (3)能夠按學(xué)號、姓名、性別、年齡對學(xué)生的信息進(jìn)行檢索并將檢索結(jié)果顯示在屏幕上。</p><p> (4)如果檢
10、索不到相應(yīng)的信息應(yīng)提示用戶。 </p><p> 2、問題的解決方案: </p><p> 根據(jù)系統(tǒng)功能要求,可以將問題解決分為以下步驟: </p><p> ?。?)寫出需求分析(做什么);</p><p> (2)分析系統(tǒng)中的各個實(shí)體之間的關(guān)系及其屬性和行為; </p><p> ?。?)根據(jù)問題描述,設(shè)計(jì)系
11、統(tǒng)的類層次; </p><p> (4)完成類層次中各個類的描述(包括屬性和方法); </p><p> ?。?)完成類中各個成員函數(shù)的定義; </p><p> ?。?)用戶界面的設(shè)計(jì); </p><p> ?。?)分析系統(tǒng)功能模塊(系統(tǒng)流程圖);</p><p> ?。?)代碼編寫,功能調(diào)試;</p>
12、<p> ?。?)完成系統(tǒng)總結(jié)報(bào)告以及系統(tǒng)使用說明書。</p><p><b> 二、需求分析</b></p><p> (1)能夠從屏幕上讀取一個學(xué)生的信息并將信息存入到數(shù)據(jù)文件中。</p><p> ?。?)能夠?qū)⒅付ǖ男畔奈募袆h除。</p><p> (3)能夠按學(xué)號、姓名、性別、年齡對學(xué)生
13、的信息進(jìn)行檢索并將檢索結(jié)果顯示在屏幕上。</p><p> (7)如果檢索不到相應(yīng)的信息應(yīng)提示用戶。</p><p><b> 三、總體設(shè)計(jì)</b></p><p> 1、現(xiàn)行系統(tǒng)組織結(jié)構(gòu)圖:</p><p><b> 2、數(shù)據(jù)結(jié)構(gòu)分析</b></p><p> 使
14、用整型,雙精度,字符型定義變量和函數(shù)。使用結(jié)構(gòu)體,類等概念實(shí)現(xiàn)數(shù)據(jù)存儲。同時也是用這些自定義類型定義了變量和函數(shù)。體現(xiàn)面向?qū)ο笤O(shè)計(jì)的特點(diǎn)。</p><p><b> 3、工作原理等</b></p><p><b> 系統(tǒng)功能結(jié)構(gòu)圖:</b></p><p><b> 四、詳細(xì)設(shè)計(jì)</b><
15、/p><p><b> 1、類設(shè)計(jì)</b></p><p> 類:student </p><p><b> 數(shù)據(jù)成員</b></p><p> 學(xué)號,姓名,性別,年齡 </p><p><b> 類:school</b></p>&
16、lt;p><b> 成員函數(shù)</b></p><p> 輸入記錄函數(shù)enter ():輸入編號到計(jì)算機(jī)中;</p><p> 顯示記錄函數(shù)list():顯示全部輸入的內(nèi)容,如學(xué)號、姓名、性別、年齡等;</p><p> 按姓名查找顯示記錄函數(shù)search ():按學(xué)號或姓名查找學(xué)生的信息;</p><p>
17、 刪除記錄函數(shù)delete():刪除指定學(xué)號學(xué)生信息;</p><p> 插入記錄函數(shù)add():插入指定學(xué)號學(xué)生信息;</p><p> 記錄保存為文件函數(shù)save():將學(xué)生信息保存為文件函數(shù);</p><p> 從文件中讀記錄函數(shù)load():從文件中讀出學(xué)生信息;</p><p> 按序號查找顯示記錄函數(shù)display():
18、按序號查找學(xué)生信息;</p><p> 按姓名排序函數(shù)sort():按學(xué)生姓名排序;</p><p> 文件復(fù)制函數(shù)copy():將文件復(fù)制;</p><p> 顯示單條記錄函數(shù)print(STUDENTS temp);顯示單條學(xué)生信息;</p><p> 查找函數(shù)find(STUDENTS t[],int n,char *s):查找
19、學(xué)生信息;</p><p> 輸出函數(shù)menu_select():輸出學(xué)生信息;</p><p> 五.系統(tǒng)調(diào)試與結(jié)果分析</p><p><b> 1、初始目錄:</b></p><p><b> 2、輸入數(shù)據(jù):</b></p><p><b> 3、顯
20、示所有記錄:</b></p><p><b> 4、查找記錄:</b></p><p><b> 5、刪除記錄:</b></p><p><b> 6、插入記錄:</b></p><p><b> 7、按姓名排序</b></p&g
21、t;<p><b> 8、復(fù)制信息</b></p><p><b> 9、按序號排序</b></p><p> 2.系統(tǒng)運(yùn)行的結(jié)果:</p><p> 設(shè)計(jì)特點(diǎn)和不足之處:</p><p> 系統(tǒng)整體清晰明了,功能基本齊全,但系統(tǒng)中報(bào)錯功能不完整,當(dāng)學(xué)號等信息輸入數(shù)字等時不出
22、現(xiàn)報(bào)錯,可設(shè)置提醒重新輸入。</p><p><b> 六、總結(jié)</b></p><p> 1、在做了課程實(shí)驗(yàn)以后,我對C語言的了解更深了,很多知識得到了鞏</p><p> 固,一些不懂的知識也漸漸明了!但從C語言這門課程開始,已發(fā)現(xiàn)程序</p><p> 設(shè)計(jì)的樂趣,在學(xué)習(xí)C語言的過程中也學(xué)到了許多計(jì)算機(jī)應(yīng)用
23、基礎(chǔ)知識,對計(jì)</p><p> 算機(jī)的機(jī)體也有了一個大體的了解</p><p> 2、作了學(xué)生學(xué)生信息管理系統(tǒng)程序后,我對數(shù)據(jù)類型、函數(shù)、指針、結(jié)</p><p> 構(gòu)體更加熟悉了,作為C語言所特有得指針、結(jié)構(gòu)體和對象再編寫程</p><p> 序得過程中運(yùn)用十分廣泛,我還必須多加練習(xí)才能達(dá)到一個更高的水</p>&l
24、t;p> 平,結(jié)構(gòu)體和對象、指針都是非常重要的。</p><p> 3、這次實(shí)訓(xùn)是彭禎老師給了很大引導(dǎo),經(jīng)過自己的改寫,實(shí)現(xiàn)要</p><p> 求。先做簡單的輸出,一步步的再做其它圖案,在實(shí)際操作過程中犯</p><p> 的一些錯誤還會有意外的收獲,感覺實(shí)訓(xùn)很有意思。在具體操作中對</p><p> 這學(xué)期所學(xué)的C語言的理
25、論知識得到鞏固,達(dá)到實(shí)訓(xùn)的基本目的,也</p><p> 發(fā)現(xiàn)自己的不足之出,在以后的上機(jī)中應(yīng)更加注意,同時體會到C語</p><p> 言具有的語句簡潔,使用靈活,執(zhí)行效率高等特點(diǎn)。發(fā)現(xiàn)上機(jī)實(shí)訓(xùn)的</p><p> 重要作用,特別是對數(shù)組和循環(huán)有了深刻的理解。 </p><p> 4、在完完整整的做完一個課程實(shí)驗(yàn)后,我對程序的整體性
26、有了一個明確</p><p> 的認(rèn)識,做一個程序必須要注意程序前后的聯(lián)系,要具有清晰的思路,</p><p> 程序要具有層次。對整體性的把握至關(guān)重要!</p><p> 5、學(xué)習(xí)計(jì)算機(jī)語言,最重要的就是上機(jī)操作,我深感自己動手能力比較</p><p> 差,在以后的學(xué)習(xí)中,還必須多多上機(jī)調(diào)試程序,從實(shí)踐中多積累經(jīng)</p>
27、;<p> 驗(yàn),為以后學(xué)習(xí)和工作打下堅(jiān)實(shí)的基礎(chǔ)。</p><p><b> 七、附件</b></p><p> /******頭文件(.h)***********/ </p><p> #include <stdio.h> /*I/O函數(shù)*/ </p><p> #include
28、<stdlib.h> /*標(biāo)準(zhǔn)庫函數(shù)*/ </p><p> #include <string.h>/*字符串函數(shù)*/ </p><p> #include <ctype.h>/*字符操作函數(shù)*/ </p><p> #define M 50 /*定義常數(shù)表示記錄數(shù)*/ </p><p> typ
29、edef struct /*定義數(shù)據(jù)結(jié)構(gòu)*/ </p><p><b> { </b></p><p> char no[20];/*學(xué)號*/ </p><p> char name[20]; /*姓名*/ </p><p> char sex[5];/*性別*/ </p><p> i
30、nt age;/*年齡*/ </p><p> }STUDENTS; </p><p> /******以下是函數(shù)原型*******/ </p><p> int enter(STUDENTS t[]); /*輸入記錄*/ </p><p> void list(STUDENTS t[],int n); /*顯示記錄*/ </
31、p><p> void search(STUDENTS t[],int n); /*按姓名查找顯示記錄*/ </p><p> int delete(STUDENTS t[],int n); /*刪除記錄*/ </p><p> int add(STUDENTS t[],int n); /*插入記錄*/ </p><p> void s
32、ave(STUDENTS t[],int n); /*記錄保存為文件*/</p><p> int load(STUDENTS t[]); /*從文件中讀記錄*/ </p><p> void display(STUDENTS t[]); /*按序號查找顯示記錄*/ </p><p> void sort(STUDENTS t[],int n); /*按姓名
33、排序*/ </p><p> void copy(); /*文件復(fù)制*/ </p><p> void print(STUDENTS temp); /*顯示單條記錄*/ </p><p> int find(STUDENTS t[],int n,char *s) ; /*查找函數(shù)*/ </p><p> int menu_selec
34、t(); /*主菜單函數(shù)*/ </p><p> /******主函數(shù)開始*******/ </p><p><b> main() </b></p><p><b> { </b></p><p> STUDENTS stu[M]; /*定義結(jié)構(gòu)體數(shù)組*/ </p>&l
35、t;p> int length; /*保存記錄長度*/ </p><p> clrscr(); /*清屏*/ </p><p> for(;;)/*無限循環(huán)*/ </p><p><b> { </b></p><p> switch(menu_select()) /*調(diào)用主菜單函數(shù),返回值整數(shù)作
36、開關(guān)語句的條件*/ </p><p><b> { </b></p><p> case 0:length=enter(stu);break;/*輸入記錄*/ </p><p> case 1:list(stu,length);break; /*顯示全部記錄*/ </p><p> case 2:search(s
37、tu,length);break; /*查找記錄*/ </p><p> case 3:length=delete(stu,length);break; /*刪除記錄*/ </p><p> case 4:length=add(stu,length); break; /*插入記錄*/ </p><p> case 5:save(stu,length);b
38、reak; /*保存文件*/ </p><p> case 6:length=load(stu); break; /*讀文件*/ </p><p> case 7:display(stu);break; /*按序號顯示記錄*/ </p><p> case 8:sort(stu,length);break; /*按姓名排序*/ </p><
39、;p> case 9:copy();break; /*復(fù)制文件*/ </p><p> case 10:exit(0); /*如返回值為11則程序結(jié)束*/ </p><p><b> } </b></p><p><b> } </b></p><p><b> } <
40、;/b></p><p> /*菜單函數(shù),函數(shù)返回值為整數(shù),代表所選的菜單項(xiàng)*/ </p><p> menu_select() </p><p><b> { </b></p><p> char s[80]; </p><p><b> int c; </b&g
41、t;</p><p> gotoxy(1,25);/*將光標(biāo)定為在第25行,第1列*/ </p><p> printf("press any key enter menu......\n");/*提示壓任意鍵繼續(xù)*/ </p><p> getch(); /*讀入任意字符*/ </p><p> clrscr()
42、; /*清屏*/ </p><p> gotoxy(1,1); </p><p> printf("********************MENU*********************\n\n"); </p><p> printf(" 0. Enter record\n"); </p
43、><p> printf(" 1. List the file\n"); </p><p> printf(" 2. Search record on name\n"); </p><p> printf(" 3. Delete a recor
44、d\n"); </p><p> printf(" 4. add record \n"); </p><p> printf(" 5. Save the file\n"); </p><p> printf(" 6. Load t
45、he file\n"); </p><p> printf(" 7. display record on order\n"); </p><p> printf(" 8. sort to make new file\n"); </p><p> printf(&q
46、uot; 9. copy the file to new file\n"); </p><p> printf(" 10. Quit\n"); </p><p> printf("***********************************************\n"); &l
47、t;/p><p><b> do{ </b></p><p> printf("\n Enter you choice(0~10):"); /*提示輸入選項(xiàng)*/ </p><p> scanf("%s",s); /*輸入選擇項(xiàng)*/ </p><p> c=ato
48、i(s); /*將輸入的字符串轉(zhuǎn)化為整型數(shù)*/ </p><p> }while(c<0||c>10); /*選擇項(xiàng)不在0~11之間重輸*/ </p><p> return c; /*返回選擇項(xiàng),主程序根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/ </p><p><b> } </b></p><p> /***輸
49、入記錄,形參為結(jié)構(gòu)體數(shù)組,函數(shù)值返回類型為整型表示記錄長度*/ </p><p> int enter(STUDENTS t[]) </p><p><b> { </b></p><p><b> int i,n; </b></p><p><b> char *s; <
50、/b></p><p> clrscr(); /*清屏*/ </p><p> printf("\nplease input num \n"); /*提示信息*/ </p><p> scanf("%d",&n); /*輸入記錄數(shù)*/ </p><p> printf("
51、please input record \n"); /*提示輸入記錄*/ </p><p> printf("no name sex age\n"); </p><p> printf("-----------------------------------------------
52、-\n"); </p><p> for (i=0;i<n;i++) </p><p><b> { </b></p><p> scanf("%s",t[i].no);</p><p> scanf("%s",t[i].name);</p>
53、<p> scanf("%s",t[i].sex);</p><p> scanf("%d",&t[i].age);</p><p><b> } </b></p><p> return n; /*返回記錄條數(shù)*/ </p><p><b>
54、 } </b></p><p> /*顯示記錄,參數(shù)為記錄數(shù)組和記錄條數(shù)*/ </p><p> void list(STUDENTS t[],int n) </p><p><b> { </b></p><p><b> int i; </b></p><
55、;p> clrscr(); </p><p> printf("\n\n*******************STUDENTS******************\n"); </p><p> printf("no name sex age\n"); </p>
56、<p> printf("------------------------------------------------\n"); </p><p> for(i=0;i<n;i++) </p><p> printf("%-20s%-20s%-10s%-10d\n",t[i].no,t[i].name,t[i].sex,t
57、[i].age); </p><p> if((i+1)%10==0) /*判斷輸出是否達(dá)到10條記錄*/ </p><p><b> { </b></p><p> printf("Press any key continue...\n"); /*提示信息*/ </p><p> get
58、ch(); /*壓任意鍵繼續(xù)*/ </p><p><b> } </b></p><p> printf("************************end*******************\n"); </p><p><b> } </b></p><p>
59、<b> /*查找記錄*/ </b></p><p> void search(STUDENTS t[],int n) </p><p><b> { </b></p><p> char s[20]; /*保存待查找姓名字符串*/ </p><p> int i; /*保存查找到
60、結(jié)點(diǎn)的序號*/ </p><p> clrscr(); /*清屏*/ </p><p> printf("please search name\n"); </p><p> scanf("%s",s); /*輸入待查找姓名*/ </p><p> i=find(t,n,s); /*調(diào)用fin
61、d函數(shù),得到一個整數(shù)*/ </p><p> if(i>n-1) /*如果整數(shù)i值大于n-1,說明沒找到*/ </p><p> printf("not found\n"); </p><p><b> else </b></p><p> print(t[i]); /*找到,調(diào)用顯
62、示函數(shù)顯示記錄*/ </p><p><b> } </b></p><p> /*顯示指定的一條記錄*/ </p><p> void print(STUDENTS temp) </p><p><b> { </b></p><p> clrscr(); <
63、;/p><p> printf("\n\n********************************************\n"); </p><p> printf("no name sex age\n"); </p><p> printf(&qu
64、ot;------------------------------------------------\n"); </p><p> printf("%-20s%-20s%-10s%-10d\n",temp.no,temp.name,temp.sex,temp.age); </p><p> printf("*******************
65、***end***********************\n"); </p><p><b> } </b></p><p> /*查找函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)以及姓名s */ </p><p> int find(STUDENTS t[],int n,char *s) </p><p><
66、b> { </b></p><p><b> int i; </b></p><p> for(i=0;i<n;i++)/*從第一條記錄開始,直到最后一條*/ </p><p><b> { </b></p><p> if(strcmp(s,t[i].name)=
67、=0)/*記錄中的姓名和待比較的姓名是否相等*/ </p><p> return i; /*相等,則返回該記錄的下標(biāo)號,程序提前結(jié)結(jié)束*/ </p><p><b> } </b></p><p> return i; /*返回i值*/ </p><p><b> } </b><
68、;/p><p> /*刪除函數(shù),參數(shù)為記錄數(shù)組和記錄條數(shù)*/ </p><p> int delete(STUDENTS t[],int n) </p><p><b> { </b></p><p> char s[20]; /*要刪除記錄的姓名*/ </p><p> int ch=0
69、; </p><p><b> int i,j; </b></p><p> printf("please deleted name\n"); /*提示信息*/ </p><p> scanf("%s",s);/*輸入姓名*/ </p><p> i=find(t,n,s)
70、; /*調(diào)用find函數(shù)*/ </p><p> for(;i<n;i++) </p><p><b> { </b></p><p> strcpy(t[i].name,t[i+1].name); </p><p> strcpy(t[i].no,t[i+1].no); </p><p
71、> strcpy(t[i].sex,t[i+1].sex); </p><p> t[i].age=t[i+1].age; </p><p><b> } </b></p><p><b> n--; </b></p><p> return n; /*
72、返回記錄數(shù)*/ </p><p><b> } </b></p><p> /*插入記錄函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/ </p><p> int add(STUDENTS t[],int n)/*插入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/ </p><p><b> { </b></
73、p><p> STUDENTS temp; /*新插入記錄信息*/ </p><p><b> int i,j; </b></p><p> char s[20]; /*確定插入在哪個記錄之前*/ </p><p> printf("please input record\n"); </p
74、><p> printf("************************************************\n"); </p><p> printf("no name sex age\n"); </p><p> printf("
75、--------------------------------------------------\n"); </p><p> scanf("%s%s%s%d",temp.no,temp.name,temp.sex,&temp.age); /*輸入插入信息*/ </p><p> printf("-------------------
76、-----------------------------\n"); </p><p> printf("please input locate name \n"); </p><p> scanf("%s",s); /*輸入插入位置的姓名*/ </p><p> i=find(t,n,s); /*調(diào)用fin
77、d,確定插入位置*/ </p><p> for(j=n-1;j>=i;j--) /*從最后一個結(jié)點(diǎn)開始向后移動一條*/ </p><p><b> { </b></p><p> strcpy(t[j+1].no,t[j].no); /*當(dāng)前記錄的學(xué)號拷貝到后一條*/ </p><p> strcpy
78、(t[j+1].name,t[j].name); /*當(dāng)前記錄的姓名拷貝到后一條*/ </p><p> strcpy(t[j+1].sex,t[j].sex); /*當(dāng)前記錄的性別拷貝到后一條*/ </p><p> t[j+1].age=t[j].age; /*當(dāng)前記錄的年齡拷貝到后一條*/ </p><p><b> } </b>&
79、lt;/p><p> strcpy(t[i].no,temp.no); /*將新插入記錄的學(xué)號拷貝到第i個位置*/ </p><p> strcpy(t[i].name,temp.name); /*將新插入記錄的姓名拷貝到第i個位置*/ </p><p> strcpy(t[i].sex,temp.sex); /*將新插入記錄的性別拷貝到第i個位置*/ </
80、p><p> t[i].age = temp.age; /*將新插入記錄的年齡拷貝到第i個位置*/ </p><p> n++; /*記錄數(shù)加1*/ </p><p> return n; /*返回記錄數(shù)*/ </p><p><b> } </b></p><p> /*保存函數(shù),參數(shù)
81、為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/ </p><p> void save(STUDENTS t[],int n) </p><p><b> { </b></p><p><b> int i; </b></p><p> FILE *fp; /*指向文件的指針*/ </p><
82、;p> if((fp=fopen("record.txt","wb"))==NULL) /*打開文件,并判斷打開是否正常*/ </p><p><b> { </b></p><p> printf("can not open file\n");/*沒打開*/ </p><p
83、> exit(1); /*退出*/ </p><p><b> } </b></p><p> printf("\nSaving file\n"); /*輸出提示信息*/ </p><p> fprintf(fp,"%d",n); /*將記錄數(shù)寫入文件*/ </p><
84、;p> fprintf(fp,"\r\n"); /*將換行符號寫入文件*/ </p><p> for(i=0;i<n;i++) </p><p><b> { </b></p><p> fprintf(fp,"%-20s%-30s%-10s%-10d",t[i].no,t[i].
85、name,t[i].sex,t[i].age);/*格式寫入記錄*/ </p><p> fprintf(fp,"\r\n"); /*將換行符號寫入文件*/ </p><p><b> } </b></p><p> fclose(fp);/*關(guān)閉文件*/ </p><p> printf(&
86、quot;****save success***\n"); /*顯示保存成功*/ </p><p><b> } </b></p><p> /*讀入函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組*/ </p><p> int load(STUDENTS t[]) </p><p><b> { </b>
87、;</p><p><b> int i,n; </b></p><p> FILE *fp; /*指向文件的指針*/ </p><p> if((fp=fopen("record.txt","rb"))==NULL)/*打開文件*/ </p><p><b>
88、{ </b></p><p> printf("can not open file\n"); /*不能打開*/ </p><p> exit(1); /*退出*/ </p><p><b> } </b></p><p> fscanf(fp,"%d",&a
89、mp;n); /*讀入記錄數(shù)*/ </p><p> for(i=0;i<n;i++) </p><p> fscanf(fp,"%20s%30s%10s%10d",t[i].no,t[i].name,t[i].sex,&t[i].age); /*按格式讀入記錄*/ </p><p> fclose(fp); /*關(guān)閉文件*
90、/ </p><p> printf("You have success read data from file!!!\n"); /*顯示保存成功*/ </p><p> return n; /*返回記錄數(shù)*/ </p><p><b> } </b></p><p> /*按序號顯示記錄函數(shù)
91、*/ </p><p> void display(STUDENTS t[]) </p><p><b> { </b></p><p> int id,n; </p><p> FILE *fp; /*指向文件的指針*/ </p><p> if((fp=fopen("rec
92、ord.txt","rb"))==NULL) /*打開文件*/ </p><p><b> { </b></p><p> printf("can not open file\n"); /*不能打開文件*/ </p><p> exit(1); /*退出*/ </p>&l
93、t;p><b> } </b></p><p> printf("Enter order number...\n"); /*顯示信息*/ </p><p> scanf("%d",&id); /*輸入序號*/ </p><p> fscanf(fp,"%d",&
94、amp;n); /*從文件讀入記錄數(shù)*/ </p><p> if(id>=0&&id<n) /*判斷序號是否在記錄范圍內(nèi)*/ </p><p><b> { </b></p><p> fseek(fp,(id-1)*sizeof(STUDENTS),1); /*移動文件指針到該記錄位置*/ </p&g
95、t;<p> print(t[id]); /*調(diào)用輸出函數(shù)顯示該記錄*/ </p><p> printf("\r\n"); </p><p><b> } </b></p><p><b> else </b></p><p> printf("
96、;no %d number record!!!\n ",id); /*如果序號不合理顯示信息*/ </p><p> fclose(fp); /*關(guān)閉文件*/ </p><p><b> } </b></p><p> /*排序函數(shù),參數(shù)為結(jié)構(gòu)體數(shù)組和記錄數(shù)*/ </p><p> void sort
97、(STUDENTS t[],int n) </p><p><b> { </b></p><p> int i,j,flag; </p><p> STUDENTS temp; /*臨時變量做交換數(shù)據(jù)用*/ </p><p> for(i=0;i<n;i++) </p><p>&
98、lt;b> { </b></p><p> flag=0; /*設(shè)標(biāo)志判斷是否發(fā)生過交換*/ </p><p> for(j=0;j<n-1;j++) </p><p> if((strcmp(t[j].name,t[j+1].name))>0) /*比較大小*/ </p><p><b>
99、 { </b></p><p> temp=t[j]; t[j]=t[j+1];t[j+1]=temp;</p><p><b> flag++; </b></p><p><b> } </b></p><p> if(flag==0)break; /*如果標(biāo)志為0,說明沒有
100、發(fā)生過交換循環(huán)結(jié)束*/ </p><p><b> } </b></p><p> printf("sort sucess!!!\n"); /*顯示排序成功*/ </p><p><b> } </b></p><p><b> /*復(fù)制文件*/ </b&
101、gt;</p><p> void copy() </p><p><b> { </b></p><p> char outfile[20]; /*目標(biāo)文件名*/ </p><p><b> int i,n; </b></p><p> STUDENTS temp
102、[M]; /*定義臨時變量*/ </p><p> FILE *sfp,*tfp; /*定義指向文件的指針*/ </p><p> clrscr();/*清屏*/ </p><p> if((sfp=fopen("record.txt","rb"))==NULL) /*打開記錄文件*/ </p><
103、p><b> { </b></p><p> printf("can not open file\n"); /*顯示不能打開文件信息*/ </p><p> exit(1); /*退出*/ </p><p><b> } </b></p><p> printf(
104、"Enter outfile name,for example c:\\f1\\te.txt:\n"); /*提示信息*/ </p><p> scanf("%s",outfile); /*輸入目標(biāo)文件名*/ </p><p> if((tfp=fopen(outfile,"wb"))==NULL) /*打開目標(biāo)文件*/ &l
105、t;/p><p><b> { </b></p><p> printf("can not open file\n"); /*顯示不能打開文件信息*/ </p><p> exit(1); /*退出*/ </p><p><b> } </b></p><
106、p> fscanf(sfp,"%d",&n); /*讀出文件記錄數(shù)*/ </p><p> fprintf(tfp,"%d",n);/*寫入目標(biāo)文件數(shù)*/ </p><p> fprintf(tfp,"\r\n"); /*寫入換行符*/ </p><p> for(i=0;i<n
107、;i++) </p><p><b> { </b></p><p> fscanf(sfp,"%20s%30s%10s%10d\n",temp[i].no,temp[i].name,temp[i].sex,&temp[i].age); /*讀入記錄*/ </p><p> fprintf(tfp,"
108、%-20s%-30s%-10s%-10d\n",temp[i].no,temp[i].name,temp[i].sex,temp[i].age); /*寫入記錄*/ </p><p> fprintf(tfp,"\r\n"); /*寫入換行符*/ </p><p><b> } </b></p><p> f
109、close(sfp); /*關(guān)閉源文件*/ </p><p> fclose(tfp); /*關(guān)閉目標(biāo)文件*/ </p><p> printf("you have success copy file!!!\n"); /*顯示復(fù)制成功*/ </p><p><b> }</b></p><p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生信息管理系統(tǒng)c語言課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)報(bào)告----學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)c語言課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)報(bào)告--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計(jì)報(bào)告---學(xué)生信息管理系統(tǒng)
- c++課程設(shè)計(jì)——學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)報(bào)告--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計(jì)報(bào)告---學(xué)生信息管理系統(tǒng)
- c課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計(jì)-學(xué)生信息管理系統(tǒng)設(shè)計(jì)報(bào)告
- c語言課程設(shè)計(jì)-學(xué)生信息管理系統(tǒng)設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計(jì)--- 學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計(jì)--學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計(jì)——學(xué)生信息管理系統(tǒng)
- c語言課程設(shè)計(jì)---學(xué)生信息管理系統(tǒng)
- 學(xué)生信息管理系統(tǒng)-c語言課程設(shè)計(jì)
- c++--學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
- c sharp 學(xué)生信息管理系統(tǒng)課程設(shè)計(jì)
評論
0/150
提交評論