




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)(論文)課程名稱(chēng): 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì) 題 目: 學(xué)生成績(jī)管理系統(tǒng) 院 (系): 信息與控制系 專(zhuān)業(yè)班級(jí): 計(jì)算機(jī)1202 姓 名: 陳 安 學(xué) 號(hào): 201206060202 指導(dǎo)教師: 張 帆 2014年 11 月 14 日西安建筑科技大學(xué)華清學(xué)院課程設(shè)計(jì)(論文)任務(wù)書(shū)專(zhuān)業(yè)班級(jí): 計(jì)算機(jī)1202 學(xué)生姓名: 陳安 指導(dǎo)教師(簽名): 一、課程設(shè)計(jì)(論文)題目學(xué)生成績(jī)管理二、本次課程設(shè)計(jì)(論文)應(yīng)達(dá)到的目的數(shù)據(jù)結(jié)構(gòu)是實(shí)踐性很強(qiáng)的課程。課程設(shè)計(jì)是加強(qiáng)學(xué)生實(shí)踐能力的一個(gè)強(qiáng)有力手段。課程設(shè)計(jì)要求學(xué)生在完成程序設(shè)計(jì)的同時(shí)能夠?qū)懗霰容^規(guī)范的設(shè)計(jì)報(bào)告。嚴(yán)格實(shí)施課程設(shè)計(jì)這一環(huán)節(jié),對(duì)于學(xué)生基本程序設(shè)計(jì)
2、素養(yǎng)的培養(yǎng)和軟件工作者工作作風(fēng)的訓(xùn)練,將起到顯著的促進(jìn)作用。本題目要達(dá)到目的:熟練掌握鏈表結(jié)構(gòu)的實(shí)現(xiàn)與應(yīng)用。 三、本次課程設(shè)計(jì)(論文)任務(wù)的主要內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)參數(shù)、設(shè)計(jì)要求等) 實(shí)現(xiàn)輸入、輸出、插入、刪除、查找、追加、讀入、顯示、保存、拷貝、排序、索引、分類(lèi)合計(jì)、退出等功能。輸入數(shù)據(jù):學(xué)生姓名;學(xué)生證號(hào);學(xué)生所在院系;學(xué)生所修課程名;學(xué)生成績(jī);實(shí)現(xiàn)對(duì)學(xué)生成績(jī)的如下操作:1. 輸入、輸出;2. 各種數(shù)據(jù)操作:插入、刪除、查找、追加;3. 排序、索引、分類(lèi)合計(jì);4. 優(yōu)化界面設(shè)計(jì)(用到菜單、命令按鈕等)。四、應(yīng)收集的資料及主要參考文獻(xiàn): 由于本課程沒(méi)有安排“課內(nèi)上機(jī)”學(xué)時(shí),因此,在
3、課程設(shè)計(jì)之前必須自己已經(jīng)上機(jī)練習(xí)了“線(xiàn)性表”的基本操作。 參考文獻(xiàn):1.本年級(jí)使用的教材:數(shù)據(jù)結(jié)構(gòu)與算法分析(C+版),電子工業(yè)出版社,2005.7,Clifford A.Shaffer編著2. 數(shù)據(jù)結(jié)構(gòu)與算法,科學(xué)出版社,2005.08,趙文靜 祁飛等編著3. 數(shù)據(jù)結(jié)構(gòu)-C+語(yǔ)言描述,西安交通大學(xué)出版社,1999.01,趙文靜編著4.VC+深入詳解,電子工業(yè)出版社,2007.7,孫鑫,于安萍編著5.C+程序設(shè)計(jì), 清華大學(xué)出版社, 2005.8,COHOON & DAVIDSON編著五、審核批準(zhǔn)意見(jiàn)教研室主任(簽字) 摘要 本課程設(shè)計(jì)是對(duì)學(xué)生信息(包括學(xué)號(hào)、姓名、性別、高數(shù)、英語(yǔ)、C
4、語(yǔ)言、平均分)進(jìn)行管理,包括學(xué)生成績(jī)的信息輸入、顯示、添加、刪除、修改、查詢(xún)、退出.將學(xué)生的成績(jī)信息進(jìn)行記錄,信息內(nèi)容包含:(1)學(xué)生的學(xué)號(hào)(2)學(xué)生的姓名(3)學(xué)生的成績(jī)。假設(shè),現(xiàn)收集到了一個(gè)班學(xué)生的所有成績(jī)信息,要求用C語(yǔ)言編寫(xiě)一個(gè)簡(jiǎn)單的成績(jī)管理系統(tǒng),可進(jìn)行錄入、查詢(xún)、修改和瀏覽等功能關(guān)鍵詞:學(xué)生成績(jī)管理系統(tǒng)目錄一、需求分析1二、概要設(shè)計(jì)1三、詳細(xì)設(shè)計(jì)2四、調(diào)試分析7五、使用說(shuō)明10六、課設(shè)總結(jié)10參考文獻(xiàn)11一、需求分析 主要敘述軟件必須具備的功能和要求。本課程設(shè)計(jì)是用于對(duì)學(xué)生的成績(jī)進(jìn)行管理。通過(guò)本系統(tǒng),可以將各個(gè)學(xué)生的成績(jī)記錄輸入到系統(tǒng)中,保存到文件,便于查閱和相關(guān)管理。此外
5、,該系統(tǒng)還能實(shí)現(xiàn)對(duì)學(xué)生成績(jī)記錄的顯示,查詢(xún)以及插入或刪除學(xué)生的成績(jī)記錄等功能。二、概要設(shè)計(jì) 主要說(shuō)明對(duì)軟件中有關(guān)信息設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu);畫(huà)出整個(gè)軟件的系統(tǒng)結(jié)構(gòu)圖,說(shuō)明各個(gè)模塊的功能。2. 1利用的數(shù)據(jù)結(jié)構(gòu)內(nèi)容:以c語(yǔ)言和數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)知識(shí),應(yīng)用結(jié)構(gòu)體把學(xué)生信息(學(xué)號(hào)、姓名、性別、高數(shù)成績(jī)、英語(yǔ)成績(jī)、C語(yǔ)言成績(jī))連接起來(lái)組成一個(gè)整體,建立雙向循環(huán)鏈表,運(yùn)用主函數(shù)調(diào)用鏈表的功能函數(shù),用鏈表的建立、遍歷、修改、添加、刪除、輸出等操作實(shí)現(xiàn)各個(gè)功能。2.2功能描述 針對(duì)學(xué)生具體情況,進(jìn)行學(xué)生成績(jī)管理。采用鏈表和文件存儲(chǔ)結(jié)構(gòu)進(jìn)行學(xué)生信息的存儲(chǔ);對(duì)學(xué)生的信息可以進(jìn)行修改、刪除、添加、查詢(xún);菜單函數(shù)輸入
6、學(xué)生成績(jī)顯示學(xué)生成績(jī)添加學(xué)生成績(jī)將文件內(nèi)信息插入鏈表刪除學(xué)生成績(jī)修改學(xué)生成績(jī) 主函數(shù)查詢(xún)學(xué)生成績(jī)退出系統(tǒng) 系統(tǒng)結(jié)構(gòu)圖 圖 2.1三、詳細(xì)設(shè)計(jì)主要寫(xiě)出所設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)的詳細(xì)定義和組成;各個(gè)模塊的算法流程圖或偽碼表示。3.1學(xué)生成績(jī)的結(jié)構(gòu)體類(lèi)型定義為:定義與系統(tǒng)需求有關(guān)的結(jié)構(gòu)體:姓名;性別:高數(shù)成績(jī):英語(yǔ)成績(jī),C語(yǔ)言成績(jī)struct student/學(xué)生信息 int no; char name20;/學(xué)生姓名 char sex4;/學(xué)生性別 float gaoshu;/學(xué)生高數(shù)成績(jī) float yingyu;/學(xué)生英語(yǔ)成績(jī) float cyuyan;/學(xué)生C語(yǔ)言成績(jī) float ave; float
7、 sum; ;struct student stuMAX,*p;3.2 主函數(shù): 運(yùn)行出菜單,然后根據(jù)菜單選擇執(zhí)行的功能,1輸入學(xué)生成績(jī),2顯示學(xué) 生成績(jī)3添加學(xué)生成績(jī),4刪除學(xué)生成績(jī),5修改學(xué)生成績(jī),6查詢(xún)學(xué)生成績(jī) 7.退出 head=(DuLNode*)malloc(sizeof(DuLNode);/*分配頭結(jié)點(diǎn)的空間*/ if(!head)/*判斷頭結(jié)點(diǎn)空間分配是否成功*/3.3 DuLNode *save(DuLinkList head) 保存函數(shù),將文件中的內(nèi)容保存在鏈表 里面:利用鏈?zhǔn)酱鎯?chǔ)把有關(guān)的相應(yīng)信息:姓名,性別,高數(shù)成績(jī),英語(yǔ)成績(jī), C語(yǔ)言成績(jī)存儲(chǔ)起來(lái)。建立一個(gè)txt格式的文
8、本文檔,定義并建立指針,利用指針把這些信息存儲(chǔ) 到這個(gè)文本文檔里面。 DuLNode *save(DuLinkList head) DuLinkList p,q;/*定義結(jié)點(diǎn)類(lèi)型指針*/ FILE *fp ;/*定義文件指針*/ if(fp=fopen("consumer.txt","r+")=NULL) printf("cannot open this file.n"); fflush(stdin); getch(); exit(0); 3.4 DuLNode *find(DuLinkList&head,int n),查找函
9、數(shù),根據(jù)學(xué)生的姓名信息,對(duì)鏈表進(jìn)行遍歷,然后將指針指向查找結(jié)點(diǎn),將結(jié)點(diǎn)內(nèi)的信息讀出:調(diào)用查找函數(shù),輸入要查詢(xún)的學(xué)生學(xué)號(hào),系統(tǒng)給出所要查找學(xué)生的資料返 回 主 菜 單輸 出學(xué) 生資 料 輸 入 要查 詢(xún) 對(duì)的 學(xué) 生姓 名 查詢(xún) 學(xué)生 資料 查詢(xún)學(xué)生資料 圖3.1 printf("輸入要查詢(xún)的學(xué)生姓名:"); fflush(stdin); gets(str); for(i=0;i<now;i+) if(!strcmp(,str) printf("t學(xué)號(hào)t姓名t性別t高數(shù)t英語(yǔ)tC語(yǔ)言t平均值n"); printf("t%d
10、t%st%st%.2ft%.2ft%.2ft%.2fn",stui.no,,stui.sex,stui.gaoshu,stui.yingyu,stui.cyuyan,stui.ave); printf("tt按任意鍵返回主菜單."); fflush(stdin); as=getch();3.5 DuLNode *alter(DuLinkList&head)更改函數(shù),根據(jù)學(xué)生學(xué)號(hào)利用鏈表的遍 歷找到存儲(chǔ)想要更改學(xué)生信息的鏈表,然后再鏈表內(nèi)更改學(xué)生信息,最后 利用文件指針將鏈表內(nèi)的信息重新輸入文件中:修改學(xué)生資 料返回主菜單判斷姓名是否正確輸
11、入要修改學(xué)生姓名 不正確 正確進(jìn)行學(xué)生信息修改 修改學(xué)生資料 圖3.2 int i; char str20; printf("輸入要修改的學(xué)生姓名:"); fflush(stdin); gets(str); for(i=0;i<now;i+) if(!strcmp(,str) system("cls"); printf("ntt輸入修改學(xué)生信息n"); printf("n輸入學(xué)生學(xué)號(hào):"); fflush(stdin); scanf("%d",&stui.no);
12、 printf("n輸入學(xué)生性別:"); fflush(stdin); gets(stui.sex); printf("n輸入學(xué)生高數(shù):"); fflush(stdin); scanf("%f",&stui.gaoshu); printf("n輸入學(xué)生英語(yǔ):"); fflush(stdin); scanf("%f",&stui.yingyu); printf("n輸入學(xué)生C語(yǔ)言:"); fflush(stdin); scanf("%f",&
13、amp;stui.cyuyan); printf("nn"); break; 3.6 DuLNode *add(DuLinkList&head)添加函數(shù),在頭結(jié)點(diǎn)和末端結(jié)點(diǎn)之間添加新的結(jié)點(diǎn),存儲(chǔ)新的學(xué)生信息,并且刪除文件中的內(nèi)容,將鏈表內(nèi)的新信息寫(xiě)入文件: 返回主菜單判斷是否繼續(xù)輸入輸入學(xué)生的學(xué)號(hào)姓名成績(jī)信息添加學(xué)生成績(jī) 否 是 添加學(xué)生資料 圖3.3 printf("ntt輸入新插入學(xué)生隊(duì)信息n"); printf("n輸入學(xué)生學(xué)號(hào):"); scanf("%d",&stunow.no); fflu
14、sh(stdin); printf("n輸入學(xué)生姓名:"); fflush(stdin); gets(); printf("n輸入學(xué)生性別:"); fflush(stdin); gets(stunow.sex); printf("n輸入學(xué)生高數(shù):"); fflush(stdin); scanf("%f",&stunow.gaoshu); printf("n輸入學(xué)生英語(yǔ):"); fflush(stdin); scanf("%f",&stun
15、ow.yingyu); printf("n輸入學(xué)生C語(yǔ)言:"); fflush(stdin); scanf("%f",&stunow.cyuyan); printf("nn"); now=now+1; printf("是否繼續(xù)輸入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); 3.7. DuLNode *del(DuLinkList&head)刪除函數(shù),對(duì)鏈表進(jìn)行遍歷,找到存儲(chǔ)想 要?jiǎng)h除信息的結(jié)點(diǎn),然后在鏈表中刪除該結(jié)點(diǎn),最
16、后刪除文件中的舊信息, 將鏈表中的全部信息輸入文件中:輸入要?jiǎng)h除的學(xué)生學(xué)號(hào)刪除學(xué)生資料返回主菜單刪 除資 料 刪除學(xué)生資料 圖3.4 int inum,i; printf("請(qǐng)輸入要?jiǎng)h除的學(xué)生的學(xué)號(hào):"); fflush(stdin); scanf("%d",&inum); for(i=0;i<now;i+) if(stui.no=inum) if(i=now)now-=1; else stui=stunow-1; now-=1; break; system("cls");四、調(diào)試分析包括: 測(cè)試數(shù)據(jù); 測(cè)試輸出的結(jié)果;
17、時(shí)間復(fù)雜度分析;算法的改進(jìn)設(shè)想。 運(yùn)行開(kāi)始(圖4.1) 選擇1輸入成績(jī)(圖4.2) 選擇2顯示成績(jī)(圖4.3) 選擇3添加學(xué)生信息(圖4.4) 選擇4刪除學(xué)生信息(輸入學(xué)號(hào)1)(圖4.5) 選擇5修改學(xué)生信息(修改謝海洋同學(xué)的)(圖4.6) 選擇6查詢(xún)學(xué)生信息(輸入姓名張瑜)(圖4.7) 選擇7退出(如圖4.8)五、使用說(shuō)明應(yīng)該寫(xiě)明程序的主要程序文件名,如果需要安裝,要有程序的安裝使用說(shuō)明;#include<stdio.h>#include<conio.h>#include <stdlib.h>#include<string.h>/頭文件#def
18、ine MAX 80void input();void display();void insert();void del();void average();void find();void average();void modify(); /聲明錄入(input),顯示(display),排序(sort),添加(insert),刪除(del),修改(modify),查詢(xún)(find)函數(shù)。六、課設(shè)總結(jié)包括: 課程設(shè)計(jì)過(guò)程的收獲;遇到的問(wèn)題,解決問(wèn)題過(guò)程的思考(存在問(wèn)題?問(wèn)題如何解決?);程序調(diào)試能力的思考; 對(duì)數(shù)據(jù)結(jié)構(gòu)這門(mén)課程的思考; 在課程設(shè)計(jì)過(guò)程中對(duì)數(shù)據(jù)結(jié)構(gòu)課程的認(rèn)識(shí)等內(nèi)由于本課題中的許多知識(shí)點(diǎn)都沒(méi)有學(xué)過(guò)都要靠自己到課外的資料中去查找。在用的時(shí)候難免出現(xiàn)這樣那樣的錯(cuò)誤。如開(kāi)始設(shè)計(jì)出來(lái)的菜單不是預(yù)想的那樣,而是總個(gè)窗中出現(xiàn)混亂。解決的這個(gè)問(wèn)題的辦法是調(diào)整。一個(gè)系統(tǒng)的菜單和提示信息非常重要。如果沒(méi)有這些用戶(hù)根本不知道怎么用你設(shè)計(jì)的這個(gè)系統(tǒng)。在設(shè)計(jì)的調(diào)試過(guò)程中也無(wú)法順利的完成調(diào)試工作。有了一個(gè)清晰簡(jiǎn)單的菜單和一些提示信息這后,調(diào)試過(guò)程完成的非常順利??偨Y(jié)出了一點(diǎn)點(diǎn)的經(jīng)驗(yàn)如下:1、要對(duì)系統(tǒng)的功能和要求做出詳細(xì)的分析,并合理分解
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)學(xué)影像師考試試卷及答案解析
- 2025年文化創(chuàng)新與產(chǎn)業(yè)轉(zhuǎn)型專(zhuān)業(yè)能力考核試題及答案
- 2025年師范專(zhuān)業(yè)英語(yǔ)考試試卷及答案
- 2025年社區(qū)護(hù)理管理考試試題及答案
- 2025年人才招聘與面試管理職能考核題及答案
- 2025年青少年心理健康教育知識(shí)考試卷及答案
- 2025年建筑師職業(yè)考試試題及答案列表
- 2025年教師職業(yè)能力培訓(xùn)考試題及答案
- 2025年環(huán)境污染治理與技術(shù)考試試卷及答案
- 2025年道德與法治教師培訓(xùn)考試試題及答案
- 防范非法金融活動(dòng)
- 數(shù)字資產(chǎn)投資策略-洞察分析
- 【MOOC】微型計(jì)算機(jī)原理與接口技術(shù)-南京郵電大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 市政工程施工質(zhì)量保障體系
- 貴州 中國(guó)儲(chǔ)備糧管理集團(tuán)有限公司招聘筆試真題2023
- 臨床約翰霍普金斯跌倒評(píng)估量表解讀
- 中華人民共和國(guó)突發(fā)事件應(yīng)對(duì)法培訓(xùn)課件
- 47屆世賽江蘇省選拔賽軌道車(chē)輛技術(shù)項(xiàng)目技術(shù)工作文件v1.1
- 《供應(yīng)鏈管理》課件 第7章 供應(yīng)鏈運(yùn)輸管理
- 城市綜合管廊安全培訓(xùn)
- 小學(xué)數(shù)學(xué)課程體系介紹
評(píng)論
0/150
提交評(píng)論