C語言學生選課系統(tǒng)_第1頁
C語言學生選課系統(tǒng)_第2頁
C語言學生選課系統(tǒng)_第3頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、學生選課系統(tǒng)1 需求分析1.1 任務要求制做學生選課系統(tǒng),共包括課程信息和學生信息兩部分。課程信息包括:課程 編碼、課程名稱、適用專業(yè)、課程類型 必修、限選、必選、實踐、學習)、學 分、學時、主講教師等。學生信息管理,學生選課管理 學生選課學分總數有一 定范圍),學生可以對課程進行查詢、瀏覽,選完課后可以退選、重選,并可 以按學號、姓名進行查詢和統(tǒng)計。要求: 1.源文件采用多文件的項目結構。2. 數據儲存采用文件形式。3. 標準的 C 輸入輸出。4. 功能完善,適當的注釋。5. 關于文件的內容要自學。1.2系統(tǒng)功能需求分析1. 為存儲課程信息,需要定義一個結構體類型 ,成員包括課程編碼、課程名

2、稱、 適用專業(yè)、課程類型、學分、學時、主講教師,所選人數等等,并建立鏈表, 定義該結構體類型的指針,用于指向各節(jié)點;2. 為存儲學生信息,需要定義一個結構體類型,成員包括學生編碼、學生姓 名、所選課程編碼、所選課程學分和等等,并建立鏈表,定義該結構體類型的 指針,用于指向各節(jié)點;3. 對于課程信息和學生信息,可以選擇從鍵盤輸入也可選擇從文件中打開原來 存盤的信息,并對他們分別建立添加、刪除、瀏覽、查詢等功能的子函數,完 成相應的功能,對程序實現(xiàn)模塊化。這其中要用到對鏈表的刪除、插入、增加 等知識。刪除包括課程刪除和學生信息刪除,刪除時用一結構體指針指向鏈表 的第一個結點,檢查該節(jié)點的值是否等于

3、輸入的要刪除的課程編號或學生學 號,若相等就刪除,不相等則后移指針,直至表尾。插入時也要先找到相應結 點,再添加。查詢功能要設置按照學生姓名、學生編號等多種方式 。4. 學生選課是要先輸入自己的學號,如果在已經輸入的學生信息中找不到此學 號,則提示需要先輸入自己的信息。如找到了自己的學號,則可以進行選課。 在選課之前要先對所有的課程信息進行瀏覽。選課有一定的學分限制,超過相應的學分 < 這里設置的是10個學分),系統(tǒng)就會顯示可以選滿的信息。此系統(tǒng) 還可以實現(xiàn)刪除所選課程的功能,設計思路與選課功能相似。5 為實現(xiàn)存儲功能,需用到文件的相關函數,打開文件,將添加、修改或刪除 的信息存入磁盤中

4、。6. 實現(xiàn)易于使用者理解和使用的友好界面。2概要設計2.1系統(tǒng)總體設計框架對程序進行模塊化可以使整個程序清晰明了。對課程信息和學生信息建立從 文件中輸入、從鍵盤中輸入、添加、刪除、查詢和瀏覽的功能,其各個子函數 中運用鏈表儲存數據。選課管理建立學生選課、推選、查詢、瀏覽的功能,其 各個子函數中運用鏈表儲存數據。從主函數開始執(zhí)行,依次調用各個子函數, 并運用文件的相關知識將信息進行存盤。2.2系統(tǒng)功能模塊圖3詳細設計I路學生選課系統(tǒng)算法設計思路如下 、函數錄void zha ng(增加刪除選課退課信息存儲)主要功能模塊的1、課程信. 從鍵盤錄入I定義指向結構體變量的指針;II從頭指針指向的結構

5、體開始依次錄入結構體中所包含的III直到輸入的結構 從文件錄入vvoid zhang1( >)I分別定義指向結構體變量的指針和指向文件的指針;II輸入文件的路徑,打開文件,若沒有找到則有提示;III將文件中的信息依次讀出,最后結構體的指針為N ULL2、課程信息管理 vvoid managementc(>增加課程信息 <void insert(struct course *incourse>I定義指向結構體變量的指針;vvoid拱的編號為 0,錄入結束II 輸入要增加的課程編號,從頭指針指向的結構體依次向后,直到鏈表的最 后;III輸入課程結構體各個成員的信息,使最后一

6、個結構體指針值為N ULL 刪除課程信息 <void delc(int num1>)I 定義指向結構體變量的指針;II 輸入要增加的課程編號,從頭指針指向的結構體依次向后,直到找到課程編 號為輸入值的那個結構體;III 將其刪除,其前一個的結構體指針指向其后一個結構體3、學生信息錄入函數 <void input<) 從鍵盤錄入 <void putin( > )I 定義指向結構體變量的指針;II 從頭指針指向的結構體開始依次錄入結構體中所包含的各個成員;III 直到輸入的結構體成員的編號為 0,錄入結束 從文件錄入 <void putin2( >

7、)I 分別定義指向結構體變量的指針和指向文件的指針;II 輸入文件的路徑,打開文件,若沒有找到則有提示;III將文件中的信息依次讀出,最后結構體的指針為N ULL4、學生信息管理 <void managements(>) 增加學生信息 <void inserts(struct student * incouse>)I 定義指向結構體變量的指針;II 輸入要增加的學生編號,從頭指針指向的結構體依次向后,直到鏈表的最 后;III輸入學生結構體各個成員的信息,使最后一個結構體指針值為N ULL 刪除學生信息 <void dels(int num2>)I 定義指向結

8、構體變量的指針;II 輸入要增加的學生編號,從頭指針指向的結構體依次向后,直到找到學生編 號為輸入值的那個結構體;III 將其刪除,其前一個的結構體指針指向其后一個結構體5、學生選課管理 <void elective(>)學生選課 <void elect(>)I 分別定義指向課程和學生結構體變量的指針;II 輸入要選課的學生的編號,從頭指針指向的結構體依次向后,直到找到學生 編號為輸入值的那個結構體,如不存在則顯示要錄入學生信息;III 輸入要選課程的編號,從頭指針指向的結構體依次向后,直到找到課程編號 為輸入值的那個結構體;IV 在學生結構體對應的所選課程編號中更改信

9、息,所選學分中加上相應分值, 課程結構體所選人數中相應加一學生退課 <void back(>)I 分別定義指向課程和學生結構體變量的指針;II 輸入要退課的學生的編號,從頭指針指向的結構體依次向后,直到找到學生 編號為輸入值的那個結構體,如不存在則顯示要錄入學生信息;III 輸入要退課程的編號,從頭指針指向的結構體依次向后,直到找到課程編號 為輸入值的那個結構體;IV 在學生結構體對應的所選課程編號中更改信息,所選學分中減去相應分值, 課程結構體所選人數中相應減一6、信息瀏覽和保存 <void into(> )課程信息瀏覽 <void listc(> )I

10、定義指向結構體變量的指針;II 從頭指針指向的結構體依次向后,將課程結構體各成員的信息一次輸出,直 到最后一個結構體指針的值為 NULL學生信息瀏覽 <void lists(>)I 定義指向結構體變量的指針;II 從頭指針指向的結構體依次向后,將學生結構體各成員的信息一次輸出,直 到最后一個結構體指針的值為 NULL 課程信息保存 <void intoc(> )I 定義指向課程結構體變量的指針和指向文件的指針;II 輸入保存路徑,如果沒有保存則有顯示;III 將課程信息寫入文件中;IV 將課程信息進行保存,關閉文件 學生信息保存 <void intos(>)

11、I 定義指向學生結構體變量的指針和指向文件的指針;II 輸入保存路徑,如果沒有保存則有顯示;III 將學生信息寫入文件中;IV 將學生信息進行保存,關閉文件7、學生信息查詢 <void store(>)按學生姓名查詢 <void search2(>)I 定義指向結構體變量的指針;II 輸入要查詢的學生的姓名,從頭指針指向的結構體依次向后,直到找到學生 姓名為輸入值的那個結構體;III 將該學生結構體成員的各信息依次輸出按學生編號查詢 <void search1(>)I 定義指向結構體變量的指針;II 輸入要查詢的學生的編號,從頭指針指向的結構體依次向后,直到

12、找到學生 編號為輸入值的那個結構體;III 將該學生結構體成員的各信息依次輸出3 調試分析3.1 錯誤顯示及分析a編譯時出現(xiàn)錯誤,回看程序發(fā)現(xiàn)漏掉符號等細節(jié)錯誤。b. 運行時,界面格式與最初的設想不一致,通過重新編排,符號的增減及一 進,最終達到理想界面。c. 運行時,輸入一個信息后,第二次輸入數據時很難將輸入光標移到想要的位 子,通過按鍵的摸索,最終了解了輸入要領。d. 對輸入的信息查詢時沒有記錄,發(fā)現(xiàn)文件讀取錯誤。3.2 修改完善1、開始程序執(zhí)行時,各項大的功能每一次只能執(zhí)行一個就自動跳出,為了使程序保持連續(xù)性和更好的實用性,使用了start,goto start,break,sysyem

13、(Clx ”等實現(xiàn)了逐漸免于更功能的循環(huán)。2、對于學生信息中已選課程的存儲,一直不知如何存儲。后用實型數組,并進 行循環(huán),依次讀入課程的編號,將課程編號進行存儲。4 用戶使用說明4.1適用范圍適用于管理者將課程信息和學生信息錄入到系統(tǒng),并可以將課程信息和學生 信息進行保存,日后如果有需要在對課程和學生信息進行增加可刪除。同時也 適用于學生在登錄自己的學號后,瀏覽課程信息選課,進行選課和退課操作。 4.2使用方法 首先管理者將現(xiàn)有的課程信息 包括課程編號、課程名稱、使用專業(yè)、課程類 型、學時、學分、教師、已選人數 初始為零)和學生信息 包括學生學號、 姓名、已選學時、已選課程編號)錄入到系統(tǒng),并

14、將其進行文件保存,以便以 后使用。若要修改 增加和刪除)課程信息和學生信息,需要先從文件中錄入已 存信息,再輸入編號對其查找并進行相關操作。學生選課需要先輸入自己的學 號,若沒有此學號的學生信息,需先錄入此人信息在進行選課和退課。在選課 和退課前,可以先瀏覽課程信息,并記住要選課程的編號,以便選課時需要。 此外還可以學號和姓名對學生信息進行查詢。5測試結果55.1運行結果主界面 P:娛件遠課豕執(zhí)Debug誰果縈密取貳M W*M H STlUm M M M M M-M-H M K N fcM M M M W W-iMI歡迎使用此系統(tǒng)?覽 息理息理瀏息 SB® 程息主息曙生統(tǒng)信選華系 入

15、費生生息找岀 ->韁£卡囑-S 12345 6 78錄入課程信息課程信息瀏覽S3敎師選課人數"菁0聿巖I 0王閘 05 5 5分學£B質必必必歡迎使用此系統(tǒng),菜單:* Q:渓件謹課尋焼Debug陡果粟統(tǒng).exe *號12 3 45678S修.王覽 息理息理瀏息 程息生息統(tǒng) ¥1子第W-系 入程入生生息找出 錄 l?f ®課程信息存儲錄入學生信息學生信息瀏覽學生信息存儲學生選課選課后學生信息瀏覽回1菜單:Q:7衆(zhòng)件選課豕蜿Wbug誰盪鑒統(tǒng).ex*1二主冃3自3麒木4: a_R存T:1- 程生息回入1234567 B覽 自S理息理瀏息 程皐息

16、屠主統(tǒng) 誥入生生息找出 錄課恚盂于蕩一退學塞姿蚩it所選課程學分所選課程編號1歡迎使用此系統(tǒng)?選課后課程信息瀏覽課程信息管理-P:點件謹課盞執(zhí)Deb四諧杲案燒課穆信息管理1.添加課程2則除課桓3.0諳輸入丄3 =j 學生信息管理學生信息查找渓件選課盞統(tǒng)Debug誰澡鑒統(tǒng)心*|ipfl.返回王菜單學生信息査找j 退出系統(tǒng)7附錄7.1課設小結通過這次課程設計,我對 C語言有了更深刻的了解,增強了程序的編寫能力,鞏固了專業(yè)知識,對程序的模塊化觀念也又模糊逐漸變的清晰了。在程序 的運行與調試過程中出現(xiàn)了很多錯誤,通過反復地復習課本上的相關知識,不 停地修改與調試,我終于完成了這段程序。在調試過程中,我

17、認識到了C語言的靈活性與嚴謹性,同一個功能可以由不同的語句來實現(xiàn),但編寫程序時要特 別注意細節(jié)方面的問題,因為一個小小的疏忽就能導致整個程序不能運行。當 然我也認識到了自己的薄弱之處,如對鏈表相關知識的欠缺,文件運用的不熟 練,在以后的學習中我要集中精力、端正態(tài)度,爭取把知識學得更扎實、更全 面。7.2存在不足1、系統(tǒng)不夠強大,有點脆弱。2、當輸入信息 課程信息,學生信息)后,不能自動保存,需手動保存。 對于以上不足,以后將進行改進,以確保達到更好。7.2詳細代碼#i nclude<stdio.h> #include<stdlib.h> #include<stri

18、ng.h> int N1,N2 。struct studentint num2。char name220。int nelenum50 。/所選課程編號int nelen。/所選課程學分和struct student * next。struct courseint num1。/課程編號char name120。char major20。char type20。int credit。int period。char teacher20。int people。/選此門課程的人數struct course *next。/結構體指針。struct course * head1。 struct stu

19、dent * head2。 void zhang(>/從鍵盤錄入課程信息struct course *p1,*p2。N1=0 。 p1=p2=(struct course *>malloc(sizeof(struct course>>。printf("課程編號t課程名稱t主修t課程性質t學分t課時t教師n">scanf("%d%s%s%s%d%d%s",&p1->num1,p1->name1,p1->major,p1->type,&p1- >credit,&p1->

20、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>>。scanf("%d%s%s%s%d%d%s",&p1->num1,p1->name1,p1->major,p1- >type,&p1->credit,

21、&p1->period,p1->teacher>。p1->people=0。p2->next=NULL 。void zhang1(>/從文件錄入課程信息FILE * fp 。char filepath20 。struct course *p1,*p2。N1=0 。printf(" 請輸入您要讀取的路徑 :"> 。getchar(>。gets(filepath>。if(fp=fopen(filepath,"r">>=NULL>printf("找不到 s 文件!n&qu

22、ot;,filepath>。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>

23、; head1=p1。elsep2->next=p1。p2=p1。p1=(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>。p2->next=NULL 。void load(>

24、/錄入課程信息函數int i 。printf("ttt 錄入課程信息 n"> 。printf("n1. 從鍵盤錄入 "> 。printf("n2. 從文件錄入 ">。printf("n3. 返回主菜單 n">。printf(" 請選擇 1-3:"> 。 scanf("%d",&i> 。switch(i>case 1: zhang(>。 break。case 2:zhang1(> break。case 3:break

25、。void insert(struct course *incourse>/增/ 加課程信息struct course *p0,*p1,*p2。 p1=head1。p0=incourse。if(head1=NULL>head1=p0。p0->next=NULL 。else while(p0->num1>p1->num1> && (p1->next!=NULL>> p2=p1。p1=p1->next。if(p0->num1<=p1->num1>if(head1=p1>head1=p0。

26、elsep2->next=p0。p0->next=p1。elsep1->next=p0。p0->next=NULL 。N1=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&

27、gt; if(p1=head1> head1=p1->next。else p2->next=p1->next。printf(" 已刪除 n"> 。N1=N1-1。elseprintf("沒有此課程n">。end:。void managementc(>/課/ 程信息管理函數struct course * p1。int i,num1 。 printf("ttt 課程信息管理 n"> 。printf("1. 添加課程 n">。printf("2. 刪除課程

28、n">。printf("3. 返回 n"> 。printf(" 請輸入 1-3:n"> 。 scanf("%d",&i> 。switch(i>case 1:p1=(struct course *>malloc(sizeof(struct course>>。printf("課程編號t課程名稱t主修t課程性質t學分t課時t教師 n">。scanf("%d%s%s%s%d%d%s",&p1->num1,p1->

29、name1,p1->major,p1- >type,&p1->credit,&p1->period,p1->teacher>。p1->people=0。 insert(p1>。break。case 2:printf("請輸入您要刪除的課程編號:n">。 scanf("%d",&num1>。delc(num1>。break。case 3:break。void putin(void>/ 從鍵盤錄入學生信息int i。struct student *p1,*p2。N

30、2=0。p1=p2=(struct student *>malloc(sizeof(struct student>>。printf("學號 t 姓名 n">。scanf("%d%s",&p1->num2,p1->name2>。p1->nelen=0。for(i=0。 i<20。 i+> p1->nelenumi=0 。head2=NULL 。while(p1->num2!=0>N2=N2+1 。if(N2=1>head2=p1。elsep2->next=p1

31、。p2=p1。p1=(struct student * >malloc(sizeof(struct student>>。scanf("%d%s",&p1->num2,p1->name2>。p1->nelen=0。for(i=0 。 i<20。 i+> p1->nelenumi=0 。p2->next=NULL 。 void putin2(>/從文件錄入學生信息int i=0 。FILE * fp 。char filepath20。struct student *p1,*p2。N2=0。print

32、f(" 請輸入您要讀取的路徑 :">。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(!feo

33、f(fp>>i=0 。N2=N2+1 。 if(N2=1>head2=p1。elsep2->next=p1。 p2=p1。p1=(struct student * >malloc(sizeof(struct student>>。 fread(p1,sizeof(struct student>,1,fp>。p2->next=NULL 。void input(>/錄入學生信息函數int i。printf("ttt 錄入學生信息 n">。printf("n1.從鍵盤錄入 n">。pr

34、intf("2. 從文件錄入 n">。printf("3. 返回主菜單 n">。 printf(" 請輸入 1-3:n"> 。 scanf("%d",&i> 。switch(i>case 1:putin(>。 break。case 2:putin2(>。 break。case 3:break。void inserts(struct student * incouse>/增/ 加學生信息struct student *p0,*p1,*p2。 p1=head2。p

35、0=incouse。if(head2=NULL> head2=p0。 p0->next=NULL 。elsewhile(p0->num2>p1->num2> && (p1->next!=NULL>>p2=p1。 p1=p1->next。if(p0->num2 <= p1->num2>if(head2=p1> head2=p0。else p2->next=p0。 p0->next=p1。elsep1->next=p0。p0->next=NULL 。N2=N2+1。vo

36、id dels(int num2>/刪除學生信息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。elsep2->next=p1->next。printf(" 已刪除 n

37、"> 。N2=N2-1。elseprintf(" 沒有此學生編號 n">end:。/學/ 生信息管理函數void managements(>struct student * p1。int i,num2 。 printf("ttt 學生信息管理 n"> 。printf("1. 添加學生信息 n">。printf("2. 刪除學生信息 n">。printf("3. 返回主菜單 n">。 printf(" 請選擇 1-3:n"&g

38、t; 。 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("請輸入您要刪除的學生編號:

39、n">。 scanf("%d",&num2>。 dels(num2>。 break。case 3:break。void elect(>/學生選課struct student * s。 struct course * p。 int a,i,b。printf(" 請輸入您的學號 :n">。 scanf("%d",&a> 。s=head2。 while(s->num2>!=a&&s->next!=NULL> s=s->next 。 i

40、f(s->num2!=a>printf(" 您的信息不存在,請重新輸入 :n">。 goto end。if(s->nelen>>10>printf(" 您的學分已滿 ">。goto end。printf(" 請輸入您要選修的課程編號 n">。 scanf("%d",&b> 。for(i=0。 (s->nelenumi>=0。 i+>。 s->nelenumi=b。p=head1。while(p->num1>!=b

41、> 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(>/學生退課struct student * p。struct course * p1。int b,i,j,a 。printf(" 請輸入您的學號 :n">。scanf("%d",

42、&a> 。p=head2。while(p->num2!=a&&p!=NULL> p=p->next 。if(p=NULL>printf(" 您的信息不存在 :n">。elseprintf(" 請輸入您要退選的課程 :n"> 。scanf("%d",&b> 。p1=head1。while(p1->num1!=b> p1=p1->next 。 for(i=0。 p->nelenumi!=b。 i+>。 for(j=i 。 p-&g

43、t;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(>/學生選課信息管理int i。printf("ttt 學生選課信息管理 n">。prin tf("1.選課 n">。prin tf("2.退課

44、 n">。printf("3. 返回主菜單 n">。printf(" 請輸入 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(" 課程編號 課程名稱 主修 課程性質 學分 課時 教師 選 課人數 n"> 。

45、while(p!=NULL>printf("%6d%13s%13s%10s%7d%7d%12s%5dn",p->num1,p->n ame1,p->major,p->type,p->credit,p->period,p->teacher,p->people> p=p->next。void lists(>/瀏覽學生信息struct student * p。int a。p=head2。printf(" 學生編號 學生姓名 所選課程編號 所選課程學分 n">。 while(p!=NU

46、LL>printf("%6d%13s",p->num2,p->name2>。printf("%6d",p->nelen> 。for(a=0。p->nelenuma!=0&&a<14。a+> printf("%d",p->nelenuma> 。printf("n"> 。p=p->next。void intoc(>/存儲課程信息FILE * fp 。struct course * p。char filepath30。pr

47、intf("輸入路徑:"。getchar(>。gets(filepath>。if(fp=fopen(filepath,"w">>=NULL>無法儲存 !">。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&g

48、t;。p=p->next。fclose(fp>。printf("已儲存入 s文件!n",filepath>。void intos(>/存儲學生信息FILE * fp 。 struct student * p。 char filepath30。printf("請輸入路徑:"。getchar(。 gets(filepath。if(fp=fopen(filepath,"wt"=NULLprintf("n 無法儲存 !"。 exit(0。 p=head2。 while(p!=NULLfwrite(p

49、,sizeof(struct student,1,fp。 p=p-next。fclose(fp 。printf(” 已儲存入 s 文件!n",filepath。void into(/信息存儲函數int i。printf("ttt 信息存儲 n"。printf("1.課程信息存儲n"。 printf("2. 學生信息存儲 tn"。 printf("3. 返回主菜單 n"。 printf(" 請輸入 1-3n"。 scanf("%d",&i 。switch(ic

50、ase(1>:intoc(>。 break。 case(2>:intos(>。 break。 case(3>:break。void store(>/信息存儲瀏覽函數int i 。printf("tt 信息存儲和瀏覽 n">。 printf("1. 課程信息瀏覽 n">。 printf("2. 學生信息瀏覽 n">。printf("3.信息存儲 n">。 printf("4. 返回主菜單 n">。printf(" 請輸入

51、1-4:n"> 。 scanf("%d",&i> 。switch(i> case(1>:listc(>。 break。 case(2>:lists(>。 break。case(3>:into(>。 break。 case(4>:break。void search1(>/按/ 學生編號查找學生信息int a,b。 struct student * p。printf(" 請輸入學生編號 ">。 scanf("%d",&a>。p=head

52、2。printf(" 學號 學生姓名 所選課程編號 所選課程學分 n"> while(p!=NULL>if(p->num2=a>printf("%6d%13s ",p->num2,p->name2>。for(b=0。p->nelenumb!=O&&b<14 。 b+>printf("%d",p->nelenumb> 。printf("%10dn",p->nelen> 。p=p->next。void search2(>/按/ 學生姓名查找學生信息int b。char name20。struct student * p。printf(" 請輸入要查找的學生姓名 :">。 scanf("%s",name>。p=head2。printf(" 學號 學生姓名 所選課程編號 所選課程學分 n"> while(p!

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論