在日常學(xué)習(xí)、工作或生活中,大家總少不了接觸作文或者范文吧,通過文章可以把我們那些零零散散的思想,聚集在一塊。那么我們該如何寫一篇較為完美的范文呢?下面是小編為大家收集的優(yōu)秀范文,供大家參考借鑒,希望可以幫助到有需要的朋友。
軟件工程課程設(shè)計選題篇一
1、系統(tǒng)的意義與目標(biāo)
網(wǎng)絡(luò)的飛速發(fā)展深刻地影響了人們的日常生活和商業(yè)運(yùn)作方式。社會的方方面面滲透著互連網(wǎng)的應(yīng)用,使得一向煩瑣的手工程序變得方便,快捷,而學(xué)校網(wǎng)上選課系統(tǒng)正是基于這一思想而發(fā)展起來的。傳統(tǒng)的手工選課不僅復(fù)雜,也牽涉了很多的人力,對管理也造成了諸多不變,而借助網(wǎng)上選課系統(tǒng),學(xué)生在規(guī)定選課時間段內(nèi),可以不受地點(diǎn)和時間的限制完成系統(tǒng)登錄、選修課的申請和查詢,而學(xué)校也可以方便地對系統(tǒng)進(jìn)行管理和控制,提高工作效率。
2、系統(tǒng)的用戶需求
用戶的需求具體體現(xiàn)在各種學(xué)習(xí)成績的提供、保存、更新和查詢方面,這就要求數(shù)據(jù)庫結(jié)構(gòu)能充分滿足各種信息的輸入和輸出。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)處理的流程,組成一份詳盡數(shù)據(jù)字典,為后面的具體設(shè)計打下基礎(chǔ)。學(xué)生選課管理系統(tǒng)的設(shè)計為選課及成績管理提供了一個良好的工具,此系統(tǒng)基本實(shí)現(xiàn)的設(shè)計要求有:
(1)用戶登錄系統(tǒng)
提供良好的用戶登錄界面,輸入用戶名,密碼進(jìn)行登錄。
(2)學(xué)生的需求
網(wǎng)上選課、選課情況查詢、成績查詢。
(3)管理員
(錄入、查詢、修改和刪 除)學(xué)生、課程基本資料。
(4)教師的需求
(錄入、查詢、修改和刪除)學(xué)生所選課程成績,統(tǒng)計每個學(xué)生的總分、平均分以及排名等功能。
3、系統(tǒng)經(jīng)費(fèi)概算
初步估算使用經(jīng)費(fèi)15萬元,包括硬件資源、技術(shù)資料、開發(fā)費(fèi)用、培訓(xùn)費(fèi)用等。其中,開發(fā)開發(fā)期間約需9萬員,調(diào)試與運(yùn)行期間約需6萬元。
4、系統(tǒng)開發(fā)計劃
本系統(tǒng)開發(fā)計劃由開發(fā)小組用10個月完成。具體時間安排計劃如下:
(1)系統(tǒng)調(diào)研、系統(tǒng)分析:3個月。
(2)系統(tǒng)設(shè)計:2個月。
(3)系統(tǒng)程序設(shè)計:3個月。
(4)系統(tǒng)調(diào)試:1.5個月。
(5)系統(tǒng)試運(yùn)行:1.5個月。
軟件工程課程設(shè)計選題篇二
學(xué) 年 設(shè) 計
課程名稱:學(xué)年設(shè)計(論文(軟件工程 實(shí)驗(yàn)項(xiàng)目:學(xué)生選課系統(tǒng) 姓 名:xxx 專 業(yè):計算機(jī)科學(xué)與技術(shù) 班 級:xx 班 學(xué) 號:xxx 指導(dǎo)教師 xxx 計算機(jī)科學(xué)與技術(shù)學(xué)院 實(shí)驗(yàn)教學(xué)中心 xxxx 年 xx月 xx日 目 錄
1.項(xiàng)目概述 ??????????????????????????? 3 1.1開發(fā)背景
??????????????????????????? 3 1.2 開發(fā)目的 ?????????????????????????? 3 1.3 開發(fā)運(yùn)行境 ?????????????????????????? 3
1.4 系統(tǒng)功能 ??????????????????????????? 3
2.需求分析 ???????????????????????????? 3 2.1 系統(tǒng)需求
??????????????????????????? 3 2.2 功能需求 ??????????????????????????? 3
2.3 業(yè)務(wù)流圖 ??????????????????????????? 3
3.總體設(shè)計 ???????????????????????????? 4 3.1 基本設(shè)計概念和處理流程 ???????????????????? 4 3.2 系統(tǒng)層次模圖 ????????????????????????? 4 3.3系統(tǒng)層次模塊圖 ???????????????????????? 4
3.4模塊設(shè)計 ??????????????????????????? 5
4.數(shù)據(jù)庫計 ???????????????????????????? 5 4.1 數(shù)據(jù)庫的邏輯設(shè)計 ??????????????????????? 5
4.2數(shù)據(jù)庫的配置?????????????????????????? 6
5.詳細(xì)設(shè)計 ??????????????????????????? 8 5.1 學(xué)生登錄模塊的設(shè)計與實(shí)現(xiàn) ??????????????????? 8 5.2 學(xué)生注冊模塊的設(shè)計與實(shí)現(xiàn) ??????????????????? 9 5.3 學(xué)生查詢模塊的設(shè)計與實(shí)現(xiàn)??????????????????? 9
5.4 學(xué)生選課模塊的設(shè)計與實(shí)現(xiàn)??????????????????? 10 6 測試及提交 ?????????????????????????? 10 1.項(xiàng)目概述 1.1 開發(fā)背景
internet 的飛速發(fā)展深刻地影響了人們的日常生活和商業(yè)運(yùn)作方式。人們打 開網(wǎng)頁瀏覽當(dāng)天的新聞,發(fā)電子郵件給遠(yuǎn)方的朋友,使用搜索引擎查找資料, 進(jìn)入網(wǎng)上商城購買商品 —— 這一切都是在使用 internet。社會的方方面面滲透著 互連網(wǎng)的應(yīng)用,使得一向煩瑣的手工程序變得方便,快捷,而學(xué)校網(wǎng)上選課系 統(tǒng)正是基于這一思想而發(fā)展起來的。
1.2 開發(fā)目的
傳統(tǒng)的手工選課不僅復(fù)雜,也牽涉了很多的人力,對管理也造成了諸多不 變,而借助網(wǎng)上選課系統(tǒng),學(xué)生在規(guī)定選課時間段內(nèi),可以不受地點(diǎn)和時間的 限制完成選修課的申請,而學(xué)校也可以方便地對系統(tǒng)進(jìn)行管理和控制,提高工 作效率。
1.3 開發(fā)運(yùn)行環(huán)境 : 開發(fā)工具 :java語言
開發(fā)環(huán)境 :jdk 1.4 系統(tǒng)功能:(1 登錄、注冊功能.(2 選課功能(3 查詢功能 2.需求分析 2.1 系統(tǒng)需求
用戶的需求具體體現(xiàn)在各種學(xué)習(xí)成績的提供、保存、更新和查詢方面,這 就要求數(shù)據(jù)庫結(jié)構(gòu)能充分滿足各種信息的輸入和輸出。收集基本數(shù)據(jù)、數(shù)據(jù)結(jié) 構(gòu)及數(shù)據(jù)處理的流程,組成一份詳盡數(shù)據(jù)字典,為后面的具體設(shè)計打下基礎(chǔ)。
2.2 功能需求
通過系統(tǒng)功能分析,針對一般的網(wǎng)上選課系統(tǒng),總結(jié)出如下的需求信息:(1 學(xué)生的需求:網(wǎng)上選課、選課情況查詢;(2 本系統(tǒng)主要實(shí)現(xiàn)學(xué)生信息管理和選課查詢。學(xué)生信息包括學(xué)號、姓名、班級;課程信息包括課程名;2.3 業(yè)務(wù)流程圖 3.總體設(shè)計
3.1 基本設(shè)計概念和處理流程
互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展, java 等設(shè)計工具的方便實(shí)用,以及數(shù)據(jù)庫技術(shù)的 發(fā)展給本系統(tǒng)的設(shè)計和實(shí)現(xiàn)提供了技術(shù)上的支持。
系統(tǒng)基本的流程是:用戶登錄->主界面->選擇各項(xiàng)子系統(tǒng)。3.2 系統(tǒng)層次模塊圖 3.3系統(tǒng)層次模塊圖
3.4模塊設(shè)計
(1 用戶注冊模塊:填寫用戶名、密碼、確認(rèn)密碼
(2 用戶登錄模塊:填寫已注冊的用戶名稱,填寫正確的密碼,進(jìn)入主控 制頁面。(3 用戶選課模塊:。
(4 用戶查詢模塊:可以進(jìn)行查看所選課程的操作。4.數(shù)據(jù)庫設(shè)計
4.1 數(shù)據(jù)庫的邏輯設(shè)計
我們選用了 microsoft access 2000。
數(shù)據(jù)通信接口采用 odbc。odbc 是微軟開發(fā)的一套讀取數(shù)據(jù)庫的解決方 案,它的目的是將所有對數(shù)據(jù)庫的底層操作全部隱藏在 odbc 的驅(qū)動程序內(nèi)核 里。對于程序員來說,只要構(gòu)建了一個指向數(shù)據(jù)庫的連接,就可以采用統(tǒng)一的 應(yīng)用程序編程接口實(shí)現(xiàn)對數(shù)據(jù)庫的讀寫。目前 odbc 驅(qū)動已經(jīng)提供了對大多數(shù) 常見類型數(shù)據(jù)庫的支持,包括 dbase , informix , access , sql server和 oracle 等。也包括了對其它類型的數(shù)據(jù)庫的支持,如文本, excel 電子表格等的支持。根據(jù)系統(tǒng)功能設(shè)計的要求以及功能模塊的劃分,對于系統(tǒng)信息數(shù)據(jù)庫,可 以列出以下數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu): 1.名稱:用戶信息表
2.名稱:課程信息表
4.2數(shù)據(jù)庫的配置
一個真正的、完整的站點(diǎn)是離不開數(shù)據(jù)庫的。odbc 為應(yīng)用程序提供了一 種標(biāo)準(zhǔn)方法來操作相關(guān)的數(shù)據(jù)庫:管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫的位置、數(shù) 據(jù)庫類型及 odbc 驅(qū)動程序等信息,建立起 odbc 與具體數(shù)據(jù)庫的聯(lián)系。這 樣,只要應(yīng)用程序?qū)?shù)據(jù)源名提供給 odbc , odbc 就能建立起與相應(yīng)數(shù)據(jù)庫 的連接。
按如下步驟可以建立一個新的系統(tǒng)數(shù)據(jù)源。
首先,在控制面板中雙擊 odbc 圖標(biāo),打開“ odbc 數(shù)據(jù)源管理器”對話 框,選擇“系統(tǒng) dsn ”選項(xiàng)卡,單擊“添加”按鈕。如下圖所示。
在“創(chuàng)建新數(shù)據(jù)源”對話框中,選擇“ driver do microsoft access(*.mdb”作為數(shù)據(jù)庫驅(qū)動程序并單擊“完成”按鈕。如下圖所示。
在“ odbc microsoft access安裝”對話框中,數(shù)據(jù)源名稱填寫為
“ student ”,這是程序中將要引用的。單擊“選擇 … ”按鈕,從彈出的文件窗 口中選擇 文件所在的位置。如下圖所示。
然后單擊“確定”按鈕,這樣就完成了 access 數(shù)據(jù)庫的 odbc 數(shù)據(jù)源設(shè) 置。以上步驟,通過 odbc 管理器注冊了一個名字為 student 的數(shù)據(jù)源,并且指 定了數(shù)據(jù)庫的驅(qū)動程序。
5.詳細(xì)設(shè)計
5.1 學(xué)生登錄模塊的設(shè)計與實(shí)現(xiàn) 5.1.1.登錄模塊
功能:本模塊主要用于對用戶身份進(jìn)行鑒別。用戶通過表單提供用戶名和 密碼信息,系統(tǒng)根據(jù)用戶提供的登錄信息對用戶進(jìn)行身份查詢鑒別。如果身份 合法,則將用戶導(dǎo)向系統(tǒng)的選課頁面。
輸入:用戶名、密碼 處理:(1 輸入用戶的登錄信息:在頁面提供的表單出輸入用戶的用戶名和密碼信 息,點(diǎn)擊“登錄”按鈕提交表單信息到身份驗(yàn)證頁面?;螯c(diǎn)擊“重置”按鈕, 重新輸入。
(2 用戶身份進(jìn)行驗(yàn)證:連接數(shù)據(jù)庫,打開用戶數(shù)據(jù)表 login ,檢驗(yàn)用戶登 錄信息。以輸入數(shù)據(jù)“用戶名”為查詢條件創(chuàng)建數(shù)據(jù)集查看輸入用戶名是否存 在。如果存在,繼續(xù)檢驗(yàn)輸入的密碼是否正確。密碼和用戶名都正確,則進(jìn)入 選課頁面;如果用戶名不存在或密碼不正確,則給出登錄失敗的提示框。輸出:學(xué)生選課頁面
5.1.2.學(xué)生登錄頁面圖如下圖所示:
5.2 學(xué)生注冊模塊的設(shè)計與實(shí)現(xiàn) 5.3 學(xué)生查詢模塊的設(shè)計與實(shí)現(xiàn)
5.4 學(xué)生選課模塊的設(shè)計與實(shí)現(xiàn)
軟件工程課程設(shè)計選題篇三
配電網(wǎng)工程設(shè)計軟件 概況介紹:
《配電網(wǎng)工程設(shè)計軟件》根據(jù)國家電網(wǎng)公司《配電網(wǎng)標(biāo)準(zhǔn)化設(shè)計系統(tǒng)功能規(guī)范》、南方電網(wǎng)公司v1.0標(biāo)準(zhǔn)以及地方電力集團(tuán)進(jìn)行開發(fā);該軟件基于自主cad平臺、功能強(qiáng)大、設(shè)計效率高、使用范圍廣同時符合設(shè)計標(biāo)準(zhǔn),并能實(shí)時配網(wǎng)設(shè)計與造價的一體化;能滿足城網(wǎng)設(shè)計、農(nóng)網(wǎng)改造設(shè)計、電纜線路設(shè)計以及戶表設(shè)計工作的計算機(jī)輔助設(shè)計軟件。
1.國內(nèi)首創(chuàng)的不用畫圖自動出圖技術(shù):
配網(wǎng)工程具用項(xiàng)目多工程小的特點(diǎn),設(shè)計工作量非常大,為了提高設(shè)計工作效率,我們調(diào)查及歸納了以往的設(shè)計經(jīng)驗(yàn),創(chuàng)新性的提出不用畫圖也能出設(shè)計圖紙的數(shù)學(xué)模型并結(jié)合最新的軟件技術(shù),真正的實(shí)現(xiàn)設(shè)計的智能化。
用戶只需要通過錄入基本信息、氣象區(qū)、測量數(shù)據(jù),軟件就可以自動根據(jù)設(shè)計規(guī)則自動進(jìn)行桿型選型,并根據(jù)設(shè)計標(biāo)準(zhǔn)對桿進(jìn)行結(jié)構(gòu)驗(yàn)算,從而實(shí)現(xiàn)設(shè)計合理、結(jié)構(gòu)安全并幫助客戶一鍵生成設(shè)計圖紙及統(tǒng)計材料,最終一鍵生成設(shè)計成果、設(shè)計說明書及計算工程造價。
通過此功能創(chuàng)新大大提高工作效率及設(shè)計標(biāo)準(zhǔn),受到了廣大設(shè)計人員的信賴。
2.專業(yè)的線路設(shè)計:
為了滿足設(shè)計繪圖需要,軟件可以支持多種測量數(shù)據(jù)導(dǎo)入、自動平斷面繪制、自動生成導(dǎo)線弧垂表、自動繪制地下電纜、自動排桿、排桿校核、自動連線、自動布桿、自動布拉線、自動金具選型、桿上設(shè)備繪制、手工繪制線路、批量繪制線路、高低壓共桿設(shè)計、智能識別圖紙等功能。
繪圖模式我們通過多項(xiàng)功能創(chuàng)新,通過軟件解決繪圖有規(guī)律的畫法,實(shí)現(xiàn)繪圖的自動化,從而讓繪圖更專業(yè)、更高效。
3.平斷面設(shè)計: 軟件采用平斷面設(shè)計功能專業(yè),可以滿足10kv以上線路的設(shè)計要求,軟件支持導(dǎo)入測量數(shù)據(jù)及手工添加數(shù)據(jù)兩種模式,并自動生成平斷面圖。
在平斷面設(shè)計中提供插入布桿、自動布桿、自動生成地下電纜、繪制懸鏈線、排桿校核、自動計算埋深、呼稱高、自動計算對地距離。
4.桿型組裝設(shè)計: 軟件根據(jù)規(guī)則庫以及桿高、條件、排列方式、氣象區(qū)、耐張類型、檔距自動進(jìn)行桿型設(shè)計并生成桿型、桿頭,最后組裝成對應(yīng)材料。
5.電纜工程設(shè)計: 城網(wǎng)工程以電纜線路為主,為了滿足城網(wǎng)設(shè)計需要,軟件采用地形圖模式進(jìn)行繪圖,用戶只需根據(jù)地形圖進(jìn)行電纜的設(shè)計,通過電纜井、電纜溝、電纜敷設(shè)、電纜頭繪制,并結(jié)合線路優(yōu)化算法實(shí)現(xiàn)材料及工程量的自動統(tǒng)計。
6.戶表工程設(shè)計: 在農(nóng)網(wǎng)改造中,需要進(jìn)行戶表設(shè)計,如進(jìn)行一戶一表的設(shè)計,設(shè)計的工程量很大,為了提高工作效率,軟件提供導(dǎo)入excel數(shù)據(jù)實(shí)現(xiàn)自動繪制戶表功能,同時通過接戶線繪制、戶表繪制、墻擔(dān)繪制、電線繪制實(shí)現(xiàn)自動生成戶表明細(xì)表、自動標(biāo)注表箱等功能。關(guān)鍵特性:
該軟件可以進(jìn)行10kv線路設(shè)計、0.4.22kv線路設(shè)計、戶表設(shè)計、電纜設(shè)計以及電氣設(shè)計并可以根據(jù)設(shè)計成果一鍵生成預(yù)算成果,是一款符合cad操作習(xí)慣、功能專業(yè)、操作方便、設(shè)計安全性好、符合設(shè)計標(biāo)準(zhǔn)的配網(wǎng)設(shè)計軟件。
★更智能:
配網(wǎng)工程項(xiàng)目多,時間緊,設(shè)計人員重復(fù)勞動多,同樣技經(jīng)人員編制預(yù)算也是工作量很大,這也是配網(wǎng)與主網(wǎng)的最大差別;為了提供設(shè)計的標(biāo)準(zhǔn)化及效率,軟件提供自動布桿、自動連線、自動布拉線、自動接地、自動金具選型、自動繪制戶表等多項(xiàng)功能?!锔唵?
在設(shè)計過程中所有數(shù)據(jù)采用可視化設(shè)計、可視可改,直接明了;如選中批量修改、批量修改屬性、批量修改組件材料、批量修改材料。
★更方便: 線路設(shè)計出圖是很麻煩的事,為了讓用戶可以高效出圖,軟件提供自動生成標(biāo)注功能、批量縮放圖塊、批量生成組裝圖以及提供按線路走向分幅、選擇分幅、布局分幅功能。
同時提供插入圖例、設(shè)計說明、圖例、坐標(biāo)表、統(tǒng)計表等功能,讓我們的設(shè)計圖更專業(yè)。
★更高效: 配網(wǎng)工程項(xiàng)目多,用戶可以按工程進(jìn)行報表統(tǒng)計,也可以按項(xiàng)目批次進(jìn)行統(tǒng)計。
★更容易: 軟件可以根據(jù)導(dǎo)入測量數(shù)據(jù)自動進(jìn)行繪圖,也可以打開已有dwg文件進(jìn)行自動識圖。
★更專業(yè): 軟件可以自動生成各種格式的桿塔明細(xì)表、材料統(tǒng)計表、工程量統(tǒng)計表、一戶一表、現(xiàn)場材料清查表、電纜工程量表、桿型統(tǒng)計表等。
軟件界面:
本產(chǎn)品適用于承擔(dān)20kv及以下電壓等級設(shè)計的供電局市、區(qū)、縣設(shè)計室(生技部,基建部,農(nóng)電部)以及電力設(shè)計院(輸配電線路設(shè)計室,電力設(shè)計室,變配電設(shè)計室)工程施工單位;承擔(dān)線路檢修維護(hù)任務(wù)的線路工區(qū)、農(nóng)電工區(qū)等?!镒灾鱟ad平臺:
自主、開放的cad設(shè)計平臺,全面兼容autocad2002—2010,用戶可以進(jìn)行設(shè)計數(shù)據(jù)的管理同時也解決了客戶的cad正版化問題。
★實(shí)現(xiàn)設(shè)計與造價一體化:
配網(wǎng)設(shè)計成果與配網(wǎng)造價模塊實(shí)現(xiàn)一鍵生成,數(shù)據(jù)準(zhǔn)確性高達(dá)98%,真正實(shí)現(xiàn)預(yù)算不用管,造價軟件專業(yè)、強(qiáng)大,好用。
★開放的設(shè)計平臺: 典設(shè)標(biāo)準(zhǔn)只是一個標(biāo)準(zhǔn),但配網(wǎng)設(shè)計需要根據(jù)工程特點(diǎn)、地區(qū)、使用習(xí)慣進(jìn)行適當(dāng)?shù)男薷?;所以不可能一成不? 所以軟件采用開放的設(shè)計平臺。
用戶可以自行進(jìn)行數(shù)據(jù)維護(hù)及定義,軟件提供圖塊庫、組件維護(hù)、物料庫維護(hù)、繪圖設(shè)置、線材庫、氣象區(qū)維護(hù)。
★提供vip服務(wù)(標(biāo)準(zhǔn)化產(chǎn)品+二次開發(fā)+現(xiàn)場實(shí)施): 5年多各大設(shè)計院使用經(jīng)驗(yàn)、5年的客戶案例積累、鑄就國內(nèi)最實(shí)用最專業(yè)的配網(wǎng)設(shè)計軟件。
本產(chǎn)品免費(fèi)為每個客戶提供進(jìn)行二次開發(fā)及15天的現(xiàn)場實(shí)施服務(wù),保證每個客戶的成功上線。
提供免費(fèi)建庫、免費(fèi)設(shè)計報表、免費(fèi)修改功能等vip服務(wù)。
★國內(nèi)使用成功率最高的設(shè)計軟件: 本產(chǎn)品已在江西省電力公司、廣西水利電業(yè)集團(tuán)、陜西省地方電力集團(tuán)、云南電網(wǎng)、四川省、內(nèi)蒙古、浙江省廣泛使用。
軟件工程課程設(shè)計選題篇四
題目
一、學(xué)生選課管理系統(tǒng)
第一部分:課程設(shè)計名稱、目的、要求
第二部分:程序總體設(shè)計思路
第三部分:程序功能劃分、圖示及流程圖
第四部分:程序設(shè)計數(shù)據(jù)、運(yùn)行結(jié)果
第五部分:程序的優(yōu)缺點(diǎn)
第六部分:心得體會
第七部分:附錄(源程序)
第八部分:附錄(參考文獻(xiàn))
目錄
..............................................................................第一部分:課程設(shè)計名稱、目的、要求
名稱:學(xué)生選修課程系統(tǒng)設(shè)計
目的:運(yùn)用c語言提高解決實(shí)際問題的能力 實(shí)驗(yàn)環(huán)境:microsoft visual c++ 6.0 內(nèi)容:
假定有n門課程,每門課程有課程編號,課程名稱,課程性質(zhì),總學(xué)時,授課學(xué)時,實(shí)驗(yàn)或上機(jī)學(xué)時,學(xué)分,開課學(xué)期等信息,學(xué)生可按要求(如總學(xué)分不得少于60)自由選課?!竟δ堋?/p>
系統(tǒng)以菜單方式工作?
課程信息錄入功能(課程信息用文件保存)--輸入? 課程信息瀏覽功能--輸出?
查詢功能:(至少一種查詢方式)--算法? 按學(xué)分查詢? 按課程性質(zhì)查詢? 學(xué)生選修課程(可選項(xiàng))?
第二部分:程序總體設(shè)計思路
由于c語言是面對過程的語言,故我的設(shè)計思路是根據(jù)目標(biāo)程序運(yùn)行的過程來編寫的。
具體的設(shè)計思路如下:
程序的要求是設(shè)計學(xué)生選修課管理系統(tǒng),對選修課程能夠進(jìn)行錄入和修改操作等,要求有菜單界面和退出功能。首先,考慮到程序的數(shù)據(jù)輸入,可以設(shè)置一個管理員登陸選項(xiàng),通過該選項(xiàng)進(jìn)入管理員界面,進(jìn)行選修課的錄入和修改操作,最后將錄入的課程保存到相應(yīng)的文件中。然后定義各種函數(shù)的功能包括查看,查詢,刪除等。另一個為學(xué)生登陸界面,該界面學(xué)生可以進(jìn)行課程選擇和瀏覽查詢等操作。在進(jìn)行該操作之前需要對管理員保存的文件進(jìn)行讀取,然后對其中的內(nèi)容進(jìn)行查詢等,在學(xué)生選好課程以后,可以將其選好的課程保存于相應(yīng)的文件中,以便下次進(jìn)行修改。通過函數(shù)的層層調(diào)用來實(shí)現(xiàn)程序的邏輯結(jié)構(gòu)。中間通過文件的打開和關(guān)閉實(shí)現(xiàn)對文件內(nèi)部所包含的數(shù)據(jù)的操作。
整個程序的設(shè)計思路到此結(jié)束。
第三部分:程序功能劃分、圖示及流程圖
【功能模塊劃分及其流程圖】
本程序功能模塊根據(jù)程序設(shè)計的需求,綜合程序的實(shí)用性、人性化、智能化的考慮,將程序劃分為6個部分分別編寫,程序主體功能將由這9個部分來完成。這9個部分依次是:
1.登錄界面函數(shù);void login()2.學(xué)生登錄界面據(jù)函數(shù):void stu_login()3.管理員登錄界面函數(shù):void man_login()4.退出界面函數(shù):void bye_sys()
5.課程選擇函數(shù):void c_select()6.課程瀏覽函數(shù):void c_view()7.課程查詢函數(shù):void c_search()8.課程增加函數(shù):void c_add()9.課程刪除函數(shù):void c_delete()10.菜單函數(shù):void index()11.主函數(shù)部分; main()
總體設(shè)計:
學(xué)生選課系統(tǒng)管理員登錄學(xué)生登錄新增課程刪除課程課程瀏覽查詢課程學(xué)生選課課程瀏覽課程查詢c_add函數(shù)c_delete函數(shù)c_view函數(shù)c_search函數(shù)c_select函數(shù)c_view函數(shù)c_search函數(shù)
系統(tǒng)功能模塊圖
部分函數(shù)流程圖:
1、課程選擇函數(shù):
開始輸入要選擇的課程的編號j=0;j
2、課程查詢函數(shù)
開始輸入要查詢的課程的編號j=0;j
3、課程增加函數(shù)
開始輸入要增加的課程的編號j=0;j
4、課程刪除函數(shù)
開始輸入要刪除的課程的編號nj=0;j
本程序是一款應(yīng)用軟件,故數(shù)據(jù)設(shè)計、程序運(yùn)行結(jié)果應(yīng)在程序的
運(yùn)用中得以體現(xiàn),現(xiàn)在通過一個程序的運(yùn)用事例來對程序運(yùn)行結(jié)果進(jìn)行演示與實(shí)現(xiàn)?!拒浖\(yùn)用舉例】
1、程序開始界面如下:
選擇某個選項(xiàng),如進(jìn)行管理員登錄,進(jìn)行課程的增加 進(jìn)入管理員界面:
2、再選擇所要進(jìn)行的操作,如進(jìn)行課程增加,結(jié)果如下:
下面可以進(jìn)行繼續(xù)增加課程或者退出:
3、選擇課程瀏覽,可以分頁查看相應(yīng)的課程信息: 第一頁:
第二頁:
4、課程查詢
查找結(jié)果:
4、管理員課程刪除操作:
刪除后可以進(jìn)行瀏覽,觀察刪除后的結(jié)果:
可見刪除后只有一條記錄。刪除操作完成正確。下面進(jìn)行學(xué)生操作的使用方法:
1、學(xué)生登陸界面:
2、選擇學(xué)生選課選項(xiàng):
3、學(xué)生登陸也可進(jìn)行課程瀏覽和查詢函數(shù),其結(jié)果與管理員登陸相同,不再演示。
第五部分:程序的優(yōu)缺點(diǎn)
【程序的優(yōu)點(diǎn)】
算法是程序的靈魂,程序的優(yōu)點(diǎn)首先表現(xiàn)在算法上的優(yōu)點(diǎn),其次才是功能上的。
[算法上的優(yōu)點(diǎn)]主要體現(xiàn)在以下三點(diǎn):
1.程序采用main主函數(shù)方式設(shè)計,程序的主體的功能大都由該功能
完成。程序如此設(shè)計有利于程序的進(jìn)一步改進(jìn)及有助于程序執(zhí)行效率的提高。
2.程序?qū)ξ募?shù)據(jù)的讀寫采用了fread和fwrite塊讀寫函數(shù),能夠?qū)⑽募械臄?shù)據(jù)完全讀出,然后賦到定義的數(shù)組中,再在相應(yīng)的數(shù)組中進(jìn)行一系列操作,最終再寫入文件。
3.插入操作在本程序中將課程信息直接插入數(shù)組最后一個節(jié)點(diǎn),從而減少了數(shù)據(jù)的相互移動,節(jié)省了時間。
[功能上的優(yōu)點(diǎn)] 主要體現(xiàn)在以下兩點(diǎn):
1. 簡潔明了的程序菜單。程序主要采用了層次不同的菜單,相互獨(dú)立又相互聯(lián)系,巧妙相接,符合用戶的使用習(xí)慣與思維。2. 人性化的程序提示語言,程序提示語言較人性化,不僅大多為祈使語句、疑問句,而且提示明確,具有較強(qiáng)的明確的指導(dǎo)作用。程序提示不僅層次分明,提示方式多樣,而且提示信息井然有序,更加有利于用戶順利、準(zhǔn)確地看懂程序并進(jìn)行操作。
【程序的缺點(diǎn)】 主要表現(xiàn)在以下兩點(diǎn):
1、本程序沒有進(jìn)行相應(yīng)的密碼操作,所以對于使用者來說可能存在比較大的不保密性。需要改善。
2、本程序沒有使用文本讀寫函數(shù)fscanf和fprintf,所以的到的課程文件和選課文件都是二進(jìn)制形式。
第六部分:心得體會
選課系統(tǒng)程序比起通訊錄程序來講好寫一些,由于本程序用到了數(shù)組,對于數(shù)組的操作掌握的比較熟練,所以在編寫程序的時候困難沒有那么多。
本程序在編寫的過程中用到了許多通訊錄中的模塊化設(shè)計和函數(shù)互相調(diào)用的思想,使得編寫比較方便和好用。
通過該系統(tǒng)的課程設(shè)計分析,我掌握了模塊化設(shè)計的方法,理解和運(yùn)用了結(jié)構(gòu)化程序設(shè)計的思想和方法,掌握和提高了運(yùn)用c語言進(jìn)行程序設(shè)計的能力。
程序設(shè)計的過程,實(shí)際上是確定解決問題的詳細(xì)步驟,而這個步驟通常叫做流程,在程序設(shè)計過程中理清楚整個問題的流程很重要,然后采取逐步細(xì)化的方法實(shí)現(xiàn)整個程序。
對于一個較大的應(yīng)用程序,一般不可能一次就設(shè)計出一個很完善的系統(tǒng)。通常要先設(shè)計滿足基本要求的系統(tǒng),然后再測試或者在使用的過程中不斷完善,慢慢地做成一個功能很完善選修課程管理系統(tǒng)。所以在進(jìn)行調(diào)試的時候需要對許多變量理解和掌握其變化規(guī)律等,這對于我更好的掌握visual c中調(diào)試的工具有很大的幫助。
總之經(jīng)過這次課程設(shè)計,我對c語言的使用和理解都有了很大的加深,對于編程的思想也有了很多新的理解和感受。
第七部分:附錄
一、參考文獻(xiàn):
1、李麗娟主編,c語言程序設(shè)計教程(第二版),人民郵電出版社
2、嚴(yán)蔚敏主編,數(shù)據(jù)結(jié)構(gòu)(c語言),清華大學(xué)出版社
3、崔單主編,c語言程序設(shè)計案例精粹,電子工業(yè)出版社
4、譚浩強(qiáng)主編,程序設(shè)計(第三版),清華大學(xué)出版社
二、源程序
#include“stdio.h” #include“stdlib.h” #include“windows.h” #include“string.h”
void index();//首頁 void login();void bye_sys();//退出界面
void stu_login();//學(xué)生登錄菜單
void c_select();void c_view();//課程瀏覽
void c_add();//增加課程 void c_delete();void c_searchs();//學(xué)生查詢函數(shù) void c_searchm();//管理員查詢函數(shù) void c_viewm();//管理員瀏覽函數(shù) void c_views();//學(xué)生瀏覽函數(shù)
struct course//定義課程結(jié)構(gòu)體
{
int c_num;
char c_name[20];
int c_score;
int c_nelepeo;//課程已選人數(shù)
int c_melepeo;//課程人數(shù)上限 };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
湖南大學(xué)學(xué)生選課系統(tǒng)n”);
printf(“ttt*****************************nnn”);
printf(“ttt*****************************nnn”);
printf(“ttt*****************************nnn”);
printf(“ttt*****************************nnn”);
printf(“ttt**********設(shè)計者:劉曉斌******nnn”);
input=getchar();
system(“cls”);} void login()//登陸界面
{
void stu_login();
void man_login();
void bye_sys();
int input;
do
{
system(“cls”);
printf(“nnnt1.學(xué)生登錄n”);
printf(“t2.管理員登陸n”);
printf(“t3.退出本系統(tǒng)n”);
printf(“t請選擇服務(wù)類別:”);
scanf(“%d”,&input);
if(input!=1&&input!=2&&input!=3)//輸入數(shù)不等于選項(xiàng)的時候打印畫面
{
printf(“nt輸入出錯!請重新選擇~n”);
printf(“nt按任意鍵返回選擇頁面~nt”);
getchar();getchar();
system(“cls”);
}
if(input==3)//如果輸入3退出系統(tǒng)
{
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請選擇服務(wù)種類:”);
scanf(“%d”,∈);
if(in!=1&∈!=2&∈!=3&∈!=4&∈!=5)
{
printf(“nt沒有這項(xiàng)服務(wù)t按任意重新選擇”);
getchar();getchar();
}
}while(in!=1&∈!=2&∈!=3&∈!=4&∈!=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()//學(xué)生登錄菜單
{
void c_select();
void c_view();
void c_searchs();
void login();
int input;
do
{
system(“cls”);
printf(“nnnt--學(xué)生登陸--”);
printf(“nnt1.學(xué)生選課n”);
printf(“t2.課程瀏覽n”);
printf(“t3.課程查詢n”);
printf(“t4.退出n”);
scanf(“%d”,&input);
if(input!=1&&input!=2&&input!=3&&input!=4)
{
printf(“nt沒有這項(xiàng)服務(wù)~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(“”,“rb”))==null)//判斷是否存在課程
{
printf(“nnnt課程不存在nn”);
printf(“t<按任意鍵返回管理菜單>nt”);
input=getchar();
input=getchar();
stu_login();//進(jìn)入學(xué)生登陸菜單
}
else//存在的話循環(huán)讀取文件中的信息直到文件指針到文件尾部
{
do
{
fread(&courses[i],sizeof(struct course),1,fp);
i=i+1;
}
while(!feof(fp));
fclose(fp);//文件讀完后關(guān)閉
}
printf(“nntt請輸入你要選課程的編號:”);
scanf(“%d”,&n);
if((fp1=fopen(“”,“rb”))==null)
{
fp1=fopen(“”,“wb”);
}
else
{
fclose(fp1);
fp1=fopen(“”,“ab”);
}
for(j=0;j
if(courses[j].c_num==n)
flag++;
if(flag==0)
{
printf(“nntt不存在對應(yīng)課程n”);
printf(“nntt繼續(xù)選課請按1,退出請按2:n”);
scanf(“%d”,∈);
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.繼續(xù)選課”);
printf(“nntt2.退出,返回登錄界面!”);
scanf(“%d”,∈);
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(“”,“rb”))==null)//判斷是否存在課程
{
system(“cls”);
printf(“nnnt課程不存在nn”);
printf(“t<按任意鍵返回管理菜單>nt”);
getchar();getchar();
stu_login();//進(jìn)入學(xué)生登陸菜單
}
else//存在的話循環(huán)讀取文件中的信息直到文件指針到文件尾部
{
do
{
fread(&courseview[i],sizeof(struct course),1,fp);
i=i+1;
}
while(!feof(fp));
fclose(fp);//文件讀完后關(guān)閉
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課程學(xué)分: %dn”,courseview[n].c_score);
printf(“nnt課程已選人數(shù): %dn”,courseview[n].c_nelepeo);
printf(“nnt課程人數(shù)上限: %dn”,courseview[n].c_melepeo);
printf(“nnt1.上一頁t2.下一頁t3.回目錄”);
printf(“n請選擇:”);
scanf(“%d”,&inp);
switch(inp)
{
case 1:
{
if(n==0)
{
printf(“nt已到達(dá)首頁 t按任意鍵返回”);
input=getchar();
input=getchar();
}
else
{
n=n-1;
}
break;
}
case 2:
{
if(n==i-2)
{
printf(“nt已到達(dá)尾頁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(“”,“rb”))==null)//判斷是否存在課程
{
system(“cls”);
printf(“nnnt課程不存在nn”);
printf(“t<按任意鍵返回管理菜單>nt”);
getchar();getchar();
stu_login();//進(jìn)入學(xué)生登陸菜單
}
else//存在的話循環(huán)讀取文件中的信息直到文件指針到文件尾部
{
do
{
fread(&courseview[i],sizeof(struct course),1,fp);
i=i+1;
}
while(!feof(fp));
fclose(fp);//文件讀完后關(guān)閉
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課程學(xué)分: %dn”,courseview[n].c_score);
printf(“nnt課程已選人數(shù): %dn”,courseview[n].c_nelepeo);
printf(“nnt課程人數(shù)上限: %dn”,courseview[n].c_melepeo);
printf(“nnt1.上一頁t2.下一頁t3.回目錄”);
printf(“n請選擇:”);
scanf(“%d”,&inp);
switch(inp)
{
case 1:
{
if(n==0)
{
printf(“nt已到達(dá)首頁 t按任意鍵返回”);
input=getchar();
input=getchar();
}
else
{
n=n-1;
}
break;
}
case 2:
{
if(n==i-2)
{
printf(“nt已到達(dá)尾頁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(“”,“rb”))==null)
//判斷課程信息是否存在 {
system(“cls”);
printf(“nnt課程不存在t按任意鍵返回”);
getchar();getchar();
stu_login();
}
else//存在的話循環(huán)讀取文件中的信息直到文件指針到文件尾部
{
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課程學(xué)分:%dn”,coursesear[k].c_score);
printf(“nnt課程已選人數(shù):%dn”,coursesear[k].c_nelepeo);
printf(“nnt課程人數(shù)上限:%dn”,coursesear[k].c_melepeo);
getchar();getchar();
printf(“nnt1.回目錄繼續(xù)查詢t2.退出查詢系統(tǒng)n”);
printf(“請選擇:”);
scanf(“%d”,&inp);
switch(inp)
{
case 1:c_searchs();
case 2:stu_login();
default:
{
printf(“nt沒有這項(xiàng)服務(wù)t請按任意鍵重新輸入”);
getchar();getchar();
}
}
}
else
{
system(“cls”);
printf(“nnt不存在對應(yīng)記錄n”);
printf(“nnt1.回目錄繼續(xù)查詢t2.退出查詢系統(tǒng)n”);
printf(“請選擇:”);
scanf(“%d”,&inp);
switch(inp)
{
case 1:c_searchs();
case 2:stu_login();
default:
{
printf(“nt沒有這項(xiàng)服務(wù)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(“”,“rb”))==null)
//判斷課程信息是否存在 {
system(“cls”);
printf(“nnt課程不存在t按任意鍵返回”);
getchar();getchar();
stu_login();
}
else//存在的話循環(huán)讀取文件中的信息直到文件指針到文件尾部
{
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課程學(xué)分:%dn”,coursesear[k].c_score);
printf(“nnt課程已選人數(shù):%dn”,coursesear[k].c_nelepeo);
printf(“nnt課程人數(shù)上限:%dn”,coursesear[k].c_melepeo);
getchar();getchar();
printf(“nnt1.回目錄繼續(xù)查詢t2.退出查詢系統(tǒng)n”);
printf(“請選擇:”);
scanf(“%d”,&inp);
switch(inp)
{
case 1:c_searchm();
case 2:man_login();
default:
{
printf(“nt沒有這項(xiàng)服務(wù)t請按任意鍵重新輸入”);
getchar();getchar();
}
}
}
else
{
system(“cls”);
printf(“nnt不存在對應(yīng)記錄n”);
printf(“nnt1.回目錄繼續(xù)查詢t2.退出查詢系統(tǒng)n”);
printf(“請選擇:”);
scanf(“%d”,&inp);
switch(inp)
{
case 1:c_searchm();
case 2:man_login();
default:
{
printf(“nt沒有這項(xiàng)服務(wù)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.課程學(xué)分:”);
scanf(“%d”,&course_new.c_score);
printf(“nntt4.課程已選人數(shù):”);
scanf(“%d”,&course_new.c_nelepeo);
printf(“nntt5.課程人數(shù)上限:”);
scanf(“%d”,&course_new.c_melepeo);
if((fp=fopen(“”,“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對不起,這個編號已經(jīng)使用過nntt按任意鍵返回管理菜單”);
getchar();getchar();
man_login();
break;
}
}
if((fp=fopen(“”,“rb”))==null)
{
fp=fopen(“”,“wb”);
}
else
{
fclose(fp);
fp=fopen(“”,“ab”);
}
fwrite(&course_new,sizeof(struct course),1,fp);
fclose(fp);
printf(“nntt信息輸入完畢t按任意鍵繼續(xù)”);
getchar();getchar();
do
{
system(“cls”);
printf(“nntt1.繼續(xù)輸入”);
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(“”,“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(“”,“wb”);
for(k=0;k
fwrite(&courses[k],sizeof(struct course),1,fp);
fclose(fp);
fp=fopen(“”,“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不存在對應(yīng)的課程t按任意鍵返回”);
getchar();getchar();
man_login();
} // printf(“nntt記錄已刪除!t按任意鍵返回ntt”);
}
int main(){
index();login();return 0;}
軟件工程課程設(shè)計選題篇五
學(xué)生選課系統(tǒng)可行性分析報告
學(xué)院:數(shù)學(xué)計算機(jī)學(xué)院組長:馬琴
組員:許慕霄、伏敏潤、王佩軍
1.引言
1.1編寫目的每學(xué)期的課程都是學(xué)校安排的,學(xué)生沒有選擇的自由,而且課程的安排由于各方面諸多的原因經(jīng)常有不適之處,尤其是先行課的問題。另外,每學(xué)期考完試,同學(xué)們都要一次又一次的往系里跑,大家擠在一個小小的布告欄前面,在幾張a4紙上尋找自己的名字和成績。雖然從去年開始,全學(xué)校也改成了“學(xué)分制”,但整個選課過程的管理從我們學(xué)生的角度來看,變得更加混亂。同學(xué)們不知道每學(xué)期有什么課可以選,哪些是選修,哪些是必修,哪些是專業(yè)課;也不確定每門課多少學(xué)分,自己已經(jīng)修了多少學(xué)分;更不用說考慮一下哪門課要先學(xué),哪門課要后學(xué),哪些課屬于一系列。所以說,大部分同學(xué)都是為了“選課”而選課,完全沒有實(shí)現(xiàn)鼓勵同學(xué)發(fā)展個性,學(xué)各自之所愛的效果。不僅如此,每當(dāng)選課的時候,同學(xué)們忙,老師更忙,學(xué)校和系里都需要投入大量的人力、物力對整個選課過程進(jìn)行管理。
隨著科學(xué)技術(shù)的發(fā)展,計算機(jī)已經(jīng)是日常生活中不可或缺的工具,將學(xué)生選課系統(tǒng)從人工管理方式轉(zhuǎn)變成為計算機(jī)軟件控制。具有檢索迅速、查找方便、可靠性高、存儲量達(dá)、保密性好、壽命長、成本低等巨大優(yōu)點(diǎn)。如今,學(xué)生選課系統(tǒng)已成為日常教學(xué)工作中必不可少的管理軟件,可對學(xué)生信息、選修課程、科目成績進(jìn)行各方面的管理,為用戶提供充足的信息和快捷的查詢、修改手段。選課管理系統(tǒng)。既面向教務(wù)處,又面向教師和學(xué)生。不同的人,不同的身份操作的權(quán)限也不同。作為教師,他可以向教務(wù)處申請增加、刪除、修改課程信息,并隨時了解選修本課的學(xué)生名單,還可以輸入并分析考試成績。作為教務(wù)處管理員,它的權(quán)限是最寬的。他可以對教師提出的課程設(shè)置申請進(jìn)行審批,同時對教學(xué)進(jìn)行安排(包括時間和教室分配、選課結(jié)果管理)。作為學(xué)生,他可以查詢可以選什么課,已有多少學(xué)分,還差多少學(xué)分。最后進(jìn)行選課,在學(xué)期末還可以隨時進(jìn)行成績查詢。現(xiàn)籌劃一學(xué)生選課系統(tǒng)管理軟件以代替人工管理方式,最大程度的滿足各方面用戶的需求。
1.2 項(xiàng)目背景
項(xiàng)目名稱:學(xué)生選課系統(tǒng)軟件。
項(xiàng)目提出者:寧夏大學(xué)
項(xiàng)目開發(fā)者:開發(fā)小組
用戶:寧夏大學(xué)
1.3 定義
sql:結(jié)構(gòu)化查詢語言
eclipse:開發(fā)源代碼的、基于java的可擴(kuò)展開發(fā)平臺。
1.4 參考資料
《軟件工程》
2.可行性研究的前提
2.1 要求
主要功能:教師對學(xué)生資料、成績以及所選課程進(jìn)行修改管理;學(xué)生可通過查詢自身成績,自主選擇相關(guān)課程;管理員(教務(wù)處)統(tǒng)管所有學(xué)生、教師的相關(guān)信息。
性能要求:所有數(shù)據(jù)實(shí)時更新保持同步,且定時備份。
輸出要求:簡單、快捷、實(shí)時。
輸入要求:及時的修改和更新學(xué)生、教師和課程的信息。
安全與保密要求:系統(tǒng)本身配備一定的安全機(jī)制,保證各項(xiàng)數(shù)據(jù)的完整、正確。
每類用戶進(jìn)入系統(tǒng)時,均需輸入唯一的用戶名和密碼;教師有權(quán)對學(xué)生所選課程成績進(jìn)行錄入、查詢和修改;學(xué)生有權(quán)對選修課程進(jìn)行修改;管理員有權(quán)對學(xué)生信息、所選課程、科目成績進(jìn)行管理、修改。
2.2目標(biāo)
近幾年來,我們寧夏大學(xué)一直都在擴(kuò)招學(xué)生,外地生源的比例也比以前大了許多,而且還有日益增多的外國留學(xué)生,在管理上更增加了管理人員的勞動量,如此多的檔案資料,以原有的工作人員數(shù)量要管理好實(shí)在不容易,但如果增加工作人員,管理成本必然也會增加,得不償失,而我們這套系統(tǒng)這時就會發(fā)揮出它大大的作用,讓實(shí)用這領(lǐng)會到它的優(yōu)越之處,幫助老師輕輕松松管理好學(xué)生各方面的資料,無論學(xué)生是多是少,一切都會被管理得井井有條。節(jié)省更多的人力與設(shè)備,讓學(xué)生選課管理成為一項(xiàng)很直接人性化的管理。
2.3條件、假定何限制
運(yùn)行環(huán)境:windows98/2000/xp/vista/7,與windows office軟件高度兼容。硬件環(huán)境:奔4以上計算機(jī)。
開發(fā)環(huán)境:sql server、eclipse等。
該系統(tǒng)預(yù)期壽命五年。
2.4決定可行性的主要因素
學(xué)生選課系統(tǒng)軟件滿足各方用戶需求。
成本/效益分析結(jié)果:效益>成本。
3.對現(xiàn)有系統(tǒng)的分析
3.1處理流程和數(shù)據(jù)流程
教師登錄:可上傳、修改、管理學(xué)生選課和成績的查詢。
學(xué)生登錄:;學(xué)生可通過查詢自身成績,自主選擇相關(guān)課程,查詢各科成績。學(xué)校登錄:可查詢、管理所有信息。
3.2工作負(fù)荷
當(dāng)前系統(tǒng)負(fù)擔(dān)全校將近20000余名教師、學(xué)生的日常選課管理工作。
3.3人員
當(dāng)前系統(tǒng)需要4位管理員,對其專業(yè)技術(shù)要求不高,熟悉基本的電腦操作即可。
3.4設(shè)備
一臺服務(wù)器,兩臺pc機(jī)。
3.5局限性
由于當(dāng)前系統(tǒng)開發(fā)技術(shù)過于老舊,穩(wěn)定性、安全性能尤為不佳,致使系統(tǒng)頻繁遭遇惡意攻擊。系統(tǒng)反應(yīng)過慢,運(yùn)行效率低。由此分析得出,需要開發(fā)新的學(xué)生選課系統(tǒng)軟件。
4.技術(shù)可行性
我們身為首都經(jīng)濟(jì)貿(mào)易大學(xué)信息系的學(xué)生,最驕傲的就是擁有令其他系羨慕、向往的系機(jī)房。因特爾奔騰四的中央處理器,40g大容量的硬盤,加上256m的內(nèi)存,配上經(jīng)久耐用、定位準(zhǔn)確的光電鼠標(biāo),這都為系統(tǒng)的開發(fā)與運(yùn)行提供了良好的硬件環(huán)境,就是這樣一臺臺先進(jìn)傲人的電腦躺在機(jī)房里供我們隨時使用,便利程度真是如此了得啊!
身為計算機(jī)科學(xué)與技術(shù)專業(yè)大三的學(xué)生,通曉一些計算機(jī)軟件知識是肯定的,運(yùn)用軟件編寫程序的能力也是必備的。當(dāng)然,我們畢竟還是學(xué)生,能力還是有限的,但我們計算機(jī)系最不缺乏的就是計算機(jī)人才,向知識淵博、誨人不倦的鄭小玲老師必會給我們以極大的幫助。更何況,俗語說的好:三個臭皮匠賽過諸葛亮。我們組有4個人,起碼也頂兩個諸葛亮呢。相信通過我們大家的集思廣益,相得益彰,我們的系統(tǒng)將會以最完美的姿態(tài)展現(xiàn)在大家的面前。
我校自建校至今已有幾十年的歷史,各種課程比較齊備,且比較有條理。學(xué)分制度也比較完善。教師整體水平較高。這使我們開發(fā)這一對我們來說比較復(fù)雜的系統(tǒng)成為可能。雖然有如此好的客觀條件,但始終沒有一套完善簡單易用的管理系統(tǒng)?,F(xiàn)行系統(tǒng)雖然擁有了比較規(guī)范、科學(xué)的管理方法,并積累了大量的數(shù)據(jù)信息,具有一定的可行性,但是并不能掩蓋其工作量大,管理不夠系統(tǒng)的缺點(diǎn)。而我們的系統(tǒng)將充分利用學(xué)校為我們提供的寶貴信息,在繼承其優(yōu)點(diǎn)的基礎(chǔ)上,開發(fā)出一套更為可行的學(xué)生管理系統(tǒng)。這套學(xué)生選課管理系統(tǒng)在今后的應(yīng)用中再經(jīng)過不斷的修正與改進(jìn),將會使我學(xué)生選課更加完善、盡美。
5.經(jīng)濟(jì)可行性
成本方面,關(guān)于各種軟、硬件及輔助設(shè)備的購置、調(diào)試、機(jī)房及輔助設(shè)施(電源等)以及系統(tǒng)維護(hù),內(nèi)務(wù)開銷這些費(fèi)用都可以忽略不計,因?yàn)槲覀冇凶约旱碾娔X。
學(xué)生選課管理系統(tǒng)省去了老師為學(xué)生展示學(xué)校為學(xué)生提供的選修課程,并作介紹,考試后把分?jǐn)?shù)抄錄多次以做備案和公告這些大量繁雜而由單一枯燥的勞動,可以讓老師把精力放在教學(xué)和組織教學(xué)等更重要更具創(chuàng)造性的事情上,這就顯著的提高了他們的工作效率。
取消了抄錄成績后,學(xué)校里也不會再出現(xiàn)殘破的成績單一層蓋一層的貼在公告欄或黑板上的情景,校園環(huán)境也會因此而變得更整潔,而且也為學(xué)校省下了大量的紙張,雖然數(shù)量并不是很多,但將來系統(tǒng)擴(kuò)展到整個學(xué)校也將是很可觀的。況且,在資源日益缺乏的今天,節(jié)省紙張已不僅僅是為學(xué)校減少辦公費(fèi)用這一單純的意義。
眾所周知,學(xué)校的的學(xué)生多,管理起來非常困難。相應(yīng)的也加大了老師的工作量,又因?yàn)榻虒W(xué)制度的不斷變動和改革,因此,總能及時統(tǒng)計出一份內(nèi)容清晰,條理性強(qiáng)的學(xué)籍學(xué)分選課分析報表對老師來說真是難于登天。但如果缺少這份報表,同學(xué)們就無法清楚了解自己的學(xué)分情況,盲目選課,打亂了學(xué)習(xí)計劃,加重了課業(yè)負(fù)擔(dān),而那些基本順從課程安排的同學(xué)則浪費(fèi)了許多去學(xué)習(xí)有用知識的時間,甚至臨畢業(yè)時卻發(fā)現(xiàn)未修夠?qū)W分而畢不了業(yè)。這個關(guān)系到每個人命運(yùn)的問題絕對馬虎不得。不能再坐以待斃了,我們這套學(xué)生選課管理系統(tǒng)將提供一份完整的學(xué)分選課報表,并會利用管理系統(tǒng)的易修改性及時進(jìn)行更新,讓同學(xué)們在選擇課程,計算學(xué)分中更加游刃有余。
近幾年來,我們寧夏大學(xué)一直都在擴(kuò)招學(xué)生,外地生源的比例也比以前大了許多,而且還有日益增多的外國留學(xué)生,在管理上更增加了管理人員的勞動量,如此多的檔案資料,以原有的工作人員數(shù)量要管理好實(shí)在不容易,但如果增加工作人員,管理成本必然也會增加,得不償失,而我們這套系統(tǒng)這時就會發(fā)揮出它大大的作用,讓實(shí)用這領(lǐng)會到它的優(yōu)越之處,幫助老師輕輕松松管理好學(xué)生各方面的資料,無論學(xué)生是多是少,一切都會被管理得井井有條。
6.社會可行性
經(jīng)過我們的調(diào)查,絕大部分的任課老師,行政人員和校領(lǐng)導(dǎo)都為現(xiàn)行系統(tǒng)的繁瑣和冗雜的工作量所深深困擾著。在得知我們開發(fā)這套系統(tǒng)的計劃后,他們都有一種守得云開見月明的感覺,并表示非常愿意在系統(tǒng)的開發(fā)過程中給予全力支持以及積極的配合。
我們這套學(xué)生選課管理系統(tǒng)不僅能夠讓老師更清晰的掌握自己學(xué)生的信息,同時也讓學(xué)生自己更容易的知道如何準(zhǔn)確的選課,如何計算學(xué)分及盡早得知自己的考試成績。這就大大的為老師提供了便利。比如,在每學(xué)期期末考試后,大多數(shù)學(xué)生都已回到家中,如果為了獲取考試成績又不得不再返回學(xué)校的話,既費(fèi)時
又費(fèi)力,學(xué)生牢騷滿腹,老師也不能提早放假休息。而我們的系統(tǒng)可以提供網(wǎng)上查分,同學(xué)們在家中只需要上網(wǎng)就可以在第一時間知道自己的成績。還有,學(xué)生們也可通過我們的系統(tǒng)進(jìn)行選課來湊夠?qū)W分完成學(xué)業(yè)。在系統(tǒng)中會顯示出個門課程的性質(zhì)(如必修、限選、任選),其所占學(xué)分及任課老師的資料,其應(yīng)用性之強(qiáng)得到充分發(fā)揮。
我們學(xué)校的電腦普及率已達(dá)到了很高的水平,尤其是我們系擁有設(shè)備先進(jìn)管理完善的系機(jī)房,而學(xué)院的老師和學(xué)生們對電腦的操作也是駕輕就熟。因此,只要我們這套學(xué)生選課系統(tǒng)操作簡單,實(shí)用,合理,大家肯定是樂于接受并積極響應(yīng)和支持的。對于這一點(diǎn),我們是很有信心的。隨著信息時代的來臨,學(xué)籍學(xué)分 選課等信息管理的自動化,一體化正是大勢所趨。
7.其他可供選擇的方案
暫無
【本文地址:http://zhuhaihb.com/zuowen/1092404.html】