版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 學(xué)生選課系統(tǒng)1 需求分析1.1任務(wù)要求 制做學(xué)生選課系統(tǒng),共包括課程信息和學(xué)生信息兩部分。課程信息包括:課程編碼、課程名稱、適用專業(yè)、課程類型(必修、限選、必選、實(shí)踐、學(xué)習(xí))、學(xué)分、學(xué)時(shí)、主講教師等。學(xué)生信息管理,學(xué)生選課管理(學(xué)生選課學(xué)分總數(shù)有一定范圍),學(xué)生可以對(duì)課程進(jìn)行查詢、瀏覽,選完課后可以退選、重選,并可以按學(xué)號(hào)、姓名進(jìn)行查詢和統(tǒng)計(jì)。要求:1.源文件采用多文件的工程結(jié)構(gòu)。 2.數(shù)據(jù)儲(chǔ)存采用文件形式。 3.標(biāo)準(zhǔn)的c輸入輸出。 4.功能完善,適當(dāng)?shù)淖⑨尅?5.關(guān)于文件的內(nèi)容要自學(xué)。1.2系統(tǒng)功能需求分析1.為存儲(chǔ)課程信息,需要定義一個(gè)結(jié)構(gòu)體類型,成員包括課程編碼、課程名稱、適用專業(yè)、課
2、程類型、學(xué)分、學(xué)時(shí)、主講教師,所選人數(shù)等等,并建立鏈表,定義該結(jié)構(gòu)體類型的指針,用于指向各節(jié)點(diǎn);2.為存儲(chǔ)學(xué)生信息,需要定義一個(gè)結(jié)構(gòu)體類型,成員包括學(xué)生編碼、學(xué)生姓名、所選課程編碼、所選課程學(xué)分和等等,并建立鏈表,定義該結(jié)構(gòu)體類型的指針,用于指向各節(jié)點(diǎn);3.對(duì)于課程信息和學(xué)生信息,可以選擇從鍵盤輸入也可選擇從文件中打開原來存盤的信息,并對(duì)他們分別建立添加、刪除、瀏覽、查詢等功能的子函數(shù),完成相應(yīng)的功能,對(duì)程序?qū)崿F(xiàn)模塊化。這其中要用到對(duì)鏈表的刪除、插入、增加等知識(shí)。刪除包括課程刪除和學(xué)生信息刪除,刪除時(shí)用一結(jié)構(gòu)體指針指向鏈表的第一個(gè)結(jié)點(diǎn),檢查該節(jié)點(diǎn)的值是否等于輸入的要?jiǎng)h除的課程編號(hào)或?qū)W生學(xué)號(hào),若
3、相等就刪除,不相等則后移指針,直至表尾。插入時(shí)也要先找到相應(yīng)結(jié)點(diǎn),再添加。查詢功能要設(shè)置按照學(xué)生姓名、學(xué)生編號(hào)等多種方式。4.學(xué)生選課是要先輸入自己的學(xué)號(hào),如果在已經(jīng)輸入的學(xué)生信息中找不到此學(xué)號(hào),則提示需要先輸入自己的信息。如找到了自己的學(xué)號(hào),則可以進(jìn)行選課。在選課之前要先對(duì)所有的課程信息進(jìn)行瀏覽。選課有一定的學(xué)分限制,超過相應(yīng)的學(xué)分(這里設(shè)置的是10個(gè)學(xué)分),系統(tǒng)就會(huì)顯示可以選滿的信息。此系統(tǒng)還可以實(shí)現(xiàn)刪除所選課程的功能,設(shè)計(jì)思路與選課功能相似。5為實(shí)現(xiàn)存儲(chǔ)功能,需用到文件的相關(guān)函數(shù),打開文件,將添加、修改或刪除的信息存入磁盤中。6.實(shí)現(xiàn)易于使用者理解和使用的友好界面。2 概要設(shè)計(jì)2.1系統(tǒng)
4、總體設(shè)計(jì)框架 對(duì)程序進(jìn)行模塊化可以使整個(gè)程序清晰明了。對(duì)課程信息和學(xué)生信息建立從文件中輸入、從鍵盤中輸入、添加、刪除、查詢和瀏覽的功能,其各個(gè)子函數(shù)中運(yùn)用鏈表儲(chǔ)存數(shù)據(jù)。選課管理建立學(xué)生選課、推選、查詢、瀏覽的功能,其各個(gè)子函數(shù)中運(yùn)用鏈表儲(chǔ)存數(shù)據(jù)。從主函數(shù)開始執(zhí)行,依次調(diào)用各個(gè)子函數(shù),并運(yùn)用文件的相關(guān)知識(shí)將信息進(jìn)行存盤。2.2系統(tǒng)功能模塊圖學(xué)生選課系統(tǒng)課程信息從文件錄入從鍵盤錄入增加刪除學(xué)生信息從文件錄入從鍵盤錄入增加刪除選 課退 課信息存儲(chǔ)3 詳細(xì)設(shè)計(jì)3.1功能模塊設(shè)計(jì)思路主要功能模塊的算法設(shè)計(jì)思路如下:1、 課程信息錄入函數(shù)(void load()從鍵盤錄入(void zhang( ))i
5、定義指向結(jié)構(gòu)體變量的指針;ii 從頭指針指向的結(jié)構(gòu)體開始依次錄入結(jié)構(gòu)體中所包含的各個(gè)成員;iii直到輸入的結(jié)構(gòu)體成員的編號(hào)為0,錄入結(jié)束從文件錄入(void zhang1( ))i 分別定義指向結(jié)構(gòu)體變量的指針和指向文件的指針;ii 輸入文件的路徑,打開文件,若沒有找到則有提示;iii 將文件中的信息依次讀出,最后結(jié)構(gòu)體的指針為2、 課程信息管理(void managementc())增加課程信息(void insert(struct course *incourse))i 定義指向結(jié)構(gòu)體變量的指針;ii 輸入要增加的課程編號(hào),從頭指針指向的結(jié)構(gòu)體依次向后,直到鏈表的最后;iii 輸入課程結(jié)構(gòu)
6、體各個(gè)成員的信息,使最后一個(gè)結(jié)構(gòu)體指針值為刪除課程信息(void delc(int num1))i 定義指向結(jié)構(gòu)體變量的指針;ii 輸入要增加的課程編號(hào),從頭指針指向的結(jié)構(gòu)體依次向后,直到找到課程編號(hào)為輸入值的那個(gè)結(jié)構(gòu)體;iii 將其刪除,其前一個(gè)的結(jié)構(gòu)體指針指向其后一個(gè)結(jié)構(gòu)體3、 學(xué)生信息錄入函數(shù)(void input()從鍵盤錄入(void putin( ))i 定義指向結(jié)構(gòu)體變量的指針;ii 從頭指針指向的結(jié)構(gòu)體開始依次錄入結(jié)構(gòu)體中所包含的各個(gè)成員;iii 直到輸入的結(jié)構(gòu)體成員的編號(hào)為0,錄入結(jié)束從文件錄入(void putin2( ))i 分別定義指向結(jié)構(gòu)體變量的指針和指向文件的指針;
7、ii 輸入文件的路徑,打開文件,若沒有找到則有提示;iii 將文件中的信息依次讀出,最后結(jié)構(gòu)體的指針為4、 學(xué)生信息管理(void managements())增加學(xué)生信息(void inserts(struct student * incouse))i 定義指向結(jié)構(gòu)體變量的指針;ii 輸入要增加的學(xué)生編號(hào),從頭指針指向的結(jié)構(gòu)體依次向后,直到鏈表的最后;iii 輸入學(xué)生結(jié)構(gòu)體各個(gè)成員的信息,使最后一個(gè)結(jié)構(gòu)體指針值為刪除學(xué)生信息(void dels(int num2))i 定義指向結(jié)構(gòu)體變量的指針;ii 輸入要增加的學(xué)生編號(hào),從頭指針指向的結(jié)構(gòu)體依次向后,直到找到學(xué)生編號(hào)為輸入值的那個(gè)結(jié)構(gòu)體;i
8、ii 將其刪除,其前一個(gè)的結(jié)構(gòu)體指針指向其后一個(gè)結(jié)構(gòu)體5、 學(xué)生選課管理(void elective())學(xué)生選課(void elect())i 分別定義指向課程和學(xué)生結(jié)構(gòu)體變量的指針;ii 輸入要選課的學(xué)生的編號(hào),從頭指針指向的結(jié)構(gòu)體依次向后,直到找到學(xué)生編號(hào)為輸入值的那個(gè)結(jié)構(gòu)體,如不存在則顯示要錄入學(xué)生信息;iii 輸入要選課程的編號(hào),從頭指針指向的結(jié)構(gòu)體依次向后,直到找到課程編號(hào)為輸入值的那個(gè)結(jié)構(gòu)體;iv 在學(xué)生結(jié)構(gòu)體對(duì)應(yīng)的所選課程編號(hào)中更改信息,所選學(xué)分中加上相應(yīng)分值,課程結(jié)構(gòu)體所選人數(shù)中相應(yīng)加一學(xué)生退課(void back())i 分別定義指向課程和學(xué)生結(jié)構(gòu)體變量的指針;ii 輸入要
9、退課的學(xué)生的編號(hào),從頭指針指向的結(jié)構(gòu)體依次向后,直到找到學(xué)生編號(hào)為輸入值的那個(gè)結(jié)構(gòu)體,如不存在則顯示要錄入學(xué)生信息;iii 輸入要退課程的編號(hào),從頭指針指向的結(jié)構(gòu)體依次向后,直到找到課程編號(hào)為輸入值的那個(gè)結(jié)構(gòu)體;iv 在學(xué)生結(jié)構(gòu)體對(duì)應(yīng)的所選課程編號(hào)中更改信息,所選學(xué)分中減去相應(yīng)分值,課程結(jié)構(gòu)體所選人數(shù)中相應(yīng)減一6、 信息瀏覽和保存(void into())課程信息瀏覽(void listc())i 定義指向結(jié)構(gòu)體變量的指針;ii從頭指針指向的結(jié)構(gòu)體依次向后,將課程結(jié)構(gòu)體各成員的信息一次輸出,直到最后一個(gè)結(jié)構(gòu)體指針的值為null學(xué)生信息瀏覽(void lists())i 定義指向結(jié)構(gòu)體變量的指針
10、;ii從頭指針指向的結(jié)構(gòu)體依次向后,將學(xué)生結(jié)構(gòu)體各成員的信息一次輸出,直到最后一個(gè)結(jié)構(gòu)體指針的值為null課程信息保存(void intoc())i 定義指向課程結(jié)構(gòu)體變量的指針和指向文件的指針;ii 輸入保存路徑,如果沒有保存則有顯示;iii 將課程信息寫入文件中;iv 將課程信息進(jìn)行保存,關(guān)閉文件學(xué)生信息保存(void intos())i 定義指向?qū)W生結(jié)構(gòu)體變量的指針和指向文件的指針;ii 輸入保存路徑,如果沒有保存則有顯示;iii 將學(xué)生信息寫入文件中;iv 將學(xué)生信息進(jìn)行保存,關(guān)閉文件7、 學(xué)生信息查詢(void store())按學(xué)生姓名查詢(void search2())i定義指向
11、結(jié)構(gòu)體變量的指針;ii 輸入要查詢的學(xué)生的姓名,從頭指針指向的結(jié)構(gòu)體依次向后,直到找到學(xué)生姓名為輸入值的那個(gè)結(jié)構(gòu)體;iii 將該學(xué)生結(jié)構(gòu)體成員的各信息依次輸出按學(xué)生編號(hào)查詢(void search1())i定義指向結(jié)構(gòu)體變量的指針;ii 輸入要查詢的學(xué)生的編號(hào),從頭指針指向的結(jié)構(gòu)體依次向后,直到找到學(xué)生編號(hào)為輸入值的那個(gè)結(jié)構(gòu)體;iii 將該學(xué)生結(jié)構(gòu)體成員的各信息依次輸出3 調(diào)試分析3.1錯(cuò)誤顯示及分析 a.編譯時(shí)出現(xiàn)錯(cuò)誤,回看程序發(fā)現(xiàn)漏掉符號(hào)等細(xì)節(jié)錯(cuò)誤。 b.運(yùn)行時(shí),界面格式與最初的設(shè)想不一致,通過重新編排,符號(hào)的增減及一進(jìn),最終達(dá)到理想界面。 c.運(yùn)行時(shí),輸入一個(gè)信息后,第二次輸入數(shù)據(jù)時(shí)很難
12、將輸入光標(biāo)移到想要的位子,通過按鍵的摸索,最終了解了輸入要領(lǐng)。 d.對(duì)輸入的信息查詢時(shí)沒有記錄,發(fā)現(xiàn)文件讀取錯(cuò)誤。3.2修改完善1、開始程序執(zhí)行時(shí),各項(xiàng)大的功能每一次只能執(zhí)行一個(gè)就自動(dòng)跳出,為了使程序保持連續(xù)性和更好的實(shí)用性,使用了start,goto start,break,sysyem(“clx”)等實(shí)現(xiàn)了逐漸免于更功能的循環(huán)。2、對(duì)于學(xué)生信息中已選課程的存儲(chǔ),一直不知如何存儲(chǔ)。后用實(shí)型數(shù)組,并進(jìn)行循環(huán),依次讀入課程的編號(hào),將課程編號(hào)進(jìn)行存儲(chǔ)。4 用戶使用說明4.1適用范圍 適用于管理者將課程信息和學(xué)生信息錄入到系統(tǒng),并可以將課程信息和學(xué)生信息進(jìn)行保存,日后如果有需要在對(duì)課程和學(xué)生信息進(jìn)行
13、增加可刪除。同時(shí)也適用于學(xué)生在登錄自己的學(xué)號(hào)后,瀏覽課程信息選課,進(jìn)行選課和退課操作。4.2使用方法 首先管理者將現(xiàn)有的課程信息(包括課程編號(hào)、課程名稱、使用專業(yè)、課程類型、學(xué)時(shí)、學(xué)分、教師、已選人數(shù)(初始為零)和學(xué)生信息(包括學(xué)生學(xué)號(hào)、姓名、已選學(xué)時(shí)、已選課程編號(hào))錄入到系統(tǒng),并將其進(jìn)行文件保存,以便以后使用。若要修改(增加和刪除)課程信息和學(xué)生信息,需要先從文件中錄入已存信息,再輸入編號(hào)對(duì)其查找并進(jìn)行相關(guān)操作。學(xué)生選課需要先輸入自己的學(xué)號(hào),若沒有此學(xué)號(hào)的學(xué)生信息,需先錄入此人信息在進(jìn)行選課和退課。在選課和退課前,可以先瀏覽課程信息,并記住要選課程的編號(hào),以便選課時(shí)需要。此外還可以學(xué)號(hào)和姓名
14、對(duì)學(xué)生信息進(jìn)行查詢。5 測(cè)試結(jié)果55.1運(yùn)行結(jié)果 主界面 錄入課程信息 課程信息瀏覽 課程信息存儲(chǔ) 錄入學(xué)生信息 學(xué)生信息瀏覽 學(xué)生信息存儲(chǔ) 學(xué)生選課 選課后學(xué)生信息瀏覽 選課后課程信息瀏覽 課程信息管理 學(xué)生信息管理 學(xué)生信息查找 退出系統(tǒng)7 附錄7.1課設(shè)小結(jié)通過這次課程設(shè)計(jì),我對(duì)c語言有了更深刻的了解,增強(qiáng)了程序的編寫能力,鞏固了專業(yè)知識(shí),對(duì)程序的模塊化觀念也又模糊逐漸變的清晰了。在程序的運(yùn)行與調(diào)試過程中出現(xiàn)了很多錯(cuò)誤,通過反復(fù)地復(fù)習(xí)課本上的相關(guān)知識(shí),不停地修改與調(diào)試,我終于完成了這段程序。在調(diào)試過程中,我認(rèn)識(shí)到了c語言的靈活性與嚴(yán)謹(jǐn)性,同一個(gè)功能可以由不同的語句來實(shí)現(xiàn),但編寫程序時(shí)要特
15、別注意細(xì)節(jié)方面的問題,因?yàn)橐粋€(gè)小小的疏忽就能導(dǎo)致整個(gè)程序不能運(yùn)行。當(dāng)然我也認(rèn)識(shí)到了自己的薄弱之處,如對(duì)鏈表相關(guān)知識(shí)的欠缺,文件運(yùn)用的不熟練,在以后的學(xué)習(xí)中我要集中精力、端正態(tài)度,爭取把知識(shí)學(xué)得更扎實(shí)、更全面。7.2 存在不足1、系統(tǒng)不夠強(qiáng)大,有點(diǎn)脆弱。2、當(dāng)輸入信息(課程信息,學(xué)生信息)后,不能自動(dòng)保存,需手動(dòng)保存。對(duì)于以上不足,以后將進(jìn)行改進(jìn),以確保達(dá)到更好。7.2詳細(xì)代碼#include#include#includeint n1,n2;struct studentint num2; char name220; int nelenum50; /所選課程編號(hào) int nelen; /所選課程
16、學(xué)分和 struct student * next;struct courseint num1; /課程編號(hào)char name120; char major20;char type20;int credit;int period;char teacher20;int people; /選此門課程的人數(shù)struct course *next; /結(jié)構(gòu)體指針;struct course * head1;struct student * head2;void zhang() /從鍵盤錄入課程信息struct course *p1,*p2; n1=0; p1=p2=(struct course *)m
17、alloc(sizeof(struct course); printf(課程編號(hào)t課程名稱t主修t課程性質(zhì)t學(xué)分t課時(shí)t教師n); scanf(%d%s%s%s%d%d%s,&p1-num1,p1-name1,p1-major,p1-type,&p1-credit,&p1-period,p1-teacher); p1-people=0; head1=null; while(p1-num1!=0)n1=n1+1; if(n1=1)head1=p1; else p2-next=p1; p2=p1; p1=(struct course * )malloc(sizeof(struct course);
18、 scanf(%d%s%s%s%d%d%s,&p1-num1,p1-name1,p1-major,p1-type,&p1-credit,&p1-period,p1-teacher); p1-people=0; p2-next=null;void zhang1() /從文件錄入課程信息file * fp; char filepath20; struct course *p1,*p2; n1=0; printf(請(qǐng)輸入您要讀取的路徑:); getchar(); gets(filepath); if(fp=fopen(filepath,r)=null)printf(找不到 %s 文件!n,filep
19、ath); exit(0); p1=p2=(struct course*)malloc(sizeof(struct course); fscanf(fp,%d%s%s%s%d%d%s%d,&p1-num1,p1-name1,p1-major,p1-type,&p1-credit,&p1-period,p1-teacher,&p1-people); while(!feof(fp)n1=n1+1; if(n1=1)head1=p1; else p2-next=p1; p2=p1; p1=(struct course * )malloc(sizeof(struct course); fscanf(f
20、p,%d%s%s%s%d%d%s%d,&p1-num1,p1-name1,p1-major,p1-type,&p1-credit,&p1-period,p1-teacher,&p1-people); p2-next=null;void load() /錄入課程信息函數(shù)int i;printf(ttt錄入課程信息n);printf(n1.從鍵盤錄入);printf(n2.從文件錄入);printf(n3.返回主菜單n);printf(請(qǐng)選擇1-3:);scanf(%d,&i);switch(i)case 1: zhang(); break; case 2:zhang1();break; case
21、 3:break; void insert(struct course *incourse) /增加課程信息struct course *p0,*p1,*p2; p1=head1; p0=incourse; if(head1=null)head1=p0; p0-next=null; elsewhile(p0-num1p1-num1) & (p1-next!=null)p2=p1; p1=p1-next; if(p0-num1num1)if(head1=p1)head1=p0; elsep2-next=p0; p0-next=p1; elsep1-next=p0; p0-next=null; n
22、1=n1+1;void delc(int num1) /刪除課程信息struct course *p1,*p2; if(head1=null)printf(n無法刪除!n); goto end; p1=head1; while(num1!=p1-num1 & p1-next!=null) p2=p1; p1=p1-next; if(num1=p1-num1)if(p1=head1) head1=p1-next; else p2-next=p1-next; printf(已刪除n); n1=n1-1; else printf(沒有此課程n); end:;void managementc() /課
23、程信息管理函數(shù)struct course * p1; int i,num1; printf(ttt課程信息管理n); printf(1.添加課程n); printf(2.刪除課程n); printf(3.返回n); printf(請(qǐng)輸入1-3:n); scanf(%d,&i); switch(i) case 1:p1=(struct course *)malloc(sizeof(struct course);printf(課程編號(hào)t課程名稱t主修t課程性質(zhì)t學(xué)分t課時(shí)t教師n); scanf(%d%s%s%s%d%d%s,&p1-num1,p1-name1,p1-major,p1-type,&
24、p1-credit,&p1-period,p1-teacher);p1-people=0;insert(p1); break;case 2:printf(請(qǐng)輸入您要?jiǎng)h除的課程編號(hào):n);scanf(%d,&num1);delc(num1); break;case 3:break;void putin(void) /從鍵盤錄入學(xué)生信息 int i;struct student *p1,*p2;n2=0;p1=p2=(struct student *)malloc(sizeof(struct student);printf(學(xué)號(hào)t姓名n);scanf(%d%s,&p1-num2,p1-name2)
25、;p1-nelen=0;for(i=0;inelenumi=0;head2=null;while(p1-num2!=0)n2=n2+1;if(n2=1)head2=p1;else p2-next=p1;p2=p1;p1=(struct student * )malloc(sizeof(struct student);scanf(%d%s,&p1-num2,p1-name2);p1-nelen=0;for(i=0;inelenumi=0;p2-next=null;void putin2() /從文件錄入學(xué)生信息int i=0;file * fp;char filepath20;struct st
26、udent *p1,*p2;n2=0;printf(請(qǐng)輸入您要讀取的路徑:);getchar();gets(filepath);if(fp=fopen(filepath,rt)=null)printf(找不到 %s 文件!n,filepath);exit(0);p1=p2=(struct student*)malloc(sizeof(struct student);fread(p1,sizeof(struct student),1,fp);head2=null;while(!feof(fp)i=0;n2=n2+1;if(n2=1)head2=p1;else p2-next=p1;p2=p1;p
27、1=(struct student * )malloc(sizeof(struct student);fread(p1,sizeof(struct student),1,fp);p2-next=null;void input() /錄入學(xué)生信息函數(shù) int i;printf(ttt錄入學(xué)生信息n);printf(n1.從鍵盤錄入n);printf(2.從文件錄入n);printf(3.返回主菜單n);printf(請(qǐng)輸入1-3:n);scanf(%d,&i);switch(i)case 1:putin(); break;case 2:putin2(); break;case 3:break;v
28、oid inserts(struct student * incouse) /增加學(xué)生信息struct student *p0,*p1,*p2;p1=head2;p0=incouse;if(head2=null)head2=p0;p0-next=null;elsewhile(p0-num2p1-num2) & (p1-next!=null)p2=p1;p1=p1-next;if(p0-num2 num2)if(head2=p1) head2=p0;else p2-next=p0;p0-next=p1;elsep1-next=p0;p0-next=null;n2=n2+1;void dels(i
29、nt num2) /刪除學(xué)生信息struct student *p1,*p2;if(head2=null)printf(n無法刪除n);goto end;p1=head2;while(num2!=p1-num2 & p1-next!=null)p2=p1;p1=p1-next;if(num2=p1-num2)if(p1=head2) head2=p1-next;else p2-next=p1-next;printf(已刪除n);n2=n2-1;else printf(沒有此學(xué)生編號(hào)n);end:;void managements() /學(xué)生信息管理函數(shù)struct student * p1;i
30、nt i,num2;printf(ttt學(xué)生信息管理n);printf(1.添加學(xué)生信息n);printf(2.刪除學(xué)生信息n);printf(3.返回主菜單n);printf(請(qǐng)選擇1-3:n);scanf(%d,&i);switch(i)case 1:p1=(struct student *)malloc(sizeof(struct student);p1-nelen=0;p1-nelenum0=0;printf(numtnamen);scanf(%d%s,&p1-num2,p1-name2);inserts(p1);break;case 2:printf(請(qǐng)輸入您要?jiǎng)h除的學(xué)生編號(hào):n);
31、scanf(%d,&num2);dels(num2); break;case 3:break;void elect() /學(xué)生選課struct student * s;struct course * p;int a,i,b;printf(請(qǐng)輸入您的學(xué)號(hào):n);scanf(%d,&a);s=head2;while(s-num2)!=a&s-next!=null) s=s-next;if(s-num2!=a)printf(您的信息不存在,請(qǐng)重新輸入:n);goto end;if(s-nelen)10)printf(您的學(xué)分已滿);goto end;printf(請(qǐng)輸入您要選修的課程編號(hào)n);sca
32、nf(%d,&b);for(i=0;(s-nelenumi)=0;i+);s-nelenumi=b;p=head1;while(p-num1)!=b) p=p-next;for(i=0;(s-nelenumi)!=0;i+);s-nelenumi=b;(p-people)+;(s-nelen)=(s-nelen)+(p-credit);(p-people)+;end:;void back() /學(xué)生退課struct student * p;struct course * p1;int b,i,j,a;printf(請(qǐng)輸入您的學(xué)號(hào):n);scanf(%d,&a);p=head2;while(p-
33、num2!=a&p!=null) p=p-next;if(p=null)printf(您的信息不存在:n);elseprintf(請(qǐng)輸入您要退選的課程:n);scanf(%d,&b);p1=head1;while(p1-num1!=b) p1=p1-next;for(i=0;p-nelenumi!=b;i+);for(j=i;p-nelenumj!=0;j+)p-nelenumj=p-nelenumj+1;p-nelenum-j=0;(p-nelen)=(p-nelen)-(p1-credit);(p1-people)-;printf(succeed!n);void elective() /學(xué)
34、生選課信息管理int i;printf(ttt學(xué)生選課信息管理n);printf(1.選課n);printf(2.退課n);printf(3.返回主菜單n);printf(請(qǐng)輸入1-3:n);scanf(%d,&i);switch(i)case 1:elect();break;case 2:back();break;case 3:break;void listc() /瀏覽課程信息struct course * p;p=head1;printf(課程編號(hào) 課程名稱 主修 課程性質(zhì) 學(xué)分 課時(shí) 教師 選課人數(shù)n);while(p!=null)printf(%6d%13s%13s%10s%7d%7
35、d%12s%5dn,p-num1,p-name1,p-major,p-type,p-credit,p-period,p-teacher,p-people);p=p-next;void lists() /瀏覽學(xué)生信息struct student * p;int a;p=head2;printf(學(xué)生編號(hào) 學(xué)生姓名 所選課程編號(hào) 所選課程學(xué)分n);while(p!=null)printf(%6d%13s,p-num2,p-name2);printf(%6d,p-nelen);for(a=0;p-nelenuma!=0&anelenuma);printf(n);p=p-next;void intoc
36、() /存儲(chǔ)課程信息file * fp;struct course * p;char filepath30;printf(輸入路徑:);getchar();gets(filepath);if(fp=fopen(filepath,w)=null)printf(無法儲(chǔ)存!);exit(0);p=head1;while(p!=null)fprintf(fp,%d%s%s%s%d%d%s%dn,p-num1,p-name1,p-major,p-type,p-credit,p-period,p-teacher,p-people);p=p-next;fclose(fp);printf(已儲(chǔ)存入%s文件!n
37、,filepath);void intos() /存儲(chǔ)學(xué)生信息file * fp;struct student * p;char filepath30;printf(請(qǐng)輸入路徑:);getchar();gets(filepath);if(fp=fopen(filepath,wt)=null)printf(n 無法儲(chǔ)存!);exit(0);p=head2;while(p!=null)fwrite(p,sizeof(struct student),1,fp);p=p-next;fclose(fp);printf(已儲(chǔ)存入 %s文件!n,filepath);void into() /信息存儲(chǔ)函數(shù)in
38、t i;printf(ttt信息存儲(chǔ)n);printf(1.課程信息存儲(chǔ)n);printf(2.學(xué)生信息存儲(chǔ)tn);printf(3.返回主菜單n);printf(請(qǐng)輸入1-3n);scanf(%d,&i);switch(i)case(1):intoc();break;case(2):intos();break;case(3):break;void store() /信息存儲(chǔ)瀏覽函數(shù)int i;printf(tt信息存儲(chǔ)和瀏覽n);printf(1.課程信息瀏覽n);printf(2.學(xué)生信息瀏覽n);printf(3.信息存儲(chǔ)n);printf(4.返回主菜單n);printf(請(qǐng)輸入1-4
39、:n);scanf(%d,&i);switch(i)case(1):listc();break;case(2):lists();break;case(3):into();break;case(4):break;void search1() /按學(xué)生編號(hào)查找學(xué)生信息int a,b;struct student * p;printf(請(qǐng)輸入學(xué)生編號(hào));scanf(%d,&a);p=head2;printf(學(xué)號(hào) 學(xué)生姓名 所選課程編號(hào) 所選課程學(xué)分n);while(p!=null)if(p-num2=a)printf(%6d%13s ,p-num2,p-name2);for(b=0;p-nelenumb!=0&bnel
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 領(lǐng)跑家居業(yè)的秘密
- 農(nóng)場(chǎng)成長足跡
- 科技領(lǐng)跑未來已來
- 墻體材料供應(yīng)合同(2篇)
- 2024智能鎖系統(tǒng)研發(fā)與生產(chǎn)合作合同模板3篇
- 2024酒店土建工程質(zhì)量問題整改與維修合同
- 20陀螺說課稿-2024-2025學(xué)年統(tǒng)編版四年級(jí)上冊(cè)語文
- 個(gè)人對(duì)個(gè)人2024年度消費(fèi)貸款合同范本2篇
- 房地產(chǎn)合作開發(fā)意向協(xié)議
- 快樂兔和聰明的熊征文
- 國鐵橋梁人行道支架制作及安裝施工要點(diǎn)課件
- 領(lǐng)導(dǎo)科學(xué)全套精講課件
- 粵教版地理七年級(jí)下冊(cè)全冊(cè)課件
- 公積金提取單身聲明
- 小學(xué)科學(xué)蘇教版六年級(jí)上冊(cè)全冊(cè)精華知識(shí)點(diǎn)(2022新版)
- 萎縮性胃炎共識(shí)解讀
- 《中外資產(chǎn)評(píng)估準(zhǔn)則》課件第8章 澳大利亞與新西蘭資產(chǎn)評(píng)估準(zhǔn)則
- 2022版義務(wù)教育語文課程標(biāo)準(zhǔn)(2022版含新增和修訂部分)
- 精品金屬線管布線施工工程施工方法
- 授課課件國家衛(wèi)健委發(fā)布《猴痘診療指南(2022年版)》全文內(nèi)容PPT通用課件
評(píng)論
0/150
提交評(píng)論