版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、北京航空航天大學(xué) 北海學(xué)院實(shí)驗(yàn)報(bào)告學(xué)院:軟件與信息工程學(xué)院專業(yè)班級(jí):軟件工程 3 班課程:學(xué)生成績(jī)管理系統(tǒng)程序設(shè)計(jì)實(shí)踐指導(dǎo)老師:學(xué)號(hào)及姓名:曹寧n3090120301 劉朝卿n3090120303 劉惠n3090120304 張姝n3090120305 陳鋒一實(shí)驗(yàn)?zāi)康模?通過課程設(shè)計(jì),提高自己動(dòng)手的能力,讓實(shí)踐和理論相結(jié)合,進(jìn)一步鞏固 語言程序設(shè)計(jì)的課程內(nèi)容,掌握工程軟件的基本設(shè)計(jì)方法。 學(xué)會(huì)將知識(shí)應(yīng)用于實(shí)踐,提高分析和解決問題的能力,加強(qiáng)綜合能力。 為以后計(jì)算機(jī)的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ),有利于畢業(yè)時(shí)做畢業(yè)設(shè)計(jì)。二實(shí)驗(yàn)內(nèi)容: 運(yùn)用結(jié)構(gòu)體和共用體,以及單鏈表和循環(huán)的知識(shí)點(diǎn)編輯一個(gè)簡(jiǎn)單的學(xué)生基本 信息
2、管理系統(tǒng),使之能夠完成學(xué)生基本信息的錄入、修改、插入、查詢、排 序、打印、退出操作。 執(zhí)行編譯操作,并根據(jù)提示調(diào)試此程序,排除所有的錯(cuò)誤和警告。直到編譯 成功為止。 執(zhí)行運(yùn)行操作,直到全部程序能夠運(yùn)行成功為止。 做完后請(qǐng)老師檢查,并能回答老師所提的相關(guān)問題。三. 需求分析:1. 該學(xué)生信息管理系統(tǒng)能夠完成基本的信息處理,如錄入,保存,讀取,輸出, 修改,刪除,添加,統(tǒng)計(jì),排序等項(xiàng)目操作。實(shí)現(xiàn)統(tǒng)計(jì)用戶的總分和平均分。 能夠查看單個(gè)用戶的各科成績(jī)2. 每個(gè)模塊的功能如下:a) 錄入模塊:可先后輸入學(xué)號(hào),姓名,高數(shù)成績(jī),計(jì)算機(jī)成績(jī),英語成 績(jī);b) 保存模塊:用于數(shù)據(jù)存盤處理,如果用戶沒有專門進(jìn)行此
3、操作且對(duì)數(shù) 據(jù)有修改,在退出時(shí)系統(tǒng)會(huì)提示用戶存盤。c) 查詢模塊:用于按編號(hào)或姓名來查詢用戶記錄d) 輸出模塊:可輸出讀取的學(xué)生信息與平均成績(jī);e) 修改模塊:用于修改用戶記錄。先按輸入的編號(hào)查詢到該記錄,然后提示用戶修改編號(hào)之外的值,但是編號(hào)不能修改;f) 刪除模塊:可刪除所讀取的學(xué)生信息;g) 插入模塊:用于插入記錄。即按編號(hào)查詢到要插入的結(jié)點(diǎn)的位置,然后在該編號(hào)之后插入一個(gè)新結(jié)點(diǎn);h) 排序模塊:利用插入排序?qū)崿F(xiàn)單鏈表的按總分字段的降序排序,格式 是從高到低;i) 統(tǒng)計(jì)模塊:用于分別統(tǒng)計(jì)該班的總分第一名和單科第一及各科不及格 的人數(shù);j) 退出模塊:可直接退出學(xué)生信息管理系統(tǒng); 該學(xué)生信
4、息管理系統(tǒng)是在 vc+的環(huán)境下運(yùn)行的。該信息系統(tǒng)要測(cè)試的數(shù)據(jù)如下: 錄入模塊:學(xué)號(hào)姓名高數(shù)英語 計(jì)算機(jī)1 xxx 99 80 992 xxx 99 89 893 xx 67 70 584 xxx 78 67 78 保存模塊:輸入文件名即可保存于該文件; 查詢模塊:輸入相應(yīng)的文件名可調(diào)出相應(yīng)的學(xué)生信息; 輸出模塊:可輸出錄入,修改,刪除,添加后的學(xué)生信息; 修改模塊: 修改信息( 3 xx 67 70 58 ) 刪除模塊:刪除信息( 2 xx 99 89 89) 添加模塊:添加信息(5 xxx 78 87 89) 排序模塊:按平均成績(jī)由小到大排列并輸出,如下:學(xué)號(hào)姓名高數(shù)英語計(jì)算機(jī) 平均成績(jī)3
5、xx 67 70 58 65.0000004 xxx 78 67 78 74.0000005 xxx 78 87 89 84.0000001 xxx 99 80 99 92.000000 統(tǒng)計(jì)模塊:統(tǒng)計(jì)該班的總分第一名和單科第一及各科不及格的人數(shù), 如下: 退出模塊:輸入 0 即可退出系統(tǒng);四 . 概要設(shè)計(jì): 主函數(shù)結(jié)構(gòu)圖:錄入刪除插入統(tǒng)計(jì)輸出修改刪除保存排序退出 模塊功能詳細(xì)說明;a. 錄入模塊: 錄入基本信息;b. 保存模塊:輸入文件名即可保存于該文件;c. 讀取模塊:輸入相應(yīng)的文件名可調(diào)出相應(yīng)的學(xué)生信息;d. 輸出模塊:可輸出錄入,修改,刪除,添加后的學(xué)生 信息;e. 修改模塊: 修改學(xué)
6、生信息;f. 刪除模塊:只要輸入要?jiǎng)h除的學(xué)生學(xué)號(hào),就可刪除該學(xué)生的有關(guān)信息,以后輸出時(shí)就不再顯示 該學(xué)生的信息;g. 添加模塊:添加學(xué)生信息;h. 統(tǒng)計(jì)(排序)模塊:按平均成績(jī)由小到大排列并輸出; i. 退出模塊:推出系統(tǒng);五、詳細(xì)設(shè)計(jì)及運(yùn)行結(jié)果流程圖, 函數(shù)之間相互調(diào)用的圖示 ,程序設(shè)計(jì)及編碼, 運(yùn)行結(jié)果。 各模塊的程序控制圖:y是錄入基本信息錄入模塊否繼續(xù)錄結(jié)束入ny保存基本信息 并輸入保存的保存模塊文件名n結(jié)束y輸入保存的文 件名,即可讀取模塊是否讀取結(jié)束n查詢模塊輸 出 所 錄 入 的 學(xué)生成績(jī)信息結(jié)束輸入英語y要修數(shù)學(xué)修改模塊是否修改改的學(xué)號(hào)c 語言平均成績(jī)結(jié)束ny輸入刪除學(xué)號(hào)刪除模
7、塊結(jié)束ny是輸入添加信息添加模塊否繼續(xù)添結(jié)束加n統(tǒng)計(jì)模塊按學(xué)生成績(jī)由低到高排列結(jié)束 函數(shù)之間相互調(diào)用的圖示:主函數(shù)調(diào)用讀取調(diào) 用 錄 入函 數(shù)調(diào) 用 修 改 函 數(shù)調(diào) 用 查 詢 函 數(shù)調(diào) 用 刪 除 函 數(shù)調(diào) 用 保 存 函 數(shù)調(diào) 用 保 存 函 數(shù)調(diào) 用 保 存 函 數(shù)結(jié)束結(jié)束結(jié)束結(jié)束模塊調(diào) 用 排 序 函 數(shù)調(diào) 用 添 加 函 數(shù)調(diào) 用 查 找 函 數(shù)調(diào)用輸出函數(shù)調(diào) 用 保 存 函 數(shù)結(jié)束結(jié)束結(jié)束、(3)各模塊流程圖開始錄入模塊head-next=null;p2=head;輸入學(xué)生成績(jī)信息p2-next=p1;p2=p1;繼 續(xù) 輸 入(y/n)?nyreturn head開始申請(qǐng)結(jié)點(diǎn)輸
8、入新增學(xué)生信息假p=headhead=null假q-next!=null真q=q-nextp-next=head-next;head-next=p;return head查詢學(xué)生信息:開始p1=head輸入學(xué)生學(xué)號(hào) xx!=p1-num&p1-next!=null真p1=p1-nextx=p1-num真輸出學(xué)生信息輸出無信息返回主菜單學(xué)生信息的刪除:開始輸入要?jiǎng)h除學(xué)生的學(xué)號(hào) numberhead=nullnp1=headnumber!=p1-num&p1-next!=nullyp2=p1;p1=p1-nextnnumber=p1-numynp1=headhead=p1-next;free(p1
9、) p2-next=p1-next;free(p1)nsum-輸出學(xué)生總?cè)藬?shù)無此學(xué)生信息 測(cè)試與行結(jié)果 a錄入模塊:b刪除模塊:c查詢模塊:d修改模塊:e插入模塊:f統(tǒng)計(jì)模塊:g排序模塊:h保存模塊:源代碼:/*對(duì)用戶的有效信息進(jìn)行輸入、排序等操作 實(shí)現(xiàn)統(tǒng)計(jì)用戶的總分和平均分能夠查看單個(gè)用戶的各科成績(jī) */#include stdio.h#include stdlib.h#include string.h#include conio.h/*標(biāo)準(zhǔn)輸入輸出函數(shù)庫(kù) */ /*標(biāo)準(zhǔn)函數(shù)庫(kù) */*字符串函數(shù)庫(kù) */*屏幕操作函數(shù)庫(kù)*/#define header1 (#) -student- () n#
10、define header4 w e l c o m e b a b y !n#define header2 | number | name |eng|math|comp | sum | ave |mici | n#define header3 |-|-|-|-|-|-|-|-|#define format | %-10s |%-15s|%4d|%4d|%4d| %4d | %.2f |%4d |n#define datap-data.num,,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.total,p-data.av
11、e,p-data.mingci#define end- nint saveflag=0;/*是否需要存盤的標(biāo)志變量 */*定義與學(xué)生有關(guān)的數(shù)據(jù)結(jié)構(gòu) */typedef struct student/*標(biāo)記為student*/char num10;char name15;int cgrade;int mgrade;int egrade;int total;float ave;int mingci;/*學(xué)號(hào) */*姓名 */ /*c語言成績(jī)*/ /*數(shù)學(xué)成績(jī) */ /*英語成績(jī) */ /*總分 */ /*平均分 */ /*名次 */;/*定義每條記錄或結(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu),標(biāo)記為: node*/ typ
12、edef struct nodestruct student data;struct node *next;/*數(shù)據(jù)域*/ /*指針域*/node,*link;/*node為node類型的結(jié)構(gòu)變量, *link為node類型的指針變量 */void menu() /*主菜單*/ system(cls);/*調(diào)用dos命令,清屏.與clrscr()功能相同 */*在文本模式中選擇新的字符顏色 */*在文本窗口中設(shè)置光標(biāo)*/printf( the students grade management system nn );printf( *_為您服務(wù)是俺的榮幸! _* nn);printf( _
13、菜單_ nnn);printf( * 1 input (_o not find this student!n);void disp(link l) /*顯示單鏈表 l中存儲(chǔ)的學(xué)生記錄,內(nèi)容為student結(jié)構(gòu)中定義的內(nèi)容*/node *p;p=l-next; /*l存儲(chǔ)的是單鏈表中頭結(jié)點(diǎn)的指針,該頭結(jié)點(diǎn)沒有存儲(chǔ)學(xué)生信息,指針域指向的后繼結(jié)點(diǎn)才 有學(xué)生信息*/if(!p) /*p=null,null在stdlib中定義為*/printf(n= not student record!n);getchar();return;printf(nn);printheader(); /*輸出表格頭部 */w
14、hile(p)/*逐條輸出鏈表中存儲(chǔ)的學(xué)生信息 */printdata(p);p=p-next;/*移動(dòng)至下一個(gè)結(jié)點(diǎn) */printf(header3);getchar();node* locate(link l,char findmess,char nameornum)node *r;if(strcmp(nameornum,num)=0) /*按學(xué)號(hào)查詢 */r=l-next;while(r)if(strcmp(r-data.num,findmess)=0) /*若找到findmess值的學(xué)號(hào)*/ return r;r=r-next;else if(strcmp(nameornum,name
15、 )=0) /*按姓名查詢*/r=l-next;while(r)if(strcmp(,findmess)=0)return r;r=r-next;/*若找到 findmess值的學(xué)生姓名*/return 0; /*若未找到,返回一個(gè)空指針 */*輸入字符串,并進(jìn)行長(zhǎng)度驗(yàn)證 (長(zhǎng)度lens)printf(n exceed the required length! n); /*進(jìn)行長(zhǎng)度校驗(yàn),超過 lens 值重新輸入*/while(strlen(n)lens);strcpy(t,n); /*將輸入的字符串拷貝到字符串 t中*/*輸入分?jǐn)?shù),分?jǐn)?shù)100 | t100 | tnex
16、t;system(cls);disp(l); /*先打印出已有的學(xué)生信息 */while(r-next!=null)r=r-next; /*將指針移至于鏈表最末尾,準(zhǔn)備添加記錄 */while(1) /*一次可輸入多條記錄,直至輸入學(xué)號(hào)為的記錄結(jié)點(diǎn)添加操作 */while(1) /*輸入學(xué)號(hào),保證該學(xué)號(hào)沒有被使用,若輸入學(xué)號(hào)為,則退出添加記錄操作*/stringinput(num,10,input number(press 0return menu):); /*格式化輸入學(xué)號(hào)并檢驗(yàn) */ flag=0;if(strcmp(num,0)=0) /*輸入為,則退出添加操作,返回主界面 */retu
17、rn;s=l-next;while(s) /*查詢?cè)搶W(xué)號(hào)是否已經(jīng)存在,若存在則要求重新輸入一個(gè)未被占用的學(xué)號(hào) */if(strcmp(s-data.num,num)=0)flag=1;break;s=s-next;if(flag=1) /*提示用戶是否重新輸入 */ getchar();printf(=the number %s is not existing,try again?(y/n):,num); scanf(%c,&ch);if(ch=y|ch=y)continue;elsereturn;elsebreak;p=(node *)malloc(sizeof(node); /*申請(qǐng)內(nèi)存空
18、間*/if(!p)printf(n allocate memory failure ); /*如沒有申請(qǐng)到,打印提示信息 */return ;/*返回主界面*/strcpy(p-data.num,num); /*將字符串 num拷貝到p-data.num中*/stringinput(,15, name:);p-data.cgrade=numberinput( c language score0-100:); /*輸入并檢驗(yàn)分?jǐn)?shù),分?jǐn)?shù)必須在之間*/p-data.mgrade=numberinput( math score0-100:);/*輸入并檢驗(yàn)分?jǐn)?shù),分?jǐn)?shù)必須在之間 *
19、/p-data.egrade=numberinput( english score0-100:); /*輸入并檢驗(yàn)分?jǐn)?shù),分?jǐn)?shù)必須在之間 */ p-data.total=p-data.egrade+p-data.cgrade+p-data.mgrade; /*計(jì)算總分*/p-data.ave=(float)(p-data.total/3);/*計(jì)算平均分 */p-data.mingci=0;p-next=null; /*表明這是鏈表的尾部結(jié)點(diǎn) */r-next=p;r=p;saveflag=1;return ;/*將新建的結(jié)點(diǎn)加入鏈表尾部中 */void qur(link l) /*按學(xué)號(hào)或姓名
20、,查詢學(xué)生記錄 */int select; /*1:按學(xué)號(hào)查,:按姓名查,其他:返回主界面(菜單) */ char searchinput20; /*保存用戶輸入的查詢內(nèi)容 */node *p;if(!l-next) /*若鏈表為空*/system(cls);printf(n=no student record!n );getchar();return;system(cls);printf(n =1 search by number =2 search by namen ); printf( please choice1,2:);scanf(%d,&select);if(select=1)/*
21、按學(xué)號(hào)查詢 */stringinput(searchinput,10, input the existing student number:); p=locate(l,searchinput,num);/*在l中查找學(xué)號(hào)為searchinput值的節(jié)點(diǎn),并返回節(jié)點(diǎn)的指針 */ if(p) /*若p!=null*/printheader();printdata(p);printf(end);printf(press any key to return);getchar();elsenofind();getchar();else if(select=2) /*按姓名查詢 */stringinput
22、(searchinput,15, input the existing student name:); p=locate(l,searchinput,name);if(p)printheader();printdata(p);printf(end);printf(press any key to return);getchar();elsenofind();getchar();elsewrong();getchar();/*刪除學(xué)生記錄:先找到保存該學(xué)生記錄的節(jié)點(diǎn),然后刪除該節(jié)點(diǎn) */void del(link l)int sel;node *p,*r;char findmess20;if(!
23、l-next) system(cls);printf(n=no student record!n );getchar();return;system(cls);disp(l);printf(n =1 delete by number =2 delete by namen ); printf( please choice1,2: );scanf(%d,&sel);if(sel=1)stringinput(findmess,10, input the existing student number:); p=locate(l,findmess, num);if(p) /*p!=null*/r=l;
24、while(r-next!=p)r=r-next;r-next=p-next;/*將p所指節(jié)點(diǎn)從鏈表中去除*/free(p); /*釋放內(nèi)存空間 */printf(n=delete success!n);getchar();saveflag=1;elsenofind();getchar();else if(sel=2) /*先按姓名查詢到該記錄所在的節(jié)點(diǎn) */stringinput(findmess,15, input the existing student name);p=locate(l,findmess, name);if(p)r=l;while(r-next!=p)r=r-next;
25、r-next=p-next;free(p);printf(n=delete success!n);getchar();saveflag=1;elsenofind();getchar();elsewrong();getchar();/*修改學(xué)生記錄。先按輸入的學(xué)號(hào)查詢到該記錄,然后提示用戶修改學(xué)號(hào)之外的值,學(xué)號(hào)不能修改 */ void modify(link l)node *p;char findmess20;if(!l-next) system(cls);printf(n=no student record!n );getchar();return;system(cls);printf(mod
26、ify student recorder);disp(l);stringinput(findmess,10, input the existing student number:); /*輸入并檢驗(yàn)該學(xué)號(hào)*/ p=locate(l,findmess,num); /*查詢到該節(jié)點(diǎn)*/if(p) /*若p!=null,表明已經(jīng)找到該節(jié)點(diǎn) */printf(number:%s,n,p-data.num);printf(name:%s,);stringinput(,15, input new name:);printf(c language score:%d
27、, ,p-data.cgrade);p-data.cgrade=numberinput( c language score0-100:);printf(math score:%d,p-data.mgrade);p-data.mgrade=numberinput( math score0-100:);printf(english score:%d,p-data.egrade);p-data.egrade=numberinput( english score0-100:);p-data.total=p-data.egrade+p-data.cgrade+p-data.mgrade;p-data.a
28、ve=(float)(p-data.total/3);p-data.mingci=0;printf(n=modify success!n);disp(l);saveflag=1;elsenofind();getchar();/*插入記錄:按學(xué)號(hào)查詢到要插入的節(jié)點(diǎn)的位置,然后在該學(xué)號(hào)之后插入一個(gè)新節(jié)點(diǎn)。 */ void insert(link l)link p,v,newinfo; /*p指向插入位置,newinfo指新插入記錄*/char ch,num10,s10;int flag=0;v=l-next;system(cls);/*s保存插入點(diǎn)位置之前的學(xué)號(hào) ,num保存輸入的新記錄的學(xué)號(hào) *
29、/disp(l);while(1) stringinput(s,10, please input insert location after the number:); flag=0;v=l-next;while(v) /*查詢?cè)搶W(xué)號(hào)是否存在, flag=1表示該學(xué)號(hào)存在 */if(strcmp(v-data.num,s)=0) flag=1;break;v=v-next;if(flag=1)break; /*若學(xué)號(hào)存在,則進(jìn)行插入之前的新記錄的輸入操作 */else getchar();printf(n=the number %s is not existing,try again?(y/n
30、): ,s); scanf(%c,&ch);if(ch=y|ch=y)continue;elsereturn;/*以下新記錄的輸入操作與 add()相同*/stringinput(num,10,input new student number:);v=l-next;while(v)if(strcmp(v-data.num,num)=0)printf(=sorry,the new number:%s is existing !n ,num); printheader();printdata(v);printf(n);getchar();return;v=v-next;newinfo=(node
31、*)malloc(sizeof(node);if(!newinfo)printf(n allocate memory failure ); /*如沒有申請(qǐng)到,打印提示信息 */return ;/*返回主界面*/strcpy(newinfo-data.num,num);stringinput(,15, name:);newinfo-data.cgrade=numberinput( c language score0-100:); newinfo-data.mgrade=numberinput( math score0-100:);newinfo-data.egr
32、ade=numberinput( english score0-100:);newinfo-data.total=newinfo-data.egrade+newinfo-data.cgrade+newinfo-data.mgrade;newinfo-data.ave=(float)(newinfo-data.total/3);newinfo-data.mingci=0;newinfo-next=null;saveflag=1; /*在 main()有對(duì)該全局變量的判斷,若為 ,則進(jìn)行存盤操作*/*將指針賦值給p,因?yàn)?l中的頭節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)才實(shí)際保存著學(xué)生的記錄 */p=l-next;whi
33、le(1)if(strcmp(p-data.num,s)=0) /*在鏈表中插入一個(gè)節(jié)點(diǎn) */newinfo-next=p-next;p-next=newinfo;break;p=p-next;disp(l);printf(nn);getchar();/*統(tǒng)計(jì)該班的總分第一名和單科第一 ,和各科不及格人數(shù)*/void tongji(link l)node *pm,*pe,*pc,*pt; /*用于指向分?jǐn)?shù)最高的節(jié)點(diǎn) */node *r=l-next;int countc=0,countm=0,counte=0; /*保存三門成績(jī)中不及格的人數(shù) */if(!r) system(cls);prin
34、tf(n=not student record!n);getchar();return ;system(cls);disp(l);pm=pe=pc=pt=r;while(r)if(r-data.cgradedata.mgradedata.egradedata.cgrade=pc-data.cgrade) pc=r;if(r-data.mgrade=pm-data.mgrade) pm=r;if(r-data.egrade=pe-data.egrade) pe=r;if(r-data.total=pt-data.total) pt=r;r=r-next;printf(n-the tongjire
35、sult-n );printf(c language60:%d (ren)n ,countc);printf(math 60:%d (ren)n ,countm);printf(english ,pt-data.total);printf(the highest student by english score name:%s totoalscore:%dn,,pe-data.egrade);printf(the highest student by math score name:%s totoalscore:%dn,,pm-
36、data.mgrade);printf(the highest student by c score name:%s totoalscore:%dn,,pc-data.cgrade);printf(nnpress any key to return);getchar();/*利用插入排序法實(shí)現(xiàn)單鏈表的按總分字段的降序排序,從高到低 */void sort(link l)link ll;node *p,*rr,*s;int i=0;if(l-next=null) system(cls);printf(n=not student record!n);getchar();re
37、turn ;ll=(node*)malloc(sizeof(node); /*用于創(chuàng)建新的節(jié)點(diǎn)*/if(!ll)printf(n allocate memory failure ); /*如沒有申請(qǐng)到,打印提示信息 */return ;ll-next=null;system(cls);/*返回主界面*/disp(l);/*顯示排序前的所有學(xué)生記錄 */p=l-next;while(p) /*p!=null*/s=(node*)malloc(sizeof(node); /*新建節(jié)點(diǎn)用于保存從原鏈表中取出的節(jié)點(diǎn)信息 */ if(!s) /*s=null*/printf(n allocate mem
38、ory failure ); /*如沒有申請(qǐng)到,打印提示信息 */return ;/*返回主界面*/s-data=p-data; /*填數(shù)據(jù)域 */s-next=null;/*指針域?yàn)榭?*/rr=ll;/*rr鏈表于存儲(chǔ)插入單個(gè)節(jié)點(diǎn)后保持排序的鏈表,ll是這個(gè)鏈表的頭指針 ,每次從頭開始查找插入位置 */while(rr-next!=null & rr-next-data.total=p-data.total)rr=rr-next; /*指針移至總分比 p所指的節(jié)點(diǎn)的總分小的節(jié)點(diǎn)位置 */if(rr-next=null)/*若新鏈表ll中的所有節(jié)點(diǎn)的總分值都比 p-data.total大時(shí),
39、就將p所指節(jié)點(diǎn)加入 鏈表尾部*/rr-next=s;else /*否則將該節(jié)點(diǎn)插入至第一個(gè)總分字段比它小的節(jié)點(diǎn)的前面 */s-next=rr-next;rr-next=s;p=p-next; /*原鏈表中的指針下移一個(gè)節(jié)點(diǎn) */l-next=ll-next; /*ll中存儲(chǔ)是的已排序的鏈表的頭指針 */p=l-next;/*已排好序的頭指針賦給 p,準(zhǔn)備填寫名次*/while(p!=null) /*當(dāng)p不為空時(shí),進(jìn)行下列操作*/ i+;/*結(jié)點(diǎn)序號(hào)*/p-data.mingci=i;/*將名次賦值*/p=p-next;/*指針后移 */disp(l);saveflag=1;printf(n =
40、sort complete!n );/*數(shù)據(jù)存盤,若用戶沒有專門進(jìn)行此操作且對(duì)數(shù)據(jù)有修改,在退出系統(tǒng)時(shí),會(huì)提示用戶存盤 */void save(link l)file* fp;node *p;int count=0;fp=fopen(c:student,wb);/*以只寫方式打開二進(jìn)制文件 */if(fp=null) /*打開文件失敗*/printf(n=open file error!n );getchar();return ;p=l-next;while(p)if(fwrite(p,sizeof(node),1,fp)=1)/*每次寫一條記錄或一個(gè)節(jié)點(diǎn)信息至文件*/p=p-next;count+;elsebreak;if(count0)getchar();printf(nnnnn=save file complete,total saveds record number is:%dn ,count); getchar();saveflag=0;elsesystem(cls);printf(the current link is empty,no student record is saved!n);getchar();fclose(fp); /*關(guān)閉此文件 */ void ma
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川電影電視學(xué)院《大學(xué)書法》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《學(xué)前教育史》2022-2023學(xué)年第一學(xué)期期末試卷
- 幽雅的畢業(yè)贈(zèng)言給老師
- 石河子大學(xué)《微信公眾號(hào)的運(yùn)營(yíng)與營(yíng)銷》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《色彩》2022-2023學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《機(jī)械工程測(cè)試技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《電路(一)》2023-2024學(xué)年期末試卷
- 沈陽理工大學(xué)《材料科學(xué)基礎(chǔ)》2022-2023學(xué)年第一學(xué)期期末試卷
- 廣東省住建局勞務(wù)分包合同
- 合同變更模板聲明
- 2022版義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)解讀課件PPT模板
- 實(shí)驗(yàn)五 PCR擴(kuò)增課件
- 馬拉松運(yùn)動(dòng)醫(yī)療支援培訓(xùn)課件
- 中醫(yī)藥宣傳手冊(cè)
- 不良資產(chǎn)處置盡職指引
- 人教部編版七年級(jí)歷史上冊(cè)第19課 北魏政治和北方民族大交融課件(23張PPT)
- 機(jī)械設(shè)備定期檢查維修保養(yǎng)使用臺(tái)賬
- 麗聲北極星分級(jí)繪本第四級(jí)上 Stop!Everyone Stop!教學(xué)設(shè)計(jì)
- 小學(xué)科學(xué)教育科學(xué)三年級(jí)上冊(cè)天氣《認(rèn)識(shí)氣溫計(jì)》教學(xué)設(shè)計(jì)
- 液化氣站氣質(zhì)分析報(bào)告管理制度
- 可編輯修改中國(guó)地圖模板
評(píng)論
0/150
提交評(píng)論