版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 隨著課程改革的不斷深入,學(xué)校規(guī)模不斷擴大、課程項目不斷增多,為了解決學(xué)生選課管理上的復(fù)雜的人工操作,減輕重復(fù)工作,故設(shè)計了選課系統(tǒng)。學(xué)校規(guī)模的擴大使得學(xué)校對每年新生入學(xué)、畢業(yè)生離校及本校各種分流機制造成的學(xué)生信息產(chǎn)生變動,如學(xué)籍變動、個人信息修改。為了適應(yīng)課程的改革,學(xué)校在每個學(xué)期都要開設(shè)一定的課程提供給學(xué)生,讓學(xué)生根據(jù)
2、自己的情況來選擇,根據(jù)學(xué)生選擇結(jié)果給出課程表。本校根據(jù)教學(xué)實際,為了使教師有效地管理學(xué)生信息,設(shè)計學(xué)生信息管理系統(tǒng),由此形成學(xué)生成績管理系統(tǒng),本文就此設(shè)計思路進行闡述。 </p><p> 隨著學(xué)校規(guī)模的不斷擴大,專業(yè)、班級、學(xué)生的數(shù)量急劇增加,有關(guān)學(xué)生選課的各種信息量也成倍增長,而目前許多高校的學(xué)生選課管理仍停留在復(fù)雜的人工操作上,重復(fù)工作較多,工作量大,效率低,因此,迫切需要開發(fā)基于互聯(lián)網(wǎng)的課程信息管理系統(tǒng)
3、來提高管理工作的效率?;谛@網(wǎng)的學(xué)生選課管理系統(tǒng),在學(xué)生選課的規(guī)范管理、科學(xué)統(tǒng)計和快速查詢方面具有較大的實用意義。它提高了信息的開放性,大大地改善了學(xué)生、教師對其最新信息查詢的準確性.</p><p> 關(guān)鍵詞:選課系統(tǒng) ;學(xué)生信息管理系統(tǒng) ;數(shù)據(jù)流圖 </p><p><b> Abstract</b></p><p> With t
4、he deepening of the curriculum reform, increasing the school continues to expand the scale, course project, in order to solve the complex manual operation of student management, reduce duplication of work, so the design
5、of the course selection system. The school scale expansion so that the school of new students each year, the school leavers and various distribution mechanism of student information changes, such as the student status ch
6、anges, personal information changes. In order to adapt</p><p> With the continuous expansion of school size, the number of professional, class, students increased dramatically, the amount of information on
7、a variety of elective students also multiplied, and now many college students course management still stays in the complex manual operation, too much repeated work, heavy workload, low efficiency, therefore, it is urgent
8、 to develop curriculum information management system based on Internet to improve management efficiency. Student course management system</p><p> Keywords: course system,;student information management syst
9、em; data flow diagram</p><p><b> 目錄</b></p><p> 1概述…………………………………………………………………………………4</p><p> 1.1學(xué)生選修課的介紹4</p><p> 1.2管理者在本系統(tǒng)的功能4</p><p>
10、1.3對功能的規(guī)定4</p><p> 1.4系統(tǒng)開發(fā)的意義5</p><p> 1.5系統(tǒng)開發(fā)的背景5</p><p> 2總體設(shè)計……………………………………………………………6</p><p> 2.1總體設(shè)計模板6</p><p><b> 3詳細設(shè)計7</b><
11、/p><p> 3.1主函數(shù),頭文件及結(jié)構(gòu)體聲明7</p><p> 3.2管理員功能模塊8</p><p> 3.3學(xué)生功能菜單10</p><p> 3.4創(chuàng)建鏈表模塊11</p><p> 3.5瀏覽模塊13</p><p> 3.6查詢模塊15</p>
12、<p> 3.7插入鏈表模塊18</p><p> 3.8 添加模塊18</p><p> 3.9刪除模塊18</p><p> 3.10選修課程模塊20</p><p> 3.11 讀取文件模塊22</p><p> 3.12 保存文件模塊22</p><p>
13、; 4系統(tǒng)測試.………………………………………………………24</p><p> 4.1進入界面…………………………………………………………………….24</p><p> 4.2進入管理者系統(tǒng)24</p><p> 4.3進入學(xué)生菜單27</p><p><b> 5結(jié)論30</b></p>
14、<p><b> 參考文獻31</b></p><p><b> 致 謝32</b></p><p><b> 1概述</b></p><p> 1.1學(xué)生選修課的介紹</p><p> 現(xiàn)代的社會是信息化的社會,信息無所不在。在生產(chǎn)領(lǐng)域、流通領(lǐng)域
15、、各個部門每天都和信息打交道,如何處理如此多的信息成為了一個重要的課題。學(xué)生在學(xué)期開始選課是教學(xué)活動中的一個重要環(huán)節(jié),該環(huán)節(jié)如果能管理好,它不僅能加快學(xué)生的選課速度,也提高了整個活動的效率。大學(xué)一般都有上千名學(xué)生,每學(xué)期開始學(xué)生都要選課,因而產(chǎn)生了大量的課程信息??紤]到用戶使用的方便和處理的信息量系統(tǒng)要完成錄入,保存,查詢,修改和刪除課程信息的各種過程,能打印出課程信息表。</p><p> 系統(tǒng)的主要使用對象
16、是需要選課的學(xué)生。學(xué)生在選課是要察看各個課程的詳細信息,還要選擇一些感興趣的課程,需要生成課表,在發(fā)現(xiàn)課程有沖突后能夠修改先前選擇的信息。需要隨學(xué)生選課的變化,計算相應(yīng)的總學(xué)分。在全部選定后,打印報表。系統(tǒng)還需要管理員來查看和修改學(xué)生的總體選課情況課程信息和學(xué)生信息。選課系統(tǒng)開發(fā)的目標是實現(xiàn)學(xué)生選課信息關(guān)系的系統(tǒng)化、規(guī)范化和自動化</p><p> 為保證系統(tǒng)安全高效地運行,本系統(tǒng)把用戶劃分為2類:管理者和學(xué)生
17、。不同的用戶在系統(tǒng)中的作用和權(quán)限也有所不同,所以它所需要完成的功能也就不同。 </p><p> 1.2管理者和學(xué)生在本系統(tǒng)的功能</p><p> 管理者:查詢學(xué)生選課情況、自己任課情況、獲取自己所擔任課程分班表、錄入及修改成績等。學(xué)生:查詢本人信息、教師任課信息、選課、選課信息查詢、成績查詢。</p><p> 1.3對功能的規(guī)定 </p>
18、<p> 1). 可實現(xiàn)學(xué)生選課注冊。 </p><p> 2). 方便實現(xiàn)學(xué)生選課信息查詢。 </p><p> 3). 可對學(xué)生成績檔案進行管理,成績表單生成簡便。 </p><p> 4). 安全有效的用戶區(qū)分,管理。 </p><p> 5). 檔案數(shù)據(jù)的高安全性,保密性。 </p><p&g
19、t;<b> 6). 有幫助文檔</b></p><p> 1.4系統(tǒng)開發(fā)的意義 </p><p> 學(xué)生選課系統(tǒng)是一個學(xué)校不可缺少的部分,它的內(nèi)容對于學(xué)校的決策者和管理者來說都至關(guān)重要,所以學(xué)生選課系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統(tǒng)人工的方式管理文件檔案,這種管理方式存在著許多缺點,如:效率低、保密性差,另外時間一長,將
20、產(chǎn)生大量的文件和數(shù)據(jù),這對于查找、更新和維護都帶來了不少的困難。 因此,開發(fā)這樣一套軟件成為很有必要的事情 </p><p> 1.5系統(tǒng)開發(fā)的背景 </p><p> 目前,我國的高等教育事業(yè)蓬勃發(fā)展,高校的規(guī)模不斷擴大,同時,高校的教學(xué)改革也在全面推行,學(xué)分制在各高校全面啟動。學(xué)分制——允許學(xué)生在計劃的指導(dǎo)下,根據(jù)自己的條件、能力、志趣,有選擇地支配自己的學(xué)習(xí)。因此,學(xué)生的選課
21、就成為推行學(xué)分制的重要管理任務(wù)。以往的選課均是在計劃模式下進行:每位教師將所開的課程名稱,個人簡介,課程限選人數(shù),限選專業(yè)等信息交給教務(wù)處,教務(wù)處再將這些信息統(tǒng)一成冊,分發(fā)給各個班級班長,由班長將本班的選課情況統(tǒng)計并返回教務(wù)處。這是一個相當長的周期,并且耗費大量的人力、物力,對選擇結(jié)果沒有控制。學(xué)生選課系統(tǒng)能夠讓學(xué)生們在網(wǎng)絡(luò)上自主選擇選修課程,教務(wù)處的工作人員則通過網(wǎng)絡(luò)來處理學(xué)生的選課信息。這個系統(tǒng)實現(xiàn)了對信息數(shù)據(jù)的瀏覽、查詢、編輯和管
22、理等基本數(shù)據(jù)庫操作,采取模塊化的編寫思想,提高了可讀性,同時提高了開發(fā)效率,從而實現(xiàn)了校園無紙化辦公,提高選課的效率,減輕選課操作的工作量,從而提高教學(xué)管理的效率</p><p><b> 2總體設(shè)計</b></p><p> 2.1學(xué)生選修課程總體設(shè)計模板</p><p> 描述:(1)對于后臺管理數(shù)據(jù)庫,可以列出以下數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)
23、 </p><p> 管理員信息:管理員名稱、管理員密碼。 </p><p> 課程信息:課程號、課程名稱、課程類別、開課系。 </p><p> 選課信息:課程號、學(xué)生學(xué)號、成績</p><p> (2)在管理員菜單中管理員可以進行對選修課程的輸入和刪除,從而使得學(xué)生可以去進入學(xué)生菜單去選擇選修的課程</p>&
24、lt;p> (3)學(xué)生可以在學(xué)生菜單中先進行對課程的瀏覽,再進入選擇模塊進行對課程的選擇,當學(xué)生想查看自己的選修課程信息時進入查詢模塊就可以查詢到自己所選的課程和課程信息。若對所選的課程不滿意可以進入刪除模塊進行刪除</p><p> (4)當輸入1到3以外的數(shù)字時進入不到任何界面</p><p> ?。?)該程序采用多個main()函數(shù)模塊分別來實現(xiàn)程序的運行,通過使用數(shù)組功能
25、來實現(xiàn)數(shù)據(jù)的錄入,使用strcpy()函數(shù)來實現(xiàn)錄入信息的復(fù)制,整個結(jié)構(gòu)從整體來看使用了選擇結(jié)構(gòu),break ..case ..的合理利用</p><p><b> ?。?lt;/b></p><p><b> 3詳細設(shè)計</b></p><p> 3.1主函數(shù),頭文件及結(jié)構(gòu)體聲明</p><p>
26、 主函數(shù)設(shè)計地比較簡潔,只是提供一個主菜單,switch語句將整個程序分為兩個大的功能模塊:進入管理者界面和進入學(xué)生界面。當輸入1時進入管理員菜單,當輸入2時進入學(xué)生菜單,當輸入3時退出程序</p><p><b> [程序]</b></p><p> int main()</p><p><b> {</b>&l
27、t;/p><p> int n,w=1;</p><p><b> do</b></p><p><b> {</b></p><p> system("cls"); puts("\n\n\t\t*****************MENU*************
28、*****\n\n");</p><p> puts("\t\t\t\t1.以管理員身份登錄\n");</p><p> puts("\t\t\t\t2.以學(xué)生身份登錄\n");</p><p> puts("\t\t\t\t3.退出");</p><p> put
29、s("\n\n\t\t*******************************************\n");</p><p> printf("Chiose your number(1-3):[ ]\b\b");</p><p> scanf("%d",&n);</p><p><
30、;b> switch(n)</b></p><p><b> {</b></p><p> case 1:Mangers() ;break;</p><p> case 2:Students();break;</p><p> case 3:w=0;break;</p><
31、p><b> default:;</b></p><p><b> }</b></p><p><b> }</b></p><p> while(w==1);</p><p> return 0;}</p><p> 3.2管理員功能
32、模塊</p><p> 管理員的功能一共有四個功能:瀏覽,查詢,添加,刪除課程,運用字符串處理函數(shù)處理密碼的問題,用一個switch語句實現(xiàn)函數(shù)的調(diào)用。當進入登陸界面后輸入管理員密碼1進入管理員菜單,來進行對課程的輸入和刪除</p><p><b> [程序]</b></p><p> void Mangers()</p>
33、<p><b> {</b></p><p> int n,w=1,flag=0,i=3;</p><p> char s[8];</p><p> char password[7]="1";</p><p><b> do</b></p>&l
34、t;p><b> {</b></p><p> printf("\n\nEnter password:");</p><p> scanf("%s",s);</p><p> if(!strcmp(s,password)) //進行密碼匹配驗證</p>
35、<p><b> {</b></p><p><b> flag=1;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> else</b>&l
36、t;/p><p><b> {</b></p><p> printf("\n\nError! You only have %d times! Enter again:\n",i-1);</p><p><b> i--;</b></p><p><b> } &l
37、t;/b></p><p><b> }</b></p><p> while(i>0);</p><p><b> if(!flag)</b></p><p><b> {</b></p><p> printf("yo
38、u have Enter 3 times!"); //輸入密碼超過了3次??!</p><p> exit(0); //自動退出</p><p><b> }</b></p><p><b> do</b></p><
39、;p><b> {</b></p><p> system("cls");</p><p> puts("\n\n\t\t*********************管理員菜單***********************\n\n");</p><p> puts("\t\t\t\t
40、1---瀏覽課程\n");</p><p> puts("\t\t\t\t2---查詢課程\n");</p><p> puts("\t\t\t\t3---添加課程\n");</p><p> puts("\t\t\t\t4---刪除課程\n");</p><p>
41、 puts("\t\t\t\t5---返回主菜單");</p><p> puts("\n\n\t\t******************************************************\n");</p><p> printf("Chiose your number(1-5):[ ]\b\b");&l
42、t;/p><p> scanf("%d",&n);</p><p><b> switch(n)</b></p><p><b> {</b></p><p> case 1:prin();break;</p><p> case 2:sea
43、rch();break;</p><p> case 3:insert();savefile();break;</p><p> case 4:del();savefile();break;</p><p> case 5:return;</p><p><b> default:;</b></p>
44、<p><b> } </b></p><p><b> }</b></p><p> while(w==1);</p><p><b> }</b></p><p> void Students()</p><p><b&g
45、t; {</b></p><p> int n,w=1;</p><p><b> do</b></p><p><b> {</b></p><p> system("cls");</p><p> puts("\n\n
46、\t\t*********************學(xué)生菜單***********************\n\n");</p><p> puts("\t\t\t\t1---瀏覽所有課程\n");</p><p> puts("\t\t\t\t2---查詢課程信息\n");</p><p> puts(&quo
47、t;\t\t\t\t3---選擇選修課程\n");</p><p> puts("\t\t\t\t4---瀏覽我選修的課程\n");</p><p> puts("\t\t\t\t5---刪除錯選課程\n");</p><p> puts("\t\t\t\t6---返回主菜單");</
48、p><p> puts("\n\n\t\t****************************************************\n");</p><p> printf("Chiose your number(1-6):[ ]\b\b");</p><p> scanf("%d",&a
49、mp;n);</p><p><b> switch(n)</b></p><p><b> {</b></p><p> case 1:prin();break;</p><p> case 2:search();break;</p><p> case 3:ch
50、oose();break;</p><p> case 4:prin1();break;</p><p> case 5:del();savefile1();break;</p><p> case 6:return;</p><p><b> default:;</b></p><p>
51、<b> } </b></p><p><b> }</b></p><p> while(w==1);</p><p><b> 3.3學(xué)生功能菜單</b></p><p> 學(xué)生功能菜單包括六個功能:瀏覽課程,查詢課程,選修課程,瀏覽我所選修的課程,添加選修課程,
52、刪除錯選的課程,也是用到switch語句來調(diào)用函數(shù)。</p><p><b> [程序]</b></p><p> void Students() //學(xué)生登錄菜單</p><p><b> {</b></p><p> int n,w
53、=1;</p><p><b> do</b></p><p><b> {</b></p><p> system("cls");</p><p> puts("\n\n\t\t************學(xué)生菜單**************\n\n")
54、;</p><p> puts("\t\t\t\t1---瀏覽所有課程\n");</p><p> puts("\t\t\t\t2---查詢課程信息\n");</p><p> puts("\t\t\t\t3---選擇選修課程\n");</p><p> puts("
55、;\t\t\t\t4---瀏覽我選修的課程\n");</p><p> puts("\t\t\t\t5---刪除錯選課程\n");</p><p> puts("\t\t\t\t6---返回主菜單");</p><p> puts("\n\n\t\t**************************
56、*********\n");</p><p> printf("Chiose your number(1-6):[ ]\b\b");</p><p> scanf("%d",&n);</p><p><b> switch(n)</b></p><p>&l
57、t;b> {</b></p><p> case 1:prin();break;</p><p> case 2:search();break;</p><p> case 3:choose();break;</p><p> case 4:prin1();break;</p><p>
58、case 5:del();savefile1();break;</p><p> case 6:return;</p><p><b> default:;</b></p><p><b> } </b></p><p><b> }</b></p>&l
59、t;p> while(w==1);</p><p><b> 3.4創(chuàng)建鏈表模塊</b></p><p> (1)從標準輸入文件輸入字符串到string字符數(shù)組,再用fputs函數(shù)把此字符串送入file1.txt文件中。 </p><p> (2)由于fputs函數(shù)不會在輸出一個字符串之后加上一個“\n”字符,為了在從
60、磁盤中取出數(shù)據(jù)時能區(qū)分各字符串,要在存入時使用fputs函數(shù)輸出一個“\n”。 </p><p> ?。?)由于輸入循環(huán)的控制條件是字符串的長度不為0,所以結(jié)束輸入操作的方法是在最后一行只輸入一個Enter鍵功能說明 ,錄入課程信息代碼。</p><p><b> 創(chuàng)建鏈表模塊</b></p><p><b>
61、 [程序]</b></p><p> SUB *create_form() //創(chuàng)建鏈表 </p><p><b> {</b></p><p> SUB *head,*tail,*p;</p><p> int num,stime,ttime;<
62、;/p><p> int etime,score,term;</p><p> char name[20],kind[10];</p><p> int size=sizeof(SUB);</p><p> head=tail=NULL;</p><p> printf("輸入選修課程信息:\n&quo
63、t;);</p><p> scanf("%d%s%s%d%d%d%d%d",&num,name,kind,&stime,&ttime,&etime,&score,&term);</p><p> while(num!=0)</p><p><b> {</b></
64、p><p> p=(SUB *)malloc(size);</p><p> p->num=num;</p><p> strcpy(p->name,name);</p><p> strcpy(p->kind,kind);</p><p> p->stime=stime;</p&g
65、t;<p> p->ttime=ttime;</p><p> p->etime=etime;</p><p> p->score=score;</p><p> p->term=term;</p><p> if(head==NULL)</p><p><b>
66、; head=p;</b></p><p><b> else</b></p><p> tail->next=p;</p><p><b> tail=p;</b></p><p> scanf("%d%s%s%d%d%d%d%d",&num
67、,name,kind,&stime,&ttime,&etime,&score,&term);</p><p><b> }</b></p><p> tail->next=NULL;</p><p> return head;</p><p><b> }&
68、lt;/b></p><p><b> 3.5瀏覽模塊</b></p><p> 瀏覽模塊主要用管理員中的“瀏覽課程”和學(xué)生功能中的“瀏覽所有所有課程”,將所有的課程信息輸出,即將all_sub.txt文件里面的內(nèi)容全部輸出。在瀏覽界面中不能進行刪除或添加課程,只能夠來看課程的信息或選擇的課程信息。</p><p><b>
69、 [程序]</b></p><p> void prin() //瀏覽所有課程</p><p><b> {</b></p><p><b> SUB *ptr;</b></p><p> head=NULL;</p><p> readfile(
70、);</p><p> if(head==NULL)</p><p><b> {</b></p><p> printf("\n\n\t*********NO RECORDS!************\n");</p><p><b> return;</b></
71、p><p><b> }</b></p><p> printf("課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期\n");</p><p> for(ptr=head;ptr;ptr=ptr->next)</p><p><b> {
72、</b></p><p> printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b>
73、 }</b></p><p> system("pause");</p><p><b> }</b></p><p> void prin1() //瀏覽所有已選修課程</p><p><b> {</b></p><p>
74、SUB *ptr;</p><p><b> FILE *fp;</b></p><p> if((fp=fopen("3.txt","r"))==NULL)</p><p><b> {</b></p><p> printf("Cann
75、ot open file.\n");</p><p><b> choose();</b></p><p><b> }</b></p><p> printf("課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期\n");</p>
76、<p> while(!feof(fp))</p><p><b> {</b></p><p> ptr=(SUB*)malloc(sizeof(SUB));</p><p> fscanf(fp,"%d%s%s%d%d%d%d%d\n",&ptr->num,ptr->name,pt
77、r->kind,&ptr->stime,&ptr->ttime,&ptr->etime,&ptr->score,&ptr->term);</p><p> printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr-
78、>stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b> }</b></p><p> system("pause");</p><p><b> }</b></p><p&g
79、t;<b> 3.6 查詢模塊</b></p><p> 查詢模塊主要用于管理員功能中的“查詢課程”和學(xué)生功能模塊中的“查詢所有課程”,查詢模塊共分為三個查詢方法:按課程名稱查找,按課程性質(zhì)查找和按學(xué)分查找switch語句中,每一個case語句就是一中查詢方法:</p><p><b> [程序]</b></p><p&
80、gt; void search() //課程信息查詢</p><p><b> {</b></p><p> int a,num;</p><p><b> int t=1;</b></p><p> char type[10],min[10]
81、;</p><p><b> SUB *ptr;</b></p><p> L1:system("cls");</p><p> printf("\n\n\t\t**********請選擇查詢方式*************\n");</p><p> printf(&quo
82、t;\n\t\t\t1---按課程名稱查找\n");</p><p> printf("\n\t\t\t2---按課程性質(zhì)查找\n");</p><p> printf("\n\t\t\t3---按學(xué)分查找\n");</p><p> printf("\n\t\t\t4---退出查找\n")
83、;</p><p> printf("\n\n\t\t**************************************\n");</p><p> printf("\n\nChiose your number(1-4):[ ]\b\b");</p><p> scanf("%d",&
84、;a);</p><p><b> switch(a)</b></p><p><b> {</b></p><p> case 1:printf("請輸入要查找的課程的名稱:");</p><p> scanf("%s",min);</p>
85、;<p> printf("課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期\n");</p><p> for(ptr=head;ptr;ptr=ptr->next)</p><p> if(strcmp(min,ptr->name)==0)</p><p><b
86、> {</b></p><p> printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p>&l
87、t;b> t=0;</b></p><p><b> }</b></p><p><b> if(t) </b></p><p> printf("\t\n未找到!\n");</p><p><b> t=1;</b></p
88、><p> system("pause");</p><p><b> goto L1;</b></p><p> case 2:printf("請輸入要查找的課程的性質(zhì):");</p><p> scanf("%s",type);</p>&
89、lt;p> printf("課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期\n");</p><p> for(ptr=head;ptr;ptr=ptr->next)</p><p> if(strcmp(type,ptr->kind)==0)</p><p><b>
90、; {</b></p><p> printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b
91、> t=0;</b></p><p><b> }</b></p><p><b> if(t) </b></p><p> printf("\t\n未找到!\n");</p><p><b> t=1;</b></p>
92、;<p> system("pause");</p><p><b> goto L1;</b></p><p> case 3:printf("輸入要查找的課程的學(xué)分:");</p><p> scanf("%d",&num);</p>&
93、lt;p> printf("課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期\n");</p><p> for(ptr=head;ptr;ptr=ptr->next)</p><p> if(ptr->score==num)</p><p><b> {</b
94、></p><p> printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);</p><p><b> t=0;
95、</b></p><p><b> }</b></p><p><b> if(t) </b></p><p> printf("\n\t未找到!\n");</p><p><b> t=1;</b></p><p&g
96、t; system("pause");</p><p><b> goto L1;</b></p><p> case 4:break;</p><p><b> }</b></p><p><b> }t=0;</b></p>&l
97、t;p><b> }</b></p><p><b> if(t) </b></p><p> printf("\n\t未找到!\n");</p><p><b> t=1;</b></p><p> system("pause&q
98、uot;);</p><p><b> goto L1;</b></p><p> case 4:break; //退出查找</p><p><b> }</b></p><p><b> }</b></p>
99、<p><b> 3.7插入鏈表模塊</b></p><p> 插入鏈表操作主要用于添加課程,在整個課程信息中加入一些新課程,它在添加模塊中被調(diào)用:</p><p><b> [程序]</b></p><p> void *myInsert(SUB *subj) //鏈表插入操作 </p&g
100、t;<p><b> {</b></p><p> SUB *ptr,*ptr2;</p><p><b> ptr=subj;</b></p><p> if(head==NULL)</p><p><b> {</b></p><
101、p><b> head=ptr;</b></p><p> head->next=NULL;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>
102、<p> for(ptr2=head;ptr2;ptr2=ptr2->next)</p><p> if(ptr2->next==NULL)</p><p><b> {</b></p><p> ptr2->next=subj;</p><p><b> 3.8 添加模
103、塊</b></p><p> 添加模塊主要用于增加課程信息,采用鏈表的操作:</p><p><b> [程序]</b></p><p> void *insert() //插入課程信息 </p><p><b> {</b></p
104、><p> SUB *ptr,*subj;</p><p> int size=sizeof(SUB);</p><p> char ch,ch1;</p><p> while(ch!='0')</p><p><b> {</b></p><p>
105、 subj=(SUB *)malloc(size);</p><p><b> ptr=subj;</b></p><p> printf("輸入要插入的課程信息:\n");</p><p> printf("\n\t\t 請輸入課程編號:");scanf("%d",&
106、subj->num); </p><p> printf("\n\t\t請輸入課程名稱:");scanf("%s",&subj->name); </p><p> printf("\n\t\t 請輸入課程性質(zhì):");scanf("%s",&subj->kind);
107、</p><p> printf("\n\t\t請輸入總學(xué)時:");scanf("%d",&subj->stime);</p><p> printf("\n\t\t請輸入授課學(xué)時:");scanf("%d",&subj->ttime);</p><p>
108、 printf("\n\t\t請輸入實踐或上機學(xué)時:");</p><p> scanf("%d",&subj->etime);</p><p> printf("\n\t\t請輸入學(xué)分:");scanf("%d",&subj->score);</p><p
109、> printf("\n\t\t請輸入開課學(xué)期:");scanf("%d",&subj->term);</p><p> myInsert(subj);</p><p> printf("\n\n繼續(xù)插入請按回車\n");</p><p> printf("\n結(jié)束添加
110、課程按 0: [ ]\b\b");</p><p> ch1=getchar(); /*將回車鍵賦給CH1,否則subj->term輸完后輸入的回車鍵會賦給CH,因此用CH1填補。*/</p><p> ch=getchar();</p><p><b> }</b></p&
111、gt;<p> return head;</p><p><b> }</b></p><p><b> 3.9刪除模塊</b></p><p> 刪除模塊主要用于管理員刪除課程信息學(xué)生刪除自己的選課,全部采用刪除鏈表中的某一個節(jié)點的操作:</p><p><b>
112、 [程序]</b></p><p> void *del() //刪除課程-</p><p><b> {</b></p><p> SUB *p1,*p2;</p><p> char ch,ch1;</p><
113、p><b> int num;</b></p><p> while(ch!='0')</p><p><b> {</b></p><p> printf("輸入想要刪除的課程編號:[ ]\b\b\b\b\b");</p><p> sca
114、nf("%d",&num);</p><p> if(head->num==num)</p><p><b> {</b></p><p><b> p2=head;</b></p><p> head=head->next;</p>&
115、lt;p><b> free(p2);</b></p><p><b> }</b></p><p> if(head==NULL)</p><p> return NULL;</p><p><b> p1=head;</b></p><p
116、> p2=head->next;</p><p><b> while(p2)</b></p><p><b> {</b></p><p> if(p2->num==num)</p><p><b> {</b></p><p&
117、gt; p1->next=p2->next;</p><p><b> free(p2);</b></p><p><b> }</b></p><p><b> else </b></p><p><b> p1=p2;</b>&l
118、t;/p><p> p2=p1->next;</p><p><b> }</b></p><p> printf("\n繼續(xù)刪除請按回車\n");</p><p> printf("\n結(jié)束刪除課程按 0: [ ]\b\b");</p><p>
119、 ch1=getchar(); //將回車鍵賦給CH1,否則num輸完后再輸入的回車鍵會賦給CH,因此用CH1填補。</p><p> ch=getchar();</p><p><b> }</b></p><p> return head;</p><p> sy
120、stem("pause");</p><p><b> }</b></p><p> 3.10選修課程模塊</p><p> 選修課程模塊采用插入鏈表的操作:</p><p><b> [程序]</b></p><p> void choose(
121、) //選新課程</p><p><b> {</b></p><p> SUB *p,*q;</p><p><b> int a[5];</b></p><p> int num,total=0,i=0,j;</p><
122、;p> printf("輸入要選修的課程的編號,編號之間以空格分開\n");</p><p> scanf("%d",&num);</p><p> printf("如果確認輸入完要選修的課程的編號,請輸入0: [ ]\b\b");</p><p> while(num!=0)<
123、/p><p><b> {</b></p><p> for(p=head;p;p=p->next)</p><p> if(p->num==num)</p><p><b> {</b></p><p> total=total+p->score;&
124、lt;/p><p><b> a[i]=num;</b></p><p><b> i++;</b></p><p><b> }</b></p><p> scanf("%d",&num);</p><p><b&
125、gt; }</b></p><p> if(total<60)</p><p><b> { </b></p><p> printf("選修總學(xué)分為%d,未達到60,選修失敗!\n",total);</p><p> system("pause");&
126、lt;/p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> Int FILE,fp;</p><p><b> FILE *fp;</b><
127、;/p><p> fp=fopen("my_sub.txt","w");</p><p> for(j=0;j<i;j++)</p><p> for(q=head;q;q=q->next)</p><p> if(q->num==a[j])</p><p>
128、; fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",q->num,q->name,q->kind,q->stime,q->ttime,q->etime,q->score,q->term);</p><p> fclose(fp);</p><p> printf("\t
129、\t\n*****選修成功!****\n");</p><p> printf("\n您選修的課程總學(xué)分為%d,課程分別為:\n",total);</p><p> printf("\n課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實踐或上機學(xué)時 學(xué)分 開課學(xué)期\n");</p><p> fo
130、r(j=0;j<i;j++)</p><p> for(q=head;q;q=q->next)</p><p> if(q->num==a[j])</p><p> printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",q->num,q->name,q->kind,q->st
131、ime,q->ttime,q->etime,q->score,q->term);</p><p> printf("\n以上信息全部保存在'my_sub.txt'中\(zhòng)n");</p><p><b> }</b></p><p> system("pause"
132、);</p><p><b> }</b></p><p> 3.11 讀取文件模塊</p><p> 讀取文件模塊是用來讀出文件內(nèi)容,并將內(nèi)容輸出到內(nèi)存中,當輸入文件名時,就能打開指定的文件,當輸入all_sub.txt時,打開所有課程信息的文件,當輸入my_sub.txt時,就是瀏覽學(xué)生選修的課程信息。</p><
133、p><b> [程序]</b></p><p> void readfile() //閱讀文件 </p><p><b> {</b></p><p> void *myInsert(SUB*);</p><p> SUB *newSub;
134、 //新課程</p><p> int num,stime,ttime,etime;</p><p> int score,term;</p><p> char c,name[20],kind[10],fname[20];</p><p><b> FILE *fp;</b></p><p
135、> fp=fopen("2.txt","r");</p><p> while(!feof(fp))</p><p><b> {</b></p><p> newSub=(SUB*)malloc(sizeof(SUB));</p><p> fscanf(fp,&
136、quot;%d%s%s%d%d%d%d%d\n",&newSub->num,newSub->name,newSub->kind,&newSub->stime,&newSub->ttime,&newSub->etime,&newSub->score,&newSub->term);</p><p> myIns
137、ert(newSub);</p><p><b> }</b></p><p> fclose(fp);</p><p> 3.12 保存文件模塊</p><p> 保存文件模塊共分為兩個子程序,分別是將修改的信息保存到all_sub.txt和my_sub.txt文件中:</p><p>
138、<b> [程序</b></p><p> void savefile() //保存文件 </p><p><b> {SUB *p;</b></p><p> FILE *fp;fp=fopen("2.txt","w");</p><p&
139、gt; if(fp==NULL)exit(0);</p><p> printf("課程編號 課程名稱 課程性質(zhì) 總學(xué)時 授課學(xué)時 實驗或上機學(xué)時 學(xué)分 開課學(xué)期\n");</p><p> for(p=head;p;p=p->next)</p><p> fprintf(fp,"%5d%12s%9s%9d%
140、9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);</p><p> fclose(fp);</p><p> printf("創(chuàng)建后的信息已放入'2.txt'文件中\(zhòng)n")
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計---學(xué)生選修課程系統(tǒng)設(shè)計
- 課程設(shè)計-----學(xué)生選修課程系統(tǒng)設(shè)計
- 課程設(shè)計報告---學(xué)生選修課程系統(tǒng)設(shè)計
- 課程設(shè)計---學(xué)生選修課管理系統(tǒng)
- 課程設(shè)計報告---學(xué)生選修課系統(tǒng)設(shè)計
- c語言學(xué)生選修課程系統(tǒng)設(shè)計--學(xué)生選修課程系統(tǒng)設(shè)計
- 學(xué)生選修課程系統(tǒng)設(shè)計
- 學(xué)生選修課程系統(tǒng)設(shè)計
- c語言課程設(shè)計--學(xué)生選修課系統(tǒng)
- c語言課程設(shè)計--學(xué)生選修課系統(tǒng)設(shè)計
- c++畢業(yè)課程設(shè)計--學(xué)生選修課程系統(tǒng)設(shè)計
- c++課程設(shè)計報告--學(xué)生選修課程系統(tǒng)設(shè)計
- c語言課程設(shè)計學(xué)生選修課系統(tǒng)
- 課程設(shè)計報告---學(xué)生選修課系統(tǒng)設(shè)計.doc
- c語言課程設(shè)計-學(xué)生選修課系統(tǒng)設(shè)計
- c語言課程設(shè)計報告—學(xué)生選修課程系統(tǒng)設(shè)計
- c語言課程設(shè)計報告--學(xué)生選修課程系統(tǒng)
- 課程設(shè)計報告·----學(xué)生選修課系統(tǒng)設(shè)計.doc
- c語言課程設(shè)計報告--學(xué)生選修課程管理系統(tǒng)
- c語言課程設(shè)計_學(xué)生選修課系統(tǒng)設(shè)計(1)
評論
0/150
提交評論