第一篇:學生選課管理系統規劃報告
學生選課管理系統規劃報告
1、系統的意義與目標
網絡的飛速發展深刻地影響了人們的日常生活和商業運作方式。社會的方方面面滲透著互連網的應用,使得一向煩瑣的手工程序變得方便,快捷,而學校網上選課系統正是基于這一思想而發展起來的。傳統的手工選課不僅復雜,也牽涉了很多的人力,對管理也造成了諸多不變,而借助網上選課系統,學生在規定選課時間段內,可以不受地點和時間的限制完成系統登錄、選修課的申請和查詢,而學校也可以方便地對系統進行管理和控制,提高工作效率。
2、系統的用戶需求
用戶的需求具體體現在各種學習成績的提供、保存、更新和查詢方面,這就要求數據庫結構能充分滿足各種信息的輸入和輸出。收集基本數據、數據結構及數據處理的流程,組成一份詳盡數據字典,為后面的具體設計打下基礎。學生選課管理系統的設計為選課及成績管理提供了一個良好的工具,此系統基本實現的設計要求有:
(1)用戶登錄系統
提供良好的用戶登錄界面,輸入用戶名,密碼進行登錄。
(2)學生的需求
網上選課、選課情況查詢、成績查詢。
(3)管理員
(錄入、查詢、修改和刪 除)學生、課程基本資料。
(4)教師的需求
(錄入、查詢、修改和刪除)學生所選課程成績,統計每個學生的總分、平均分以及排名等功能。
3、系統經費概算
初步估算使用經費15萬元,包括硬件資源、技術資料、開發費用、培訓費用等。其中,開發開發期間約需9萬員,調試與運行期間約需6萬元。
4、系統開發計劃
本系統開發計劃由開發小組用10個月完成。具體時間安排計劃如下:
(1)系統調研、系統分析:3個月。
(2)系統設計:2個月。
(3)系統程序設計:3個月。
(4)系統調試:1.5個月。
(5)系統試運行:1.5個月。
第二篇:學生選課管理信息系統規劃
學生選課管理信息系統規劃
(1)系統的意義與目標
隨著學校的辦學規模不斷擴大,生源的急劇增加,有關學生的各種信息量也成倍增長。面對龐大的信息量,學校如何做管理才能夠降低成本又能夠提高管理質量;老師如何工作才能達到既能減輕工作量又能提高工作水平成為一直探討和研究的一門學科。伴隨著計算機的盛行,信息技術在管理上越來越深入而廣泛的應用,管理信息系統的實施在技術上已逐步成熟,學校需要與時俱進的發展,達到科學化和高效化的管理,就需要建立一套與自身特點相適應的管理信息系統來滿足學校學分制改革的要求,便于操作使用。
通過正確的口令進入系統,進行數據庫的維護操作和運用,對數據安全性有一定的保障,保密性好;進入系統后可對學籍信息、班級信息進行添加、修改、刪除、查詢操作;用來實現學生信息管理工作流程的系統化、規范化和自動化。
(2)系統的用戶需求
通過調查,要求系統需要有以下功能:
⑴ 由于操作人員的計算機知識普遍較差,要求有良好的人機界面;
⑵ 由于該系統的使用對象多,要求有較好的權限管理;
⑶ 原始數據修改簡單方便,支持多條件修改;
⑷ 方便的數據查詢,支持多條件查詢;
⑸ 在相應的權限下,刪除數據方便簡單,數據穩定性好;
⑹ 數據計算自動完成,盡量減少人工干預;
學生選課管理系統的性能要求;
⑴軟件的可行
以Windows XP為操作系統,運用SQL的數據庫技術,根據科學的管理方法與編程技術設計、開發學生信息管理系統,能符合各種技術要求,擁有較高的存儲能力和處理速度。該系統的運行硬件環境PC機,當用戶使用系統時,通過正確的口令進入系統,進行數據庫的維護操作和運用,對數據安全性有一定的保障,用戶放心使用
(2)系統科學的分析
待開發模塊的一般描述
本設計主要為學校學生信息管理提供一個使用方便、經濟實用的系統模塊,以替代傳統的手工操作方式。對學生的基本信息模塊進行了設計,包括添加、刪除、查詢學生信息等操作。
(3)模塊設計
3.1 登錄界面
登錄界面的設計,主要是本著實用簡便的原則設計制作。
3.2 主界面
當操作員的名稱和密碼均正確的時候,系統便會進入信息管理(主界面)。信息管理包括系統的所有主功能模塊:學籍管理、班級管理、查詢管理、退出系統。它可以實現錄入學籍信息、錄入班級信息、查詢學籍信息(按學號、按姓名、按班級查詢)、退出系統等功能。
3.3 信息管理
3.3.1添加學籍信息
當操作員點擊學籍管理圖片按鈕進入子目錄,繼續點擊添加學籍信息圖片按鈕,便可進入添加學籍信息界面,對學籍信息進行錄入,添加學籍信息界面的結構(如圖4):
3.3.2 修改學籍信息
當操作員點擊學籍管理圖片按鈕進入子目錄,繼續點擊修改學籍信息圖片按鈕,便可進入修改學籍信息界面,對學籍信息進行更改、刪除,修改學籍信息界面的結構
3.3.3修改班級信息
當操作員點擊班級管理圖片按鈕進入子目錄,繼續點擊修改班級信息圖片按鈕,便可進入修改班級信息界面,對班級信息進行錄入,修改班級信息界面的結構
3.3.5 數據庫表
記錄表信息,添加、修改后的信息保存于學籍信息表或班級信息表中。表中包含學號、姓名等字段,使用戶直觀、便捷的了解學生的基本情況3.3.4查詢學籍信息
學籍信息的查詢基于表,其中提供了按學號,按姓名,按班級三種查詢,在選擇按學號、按姓名或按班級后,可在文本框中輸入要查詢的姓名、學號或班級,然后點擊“查詢”可得到滿足條件的查詢結果。功能是便于操作人員對學籍信息的檢索查詢。如按班級查詢,輸入要查詢的班級
4.系統調試
完成對流程的編碼后,最重要的是對系統的測試工作。測試在系統設計階段有兩個時期,一個時期是在編碼寫完每個模塊后做單元測試,另一個是對系統做綜合測試。
第一、模塊測試:在模塊測試的時候,設計者從下面幾個方面考慮:模塊的結構;局部數據結構;重要執行通道;出錯的處理通道;影響上述方面的邊界條件。
第二、整體測試:總體測試是組裝軟件的系統技術,本系統采用漸增集成測試,即測試單一模塊,再將測試完的模塊加入到系統中,進行一次系統測試,以此類推將所以模塊加入系統中,在具體測試時,采用自頂向下的結合方式,從主控模塊開始,沿各控制層向下移動,逐漸把所以模塊結合。
第三、評估運行可靠性的問題:結果正確;運行速度;空間利用率;
算法的可靠性
(3)系統經費概算
初步估算約需要20萬,包括硬件資源,技術資源,開發費用。培訓費用等。其中,開發期間約需8萬。調試與運行約需6萬元。
(4)系統開發計劃
本系統計劃由開發小組(開發人員4人)用12個月完成,具體時間安排計劃如下:
系統調研,系統分析:3個月
系統設計:2個月
系統程序設計:3個月
系統調試:2個月
系統試運行:2個月
第三篇:學生選課系統可行性分析報告
學生選課系統可行性分析報告
學院:數學計算機學院組長:馬琴
組員:許慕霄、伏敏潤、王佩軍
1.引言
1.1編寫目的每學期的課程都是學校安排的,學生沒有選擇的自由,而且課程的安排由于各方面諸多的原因經常有不適之處,尤其是先行課的問題。另外,每學期考完試,同學們都要一次又一次的往系里跑,大家擠在一個小小的布告欄前面,在幾張A4紙上尋找自己的名字和成績。雖然從去年開始,全學校也改成了“學分制”,但整個選課過程的管理從我們學生的角度來看,變得更加混亂。同學們不知道每學期有什么課可以選,哪些是選修,哪些是必修,哪些是專業課;也不確定每門課多少學分,自己已經修了多少學分;更不用說考慮一下哪門課要先學,哪門課要后學,哪些課屬于一系列。所以說,大部分同學都是為了“選課”而選課,完全沒有實現鼓勵同學發展個性,學各自之所愛的效果。不僅如此,每當選課的時候,同學們忙,老師更忙,學校和系里都需要投入大量的人力、物力對整個選課過程進行管理。
隨著科學技術的發展,計算機已經是日常生活中不可或缺的工具,將學生選課系統從人工管理方式轉變成為計算機軟件控制。具有檢索迅速、查找方便、可靠性高、存儲量達、保密性好、壽命長、成本低等巨大優點。如今,學生選課系統已成為日常教學工作中必不可少的管理軟件,可對學生信息、選修課程、科目成績進行各方面的管理,為用戶提供充足的信息和快捷的查詢、修改手段。選課管理系統。既面向教務處,又面向教師和學生。不同的人,不同的身份操作的權限也不同。作為教師,他可以向教務處申請增加、刪除、修改課程信息,并隨時了解選修本課的學生名單,還可以輸入并分析考試成績。作為教務處管理員,它的權限是最寬的。他可以對教師提出的課程設置申請進行審批,同時對教學進行安排(包括時間和教室分配、選課結果管理)。作為學生,他可以查詢可以選什么課,已有多少學分,還差多少學分。最后進行選課,在學期末還可以隨時進行成績查詢?,F籌劃一學生選課系統管理軟件以代替人工管理方式,最大程度的滿足各方面用戶的需求。
1.2 項目背景
項目名稱:學生選課系統軟件。
項目提出者:寧夏大學
項目開發者:開發小組
用戶:寧夏大學
1.3 定義
SQL:結構化查詢語言
Eclipse:開發源代碼的、基于java的可擴展開發平臺。
1.4 參考資料
《軟件工程》
2.可行性研究的前提
2.1 要求
主要功能:教師對學生資料、成績以及所選課程進行修改管理;學生可通過查詢自身成績,自主選擇相關課程;管理員(教務處)統管所有學生、教師的相關信息。
性能要求:所有數據實時更新保持同步,且定時備份。
輸出要求:簡單、快捷、實時。
輸入要求:及時的修改和更新學生、教師和課程的信息。
安全與保密要求:系統本身配備一定的安全機制,保證各項數據的完整、正確。
每類用戶進入系統時,均需輸入唯一的用戶名和密碼;教師有權對學生所選課程成績進行錄入、查詢和修改;學生有權對選修課程進行修改;管理員有權對學生信息、所選課程、科目成績進行管理、修改。
2.2目標
近幾年來,我們寧夏大學一直都在擴招學生,外地生源的比例也比以前大了許多,而且還有日益增多的外國留學生,在管理上更增加了管理人員的勞動量,如此多的檔案資料,以原有的工作人員數量要管理好實在不容易,但如果增加工作人員,管理成本必然也會增加,得不償失,而我們這套系統這時就會發揮出它大大的作用,讓實用這領會到它的優越之處,幫助老師輕輕松松管理好學生各方面的資料,無論學生是多是少,一切都會被管理得井井有條。節省更多的人力與設備,讓學生選課管理成為一項很直接人性化的管理。
2.3條件、假定何限制
運行環境:Windows98/2000/XP/Vista/7,與Windows office軟件高度兼容。硬件環境:奔4以上計算機。
開發環境:SQL Server、eclipse等。
該系統預期壽命五年。
2.4決定可行性的主要因素
學生選課系統軟件滿足各方用戶需求。
成本/效益分析結果:效益>成本。
3.對現有系統的分析
3.1處理流程和數據流程
教師登錄:可上傳、修改、管理學生選課和成績的查詢。
學生登錄:;學生可通過查詢自身成績,自主選擇相關課程,查詢各科成績。學校登錄:可查詢、管理所有信息。
3.2工作負荷
當前系統負擔全校將近20000余名教師、學生的日常選課管理工作。
3.3人員
當前系統需要4位管理員,對其專業技術要求不高,熟悉基本的電腦操作即可。
3.4設備
一臺服務器,兩臺PC機。
3.5局限性
由于當前系統開發技術過于老舊,穩定性、安全性能尤為不佳,致使系統頻繁遭遇惡意攻擊。系統反應過慢,運行效率低。由此分析得出,需要開發新的學生選課系統軟件。
4.技術可行性
我們身為首都經濟貿易大學信息系的學生,最驕傲的就是擁有令其他系羨慕、向往的系機房。因特爾奔騰四的中央處理器,40G大容量的硬盤,加上256M的內存,配上經久耐用、定位準確的光電鼠標,這都為系統的開發與運行提供了良好的硬件環境,就是這樣一臺臺先進傲人的電腦躺在機房里供我們隨時使用,便利程度真是如此了得??!
身為計算機科學與技術專業大三的學生,通曉一些計算機軟件知識是肯定的,運用軟件編寫程序的能力也是必備的。當然,我們畢竟還是學生,能力還是有限的,但我們計算機系最不缺乏的就是計算機人才,向知識淵博、誨人不倦的鄭小玲老師必會給我們以極大的幫助。更何況,俗語說的好:三個臭皮匠賽過諸葛亮。我們組有4個人,起碼也頂兩個諸葛亮呢。相信通過我們大家的集思廣益,相得益彰,我們的系統將會以最完美的姿態展現在大家的面前。
我校自建校至今已有幾十年的歷史,各種課程比較齊備,且比較有條理。學分制度也比較完善。教師整體水平較高。這使我們開發這一對我們來說比較復雜的系統成為可能。雖然有如此好的客觀條件,但始終沒有一套完善簡單易用的管理系統。現行系統雖然擁有了比較規范、科學的管理方法,并積累了大量的數據信息,具有一定的可行性,但是并不能掩蓋其工作量大,管理不夠系統的缺點。而我們的系統將充分利用學校為我們提供的寶貴信息,在繼承其優點的基礎上,開發出一套更為可行的學生管理系統。這套學生選課管理系統在今后的應用中再經過不斷的修正與改進,將會使我學生選課更加完善、盡美。
5.經濟可行性
成本方面,關于各種軟、硬件及輔助設備的購置、調試、機房及輔助設施(電源等)以及系統維護,內務開銷這些費用都可以忽略不計,因為我們有自己的電腦。
學生選課管理系統省去了老師為學生展示學校為學生提供的選修課程,并作介紹,考試后把分數抄錄多次以做備案和公告這些大量繁雜而由單一枯燥的勞動,可以讓老師把精力放在教學和組織教學等更重要更具創造性的事情上,這就顯著的提高了他們的工作效率。
取消了抄錄成績后,學校里也不會再出現殘破的成績單一層蓋一層的貼在公告欄或黑板上的情景,校園環境也會因此而變得更整潔,而且也為學校省下了大量的紙張,雖然數量并不是很多,但將來系統擴展到整個學校也將是很可觀的。況且,在資源日益缺乏的今天,節省紙張已不僅僅是為學校減少辦公費用這一單純的意義。
眾所周知,學校的的學生多,管理起來非常困難。相應的也加大了老師的工作量,又因為教學制度的不斷變動和改革,因此,總能及時統計出一份內容清晰,條理性強的學籍學分選課分析報表對老師來說真是難于登天。但如果缺少這份報表,同學們就無法清楚了解自己的學分情況,盲目選課,打亂了學習計劃,加重了課業負擔,而那些基本順從課程安排的同學則浪費了許多去學習有用知識的時間,甚至臨畢業時卻發現未修夠學分而畢不了業。這個關系到每個人命運的問題絕對馬虎不得。不能再坐以待斃了,我們這套學生選課管理系統將提供一份完整的學分選課報表,并會利用管理系統的易修改性及時進行更新,讓同學們在選擇課程,計算學分中更加游刃有余。
近幾年來,我們寧夏大學一直都在擴招學生,外地生源的比例也比以前大了許多,而且還有日益增多的外國留學生,在管理上更增加了管理人員的勞動量,如此多的檔案資料,以原有的工作人員數量要管理好實在不容易,但如果增加工作人員,管理成本必然也會增加,得不償失,而我們這套系統這時就會發揮出它大大的作用,讓實用這領會到它的優越之處,幫助老師輕輕松松管理好學生各方面的資料,無論學生是多是少,一切都會被管理得井井有條。
6.社會可行性
經過我們的調查,絕大部分的任課老師,行政人員和校領導都為現行系統的繁瑣和冗雜的工作量所深深困擾著。在得知我們開發這套系統的計劃后,他們都有一種守得云開見月明的感覺,并表示非常愿意在系統的開發過程中給予全力支持以及積極的配合。
我們這套學生選課管理系統不僅能夠讓老師更清晰的掌握自己學生的信息,同時也讓學生自己更容易的知道如何準確的選課,如何計算學分及盡早得知自己的考試成績。這就大大的為老師提供了便利。比如,在每學期期末考試后,大多數學生都已回到家中,如果為了獲取考試成績又不得不再返回學校的話,既費時
又費力,學生牢騷滿腹,老師也不能提早放假休息。而我們的系統可以提供網上查分,同學們在家中只需要上網就可以在第一時間知道自己的成績。還有,學生們也可通過我們的系統進行選課來湊夠學分完成學業。在系統中會顯示出個門課程的性質(如必修、限選、任選),其所占學分及任課老師的資料,其應用性之強得到充分發揮。
我們學校的電腦普及率已達到了很高的水平,尤其是我們系擁有設備先進管理完善的系機房,而學院的老師和學生們對電腦的操作也是駕輕就熟。因此,只要我們這套學生選課系統操作簡單,實用,合理,大家肯定是樂于接受并積極響應和支持的。對于這一點,我們是很有信心的。隨著信息時代的來臨,學籍學分 選課等信息管理的自動化,一體化正是大勢所趨。
7.其他可供選擇的方案
暫無
第四篇:C語言課程設計學生選課系統
題目
一、學生選課管理系統
第一部分:課程設計名稱、目的、要求
第二部分:程序總體設計思路
第三部分:程序功能劃分、圖示及流程圖
第四部分:程序設計數據、運行結果
第五部分:程序的優缺點
第六部分:心得體會
第七部分:附錄(源程序)
第八部分:附錄(參考文獻)
目錄
..............................................................................第一部分:課程設計名稱、目的、要求
名稱:學生選修課程系統設計
目的:運用C語言提高解決實際問題的能力 實驗環境:Microsoft Visual C++ 6.0 內容:
假定有n門課程,每門課程有課程編號,課程名稱,課程性質,總學時,授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要求(如總學分不得少于60)自由選課。【功能】
系統以菜單方式工作?
課程信息錄入功能(課程信息用文件保存)--輸入? 課程信息瀏覽功能--輸出?
查詢功能:(至少一種查詢方式)--算法? 按學分查詢? 按課程性質查詢? 學生選修課程(可選項)?
第二部分:程序總體設計思路
由于C語言是面對過程的語言,故我的設計思路是根據目標程序運行的過程來編寫的。
具體的設計思路如下:
程序的要求是設計學生選修課管理系統,對選修課程能夠進行錄入和修改操作等,要求有菜單界面和退出功能。首先,考慮到程序的數據輸入,可以設置一個管理員登陸選項,通過該選項進入管理員界面,進行選修課的錄入和修改操作,最后將錄入的課程保存到相應的文件中。然后定義各種函數的功能包括查看,查詢,刪除等。另一個為學生登陸界面,該界面學生可以進行課程選擇和瀏覽查詢等操作。在進行該操作之前需要對管理員保存的文件進行讀取,然后對其中的內容進行查詢等,在學生選好課程以后,可以將其選好的課程保存于相應的文件中,以便下次進行修改。通過函數的層層調用來實現程序的邏輯結構。中間通過文件的打開和關閉實現對文件內部所包含的數據的操作。
整個程序的設計思路到此結束。
第三部分:程序功能劃分、圖示及流程圖
【功能模塊劃分及其流程圖】
本程序功能模塊根據程序設計的需求,綜合程序的實用性、人性化、智能化的考慮,將程序劃分為6個部分分別編寫,程序主體功能將由這9個部分來完成。這9個部分依次是:
1.登錄界面函數;void login()2.學生登錄界面據函數:void stu_login()3.管理員登錄界面函數:void man_login()4.退出界面函數:void bye_sys()
5.課程選擇函數:void c_select()6.課程瀏覽函數:void c_view()7.課程查詢函數:void c_search()8.課程增加函數:void c_add()9.課程刪除函數:void c_delete()10.菜單函數:void index()11.主函數部分; main()
總體設計:
學生選課系統管理員登錄學生登錄新增課程刪除課程課程瀏覽查詢課程學生選課課程瀏覽課程查詢c_add函數c_delete函數c_view函數c_search函數c_select函數c_view函數c_search函數
系統功能模塊圖
部分函數流程圖:
1、課程選擇函數:
開始輸入要選擇的課程的編號j=0;j
2、課程查詢函數
開始輸入要查詢的課程的編號j=0;j 3、課程增加函數 開始輸入要增加的課程的編號j=0;j 4、課程刪除函數 開始輸入要刪除的課程的編號nj=0;j 本程序是一款應用軟件,故數據設計、程序運行結果應在程序的 運用中得以體現,現在通過一個程序的運用事例來對程序運行結果進行演示與實現?!拒浖\用舉例】 1、程序開始界面如下: 選擇某個選項,如進行管理員登錄,進行課程的增加 進入管理員界面: 2、再選擇所要進行的操作,如進行課程增加,結果如下: 下面可以進行繼續增加課程或者退出: 3、選擇課程瀏覽,可以分頁查看相應的課程信息: 第一頁: 第二頁: 4、課程查詢 查找結果: 4、管理員課程刪除操作: 刪除后可以進行瀏覽,觀察刪除后的結果: 可見刪除后只有一條記錄。刪除操作完成正確。下面進行學生操作的使用方法: 1、學生登陸界面: 2、選擇學生選課選項: 3、學生登陸也可進行課程瀏覽和查詢函數,其結果與管理員登陸相同,不再演示。 第五部分:程序的優缺點 【程序的優點】 算法是程序的靈魂,程序的優點首先表現在算法上的優點,其次才是功能上的。 [算法上的優點]主要體現在以下三點: 1.程序采用main主函數方式設計,程序的主體的功能大都由該功能 完成。程序如此設計有利于程序的進一步改進及有助于程序執行效率的提高。 2.程序對文件數據的讀寫采用了fread和fwrite塊讀寫函數,能夠將文件中的數據完全讀出,然后賦到定義的數組中,再在相應的數組中進行一系列操作,最終再寫入文件。 3.插入操作在本程序中將課程信息直接插入數組最后一個節點,從而減少了數據的相互移動,節省了時間。 [功能上的優點] 主要體現在以下兩點: 1. 簡潔明了的程序菜單。程序主要采用了層次不同的菜單,相互獨立又相互聯系,巧妙相接,符合用戶的使用習慣與思維。2. 人性化的程序提示語言,程序提示語言較人性化,不僅大多為祈使語句、疑問句,而且提示明確,具有較強的明確的指導作用。程序提示不僅層次分明,提示方式多樣,而且提示信息井然有序,更加有利于用戶順利、準確地看懂程序并進行操作。 【程序的缺點】 主要表現在以下兩點: 1、本程序沒有進行相應的密碼操作,所以對于使用者來說可能存在比較大的不保密性。需要改善。 2、本程序沒有使用文本讀寫函數fscanf和fprintf,所以的到的課程文件和選課文件都是二進制形式。 第六部分:心得體會 選課系統程序比起通訊錄程序來講好寫一些,由于本程序用到了數組,對于數組的操作掌握的比較熟練,所以在編寫程序的時候困難沒有那么多。 本程序在編寫的過程中用到了許多通訊錄中的模塊化設計和函數互相調用的思想,使得編寫比較方便和好用。 通過該系統的課程設計分析,我掌握了模塊化設計的方法,理解和運用了結構化程序設計的思想和方法,掌握和提高了運用C語言進行程序設計的能力。 程序設計的過程,實際上是確定解決問題的詳細步驟,而這個步驟通常叫做流程,在程序設計過程中理清楚整個問題的流程很重要,然后采取逐步細化的方法實現整個程序。 對于一個較大的應用程序,一般不可能一次就設計出一個很完善的系統。通常要先設計滿足基本要求的系統,然后再測試或者在使用的過程中不斷完善,慢慢地做成一個功能很完善選修課程管理系統。所以在進行調試的時候需要對許多變量理解和掌握其變化規律等,這對于我更好的掌握visual C中調試的工具有很大的幫助。 總之經過這次課程設計,我對c語言的使用和理解都有了很大的加深,對于編程的思想也有了很多新的理解和感受。 第七部分:附錄 一、參考文獻: 1、李麗娟主編,C語言程序設計教程(第二版),人民郵電出版社 2、嚴蔚敏主編,數據結構(C語言),清華大學出版社 3、崔單主編,C語言程序設計案例精粹,電子工業出版社 4、譚浩強主編,程序設計(第三版),清華大學出版社 二、源程序 #include“stdio.h” #include“stdlib.h” #include“windows.h” #include“string.h” void index();//首頁 void login();void bye_sys();//退出界面 void stu_login();//學生登錄菜單 void c_select();void c_view();//課程瀏覽 void c_add();//增加課程 void c_delete();void c_searchs();//學生查詢函數 void c_searchm();//管理員查詢函數 void c_viewm();//管理員瀏覽函數 void c_views();//學生瀏覽函數 struct course//定義課程結構體 { int c_num; char c_name[20]; int c_score; int c_nelepeo;//課程已選人數 int c_melepeo;//課程人數上限 };struct student { char s_number[10]; char s_password[10];};struct manager { char m_name[10];char m_password[10];}; void index()//首頁 { char input; printf(“nnttt*****************************n”); printf(“ttt 湖南大學學生選課系統n”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt**********設計者:劉曉斌******nnn”); input=getchar(); system(“cls”);} void login()//登陸界面 { void stu_login(); void man_login(); void bye_sys(); int input; do { system(“cls”); printf(“nnnt1.學生登錄n”); printf(“t2.管理員登陸n”); printf(“t3.退出本系統n”); printf(“t請選擇服務類別:”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3)//輸入數不等于選項的時候打印畫面 { printf(“nt輸入出錯!請重新選擇~n”); printf(“nt按任意鍵返回選擇頁面~nt”); getchar();getchar(); system(“cls”); } if(input==3)//如果輸入3退出系統 { bye_sys(); } }while(input!=1&&input!=2&&input!=3); switch(input) { case 1:stu_login();break; case 2:man_login();break; } } void bye_sys()//退出界面 { exit(0);} void man_login(){ void c_add(); void c_delete(); void c_view(); void c_searchm(); int in; do { system(“cls”); printf(“nnt1.新增課程n”); printf(“t2.刪除課程n”); printf(“t3.課程瀏覽n”); printf(“t4.課程查詢n”); printf(“t5.退出n”); printf(“nnt請選擇服務種類:”); scanf(“%d”,&in); if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5) { printf(“nt沒有這項服務t按任意重新選擇”); getchar();getchar(); } }while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5); switch(in) { case 1:c_add();break; case 2:c_delete();break; case 3:c_viewm();break; case 4:c_searchm();break; case 5:login();break; } } void stu_login()//學生登錄菜單 { void c_select(); void c_view(); void c_searchs(); void login(); int input; do { system(“cls”); printf(“nnnt--學生登陸--”); printf(“nnt1.學生選課n”); printf(“t2.課程瀏覽n”); printf(“t3.課程查詢n”); printf(“t4.退出n”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3&&input!=4) { printf(“nt沒有這項服務~n”); printf(“t按任意鍵重新選擇”); getchar(); getchar(); } }while(input!=1&&input!=2&&input!=3&&input!=4); switch(input) { case 1:c_select();break; case 2:c_views();break; case 3:c_searchs();break; case 4:login();break; } } void c_select(){ int n,in,i=0,j;int flag=0; FILE *fp; FILE *fp1; char input; struct course courses[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判斷是否存在課程 { printf(“nnnt課程不存在nn”); printf(“t<按任意鍵返回管理菜單>nt”); input=getchar(); input=getchar(); stu_login();//進入學生登陸菜單 } else//存在的話循環讀取文件中的信息直到文件指針到文件尾部 { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件讀完后關閉 } printf(“nntt請輸入你要選課程的編號:”); scanf(“%d”,&n); if((fp1=fopen(“courseselect.dat”,“rb”))==NULL) { fp1=fopen(“courseselect.dat”,“wb”); } else { fclose(fp1); fp1=fopen(“courseselect.dat”,“ab”); } for(j=0;j if(courses[j].c_num==n) flag++; if(flag==0) { printf(“nntt不存在對應課程n”); printf(“nntt繼續選課請按1,退出請按2:n”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default: printf(“輸入錯誤,將返回登錄界面!n”); login();break; } } else { fwrite(&courses[j],sizeof(struct course),1,fp1); fclose(fp1); printf(“nntt選課成功t請選擇:”); printf(“nntt1.繼續選課”); printf(“nntt2.退出,返回登錄界面!”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default:break; } } } void c_viewm()//課程瀏覽 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判斷是否存在課程 { system(“cls”); printf(“nnnt課程不存在nn”); printf(“t<按任意鍵返回管理菜單>nt”); getchar();getchar(); stu_login();//進入學生登陸菜單 } else//存在的話循環讀取文件中的信息直到文件指針到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件讀完后關閉 do { system(“cls”); if(i==1) { printf(“nnnttt沒有記錄!n”); getchar();getchar(); man_login(); } else { printf(“nt------共有%d條記錄-------”,i-1); printf(“nnt課程編號: %dn”,courseview[n].c_num); printf(“nnt課程名字: %sn”,courseview[n].c_name); printf(“nnt課程學分: %dn”,courseview[n].c_score); printf(“nnt課程已選人數: %dn”,courseview[n].c_nelepeo); printf(“nnt課程人數上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一頁t2.下一頁t3.回目錄”); printf(“n請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到達首頁 t按任意鍵返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到達尾頁t按人意見返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{man_login();break;} default: { printf(“nt操作錯誤t按任意鍵返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_views()//課程瀏覽 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判斷是否存在課程 { system(“cls”); printf(“nnnt課程不存在nn”); printf(“t<按任意鍵返回管理菜單>nt”); getchar();getchar(); stu_login();//進入學生登陸菜單 } else//存在的話循環讀取文件中的信息直到文件指針到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件讀完后關閉 do { system(“cls”); if(i==1) { printf(“nnnttt沒有記錄!n”); getchar();getchar(); stu_login(); } else { printf(“nt------共有%d條記錄-------”,i-1); printf(“nnt課程編號: %dn”,courseview[n].c_num); printf(“nnt課程名字: %sn”,courseview[n].c_name); printf(“nnt課程學分: %dn”,courseview[n].c_score); printf(“nnt課程已選人數: %dn”,courseview[n].c_nelepeo); printf(“nnt課程人數上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一頁t2.下一頁t3.回目錄”); printf(“n請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到達首頁 t按任意鍵返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到達尾頁t按人意見返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{stu_login();break;} default: { printf(“nt操作錯誤t按任意鍵返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_searchs(){ void stu_login(); void c_searchs(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判斷課程信息是否存在 { system(“cls”); printf(“nnt課程不存在t按任意鍵返回”); getchar();getchar(); stu_login(); } else//存在的話循環讀取文件中的信息直到文件指針到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt請輸入你要查詢的課程編號:”); scanf(“%d”,&id); do//檢查輸入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt課程編號:%dn”,coursesear[k].c_num); printf(“nnt課程名字:%sn”,coursesear[k].c_name); printf(“nnt課程學分:%dn”,coursesear[k].c_score); printf(“nnt課程已選人數:%dn”,coursesear[k].c_nelepeo); printf(“nnt課程人數上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目錄繼續查詢t2.退出查詢系統n”); printf(“請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt沒有這項服務t請按任意鍵重新輸入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在對應記錄n”); printf(“nnt1.回目錄繼續查詢t2.退出查詢系統n”); printf(“請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt沒有這項服務t請按任意鍵重新輸入”); getchar();getchar(); } } } }while(inp!=1); } void c_searchm(){ void stu_login(); void c_searchm(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判斷課程信息是否存在 { system(“cls”); printf(“nnt課程不存在t按任意鍵返回”); getchar();getchar(); stu_login(); } else//存在的話循環讀取文件中的信息直到文件指針到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt請輸入你要查詢的課程編號:”); scanf(“%d”,&id); do//檢查輸入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt課程編號:%dn”,coursesear[k].c_num); printf(“nnt課程名字:%sn”,coursesear[k].c_name); printf(“nnt課程學分:%dn”,coursesear[k].c_score); printf(“nnt課程已選人數:%dn”,coursesear[k].c_nelepeo); printf(“nnt課程人數上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目錄繼續查詢t2.退出查詢系統n”); printf(“請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt沒有這項服務t請按任意鍵重新輸入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在對應記錄n”); printf(“nnt1.回目錄繼續查詢t2.退出查詢系統n”); printf(“請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt沒有這項服務t請按任意鍵重新輸入”); getchar();getchar(); } } } }while(inp!=1);} void c_add()//增加課程 { void c_add(); void man_login(); int i=0,j,inp; FILE *fp; struct course course_new; struct course courses[10]; system(“cls”); printf(“nntt請輸入課程信息”); printf(“nntt1.課程編號:”); scanf(“%d”,&course_new.c_num); printf(“nntt2.課程名字:”); scanf(“%s”,course_new.c_name); printf(“nntt3.課程學分:”); scanf(“%d”,&course_new.c_score); printf(“nntt4.課程已選人數:”); scanf(“%d”,&course_new.c_nelepeo); printf(“nntt5.課程人數上限:”); scanf(“%d”,&course_new.c_melepeo); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); for(j=0;j<=i-1;j++) if(course_new.c_num==courses[j].c_num) { system(“cls”); printf(“nnttt對不起,這個編號已經使用過nntt按任意鍵返回管理菜單”); getchar();getchar(); man_login(); break; } } if((fp=fopen(“course.dat”,“rb”))==NULL) { fp=fopen(“course.dat”,“wb”); } else { fclose(fp); fp=fopen(“course.dat”,“ab”); } fwrite(&course_new,sizeof(struct course),1,fp); fclose(fp); printf(“nntt信息輸入完畢t按任意鍵繼續”); getchar();getchar(); do { system(“cls”); printf(“nntt1.繼續輸入”); printf(“nntt2.返回管理菜單”); printf(“nntt請選擇”); scanf(“%d”,&inp); if(inp!=1&&inp!=2) { printf(“輸入不符合要求t按任意鍵重新選擇”); getchar();getchar(); } }while(inp!=1&&inp!=2); switch(inp) { case 1:c_add();break; case 2:man_login();break; } } void c_delete()//查詢后刪除 { FILE *fp; int i=0,j,n,k,flag=0; struct course courses[10]; void c_delete(); void man_login(); printf(“nntt請輸入你要刪除的課程編號:”); scanf(“%d”,&n); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } else { printf(“nntt不存在任何課程t按任意鍵返回”); getchar();getchar(); man_login(); } for(j=0;j { if(courses[j].c_num==n) { flag=1; fp=fopen(“course.dat”,“wb”); for(k=0;k fwrite(&courses[k],sizeof(struct course),1,fp); fclose(fp); fp=fopen(“course.dat”,“ab”); for(k=j+1;k { fwrite(&courses[k],sizeof(struct course),1,fp); } printf(“nntt記錄已刪除!t按任意鍵返回ntt”); getchar();getchar(); man_login(); fclose(fp); } } if(flag==0) { printf(“nntt不存在對應的課程t按任意鍵返回”); getchar();getchar(); man_login(); } // printf(“nntt記錄已刪除!t按任意鍵返回ntt”); } int main(){ index();login();return 0;} 體育選課系統畢業論文自述報告 體育公選課管理信息系統對于一個學校來說是必不可少的組成部分。目前好多學校還停留在手工安排課程和人工統計成績的原始階段,這樣的方式對于規模小的學校來說還勉強可以接受,但對于學生信息量比較龐大,需要記錄存檔和統計的數據比較多的高校來說,人工記錄是相當麻煩的。而且當在學期末統計學生成績時時,由于數據量龐大,還只能靠人工去一條條的統計,這樣不但麻煩還浪費了許多時間,效率也比較低,而且十分容易出錯。針對這種現象,本文在熟悉選課流程后運用面向對象的方法開發了體育公選課管理信息系統。本系統具有運行速度快、安全性高、穩定性好的優點,并且具備完善的成績報表生成,老師在線評分等功能。 體育公選課管理信息系統的開發是為了減少大量的、繁瑣的、重復的操作,提高教學管理效率,繼續教學管理改革,促進教學管理科學化與信息化,同時與全面推行學分制與實施新教學計劃相配套。 本系統主要運用面向對象的思想,運用MS SQL數據庫和ASP.NET,開發基于B/S架構下的體育公選課管理信息系統。體育公選課管理信息系統主要包括兩大模塊:選課系統與考試系統。其中選課系統實現了學生數據管理、教師數據管理、學院數據管理、課程數據管理、系統管理、學生在線選課、教師在線評分等功能;考試系統包括了題庫管理、試題管理、隨機組卷、在線考試、自動評分、在線監考等功能。 當前的體育公選課管理信息系統,存在著功能單 一、課程安排缺乏靈活、不能結合體育理論知識進行成績評定、無法實現管理員對所開課程的人數進行控制,造成熱門課程人數爆滿、冷門課程無人問津的后果,手工輸入大批量數據時容易出錯等缺點。 針對以上問題,本系統設計時主要做了以下創新的改進: (1)對所開課程進行按班別安排指標,例如:開設籃球課,給02信息管理與信息系統這個班別的指標是10人,當02信息管理與信息系統這個班別選擇該課程的人數達到十人后就會提示指標已達上限。這樣的設計更能體現課程安排的公平性。 (2)學生總成績評定實現自動化。根據公式:期末成績=考試成績×70%+理論考試×20%+平時成績×10%評定學生的成績,其中公式中的理論考試成績是由本系統的子系統——考試系統提供的,考試子系統組卷的方式是通過隨機抽題的方式進行組卷的,這樣的方式使學生不單單是體能上的進步,更能打好扎實的理論基礎。 本文所做的主要工作及取得的主要成果如下: 1)研究了管理信息系統的體系結構。 2)通過面向對象的分析方法畫出系統用例圖、類圖,完成系統需求分析。 3)通過功能模塊設計、數據庫設計、編碼設計、安全性設計,完成了系統的設計。 4)編寫相應的文檔。 5)開發了功能強大的體育公選課管理信息系統。 由于時間的限制以及本能能力所及,體育公選課管理信息系統的各種功能還只是處于初步實現階段,在接下來的時間里,如果有機會的話,我將進一步的深入和拓展體育公選課管理信息系統的功能。第五篇:體育選課系統畢業論文自述報告