




已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課 程 設(shè) 計(jì) 報(bào) 告課程名稱 c語(yǔ)言課程設(shè)計(jì) 課題名稱 學(xué)生成績(jī)管理 專 業(yè) 電氣自動(dòng)化 班 級(jí) 學(xué) 號(hào) 姓 名 指導(dǎo)教師 2011年 6 月 20 日 目錄封面1目錄2任務(wù)書(shū)3學(xué)生成績(jī)管理系統(tǒng)需求分析,概要設(shè)計(jì),詳細(xì)設(shè)計(jì)5程序調(diào)試8程序界面8附件(程序代碼)10詳細(xì)設(shè)計(jì)24運(yùn)行與調(diào)試,參考文獻(xiàn)24源程序25參考文獻(xiàn)37總結(jié)心得37評(píng)分表37 湖南工程學(xué)院課 程 設(shè) 計(jì) 任 務(wù) 書(shū)課程名稱 c課程設(shè)計(jì) 課 題 學(xué)生成績(jī)管理 專業(yè)班級(jí) 電氣1085 學(xué)生姓名 學(xué) 號(hào) 05 指導(dǎo)老師 審 批 任務(wù)書(shū)下達(dá)日期 2011 年 6 月 20 日任務(wù)完成日期 2011 年 6 月 日湖南工程學(xué)院課 程 設(shè) 計(jì) 任 務(wù) 書(shū)一設(shè)計(jì)內(nèi)容:設(shè)計(jì)與開(kāi)發(fā)一個(gè)學(xué)生成績(jī)管理系統(tǒng),對(duì)學(xué)生的學(xué)號(hào)、姓名、課程成績(jī)、總分、平均成績(jī)等信息進(jìn)行管理、主要功能以下基本功能模塊圖1所示。主程序初始化輸入顯示刪除查找添加計(jì)算排序退出圖1 基本功能模塊 二設(shè)計(jì)要求:1)設(shè)計(jì)正確,方案合理。2)界面友好,使用方便。3)程序精煉,結(jié)構(gòu)清晰。4)設(shè)計(jì)報(bào)告5000字以上,含程序設(shè)計(jì)說(shuō)明、系統(tǒng)的功能框圖、流程圖、源程序清單等。5)實(shí)際操作過(guò)程中遇到的問(wèn)題及解決方法:設(shè)計(jì)總結(jié)及心得體會(huì).6)上機(jī)演示。成績(jī)?cè)u(píng)定:指導(dǎo)老師負(fù)責(zé)驗(yàn)收程序的運(yùn)行結(jié)果,并結(jié)合學(xué)生的工作態(tài)度、實(shí)際動(dòng)手能力、創(chuàng)新精神和設(shè)計(jì)報(bào)告等進(jìn)行綜合考評(píng),并按優(yōu)秀、良好、中等、及格和不及格五個(gè)等級(jí)給出每位同學(xué)的課程設(shè)計(jì)成績(jī)。具體考核標(biāo)準(zhǔn)包含以下幾個(gè)部分: 平時(shí)出勤 (占10%) 系統(tǒng)需求分析、功能設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)及程序總體結(jié)構(gòu)合理與否(占10%) 程序能否完整、準(zhǔn)確地運(yùn)行,個(gè)人能否獨(dú)立、熟練地調(diào)試程序(占40%) 設(shè)計(jì)報(bào)告(占30%)注意:不得抄襲他人的報(bào)告(或給他人抄襲),一旦發(fā)現(xiàn),成績(jī)?yōu)榱惴帧?獨(dú)立完成情況(占10%)。 運(yùn)行所設(shè)計(jì)的系統(tǒng)。三、進(jìn)度安排第十九周 星期一 14:3018:00 星期二14:3018:00 星期三14:3018:00附:課程設(shè)計(jì)報(bào)告裝訂順序:封面、任務(wù)書(shū)、目錄、正文、評(píng)分、附件(a4大小的圖紙及程序清單)。 正文的格式:一級(jí)標(biāo)題用3號(hào)黑體,二級(jí)標(biāo)題用四號(hào)宋體加粗,正文用小四號(hào)宋體;行距為22。正文的內(nèi)容:一、課題的主要功能;二、課題的功能模塊的劃分(要求畫(huà)出模塊圖);三、主要功能的實(shí)現(xiàn)(至少要有一個(gè)主要模塊的流程圖);四、程序調(diào)試;五、總結(jié);六、附件(所有程序的原代碼,要求對(duì)程序?qū)懗霰匾淖⑨專?。正文總字?jǐn)?shù)要求在5000字以上(不含程序原代碼)。成績(jī)管理系統(tǒng)1)需求分析:學(xué)生信息是存放在文件中的,所以應(yīng)該提供文件的輸入,輸出,插入,刪除等操作,在程序中需要瀏覽學(xué)生的信息,應(yīng)提供顯示,查找,排序等操作,另外還應(yīng)提供鍵盤(pán)式選擇菜單提供選擇功能。2)概要設(shè)計(jì):根據(jù)上面的需求分析,可以將這個(gè)系統(tǒng)大致劃分為以下模塊:輸入模塊,修改模塊,刪除模塊,查找模塊,顯示模塊。1.錄入學(xué)生信息2顯示學(xué)生信息3查找學(xué)生信息5修改學(xué)生信息4刪除學(xué)生信息6統(tǒng)計(jì)學(xué)生信息7保存學(xué)生信息0退出系統(tǒng)功能選擇1按學(xué)號(hào)查找0按姓名查找 1按學(xué)號(hào)修改0按姓名修改3)詳細(xì)設(shè)計(jì):1輸入初始的學(xué)生信息:其中包括學(xué)生的姓名、學(xué)號(hào),性別以及學(xué)生的語(yǔ)文、數(shù)學(xué)、英語(yǔ)和計(jì)算機(jī)等相關(guān)信息。先打印出已有學(xué)生信息disp(l)輸入學(xué)號(hào)格式化學(xué)號(hào)并并檢驗(yàn)若輸入學(xué)號(hào)為0則退出系統(tǒng)若學(xué)號(hào)被占用,重新輸入未占用的學(xué)號(hào)2. 查詢模塊:找到就輸出此學(xué)生全部信息包括3科的成績(jī)。查詢按學(xué)號(hào)查詢按成績(jī)查詢運(yùn)行顯示成績(jī)3. 插入模塊:其中通過(guò)學(xué)號(hào)的大小來(lái)比較的,并且以此來(lái)排序。保存插入點(diǎn)之前的學(xué)號(hào),并輸入學(xué)號(hào)查詢?cè)搶W(xué)號(hào)是否存在插入之前的節(jié)點(diǎn)4. 輸出學(xué)生的信息以及成績(jī):通過(guò)學(xué)生的姓名來(lái)查看學(xué)生的3科成績(jī),同時(shí)也可以分別通過(guò)caverage()、maverage()、eaverage()和comaverage()來(lái)輸出3科成績(jī)的平均分?jǐn)?shù),最高和最低分?jǐn)?shù)。5. 退出系統(tǒng):可用一個(gè)函數(shù)exit()來(lái)實(shí)現(xiàn),首先將信息保存到文件中,釋放動(dòng)態(tài)創(chuàng)建的內(nèi)存空間,再退出此程序。4)程序調(diào)試:?jiǎn)栴}一:學(xué)生初始信息模塊: 其中包括學(xué)生的姓名、學(xué)號(hào)、3門(mén)科目的成績(jī)等相關(guān)信息;當(dāng)正確輸入存在的學(xué)生號(hào),系統(tǒng)進(jìn)行判斷時(shí),提示不存在此學(xué)生。解決辦法及步驟:1. 一個(gè)個(gè)輸出所有學(xué)生的學(xué)號(hào),檢查文件中是否有學(xué)生,發(fā)現(xiàn)有。2. 既然有此學(xué)生,那么檢查循環(huán)判斷是否有此學(xué)生的語(yǔ)句,發(fā)現(xiàn)沒(méi)有錯(cuò)。3. 輸出用于循環(huán)檢查語(yǔ)句中的學(xué)生信息,發(fā)現(xiàn)亂碼。4. 仔細(xì)分析亂碼的原因,最后發(fā)現(xiàn)是變量的類(lèi)型錯(cuò)誤,錯(cuò)將學(xué)生類(lèi)型的結(jié)構(gòu)體指針變量定義為了其它類(lèi)型的指針變量。問(wèn)題二:查詢模塊:找到就輸出此學(xué)生全部信息包括學(xué)生的3科成績(jī)。當(dāng)正確輸入查找信息時(shí),系統(tǒng)卻不能夠得到所要查找的學(xué)生信息以及學(xué)生的3科成績(jī)。解決辦法及步驟:1. 檢查所編寫(xiě)的程序代碼是否完全正確,若不是,則改之,然后再繼續(xù)正確輸入查找信息看能否得到所要查找的學(xué)生信息一級(jí)學(xué)生的3科成績(jī)。2. 檢查當(dāng)我們?cè)谳斎氩檎倚畔r(shí),看是否我們輸入的信息有誤,若是這樣,我們應(yīng)當(dāng)仔細(xì)輸入查找信息。5)程序界面:1.初始界面2.輸入學(xué)生信息節(jié)點(diǎn)界面:3. 刪除節(jié)點(diǎn)界面;4. 查找節(jié)點(diǎn)界面:1)運(yùn)行與調(diào)試:調(diào)試:將圖中/*/去掉在/*計(jì)算總分和均值*/上加上個(gè)運(yùn)行:2)源程序 /*xuesheng.c*/*頭文件(.h)*/#include stdio.h /*i/o函數(shù)*/#include stdlib.h /*其它說(shuō)明*/#include string.h /*字符串函數(shù)*/#include conio.h /*屏幕操作函數(shù)*/#include mem.h /*內(nèi)存操作函數(shù)*/#include ctype.h /*字符操作函數(shù)*/#include alloc.h /*動(dòng)態(tài)地址分配函數(shù)*/#define n 3 /*定義常數(shù)*/typedef struct z1 /*定義數(shù)據(jù)結(jié)構(gòu)*/ char no11; char name15; int scoren; float sum; float average; int order; struct z1 *next; student;/*以下是函數(shù)原型*/student *init(); /*初始化函數(shù)*/student *create(); /*創(chuàng)建鏈表*/student *delete(student *h); /*刪除記錄*/void print(student *h); /* 顯示所有記錄*/void search(student *h); /*查找*/void save(student *h); /*保存*/student *load(); /*讀入記錄*/void computer(student *h); /*計(jì)算總分和均分*/student *insert(student *h); /*插入記錄*/void append(); /*追加記錄*/student *sort(student *h); /*排序*/int menu_select(); /*菜單函數(shù)*/*主函數(shù)開(kāi)始*/main() int i; student *head; /*鏈表定義頭指針*/ head=init(); /*初始化鏈表*/ clrscr(); /*清屏*/ for(;) /*無(wú)限循環(huán)*/ switch(menu_select() /*調(diào)用主菜單函數(shù),返回值整數(shù)作開(kāi)關(guān)語(yǔ)句的條件*/ /*值不同,執(zhí)行的函數(shù)不同,break 不能省略*/ case 0:head=init();break; /*執(zhí)行初始化*/ case 1:head=create();break; /*創(chuàng)建鏈表*/ case 2:head=delete(head);break; /*刪除記錄*/ case 3:print(head);break; /*顯示全部記錄*/ case 4:search(head);break; /*查找記錄*/ case 5:save(head);break; /*保存文件*/ case 6:head=load(); break; /*讀文件*/ case 7:computer(head);break; /*計(jì)算總分和均分*/ case 8:head=insert(head); break; /*插入記錄*/ case 9:head=sort(head);break; /*排序*/ case 10:append();break; /*追加記錄*/ case 11:exit(0); /*如菜單返回值為14程序結(jié)束*/ /*菜單函數(shù),返回值為整數(shù)*/menu_select() char *menu=*menu*, /*定義菜單字符串?dāng)?shù)組*/ 0. init list, /*初始化*/ 1. enter list, /*輸入記錄*/ 2. delete a record from list, /*從表中刪除記錄*/ 3. print list , /*顯示單鏈表中所有記錄*/ 4. search record on name, /*按照姓名查找記錄*/ 5. save the file, /*將單鏈表中記錄保存到文件中*/ 6. load the file, /*從文件中讀入記錄*/ 7. compute the score, /*計(jì)算所有學(xué)生的總分和均分*/ 8. insert record to list , /*插入記錄到表中*/ 9. sort to make new file, /*排序*/ 10. append record to file, /*追加記錄到文件中*/ 11. quit; /*退出*/ char s3; /*以字符形式保存選擇號(hào)*/ int c,i; /*定義整形變量*/ gotoxy(1,25); /*移動(dòng)光標(biāo)*/ printf(press any key enter menu.n); /*壓任一鍵進(jìn)入主菜單*/ getch(); /*輸入任一鍵*/ clrscr(); /*清屏幕*/ gotoxy(1,1); /*移動(dòng)光標(biāo)*/ textcolor(yellow); /*設(shè)置文本顯示顏色為黃色*/ textbackground(blue); /*設(shè)置背景顏色為藍(lán)色*/ gotoxy(10,2); /*移動(dòng)光標(biāo)*/ putch(0xc9); /*輸出左上角邊框*/ for(i=1;i44;i+) putch(0xcd); /*輸出上邊框水平線*/ putch(0xbb); /*輸出右上角邊框 */ for(i=3;i20;i+) gotoxy(10,i);putch(0xba); /*輸出左垂直線*/ gotoxy(54,i);putch(0xba); /*輸出右垂直線*/ gotoxy(10,20);putch(0xc8); /*輸出左上角邊框*/ for(i=1;i44;i+) putch(0xcd); /*輸出下邊框水平線*/ putch(0xbc); /*輸出右下角邊框*/ window(11,3,53,19); /* 制作顯示菜單的窗口,大小根據(jù)菜單條數(shù)設(shè)計(jì)*/ clrscr(); /*清屏*/ for(i=0;i13;i+) /*輸出主菜單數(shù)組*/ gotoxy(10,i+1); cprintf(%s,menui); textbackground(black); /*設(shè)置背景顏色為黑色*/ window(1,1,80,25); /*恢復(fù)原窗口大小*/ gotoxy(10,21); /*移動(dòng)光標(biāo)*/ do printf(n enter you choice(014):); /*在菜單窗口外顯示提示信息*/ scanf(%s,s); /*輸入選擇項(xiàng)*/ c=atoi(s); /*將輸入的字符串轉(zhuǎn)化為整形數(shù)*/ while(c11); /*選擇項(xiàng)不在014之間重輸*/ return c; /*返回選擇項(xiàng),主程序根據(jù)該數(shù)調(diào)用相應(yīng)的函數(shù)*/student *init() return null;/*創(chuàng)建鏈表*/student *create() int i; int s; student *h=null,*info; /* student指向結(jié)構(gòu)體的指針*/ for(;) info=(student *)malloc(sizeof(student); /*申請(qǐng)空間*/ if(!info) /*如果指針info為空*/ printf(nout of memory); /*輸出內(nèi)存溢出*/ return null; /*返回空指針*/ inputs(enter no:,info-no,11); /*輸入學(xué)號(hào)并校驗(yàn)*/ if(info-no0=) break; /*如果學(xué)號(hào)首字符為則結(jié)束輸入*/ inputs(enter name:,info-name,15); /*輸入姓名,并進(jìn)行校驗(yàn)*/ printf(please input %d score n,n); /*提示開(kāi)始輸入成績(jī)*/ s=0; /*計(jì)算每個(gè)學(xué)生的總分,初值為0*/*n門(mén)課程循環(huán)n次*/*將總分保存*/*求出平均值*/for(i=0;iscorei); /*輸入成績(jī)*/ if(info-scorei100|info-scoreiscorei100|info-scoreiscorei; /*累加各門(mén)課程成績(jī)*/ info-sum=s; /*將總分保存*/ info-average=(float)s/n; /*求出平均值*/ info-order=0; /*未排序前此值為0*/ info-next=h; /*將頭結(jié)點(diǎn)做為新輸入結(jié)點(diǎn)的后繼結(jié)點(diǎn)*/ h=info; /*新輸入結(jié)點(diǎn)為新的頭結(jié)點(diǎn)*/ return(h); /*返回頭指針*/*輸入字符串,并進(jìn)行長(zhǎng)度驗(yàn)證*/inputs(char *prompt, char *s, int count) char p255; do printf(prompt); /*顯示提示信息*/ scanf(%s,p); /*輸入字符串*/ if(strlen(p)count)printf(n too long! n); /*進(jìn)行長(zhǎng)度校驗(yàn),超過(guò)count值重輸入*/ while(strlen(p)count); strcpy(s,p); /*將輸入的字符串拷貝到字符串s中*/*輸出鏈表中結(jié)點(diǎn)信息*/void print(student *h) int i=0; /* 統(tǒng)計(jì)記錄條數(shù)*/ student *p; /*移動(dòng)指針*/ clrscr(); /*清屏*/ p=h; /*初值為頭指針*/ printf(nnn*student*n); printf(|rec|no | name | sc1| sc2| sc3| sum | ave |order|n); printf(|-|-|-|-|-|-|-|-|-|n); while(p!=null) i+; printf(|%3d |%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |n, i, p-no,p-name,p-score0,p-score1,p-score2,p-sum,p-average,p-order); p=p-next; printf(*end*n);/*刪除記錄*/student *delete(student *h) student *p,*q; /*p為查找到要?jiǎng)h除的結(jié)點(diǎn)指針,q為其前驅(qū)指針*/ char s11; /*存放學(xué)號(hào)*/ clrscr(); /*清屏*/ printf(please deleted non); /*顯示提示信息*/ scanf(%s,s); /*輸入要?jiǎng)h除記錄的學(xué)號(hào)*/ q=p=h; /*給q和p賦初值頭指針*/*當(dāng)記錄的學(xué)號(hào)不是要找的,或指針不為空時(shí)*/ q=p; /*將p指針值賦給q作為p的前驅(qū)指針*/ p=p-next; /*將p指針指向下一條記錄*/ if(p=null) /*如果p為空,說(shuō)明鏈表中沒(méi)有該結(jié)點(diǎn)*/ printf(nlist no %s studentn,s); else /*p不為空,顯示找到的記錄信息*/ printf(*have found*n); printf(|no | name | sc1| sc2| sc3| sum | ave |order|n); printf(|-|-|-|-|-|-|-|-|n); printf(|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |n, p-no, p-name,p-score0,p-score1,p-score2,p-sum, p-average,p-order); printf(*end*n); getch(); /*壓任一鍵后,開(kāi)始刪除*/ if(p=h) /*如果p=h,說(shuō)明被刪結(jié)點(diǎn)是頭結(jié)點(diǎn)*/ h=p-next; /*修改頭指針指向下一條記錄*/ else q-next=p-next; /*不是頭指針,將p的后繼結(jié)點(diǎn)作為q的后繼結(jié)點(diǎn)*/ free(p); /*釋放p所指結(jié)點(diǎn)空間*/ printf(n have deleted no %s studentn,s); printf(dont forget saven);/*提示刪除后不要忘記保存文件*/ return(h); /*返回頭指針*/*查找記錄*/void search(student *h) student *p; /* 移動(dòng)指針*/ char s15; /*存放姓名的字符數(shù)組*/ clrscr(); /*清屏幕*/ printf(please enter name for searchn); scanf(%s,s); /*輸入姓名*/ p=h; /*將頭指針賦給p*/ while(strcmp(p-name,s)&p!=null) /*當(dāng)記錄的姓名不是要找的,或指針不為空時(shí)*/ p=p-next; /*移動(dòng)指針,指向下一結(jié)點(diǎn)*/ if(p=null) /*如果指針為空*/ printf(nlist no %s studentn,s); /*顯示沒(méi)有該學(xué)生*/ else /*顯示找到的記錄信息*/ printf(nn*havefound*n); printf(|no | name | sc1| sc2| sc3| sum | ave |order|n); printf(|-|-|-|-|-|-|-|-|n); printf(|%-10s|%-15s|%4d|%4d|%4d| %4.2f | %4.2f | %3d |n, p-no,p-name,p-score0,p-score1,p-score2,p-sum,p-average,p-order); printf(*end*n); /*插入記錄*/student *insert(student *h) student *p,*q,*info; /*p指向插入位置,q是其前驅(qū),info指新插入記錄*/ char s11; /*保存插入點(diǎn)位置的學(xué)號(hào)*/ int s1,i; printf(please enter location before the non); scanf(%s,s); /*輸入插入點(diǎn)學(xué)號(hào)*/ printf(nplease new recordn); /*提示輸入記錄信息*/ info=(student *)malloc(sizeof(student); /*申請(qǐng)空間*/ if(!info) printf(nout of memory); /*如沒(méi)有申請(qǐng)到,內(nèi)存溢出*/ return null; /*返回空指針*/ inputs(enter no:,info-no,11); /*輸入學(xué)號(hào)*/ inputs(enter name:,info-name,15); /*輸入姓名*/ printf(please input %d score n,n); /*提示輸入分?jǐn)?shù)*/ s1=0; /*保存新記錄的總分,初值為0*/ for(i=0;iscorei); if(info-scorei100|info-scoreiscorei100|info-scoreiscorei; /*計(jì)算總分*/ info-sum=s1; /*將總分存入新記錄中*/ info-average=(float)s1/n; /*計(jì)算均分*/ info-order=0; /*名次賦值0*/ info-next=null; /*設(shè)后繼指針為空*/ p=h; /*將指針賦值給p*/ q=h; /*將指針賦值給q*/ while(strcmp(p-no,s)&p!=null) /*查找插入位置*/ q=p; /*保存指針p,作為下一個(gè)p的前驅(qū)*/ p=p-next; /*將指針p后移*/ if(p=null) /*如果p指針為空,說(shuō)明沒(méi)有指定結(jié)點(diǎn)*/ if(p=h) /*同時(shí)p等于h,說(shuō)明鏈表為空*/ h=info; /*新記錄則為頭結(jié)點(diǎn)*/ else q-next=info; /*p為空,但p不等于h,將新結(jié)點(diǎn)插在表尾*/ else if(p=h) /*p不為空,則找到了指定結(jié)點(diǎn)*/ info-next=p; /*如果p等于h,則新結(jié)點(diǎn)插入在第一個(gè)結(jié)點(diǎn)之前*/ h=info; /*新結(jié)點(diǎn)為新的頭結(jié)點(diǎn)*/ else info-next=p; /*不是頭結(jié)點(diǎn),則是中間某個(gè)位置,新結(jié)點(diǎn)的后繼為p*/ q-next=info; /*新結(jié)點(diǎn)作為q的后繼結(jié)點(diǎn)*/ printf(n -have inserted %s student-n,info-name); printf(-dont forget save-n); /*提示存盤(pán)*/ return(h); /*返回頭指針*/*保存數(shù)據(jù)到文件*/void save(student *h) file *fp; /*定義指向文件的指針*/ student *p; /* 定義移動(dòng)指針*/ char outfile10; /*保存輸出文件名*/ printf(enter outfile name,for example c:f1te.txt:n); /*提示文件名格式信息*/ scanf(%s,outfile); if(fp=fopen(outfile,wb)=null) /*為輸出打開(kāi)一個(gè)二進(jìn)制文件,如沒(méi)有則建立*/ printf(can not open filen); exit(1); printf(nsaving file.n); /*打開(kāi)文件,提示正在保存*/ p=h; /*移動(dòng)指針從頭指針開(kāi)始*/ while(p!=null) /*如p不為空*/ fwrite(p,sizeof(student),1,fp);/*寫(xiě)入一條記錄*/ p=p-next; /*指針后移*/ fclose(fp); /*關(guān)閉文件*/ printf(-save success!-n); /*顯示保存成功*/* 從文件讀數(shù)據(jù)*/student *load() student *p,*q,*h=null; /*定義記錄指針變量*/ file *fp; /* 定義指向文件的指針*/ char infile10; /*保存文件名*/ printf(enter infile name,for example c:f1te.txt:n); scanf(%s,infile); /*輸入文件名*/ if(fp=fopen(infile,rb)=null) /*打開(kāi)一個(gè)二進(jìn)制文件,為讀方式*/ printf(can not open filen); /*如不能打開(kāi),則結(jié)束程序*/ exit(1); printf(n -loading file!-n); p=(student *)malloc(sizeof(student); /*申請(qǐng)空間*/ if(!p) printf(out of memory!n); /*如沒(méi)有申請(qǐng)到,則內(nèi)存溢出*/ return h; /*返回空頭指針*/ h=p; /*申請(qǐng)到空間,將其作為頭指針*/ while(!feof(fp) /*循環(huán)讀數(shù)據(jù)直到文件尾結(jié)束*/ if(1!=fread(p,sizeof(student),1,fp) break; /*如果沒(méi)讀到數(shù)據(jù),跳出循環(huán)*/ p-next=(student *)malloc(sizeof(student); /*為下一個(gè)結(jié)點(diǎn)申請(qǐng)空間*/ if(!p-next) printf(out of memory!n); /*如沒(méi)有申請(qǐng)到,則內(nèi)存溢出*/ return h; q=p; /*保存當(dāng)前結(jié)點(diǎn)的指針,作為下一結(jié)點(diǎn)的前驅(qū)*/ p=p-next; /*指針后移,新讀入數(shù)據(jù)鏈到當(dāng)前表尾*/ q-next=null; /*最后一個(gè)結(jié)點(diǎn)的后繼指針為空*/ fclose(fp); /*關(guān)閉文件*/ printf(-you have success read data from file!-n); return h; /*返回頭指針*/*追加記錄到文件*/void append() file *fp; /*定義指向文件的指針*/ student *info; /*新記錄指針*/ int s1,i; char infile10; /*保存文件名*/ printf(nplease new recordn); info=(student *)malloc(sizeof(student); /*申請(qǐng)空間*/ if(!info) printf(nout of memory); /*沒(méi)有申請(qǐng)到,內(nèi)存溢出本函數(shù)結(jié)束*/ return ; inputs(enter no:,info-no,11); /*調(diào)用inputs輸入學(xué)號(hào)*/ inputs(enter name:,info-name,15); /*調(diào)用inputs輸入姓名*/ printf(please input %d score n,n); /*提示輸入成績(jī)*/ s1=0; for(i=0;iscorei); /*輸入成績(jī)*/ if(info-scorei100|info-scoreiscorei100|info-scoreiscorei; /*求總分*/ info-sum=s1; /*保存總分*/ info-average=(float)s1/n; /*求均分*/ info-order=0; /*名次初始值為0*/ info-next=null; /*將新記錄后繼指針賦值為空*/ printf(enter infile name,for example c:f1te.txt:n); scanf(%s,infile); /*輸入文件名*/ if(fp=fopen(infile,ab)=null) /*向二進(jìn)制文件尾增加數(shù)據(jù)方式打開(kāi)文件*/ printf(can not open filen); /*顯示不能打開(kāi)*/ exit(1); /*退出程序*/ printf(n -appending record!-n); if(1!=fwrite(info,sizeof(student),1,fp) /*寫(xiě)文件操作*/ printf(-file write error!-n); return; /*返回*/ printf(-append sucess!-n); fclose(fp); /*關(guān)閉文件*/*排序*/student *sort(student *h) int i=0; /*保存名次*/ studen
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 對(duì)于民俗文化的社會(huì)功能分析與試題及答案
- 2025年農(nóng)林、畜牧用金屬工具項(xiàng)目申請(qǐng)報(bào)告
- 行政管理學(xué)語(yǔ)文能力提升的系統(tǒng)方法與實(shí)踐試題及答案
- 房屋抵押貸款合同變更通知協(xié)議
- 話劇《茶館》舞臺(tái)人物形象塑造的形神研究
- 長(zhǎng)沙跳馬特色小鎮(zhèn)花卉苗木與旅游產(chǎn)業(yè)融合發(fā)展路徑研究
- 護(hù)理教育與研究成果試題及答案
- 2025年大學(xué)語(yǔ)文考試文化素養(yǎng)提升試題及答案
- 主管護(hù)師在職知識(shí)更新試題及答案
- 高端全職太太生活補(bǔ)償與個(gè)人成長(zhǎng)協(xié)議
- 初中英語(yǔ)單元整體教學(xué)講座課件
- 精油按摩手法精油按摩九部位紓解壓力課件
- 考研考博-英語(yǔ)-四川美術(shù)學(xué)院考試押題三合一+答案詳解篇
- DB37-T 3848-2019 地?zé)岬V泉水綠色礦山建設(shè)規(guī)范-(高清版)
- 酒店早餐自助菜單
- 鯉科魚(yú)類(lèi)八亞科檢索表(新)
- 冀教英語(yǔ)六年級(jí)下冊(cè)作文范文
- 10x2000對(duì)稱式三輥卷板機(jī)設(shè)計(jì)機(jī)械畢業(yè)設(shè)計(jì)論文
- 講課資料全文解讀《公務(wù)員回避規(guī)定》PPT課件
- GB∕T 8334-2022 液化石油氣鋼瓶定期檢驗(yàn)與評(píng)定
- 律師事務(wù)所勞動(dòng)合同范本2(律師助理和實(shí)習(xí)律師參照適用
評(píng)論
0/150
提交評(píng)論