版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 一、需求分析:本程序設(shè)計(jì)的名稱是學(xué)生成績(jī)信息記錄簿的設(shè)計(jì),設(shè)計(jì)內(nèi)容是設(shè)計(jì)一個(gè)學(xué)生成績(jī)記錄簿系統(tǒng),該系統(tǒng)要求對(duì)學(xué)生成績(jī)信息進(jìn)行管理和維護(hù)。任務(wù)和要求:編制一個(gè)C語(yǔ)言成績(jī)記錄簿,每個(gè)學(xué)生信息包括:學(xué)號(hào)、姓名、C語(yǔ)言成績(jī)。具體功能:(1)創(chuàng)建信息鏈表并以磁盤文件保存;(2)讀取磁盤文件并顯示輸出所有學(xué)生的成績(jī);(3)按學(xué)號(hào)或姓名查詢成績(jī);(4)添加成績(jī)記錄;(5)修改指定姓名或?qū)W號(hào)的學(xué)生的成績(jī)并可存盤;(6)顯示輸出60
2、分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息(可選項(xiàng))。此編程用于對(duì)學(xué)生的餓C語(yǔ)言成績(jī)進(jìn)行管理。</p><p><b> 二、算法設(shè)計(jì):</b></p><p><b> 流程圖:</b></p><p><b> 、</b></p><p> 重要
3、的數(shù)據(jù)結(jié)構(gòu):(1)有主菜單menu();的編寫,用printf();將相應(yīng)的選項(xiàng)輸出在屏幕上,便于操作者進(jìn)行選擇,menu();中包括學(xué)生成績(jī)信息記錄簿設(shè)計(jì),主菜單,1、輸入所有學(xué)生的學(xué)號(hào)、姓名、C語(yǔ)言分?jǐn)?shù)2、顯示所有學(xué)生的信息3、按學(xué)號(hào)或姓名查詢成績(jī)4、添加成績(jī)記錄5、修改指定姓名或?qū)W號(hào)的學(xué)生的成績(jī)并可存盤6、輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息7、結(jié)束;(2)子函數(shù):主要有creat();input(
4、);search()</p><p> Insert();modi()以及sort();(3)主函數(shù):main();主要使用了switch()語(yǔ)句。</p><p> 主要算法思想:運(yùn)行程序后,會(huì)顯示主菜單,根據(jù)主菜單中的提示選擇相應(yīng)的數(shù)字鍵,會(huì)實(shí)現(xiàn)相應(yīng)的功能。主要使用了界面的制作、使用了相應(yīng)的子函數(shù),同時(shí)使用了動(dòng)態(tài)鏈表的創(chuàng)建、文件的讀寫等。本程序主要有三大設(shè)計(jì)模塊,第一模塊是主菜單m
5、enu();的編寫,其作用是便于操作者進(jìn)行相應(yīng)問題的選擇,具有提示信息的作用。第二模塊是相應(yīng)子函數(shù)的編寫,第一個(gè)子函數(shù)creat();主要思想是運(yùn)用了鏈表的動(dòng)態(tài)創(chuàng)建,使用了malloc函數(shù),將每位學(xué)生的信息動(dòng)態(tài)傳遞下去,并使用了文件的讀取操作,使用了文件中w+的打開模式,讀取磁盤文件并顯示所有學(xué)生的信息。主要作用是在顯示屏及磁盤文件stut.txt中顯示每個(gè)學(xué)生的信息。</p><p> 第二個(gè)子函數(shù)input
6、();主要使用了文件中r+的打開模式,打開已有文件stut.txt,并在顯示屏中顯示所有學(xué)生的信息</p><p> 第三個(gè)子函數(shù)search();主要實(shí)現(xiàn)了當(dāng)輸入一個(gè)學(xué)生的姓名或?qū)W號(hào)時(shí),顯示屏中會(huì)顯示該學(xué)生的所有信息,該子函數(shù)實(shí)現(xiàn)了子函數(shù)的調(diào)用,即子函數(shù)調(diào)用子函數(shù),調(diào)用了name();和num();兩個(gè)子函數(shù),當(dāng)輸入學(xué)生的姓名或?qū)W號(hào)與文件中的name或num相等時(shí),即strcmp(xs.name,name)=
7、=0或xs.num==num時(shí)輸出該生的所有信息包括學(xué)號(hào)、姓名以及C語(yǔ)言的成績(jī)。</p><p> 第四個(gè)子函數(shù)insert();即插入一個(gè)學(xué)生的信息并可以讀取到磁盤文件中,主要運(yùn)用了結(jié)構(gòu)體數(shù)組及文件的讀取操作。</p><p> 第五個(gè)子函數(shù)modi();實(shí)現(xiàn)修改指定姓名或?qū)W號(hào)的學(xué)生的成績(jī)并可存盤,該子函數(shù)主要使用了結(jié)構(gòu)體數(shù)組及文件的打開操作,打開已有文件找到要修改的學(xué)生的成績(jī)并修改
8、該生的成績(jī),修改后進(jìn)行存盤操作。</p><p> 第六個(gè)子函數(shù)sort();主要是篩選顯示輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息,將篩選后的結(jié)果顯示在屏幕上,在該子函數(shù)中主要使用了動(dòng)態(tài)鏈表、結(jié)構(gòu)體數(shù)組即文件的打開操作;利用鏈表使學(xué)生的信息動(dòng)態(tài)傳遞下去,使用結(jié)構(gòu)體數(shù)組將各個(gè)分?jǐn)?shù)段的學(xué)生的信息存儲(chǔ)下來,利用文件的r+打開模式將文件打開并通過篩選,輸出各個(gè)分?jǐn)?shù)段的學(xué)生。最后一個(gè)模塊即主
9、函數(shù)main();主要使用了switch語(yǔ)句對(duì)各個(gè)子函數(shù)進(jìn)行操作選擇,主要實(shí)現(xiàn)了與主菜單的對(duì)應(yīng),選擇case中相應(yīng)的數(shù)字鍵,會(huì)運(yùn)行相應(yīng)的子函數(shù)并實(shí)現(xiàn)主菜單中相應(yīng)的要求。</p><p> 3、實(shí)現(xiàn)注釋:該設(shè)計(jì)的主要任務(wù)是編制一個(gè)C語(yǔ)言成績(jī)記錄簿,每個(gè)學(xué)生信息包括:學(xué)號(hào)、姓名、C語(yǔ)言成績(jī)。具體要求:(1)創(chuàng)建信息鏈表并以磁盤文件保存;(2)讀取磁盤文件并顯示輸出所有學(xué)生的成績(jī);(3)按學(xué)號(hào)或姓名查詢成績(jī);(4)添
10、加成績(jī)記錄;(5)修改指定姓名或?qū)W號(hào)的學(xué)生的成績(jī)并可存盤;(6)顯示輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息。本程序主要運(yùn)用了六個(gè)子函數(shù)來實(shí)現(xiàn)相應(yīng)的要求;對(duì)于第一個(gè)要求:創(chuàng)建信息鏈表并以磁盤文件保存,實(shí)現(xiàn)程度為:當(dāng)根據(jù)提示顯示數(shù)字鍵1時(shí),會(huì)提示你輸入學(xué)生數(shù),輸入學(xué)生數(shù)后,按下Enter鍵,會(huì)提示操作者輸入學(xué)生的學(xué)號(hào)、姓名以及C語(yǔ)言的成績(jī)。同時(shí)在會(huì)形成一個(gè)stut.txt文件夾,文件中中即磁盤文件中讀入了所有學(xué)
11、生的學(xué)號(hào)、姓名及C語(yǔ)言的成績(jī);第二個(gè)讀取磁盤文件并顯示輸出所有學(xué)生的成績(jī),實(shí)現(xiàn)程度為:當(dāng)執(zhí)行了第一步操作后,再執(zhí)行第二部就會(huì)將磁盤文件中的內(nèi)容再次顯示在顯示屏上;第三個(gè)按學(xué)號(hào)或姓名查詢成績(jī),實(shí)現(xiàn)程度為:當(dāng)選擇數(shù)字鍵3時(shí),會(huì)出現(xiàn)一個(gè)提示,提示你選擇姓名還是學(xué)號(hào)查找,選擇后,會(huì)在顯示屏上出現(xiàn)該生的信息;第四個(gè)添加成績(jī)記錄;實(shí)現(xiàn)程度為:當(dāng)</p><p> 4、算法設(shè)計(jì)中的一些新的想法:該算法的應(yīng)用是對(duì)學(xué)生C語(yǔ)言成績(jī)
12、進(jìn)行管理和維護(hù),是一個(gè)C語(yǔ)言程序記錄本,算法中不足之處有不能使用二級(jí)菜單,插入學(xué)生的學(xué)號(hào)或姓名時(shí)沒能按成績(jī)進(jìn)行排序一下,還可以對(duì)學(xué)生的成績(jī)進(jìn)行排序一下。</p><p><b> 三、用戶手冊(cè)</b></p><p> 課程設(shè)計(jì)的使用說明:輸入數(shù)據(jù)時(shí),要根據(jù)顯示屏上的格式要求,使得整個(gè)界面變得好看些,還有根據(jù)提示選擇相應(yīng)的數(shù)字鍵,輸入完畢后按Enter鍵會(huì)執(zhí)行下一
13、步操作,操作者可根據(jù)提示進(jìn)行操作,整個(gè)操作簡(jiǎn)單易行。有些操作是要有上一步的操作基礎(chǔ)才能進(jìn)行,例如必須有學(xué)生記錄才能查找,所以操作者在操作時(shí)要認(rèn)清每個(gè)數(shù)字鍵相應(yīng)子函數(shù)的功能。</p><p><b> 四、調(diào)試及測(cè)試</b></p><p> 調(diào)試過程中主要遇到了主菜單制作的界面掌握不好,頭文件的少寫或多寫,鏈表的動(dòng)態(tài)創(chuàng)建掌握不熟及子函數(shù)中少寫參數(shù)、文件的讀寫具體流
14、程掌握模糊、子函數(shù)和主函數(shù)不能很好的相應(yīng)結(jié)合、類型的定義出錯(cuò)或少定義、指針用法不熟、前后子函數(shù)不能很好的相互利用等;解決方法:查閱參考文獻(xiàn)、詢問同學(xué),讓同學(xué)幫忙改一下自己改不出來的錯(cuò)誤、及詢問老師;測(cè)試數(shù)據(jù)集:</p><p><b> 現(xiàn)在的界面:</b></p><p> 本課程的設(shè)計(jì)經(jīng)驗(yàn)和體會(huì):經(jīng)驗(yàn):學(xué)習(xí)不僅僅只學(xué)好學(xué)校發(fā)的教材書,還有好多教材書上沒有的知識(shí)
15、也需要掌握,C語(yǔ)言是一門很大的課程,有許多知識(shí)點(diǎn)需要掌握,在學(xué)習(xí)中不懂的去讀書管借書,在設(shè)計(jì)中不會(huì)的函數(shù)或知識(shí)可以查閱參考書或詢問老師,課程設(shè)計(jì)的大程序需要有一個(gè)很清晰的思路并對(duì)各個(gè)知識(shí)點(diǎn)掌握很熟悉,能夠?qū)⒏鱾€(gè)知識(shí)點(diǎn)有效地連接在一起,并能很好的運(yùn)用在實(shí)際中。體會(huì):我覺得C語(yǔ)言學(xué)的不扎實(shí),各個(gè)知識(shí)點(diǎn)的漏洞太多,會(huì)寫一些小程序并可以運(yùn)行但是遇到大一點(diǎn)的程序,就不能將各個(gè)知識(shí)點(diǎn)很好的加以利用就需要有扎實(shí)的C語(yǔ)言基礎(chǔ),用到的知識(shí)很全面,在這次C
16、語(yǔ)言課程設(shè)計(jì)中我學(xué)到了自己的C語(yǔ)言學(xué)的不是很全面,各個(gè)知識(shí)點(diǎn)的不能很好的連接在一起,需要進(jìn)一步加強(qiáng)。</p><p> 五、小結(jié):在本次課程設(shè)計(jì)中,我的設(shè)計(jì)題目是學(xué)生成績(jī)信息記錄簿的設(shè)計(jì)。任務(wù)和要求為:編制一個(gè)C語(yǔ)言成績(jī)記錄簿,每個(gè)學(xué)生信息包括:學(xué)號(hào)、姓名、C語(yǔ)言成績(jī)。具體功能:(1)創(chuàng)建信息鏈表并以磁盤文件保存;(2)讀取磁盤文件并顯示輸出所有學(xué)生的成績(jī);(3)按學(xué)號(hào)或姓名查詢成績(jī);(4)添加成績(jī)記錄;(5)
17、修改指定姓名或?qū)W號(hào)的學(xué)生的成績(jī)并可存盤;(6)顯示輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息(可選項(xiàng))。此編程用于對(duì)學(xué)生的餓C語(yǔ)言成績(jī)進(jìn)行管理。收獲:在設(shè)計(jì)過程中,我學(xué)會(huì)了菜單的制作、鏈表的創(chuàng)建、鏈表的插入、查找、文件的讀寫及子函數(shù)的正確運(yùn)用等等并可以很好的將這些知識(shí)點(diǎn)連接在了一起,并發(fā)現(xiàn)了自己C語(yǔ)言學(xué)習(xí)的不足:掌握的知識(shí)點(diǎn)漏洞太多,許多函數(shù)不能正確的運(yùn)用,看的書太少僅限于書本上的知識(shí)和老師發(fā)的講義,不能很好的
18、將各個(gè)知識(shí)點(diǎn)連接在一起。本次課程設(shè)計(jì),使得自己第一次將理論很好的聯(lián)系實(shí)際,寫的程序能運(yùn)用到實(shí)際中,而且我學(xué)會(huì)了將參考書上的知識(shí)很好的運(yùn)用在自己的系統(tǒng)中,不會(huì)的知識(shí)點(diǎn)也可以向老師或同學(xué)進(jìn)行詢問。在調(diào)試過程中,可以進(jìn)行一個(gè)子函數(shù)一個(gè)子函數(shù)的調(diào)試,并改錯(cuò)。在設(shè)計(jì)過程中,往</p><p><b> 六、參考文獻(xiàn):</b></p><p> [1] 黃明等編著《C語(yǔ)言課程
19、設(shè)計(jì)》北京:電子工業(yè)出版社</p><p> [2] 郭翠英編著《C語(yǔ)言課程設(shè)計(jì)案例精編》北京:中國(guó)水利水電出版社</p><p> [3] 寧正元《數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言)》 南京:東南大學(xué)出版社。2000年6月第1版</p><p> [4] 嚴(yán)蔚敏等 《數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言版)》 北京:清華大學(xué)出版社,1997年4月第1版</p><p>
20、 [5] 譚浩強(qiáng)編著《C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第3版) 》北京:清華大學(xué)出版社</p><p> [6] 譚浩強(qiáng)編著《C程序設(shè)計(jì)(第3版) 》北京:清華大學(xué)出版社</p><p><b> 附錄:</b></p><p> 源程序清單:#include<stdio.h></p><p> #inc
21、lude<stdlib.h></p><p> #include<malloc.h></p><p> #include<string.h></p><p> #define N 100</p><p> typedef struct student</p><p><
22、b> {</b></p><p><b> long num;</b></p><p> char name[4];</p><p> float score;</p><p> struct student *next;</p><p><b> }stu
23、;</b></p><p><b> FILE *fp;</b></p><p> void menu()//在這里進(jìn)行主菜單的調(diào)用</p><p><b> {</b></p><p> printf("\n");</p><p>
24、 printf("\n\t\t\t*******************************\n");</p><p> printf("\n\t\t\t* 學(xué)生成績(jī)信息記錄簿設(shè)計(jì) *\n");</p><p> printf("\n\t\t\t*******************************\n\n&quo
25、t;);</p><p> printf("\t\t\t-----------主菜單------------\n\n");</p><p> printf("\t\t1、\t輸入所有學(xué)生的學(xué)號(hào)、姓名、C語(yǔ)言分?jǐn)?shù)\n\n");</p><p> printf("\t\t2、\t顯示所有學(xué)生的信息\n\n"
26、;);</p><p> printf("\t\t3、\t按學(xué)號(hào)或姓名查詢成績(jī)\n\n");</p><p> printf("\t\t4、\t 添加成績(jī)記錄\n\n");</p><p> printf("\t\t5、\t修改指定姓名或?qū)W號(hào)的學(xué)生的成績(jī)并可存盤\n\n");</p>&
27、lt;p> printf("\t\t6、\t輸出60分以下、60~79、80~89、90分以上各分?jǐn)?shù)段的學(xué)生信息\n\n");</p><p> printf("\t\t7、\t==================結(jié)束===================");</p><p><b> }</b></p>
28、;<p> struct student *creat()//創(chuàng)建學(xué)生信息鏈表,將學(xué)生信息動(dòng)態(tài)傳遞下去</p><p><b> {</b></p><p> struct student *head,*p,*q;</p><p> int i=0,n;</p><p> printf("
29、;\n-----請(qǐng)輸入學(xué)生數(shù):");</p><p> scanf("%d",&n);</p><p> printf("\n\t\t\t 學(xué)生的信息如下:\n");</p><p> printf("\n\t\t\t學(xué)號(hào)======姓名=======分?jǐn)?shù)\n");</
30、p><p><b> do </b></p><p><b> {</b></p><p> p=(struct student *)malloc(sizeof(struct student));//申請(qǐng)內(nèi)存</p><p> printf("\t\t\t");</p&
31、gt;<p> scanf("%ld%s%f",&p->num,&p->name,&p->score);//鏈表的傳遞</p><p><b> i++;</b></p><p><b> if(i==1)</b></p><p><b
32、> head=p;</b></p><p><b> else</b></p><p> q->next=p;</p><p><b> q=p;</b></p><p><b> }</b></p><p> wh
33、ile(i<n);</p><p> q->next=NULL;</p><p> return head;</p><p><b> }</b></p><p> void print(struct student *head)//在這里使用文件中的w+打開模式將學(xué)生信息讀入磁盤文件</p&g
34、t;<p><b> {</b></p><p> struct student *p=head;</p><p> fp=fopen("stut.txt","w");</p><p> while(p!=NULL)</p><p><b> {&
35、lt;/b></p><p> fprintf(fp,"%d %s %f\n",p->num,p->name,p->score);</p><p> p=p->next;</p><p><b> }</b></p><p> fclose(fp);//關(guān)閉文件&
36、lt;/p><p><b> }</b></p><p> void input()//具體功能是將文件中的內(nèi)容讀取到顯示屏上,主要使用了文件中的r+打開模式</p><p><b> {</b></p><p><b> FILE *fp;</b></p>
37、<p><b> stu *p;</b></p><p> if((fp=fopen("stut.txt","r"))==NULL)</p><p><b> {</b></p><p> printf("File open error!\n")
38、;</p><p><b> exit(0);</b></p><p><b> }</b></p><p> p=(stu *)malloc(sizeof(stu));</p><p> while((fscanf(fp,"%ld%s%f",&p->num
39、,&p->name,&p->score))!=EOF)</p><p> printf(" %ld %s %f\n",p->num,p->name,p->score);</p><p> fclose(fp);</p><p><b> }</b></p>
40、;<p> //查找,實(shí)現(xiàn)了按學(xué)號(hào)或姓名查找,里面采用了子函數(shù)調(diào)用子函數(shù)的方法實(shí)現(xiàn)了該功能</p><p> void name()</p><p><b> {</b></p><p> FILE *fp=NULL;</p><p> stu *xs=NULL,*temp=NULL,*pr=NU
41、LL;</p><p> char name[10];</p><p> int flag=1;</p><p> printf("\n輸入要查學(xué)生的姓名: ");</p><p> scanf("%s",name);</p><p> if((fp=fopen(&qu
42、ot;stut.txt","r"))==NULL)</p><p><b> {</b></p><p> printf("can't open file!\n");</p><p><b> exit(0);</b></p><p>
43、<b> }</b></p><p><b> temp=xs;</b></p><p><b> do </b></p><p><b> {</b></p><p> pr=(stu *)malloc(sizeof(stu));
44、 </p><p> if(pr==NULL)</p><p> printf("申請(qǐng)內(nèi)存失敗!"),exit(0);</p><p> if(xs==NULL)</p><p><b> xs=pr;</b></p><p><b> else</b
45、></p><p><b> {</b></p><p><b> temp=xs;</b></p><p> while(temp->next!=NULL)</p><p> temp=temp->next;</p><p> temp->
46、next=pr;</p><p><b> }</b></p><p><b> temp=pr;</b></p><p> temp->num=0;</p><p> fscanf(fp,"%d%s%f",&temp->num,temp->na
47、me,&temp->score);</p><p> temp->next=NULL;</p><p> }while(pr->num!=0);</p><p><b> pr=xs; </b></p><p> while(pr!=NULL) </p><p&g
48、t;<b> {</b></p><p> if(strcmp(xs->name,name)==0)//當(dāng)找到該生時(shí)輸出該生的信息</p><p><b> {</b></p><p> printf("\n\t\t該學(xué)生的信息如下:\n"); </p><p>
49、 printf("\t");</p><p> printf("%10s %6d %6.2f\n",xs->name,xs->num,xs->score);</p><p><b> flag=0;</b></p><p><b> break;</b>&l
50、t;/p><p><b> }</b></p><p> pr=pr->next;</p><p><b> }</b></p><p><b> if(flag)</b></p><p> printf("沒有找到該生的信息!&q
51、uot;);</p><p> fclose(fp);</p><p><b> }</b></p><p> void num()//按學(xué)號(hào)查找</p><p><b> {</b></p><p> FILE *fp=NULL;</p><p
52、> stu *xs=NULL,*temp=NULL,*pr=NULL; </p><p><b> long num;</b></p><p> int flag=1;</p><p> printf("\n輸入要查學(xué)生的學(xué)號(hào): ");</p><p> scanf("%
53、ld",&num); </p><p> if((fp=fopen("stut.txt","r"))==NULL)</p><p><b> {</b></p><p> printf("can't open file!\n");</p>
54、<p><b> exit(0);</b></p><p><b> }</b></p><p><b> temp=xs;</b></p><p><b> do </b></p><p><b> {</
55、b></p><p> pr=(stu *)malloc(sizeof(stu)); </p><p> if(pr==NULL)</p><p> printf("申請(qǐng)內(nèi)存失??!"),exit(0);</p><p> if(xs==NULL)</p><p><b>
56、; xs=pr;</b></p><p><b> else</b></p><p><b> {</b></p><p><b> temp=xs;</b></p><p> while(temp->next!=NULL)</p>&
57、lt;p> temp=temp->next;</p><p> temp->next=pr;</p><p><b> }</b></p><p><b> temp=pr;</b></p><p> temp->num=0;</p><p>
58、; fscanf(fp,"%d%s%f",&temp->num,temp->name,&temp->score);</p><p> temp->next=NULL;</p><p> }while(pr->num!=0);</p><p><b> pr=xs;</b>
59、</p><p> while(pr!=NULL)</p><p><b> {</b></p><p> if(pr->num==num)</p><p><b> {</b></p><p> printf("\n\n====學(xué)生的信息如下:\n
60、"); </p><p> printf("-----");</p><p> printf("%10s %6d %6.2f\n",pr->name,pr->num,pr->score);</p><p> flag=0; </p><p><b>
61、 }</b></p><p> pr=pr->next;</p><p><b> }</b></p><p><b> if(flag)</b></p><p> printf("沒有找到該生的信息!"); </p><p>
62、 fclose(fp);</p><p><b> }</b></p><p> void search()//主函數(shù)中的子函數(shù)調(diào)用了兩個(gè)子函數(shù),使用switch語(yǔ)句實(shí)現(xiàn)</p><p><b> {</b></p><p> int chioce;</p><p>
63、 system("cls");</p><p> printf("\t\t1-----姓名查詢信息-----\n");</p><p> printf("\n\t\t2-----學(xué)號(hào)查詢信息-----\n");</p><p> printf("\n請(qǐng)選擇以何種方式進(jìn)行查詢:")
64、;</p><p> scanf("%d",&chioce);</p><p> switch(chioce) </p><p><b> {</b></p><p> case 1:name(); </p><p><b> break;
65、</b></p><p> case 2:num(); </p><p><b> break;</b></p><p><b> default:</b></p><p> printf("選擇錯(cuò)誤!\n");</p><p>&
66、lt;b> }</b></p><p><b> }</b></p><p><b> //插入學(xué)生的信息</b></p><p> void insert()</p><p><b> { </b></p><p><
67、;b> int n=0;</b></p><p><b> int i,j;</b></p><p> struct student s,sx[N];</p><p> printf("\n請(qǐng)輸入插入的學(xué)生的姓名:"); </p><p> scanf("
68、%s",s.name);</p><p> printf("\n學(xué)生的學(xué)號(hào):"); </p><p> scanf("%ld",&s.num);</p><p> printf("\n學(xué)生的成績(jī):"); </p&g
69、t;<p> scanf("%f",&s.score);</p><p> if((fp=fopen("stut.txt","r+"))==NULL) </p><p><b> {</b></p><p> printf("can't
70、open file!\n");</p><p><b> exit(0);</b></p><p><b> }</b></p><p> while((fscanf(fp,"%ld%s%f",&sx[n].num,sx[n].name,&sx[n].score))!=E
71、OF)</p><p><b> {</b></p><p><b> n++;</b></p><p><b> }</b></p><p> fclose(fp);</p><p> for(i=0;i<n;i++)</p>
72、;<p><b> {</b></p><p> if(s.score<sx[i].score)</p><p><b> break; </b></p><p><b> }</b></p><p> for(j=n;j>=i;j--)&l
73、t;/p><p> {sx[j+1]=sx[j];}</p><p><b> sx[i]=s;</b></p><p> if((fp=fopen("stut.txt","w"))==NULL) </p><p> {printf("不能建立文件!\n")
74、;exit(0);}</p><p><b> else</b></p><p> {for(i=0;i<=n;i++)</p><p> {fprintf(fp,"%d %s %f\n",sx[i].num,sx[i].name,sx[i].score);} </p><p> fcl
75、ose(fp);}</p><p><b> }</b></p><p> void modi(stu *head)</p><p><b> {</b></p><p> stu *xs=head;</p><p> char name[10];</p>
76、;<p> int flag=1;</p><p> system("cls");</p><p> printf("\n輸入要修改學(xué)生的姓名: ");</p><p> scanf("%s",name);</p><p> fp=fopen("st
77、ut.txt","a+");</p><p> while(xs!=NULL)</p><p> {if(strcmp(xs->name,name)==0)/*判斷輸入要修改的姓名是否存在*/</p><p><b> { </b></p><p> fprintf(fp,&
78、quot;\n====修改前學(xué)生的信息如下:\n");</p><p> fprintf(fp,"\n%10s %6s %6s\n","姓名","學(xué)號(hào)","C語(yǔ)言的成績(jī)");</p><p> fprintf(fp,"\n%10s %6d %6.2f \n",xs->na
79、me,xs->num,xs->score);</p><p> printf("\n請(qǐng)輸入該生的C語(yǔ)言成績(jī):");</p><p> scanf("%f",&xs->score);</p><p><b> flag=0;</b></p><p>&
80、lt;b> break;</b></p><p> }xs=xs->next;</p><p><b> }</b></p><p> fprintf(fp,"\n====修改后的學(xué)生的信息如下:\n");</p><p> fprintf(fp,"\n%1
81、0s %6s %6s\n","姓名","學(xué)號(hào)","C語(yǔ)言的成績(jī)");</p><p> fprintf(fp,"\n%10s %6d %6.2f\n",xs->name,xs->num,xs->score);</p><p><b> if(flag)</b>
82、;</p><p> printf("\n學(xué)生不存在,修改失敗!!"); </p><p> fclose(fp);</p><p> getchar();</p><p><b> }</b></p><p> void sort(stu *head)</p&
83、gt;<p><b> {</b></p><p> stu *p=head;</p><p> printf("60分以下:\n");</p><p> while(p!=NULL)</p><p><b> {</b></p><p
84、> if(p->score<60)</p><p> printf("%d\t%s\t%f\n",p->num,p->name,p->score);</p><p> p=p->next;</p><p><b> }</b></p><p>&l
85、t;b> p=head;</b></p><p> printf("60~79分:\n");</p><p> while(p!=NULL)</p><p><b> {</b></p><p> if(p->score>60 && p->
86、score<79)</p><p> printf("%d\t%s\t%f\n",p->num,p->name,p->score);</p><p> p=p->next;</p><p><b> }</b></p><p><b> p=head;
87、</b></p><p> printf("80~89:\n");</p><p> while(p!=NULL)</p><p><b> {</b></p><p> if(p->score>80 && p->score<89)</
88、p><p> printf("%d\t%s\t%f\n",p->num,p->name,p->score);</p><p> p=p->next;</p><p><b> }</b></p><p><b> p=head;</b></p&
89、gt;<p> printf("90分以上:\n");</p><p> while(p!=NULL)</p><p><b> {</b></p><p> if(p->score>90)</p><p> printf("%d\t%s\t%f\n&qu
90、ot;,p->num,p->name,p->score);</p><p> p=p->next;</p><p><b> }</b></p><p> fclose(fp);</p><p> getchar();</p><p><b> }&l
91、t;/b></p><p> void main()</p><p><b> {</b></p><p> int chioce;</p><p> stu *head;</p><p><b> menu();</b></p><p&
92、gt; printf("\n\n-----請(qǐng)選擇序號(hào):");</p><p> scanf("%d",&chioce);</p><p> while(chioce!=0)</p><p><b> {</b></p><p> switch(chioce)&l
93、t;/p><p><b> {</b></p><p><b> case 1: </b></p><p> head=creat();</p><p> print(head);</p><p><b> break;</b></p>
94、<p> case 2:input();</p><p><b> break;</b></p><p> case 3:search();</p><p><b> menu();</b></p><p><b> break;</b></p&
95、gt;<p> case 4:insert();</p><p><b> break;</b></p><p> case 5:modi(head);</p><p><b> menu();</b></p><p><b> break;</b>&
96、lt;/p><p> case 6:sort(head);</p><p><b> break;</b></p><p> case 7:exit(0);</p><p><b> }</b></p><p> printf("\n請(qǐng)繼續(xù)輸入你想選擇的:&q
97、uot;);</p><p> scanf("%d",&chioce);</p><p><b> }</b></p><p><b> }</b></p><p> 測(cè)試數(shù)據(jù)集:選擇序號(hào)1、請(qǐng)輸入學(xué)生數(shù)2學(xué)生的信息:1001 張銳 78 1002
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生成績(jī)記錄簿
- c學(xué)生成績(jī)記錄簿課程設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)成績(jī)記錄簿
- c語(yǔ)言課程設(shè)計(jì)成績(jī)記錄簿
- 課程設(shè)計(jì)---學(xué)生成績(jī)記錄簿設(shè)計(jì)
- 學(xué)生籍貫信息記錄簿(c語(yǔ)言課程設(shè)計(jì)報(bào)告)
- c語(yǔ)言課程設(shè)計(jì)--學(xué)生籍貫信息記錄簿設(shè)計(jì)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告---學(xué)生籍貫信息記錄簿系統(tǒng)
- 成績(jī)記錄簿課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告成績(jī)記錄簿
- c語(yǔ)言課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告成績(jī)記錄簿
- 課程設(shè)計(jì)報(bào)告-成績(jī)記錄簿
- 成績(jī)記錄簿課程設(shè)計(jì)
- 課程設(shè)計(jì)--- 成績(jī)記錄簿
- 學(xué)生籍貫信息記錄簿課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告---學(xué)生籍貫信息記錄簿
- c語(yǔ)言課程設(shè)計(jì)學(xué)生成績(jī)統(tǒng)計(jì)設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)報(bào)告-學(xué)生成績(jī)管理系統(tǒng)
- c語(yǔ)言課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)管理系統(tǒng)
- 基于c++的學(xué)生籍貫信息記錄簿設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論