版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、程序11112233340556清學(xué)生成績信息管理系統(tǒng)1 引1.1 設(shè)計(jì)目的與要求 1.2 設(shè)計(jì)內(nèi)容 . 2 系統(tǒng)需求與功能分析 2.1 系統(tǒng)需求分析 2.2 系統(tǒng)功能分析 . 3 總體結(jié)構(gòu)設(shè)計(jì) 3.1 系統(tǒng)的結(jié)構(gòu)設(shè)計(jì) . 3.2 系統(tǒng)管理流程圖 . 系統(tǒng)詳細(xì)設(shè)計(jì)和系統(tǒng)實(shí)現(xiàn) 系統(tǒng)測試 結(jié)束語 參考文獻(xiàn) 附錄 1:鏈表結(jié)構(gòu)化設(shè)計(jì)源程序清單 附 錄 2 : 順 序 表 結(jié) 構(gòu) 化 設(shè) 計(jì) 源單 . 261.1 設(shè)計(jì)目的與要求該學(xué)生信息管理系統(tǒng)采用C+語言開發(fā)研制,針對(duì)學(xué)生成績及其數(shù)據(jù)特點(diǎn),可以全面實(shí)現(xiàn)對(duì)學(xué)生成績的插入、查詢、修改、刪除 和輸出等功能的計(jì)算機(jī)管理。它能使學(xué)生信息數(shù)據(jù)的工作人員從繁 重
2、的工作中解脫出來,大大減輕了工作量,減少人為的工作失誤, 全面提高學(xué)生信息管理的效率,從而使學(xué)校對(duì)于學(xué)生成績的管理水 平和技術(shù)水平躍上一個(gè)新的臺(tái)階。(1) 程序要添加適當(dāng)?shù)淖⑨?,程序的書寫要采用縮進(jìn)格式。(2) 程序要具在一定的健壯性,即當(dāng)輸入數(shù)據(jù)非法時(shí),程序也能適當(dāng)?shù)刈龀龇磻?yīng),如插入刪除時(shí)指定的位置不對(duì)等等。(3) 程序要做到界面友好,在程序運(yùn)行時(shí)用戶可以根據(jù)相應(yīng)的提示信息進(jìn)行操作。(4) 根據(jù)實(shí)驗(yàn)報(bào)告模板詳細(xì)書寫實(shí)驗(yàn)報(bào)告, 在實(shí)驗(yàn)報(bào)告中給出鏈表根據(jù)姓名進(jìn)行查找的算法和插入算法的流程圖。號(hào),定義一個(gè)包含學(xué)生信息(學(xué)號(hào),姓名,成績)的的順序表和鏈表,使其具有如下功能:(1)根據(jù)指定學(xué)生個(gè)數(shù),逐
3、個(gè)輸入學(xué)生信息;績);(2)(3)(4)(5)(6)(7)逐個(gè)顯示學(xué)生表中所有學(xué)生的相關(guān)信息;根據(jù)姓名進(jìn)行查找,返回此學(xué)生的學(xué)號(hào)和成績;根據(jù)指定的位置可返回相應(yīng)的學(xué)生信息(學(xué)號(hào),姓名,成給定一個(gè)學(xué)生信息,插入到表中指定的位置;刪除指定位置的學(xué)生記錄;統(tǒng)計(jì)表中學(xué)生個(gè)數(shù)。2 系統(tǒng)需求與功能分析2.1 系統(tǒng)需求分析(1) 能完成學(xué)生信息的插入、查詢、修改、刪除、輸出等功能;(2) 采用單鏈表與順序表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn);(3) 所有數(shù)據(jù)以外部文件方式保存。2.2 系統(tǒng)功能分析(1) 要設(shè)計(jì)一個(gè)學(xué)生成績管理系統(tǒng),其功能包括:插入函數(shù)Add() :將學(xué)生成績信息插入到鏈表中;查詢函數(shù)Search():分別可以按
4、學(xué)號(hào)和按姓名進(jìn)行學(xué)生成菜單函數(shù)Menu() :為程序的菜單函數(shù)為實(shí)現(xiàn)各種功能提供績查詢;刪除函數(shù)Delete():當(dāng)需要?jiǎng)h除的學(xué)號(hào)和姓名一致時(shí)則刪除對(duì)應(yīng)的學(xué)生記錄;修改函數(shù)Modify():修改指定的學(xué)生成績信息;輸出函數(shù)Show() :輸出全部學(xué)生成績信息;便捷;讀取數(shù)據(jù)函數(shù)Read():從外部文件讀取學(xué)生成績信息;保存數(shù)據(jù)函數(shù)Save():將數(shù)據(jù)保存到外部文件中3總體結(jié)構(gòu)設(shè)計(jì)3.1系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)通過對(duì)學(xué)生信息管理系統(tǒng)的功能分析,可以定義出系統(tǒng)的總體結(jié)構(gòu)模塊圖,如圖3.1所示。圖3.1學(xué)生管理系統(tǒng)總體結(jié)構(gòu)設(shè)計(jì)3.2系統(tǒng)管理流程圖前面的分析中已經(jīng)定義了系統(tǒng)各個(gè)模塊,屬于靜態(tài)建模的范圍。在系統(tǒng)運(yùn)
5、行時(shí)刻的動(dòng)態(tài)模型應(yīng)該由系統(tǒng)的流程決定。當(dāng)用戶運(yùn)行該 系統(tǒng)后可以來進(jìn)行學(xué)生信息插入管理、學(xué)生信息查詢管理、學(xué)生信 息刪除管理、學(xué)生信息修改管理及學(xué)生信息輸出等操作,具體的流 程如圖3.2所示。圖3.2系統(tǒng)流程圖主模塊應(yīng)負(fù)責(zé)應(yīng)用程序的主界面,由它調(diào)用其他模塊.因此主模塊應(yīng)具有操作性好、界面清晰的特點(diǎn),使用戶能夠很方便地找到所 需功能。根據(jù)功能需求的結(jié)果分析,主界面應(yīng)該由學(xué)生信息插入管理,學(xué)生信息查詢管理、學(xué)生信息修改管理、學(xué)生信息刪除管理和學(xué)生 信息輸出管理組成,可以通過輸入相應(yīng)的數(shù)字進(jìn)入相應(yīng)的功能模塊。4鏈表學(xué)生信息管理系統(tǒng)詳細(xì)設(shè)計(jì)和系統(tǒng)實(shí)現(xiàn)系統(tǒng)總體設(shè)計(jì)完成后,就可以根據(jù)需求對(duì)各個(gè)模塊來進(jìn)行實(shí)現(xiàn)
6、了。在本系統(tǒng)中需要編碼實(shí)現(xiàn)的主要有學(xué)生信息插入、學(xué)生信息查詢、學(xué)生信息修改、學(xué)生信息刪除和學(xué)生信息輸出等5個(gè)模塊。(1)學(xué)生信息插入模塊添加的信息包括學(xué)號(hào)(不允許重復(fù))、姓名(不允許重復(fù))、分?jǐn)?shù)。流程圖如下圖4.1所示。圖4.1插入模塊流程圖本程序采用的是尾插法,就是每次將新申請(qǐng)的結(jié)點(diǎn)插在終端結(jié)點(diǎn)的后面,其執(zhí)行過程如圖4.2所示。I E*IPf暮養(yǎng)(a)初貽化插入元素a0 1, m般情況插入元素sttl氓盪3 SHIR価可I f t*(Sb! r*圖4.2尾插法建立單鏈表操作示意圖(2) 學(xué)生信息查詢模塊按姓名和學(xué)號(hào)查找學(xué)生信息的流程圖分別如下圖4.3所示。圖4.3按姓名查找學(xué)生信息流程圖在單
7、鏈表中,即使知道被訪問結(jié)點(diǎn)的位置i,也不能像順序表P,那樣直接按序號(hào)訪問,而只能從頭指針出發(fā),設(shè)置一個(gè)工作指針順next域逐個(gè)結(jié)點(diǎn)往下搜索。當(dāng)P指向某個(gè)結(jié)點(diǎn)時(shí)判斷是否為第個(gè)結(jié)點(diǎn),若是則查找成功;否則,將工作指針P后移,即將P指向原來所指結(jié)點(diǎn)的后繼結(jié)點(diǎn)。直到P為NULL時(shí)查找失敗。單鏈表查找 過程如圖4.4所示。 first*1 口二*4 4 一7酬I 4樂I八圖4.4單鏈表查找過程的示意圖按學(xué)號(hào)查詢學(xué)生信息同按姓名查找學(xué)生信息,此處不再詳細(xì)列出。(3) 學(xué)生信息修改模塊首先要查找與要修改數(shù)據(jù)相匹配的信息,若沒有則返回失敗。否則把相應(yīng)的信息輸出,然后再重新輸入新的數(shù)據(jù)并保存到單鏈表(4) 學(xué)生信
8、息刪除模塊當(dāng)選擇刪除功能時(shí),首先輸入要?jiǎng)h除的同學(xué)的姓名,然后輸入要?jiǎng)h除的同學(xué)的學(xué)口號(hào),如果該同學(xué)存在并且姓名與學(xué)號(hào)匹配的上,則進(jìn)行刪除操作,否則返回失敗。其流程圖4.5如下:N圖4.5刪除學(xué)生信息模塊流程圖刪除操作定義為將單鏈表的第i個(gè)結(jié)點(diǎn)刪去。因?yàn)樵趩捂湵碇薪Y(jié)點(diǎn)ai存儲(chǔ)地址在其前驅(qū)結(jié)點(diǎn)ai-1的指針域,所以必須首先找到ai-1的存儲(chǔ)地址P,然后令P的next域指向ai的后繼結(jié)點(diǎn),即把結(jié)點(diǎn)ai從鏈上摘下來,最后釋放結(jié)點(diǎn)ai的存儲(chǔ)空間,如圖4.6所示忖在表頭刪除:M在表中間刪除p*n+ q=XL:LL T被刪結(jié)點(diǎn)不存在儀 但其前馳結(jié)點(diǎn)卻存在*圖4.6在單鏈表中刪除結(jié)點(diǎn)指針的變化情況(5) 學(xué)生信
9、息輸出模塊從單鏈表表頭遍歷整個(gè)單鏈表,將所有數(shù)據(jù)輸出。其部分代碼如下:void Function:Show() char choose;Student *te mp;system("cls");temp=Student_First->Next; coutvv"文件無數(shù)據(jù) nn "<<endl;cout<<"1.返回主菜單"vvendl;cin>>choose;while(choose!='1')coutvv"1.返回主菜單"vvendl;cin>>
10、;choose;Menu();elsecout<<" 姓名 t 學(xué)號(hào) t 語文成績 t 數(shù)學(xué)成績 t 英語成績n"while(temp!=NULL) temp->Out();temp=temp->Next;cout<<"1. 返回主菜單 "<<endl;cin>>choose;while(choose!='1') cout<<"1. 返回主菜單 "<<endl;cin>>choose;Menu();5系統(tǒng)測試在完成了系統(tǒng)各方
11、面的設(shè)計(jì)后,并不是可以運(yùn)行就完成的,為了保證系統(tǒng)性能的穩(wěn)定性跟安全性等,就要對(duì)系統(tǒng)做測試。測試環(huán)境如下:硬件:P4C 2.4GHz,80GB1 盤,512M內(nèi)存;軟件:Windows XPPersonal SP2,分辨率 1024*768,MicrosoftVisual C+ 6.0 o1.這是鏈表的主界面4 *C:User5AdministratorDe5ilctopDebugStudent.exe'I 口 I 回2.這是順序表的主界面U 'CALI £ersAdfn inistra torDe lctop科睦文件夾橫要作山數(shù)福庫i曲入 Ddbci gSq Li s
12、t.exs'°回菽迎使用學(xué)生信息查詢系統(tǒng),請(qǐng)按提示使用!以下程序是使用順序表實(shí)現(xiàn)的匕程正爐請(qǐng)您選擇您要執(zhí)行的操作;1; L青聽囂創(chuàng)建順序表3、插入信息4、刪除信息'、查找信息“顯示當(dāng)前信 請(qǐng)從序號(hào)06中選擇繼續(xù)禰所需要的工作.圖5.1運(yùn)行主界面我就以順序表為例介紹一下我的學(xué)生信息管理系統(tǒng)吧選擇1清空學(xué)生信息功能時(shí),如圖5.2所示。I * C:U 5 e rsAdm i n istrd torDes kto p 誦F 霍文程妻雇雯 作業(yè)!湊庫£討52訪11 gSq Li 5t. exe *以下程序是使用順序表實(shí)現(xiàn)的;012斫呈正爐請(qǐng)您選擇您要執(zhí)行的操作;孑 器
13、型礫鑒、創(chuàng)建順序表3.插入信息仏刪除信息5.查找信息6.顯示當(dāng)前信 $拿靠萃需聿保韋藥:纟魏警觴嗚'怎爭示你要退岀.輸入其他任意鍵繼續(xù)你需要的工 乍L幀序表已清空?您可以繼續(xù)其他操作?以下程序是使用順序表實(shí)現(xiàn)的:0126程正爐請(qǐng)您選擇您要執(zhí)行的操作;清割2*創(chuàng)建順序表3、插入信息久刪除信息5、查找信息氣顯不當(dāng)前信& 0、退岀系統(tǒng)'情從序號(hào)06中選a.繼纏你所需g的工作.圖5.2插入學(xué)生成績信息實(shí)現(xiàn)5.3和返回主菜單后選擇 3插入學(xué)生成績信息,4刪除學(xué)生信息,運(yùn)行結(jié)果按由姓名特定位置刪除和按學(xué)號(hào)刪除兩種分別如圖 圖5.4所示。*- -“- r - -iTMl;£
14、0110216460126歌鬆鑒f中選擇繼續(xù)你所需要的工作孑 i|a|圭冬筮程正爐要魏證的位置=1插人s成功,要檢查請(qǐng)看輸岀甲以下程序是使用順序表實(shí)現(xiàn)的:0126程正爐請(qǐng)您選擇您要執(zhí)行的操作Zft'實(shí)髒仝創(chuàng)建順序表"插入信息刪除信息“查找信息6、顯示當(dāng)前信 礴U序號(hào)吐f中選擇,繼緘你所需要的工作4L我想it入學(xué)生羊號(hào)冊(cè)賒情您選擇匕20110210460126ZZ圖5.3按學(xué)生學(xué)號(hào)查找相關(guān)信息實(shí)現(xiàn)希迴殳豔生I県髀囂講按握示輸入數(shù)據(jù): 廠八 名請(qǐng)輸入第1名同學(xué)的學(xué)號(hào)= 20110210460126hw輸入第名同學(xué)的姓名話呈正爐請(qǐng)輸入第1名同學(xué)的成績:丄 貳次操作您一共輸入了 1名
15、數(shù)據(jù)以下程序是使用順序表實(shí)現(xiàn)的:0丄程正爐請(qǐng)您選擇您要執(zhí)行的操作;首、清創(chuàng)建順序表插入信息4、刪除信息5、查找信息石、顯示當(dāng)前信Z圖5.4按學(xué)號(hào)查找相關(guān)信息實(shí)現(xiàn)當(dāng)在主菜單中選擇 4時(shí),則進(jìn)行刪除功能。其運(yùn)行結(jié)果如圖5.5所示。h C;UrsXAdmini5trdtOfDesktop新崖文件夾辰要、作業(yè)讖翳陣結(jié)構(gòu)bugi&qListexe*I 口 1 L 國Q 曹至需廩即仝創(chuàng)產(chǎn)順序表勺,插入信息4、刪除信懇 X S找信息X a示當(dāng)前信 用遨14醪你所需要的工作5嶷入您要查扶的學(xué)生學(xué)號(hào):2 0110210460126廉i:俺要查找的學(xué)生不存在,請(qǐng)檢查?以下程序是使用順序表實(shí)現(xiàn)的;血衛(wèi)5程正
16、爐請(qǐng)您選擇您要執(zhí)行的操作.清割阪蔻仝創(chuàng)建順序表冬插入信息冬刪除信息 J查找信息6.顯示當(dāng)前信 #4、 0 *退岀系亠充請(qǐng)從序號(hào)0K中選卑所需要的工作嗎錢瀛灌麴I您選擇I 2輸入您署刪除的學(xué)生學(xué)號(hào)= 2011021046 0126 已ffl嗓屜查輸出看是否符合您的要求!圖5.5刪除學(xué)生信息功能實(shí)現(xiàn)當(dāng)在主菜單中選擇 6時(shí),則進(jìn)行顯示當(dāng)前信息功能。其運(yùn)行結(jié)果如圖5.7所示。JL 'C:U sersAdnn 1 ni st ratorDe skto pl新建文畔夾霽妾作kk熾秦庫結(jié)構(gòu)q Li st. exe'I ° I 回以下程序是使用順序表實(shí)現(xiàn)的;程正爐請(qǐng)您選擇您要執(zhí)行的操
17、作,lx清SW® 2.創(chuàng)建順序表3、插入信息4、刪除信'息5、查找信息氣顯示當(dāng)前信 Jiju' 0*退岀系纟充請(qǐng)從序號(hào)中選擇,繼續(xù)你所需要的工作6專見在還沒有任何信息或信息被刪除¥您可以先建立順序表嚴(yán)以下程序是使用順序表實(shí)現(xiàn)的:0126程正爐請(qǐng)您選扌睪您要執(zhí)彳亍的操作=1.清2創(chuàng)建順序表插入信息4.刪除信'息5、査找信息t.顯示當(dāng)前信 請(qǐng)從序號(hào)y-f中選擇,繼續(xù)你所需要的工作.圖5.7輸出學(xué)生信息功能實(shí)現(xiàn)6結(jié)束語通過這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的實(shí)驗(yàn),在解決問題的過程中,充分體會(huì)到了數(shù)據(jù)結(jié)構(gòu)這門課程對(duì)于軟件設(shè)計(jì)的重要性,也體會(huì)到了 數(shù)據(jù)結(jié)構(gòu)+算法=程序這句話
18、的真正含義,一個(gè)實(shí)際問題的解決第 步就是要依賴于良好的抽象思維的,將實(shí)際問題轉(zhuǎn)化為相應(yīng)的數(shù)據(jù) 結(jié)構(gòu),只有這一步做好了,才能采取相應(yīng)的算法和優(yōu)化方法解決問 題和解決好問題。參考文獻(xiàn)1錢新賢,楊猛,程兆煒,張少東.Visual C+編程疑難詳解M.北京:人民郵電出版社,20002 王紅梅,胡明,王濤.數(shù)據(jù)結(jié)構(gòu)(C+)M.北京:清華大學(xué)出版社, 2007中國水利水電出版社,3 程學(xué)先數(shù)據(jù)庫原理與技術(shù) M 北京:2001SQL BibleM 北京:電4 Alex Kriegel & Boris M.Trukhnov子工業(yè)出版社, 20005 鄭章,程剛,張勇 Visual C+6.0 數(shù)據(jù)開發(fā)
19、技術(shù) M 北京: 機(jī)械工業(yè)出版社, 1999.9 6 F. Brokken and K. Kubat . C+ Annotations . Version 4.4.0m ,ICCE, University of Groningen , Netherlands , 1990. 250 280 附錄 1:鏈表結(jié)構(gòu)化設(shè)計(jì)源程序清單 / 程序名稱: Student.CPP / 程序功能:采用鏈表與文件實(shí)現(xiàn)一個(gè)簡單的學(xué)生成績管理系統(tǒng)。#include <iostream> #include <fstream> #include<cstring> #include<
20、;conio.h> #include <ctime> using namespace std;struct Class int Chinese;int Math;int English;class Student public:Student();void Ofile(ofstream &of);void Infile(ifstream &f);void Out();void Set(char *name,int no,Class score);char *GetName();int GetNo();Student *Next;protected:char N
21、ame20;int No;Class Score ;Student:Student():Next(0) char *Student:GetName()return Name; int Student:GetNo()return No; void Student:Set(char *name,int no,Class score) strcpy(Name,name);No=no;Score=score;void Student:Infile(ifstream &f) f>>Name>>No>>Score.Chinese>>Score.Mat
22、h>>Score.English;/ 將數(shù)據(jù)輸入到文件void Student:Ofile(ofstream &of) of<<""<<Name<<" "<<No<<""<<Score.Chinese<<""<<Score.Math<<" "<<Score.English;/從文件中提取數(shù)據(jù)void Student:Out() cout<<Nam
23、e<<"t"<<No<<"t"<<Score.Chinese<<"tt"<<Score.Math<<"tt"<<Score.English<<"t"<<endl;class Function/功能類public:Function();Function();void Menu();void Add();void Search();void Delete();/構(gòu)造函數(shù)析構(gòu)函數(shù)菜單
24、函數(shù)錄入學(xué)生成績函數(shù)查詢學(xué)生成績函刪除學(xué)生成績函void Show();/顯示學(xué)生成績函private:Student *Student_First;void Read();/讀取學(xué)生成績函void Save();/保存學(xué)生成績信息函數(shù);Function:Function() Student_First=new Student;Read();Function:Function() delete Student_First;void Function:Add()/錄入學(xué)生成績信息函數(shù) char name20;int no;Class score;char choose;Student *f1,*
25、p,*f2;system("cls");f1=Student_First;f2=Student_First->Next;while(f1->Next)f1=f1->Next;do p=new Student;cout<<" 請(qǐng)輸入您要添加的學(xué)生成績信息 :"<<endl;cout<<" 請(qǐng)輸入學(xué)生姓名 :"cin>>name;while(f2) if(strcmp(f2->GetName(),name)=0) cout<<" 該學(xué)生已存在,請(qǐng)
26、確定姓名 !nn"cout<<" 請(qǐng)輸入姓名 :"cin>>name;break;f2=f2->Next;cout<<" 請(qǐng)輸入學(xué)號(hào).H.cin>>no;cout<<" 請(qǐng)輸入語文成績 :"cin>>score.Chinese;cout<<" 請(qǐng)輸入數(shù)學(xué)成績 :"cin>>score.Math;cout<<" 請(qǐng)輸入英語成績 :"cin>>score.English;p-
27、>Set(name,no,score);f1->Next=p;p->Next=NULL;f1=f1->Next;cout<<" 是否繼續(xù)輸入信息 ?(YN) "<<endl;cin>>choose;while(choose='y'|choose='Y');Save();cout<<"1. 返回主菜單 "<<endl;cin>>choose;while(choose!='1') cout<<"
28、1. 返回主菜單 "<<endl;cin>>choose;Menu(); char name20;int no;char choose;Student *temp,*p;system("cls");p=temp=Student_First->Next;cout<<" 請(qǐng)輸入姓名 :"cin>>name;cout<<" 輸入學(xué)號(hào).H.cin>>no;while(temp) if(strcmp(temp->GetName(),name)=0&&am
29、p;temp->GetNo()=no) / 判斷該學(xué)生信息是否存在 cout<<" 姓名 t 學(xué)號(hào) t 語文成績 t 數(shù)學(xué)成績 t 英語成績 n"temp->Out();cout<<"n 是否刪除 (Y/N)"cin>>choose;if(choose='y'|choose='Y') p->Next=temp->Next;delete temp;cout<<" 刪除成功 :n"break;p=temp;temp=temp->N
30、ext;Save();cout<<"1. 返回主菜單 n2. 繼續(xù)刪除 "<<endl;cin>>choose;while(choose!='1'&&choose!='2') cout<<"1. 返回主菜單 n2. 繼續(xù)刪除 "<<endl;cin>>choose;if(choose='1')Menu();else if(choose='2')Delete();void Function:Modify()
31、/修改學(xué)生信息函數(shù) char choose,name20;Student *temp,*p;int no;Class score;system("cls");temp=p=Student_First;cout<<" 請(qǐng)輸入您要修改的學(xué)生姓名 :"cin>>name;while(temp)if(strcmp(temp->GetName(),name)=0) cout<<" 姓名 t 學(xué)號(hào) t 語文成績 t 數(shù)學(xué)成績 t 英語成績n"temp->Out();cout<<"
32、; 請(qǐng)輸入姓名 :"cin>>name;cout<<" 請(qǐng)輸入學(xué)號(hào).H.cin>>no;cout<<" 請(qǐng)輸入語文成績 :"cin>>score.Chinese;cout<<" 請(qǐng)輸入數(shù)學(xué)成績 :"cin>>score.Math;cout<<" 請(qǐng)輸入英語成績 :"cin>>score.English;temp->Set(name,no,score);break;temp=temp->Next;S
33、ave();cout<<" 修改成功 !"<<endl;cout<<"1. 返回主菜單 n2. 繼續(xù)修改 "<<endl;cin>>choose;while(choose!='1'&&choose!='2') cout<<"1. 返回主菜單 n2. 繼續(xù)修改 "<<endl;cin>>choose;if(choose='1')Menu();else if(choose='
34、;2')Modify();void Function:Read()/讀取信息函數(shù) Student *p,*p2;p=Student_First;long t;ifstream is("Student.txt",ios:in);if(!is) ofstream os("Student.txt",ios:out);os.close();return ;while(!is.eof()p2=new Student;p2->Infile(is);p->Next=p2;p2->Next=NULL;p=p->Next;void Func
35、tion:Save()/存學(xué)生成績信息函數(shù) ofstream of("Student.txt",ios:out);Student *p=Student_First->Next;while(p) p->Ofile(of);p=p->Next;of.close();void Function:Search() int flag(0);char t120;int t2;system("cls");Student *temp=Student_First->Next;docout<<" 輸入查詢方式: n1. 按姓名查
36、詢 n2. 按學(xué)號(hào)查詢n"cin>>choose;if(choose='1') cout<<" 請(qǐng)輸入您要查詢的姓名.H.cin>>t1;while(temp) if(strcmp(t1,temp->GetName()=0) flag=1;break;temp=temp->Next;if(flag=0)cout<<"n 無該學(xué)生的信息 n"<<endl;else cout<<" 姓名 t 學(xué)號(hào) t 語文成績 t 數(shù)學(xué)成績 t 英語成績 n&quo
37、t;temp->Out();cout<<" 請(qǐng)輸入您要查詢的學(xué)號(hào)H.break;else if(choose='2')cin>>t2;while(temp) if(t2=temp->GetNo() flag=1;break;temp=temp->Next;if(flag=0)cout<<"n 無該學(xué)生的信息 n"<<endl;else cout<<" 姓名 t 學(xué)號(hào) t 語文成績 t 數(shù)學(xué)成績 t 英語成績 n"temp->Out();break
38、;while(choose!='1'|choose!='2');cout<<"n1. 返回主菜單 n2. 繼續(xù)查詢 "<<endl;cin>>choose;while(choose!='1'&&choose!='2') cout<<"1. 返回主菜單 n2. 繼續(xù)查詢 "<<endl;cin>>choose;if(choose='1')Menu();else if(choose='
39、2')Search();void Function:Show() char choose;Student *temp;system("cls");temp=Student_First->Next;if(!temp) cout<<" 文件無數(shù)據(jù) nn "<<endl;cout<<"1. 返回主菜單 "<<endl;cin>>choose;while(choose!='1') cout<<"1. 返回主菜單 "<
40、<endl;Menu();else cout<<" 姓名 t 學(xué)號(hào) t 語文成績 t 數(shù)學(xué)成績 t 英語成績 n"while(temp!=NULL) temp->Out();temp=temp->Next;cout<<"1. 返回主菜單 "<<endl;cin>>choose;while(choose!='1') cout<<"1. 返回主菜單 "<<endl;cin>>choose;Menu();void Funct
41、ion:Menu() time_t t;time(&t);char choose;system("cls");cout<<"版權(quán)所有:李卉"<<endl;cout<<endl;cout<<"* *"<<endl;cout<<"平頂山學(xué)院歡迎你"<<endl<<endl;cout<<"學(xué)生成績信息管理系統(tǒng)"<<endl<<endl;cout<<&q
42、uot;顯示系統(tǒng)時(shí)間和日期 : "<<ctime(&t)<<endl;cout<<"*"<<endl<<endl;cout<<" 請(qǐng)選擇您需要的操作 , 選擇相關(guān)操作請(qǐng)輸入相對(duì)的括里的阿拉伯?dāng)?shù)字 !"<<endl;cout<<"n"cout<<"錄入學(xué)生成績信息 :n"<<endl;cout<<"查詢學(xué)生成績信息 :n"<<endl;c
43、out<<"刪除學(xué)生成績信息 :n"<<endl;cout<<"修改學(xué)生成績信息 :n"<<endl;cout<<"顯示全部學(xué)生成績信息 :n"<<endl;cout<<"6退出系統(tǒng) "<<endl;cout<<"n"cin>>choose;switch(choose) case '1': Add();break;case '2': Search
44、();break;case '3': Delete();break;case '4': Modify();break;case '5': Show();break;case '6': exit(1);break;default: cout<<" 請(qǐng)按規(guī)定輸入選擇項(xiàng) !"<<endl;Menu();void main()int dele_elem2(sqlist &sl,char *num,student &elem);/順序表 Function function;/定義功
45、能接口function.Menu();/調(diào)用主菜單附錄 2:鏈表結(jié)構(gòu)化設(shè)計(jì)源程序清單確定分配空間大小#define LIST_INIT_SIZE 10 / #include <string.h>#include <malloc.h>#include <stdlib.h>typedef struct student / 學(xué)生信息結(jié)構(gòu)體類型char No100;char name7;float score;typedef struct /定義順序類型 sqliststudent *stu; /指向數(shù)據(jù)元素的基地址int length; /線性表的當(dāng)前長度int
46、listsize;sqlist;順序表初始化/ 下面是函數(shù)的原型聲明int Initlist(sqlist &sl); /int creat(sqlist &sl);/順序表的建立int insertlist(sqlist &sl,student elem,int pos);/順序表的插入操作int search(sqlist sl,int pos);/按指定位置刪除int dele_elem1(sqlist &sl,int pos,student &elem);/順序表的按位置刪除操作的按學(xué)號(hào)刪除int out_list(sqlist sl);/順序表
47、的輸出操作/ 主函數(shù) /void main() cout<<"nn歡迎使用學(xué)生信息查詢系統(tǒng),請(qǐng)按提示使用!nnn"sqlist sl;Initlist(sl);student s;char number9;int pos; while(1)cout<<" n以下程序是使用順序表實(shí)現(xiàn)的: n"cout<<" n 0126程正爐請(qǐng)您選擇您要執(zhí)行的操作: n"cout<<endl<<endl;cout<<" 1、清空順序表 2 、創(chuàng)建順序表 3 、插入信息 4
48、 、刪除信息5、查找信息6、顯示當(dāng)前信息 0、退出系統(tǒng)'n"cout<<" n請(qǐng)從序號(hào) 0-6中選擇 , 繼續(xù)你所需要的工作 "int n;char c;cin>>n;if(n=0)/ 退出cout<<"n謝謝您的使用 , 該系統(tǒng)是 11電商一班的程正爐設(shè)計(jì),多謝你的使用!n"cout<<" 輸入插入學(xué)生信息: n"break;else if(n=1)/清空n 表示你要退cout<<" 此操作將清空順序表,您是否繼續(xù)?輸入 出,輸入其他任意鍵繼續(xù)你
49、需要的工作 n"cin>>c;if(c=n) break;else Initlist(sl);cout<<"順序表已清空! 您可以繼續(xù)其他操作 !nn"n 表示你要else if(n=2)/ 創(chuàng)建cout<<"n 此操作將創(chuàng)建順序表,您是否繼續(xù)?輸入 退出,輸入其他任意鍵繼續(xù)你需要的工作 n"cin>>c;if(c=n) break;else creat(sl); else if(n=3)/插入cout<<" 請(qǐng)輸入學(xué)生學(xué)號(hào) :"cin>>s.No;co
50、ut<<" 請(qǐng)輸入學(xué)生姓名 :"cin>>;cout<<" 請(qǐng)輸入學(xué)生成績 :"cin>>s.score;insertlist(sl,s,pos);else if(n=4)/ 刪除功能int m;cout<<" 輸入您要?jiǎng)h除的學(xué)生學(xué)號(hào).H.cout<<"1 、我想按輸入特定位置刪除n"cout<<"2 、我想按輸入學(xué)生學(xué)號(hào)刪除n"cout<<" 請(qǐng)您選擇: " cin>&g
51、t;m;cout<<endl;if(m=1)dele_elem1(sl,pos,s);else if(m=2)cin>>number;dele_elem2(sl,number,s);cout<<endl; else if(n=5)int num;cout<<" 請(qǐng)輸入您要查找的學(xué)生學(xué)號(hào).H.cout<<" 分配失敗! n"cin>>num;search(sl,num);else if(n=6)/顯示out_list(sl);else if(n!=0|n!=1|n!=2|n!=3|n!=4|n!
52、=5|n!=6) cout<<" 您的輸入有誤,請(qǐng)重新輸入 !n"/while / 函數(shù)定義 / int Initlist(sqlist &sl)sl.stu=(student*)malloc(LIST_INIT_SIZE*sizeof(student);if(!sl.stu) return 0;sl.length=0;sl.listsize=LIST_INIT_SIZE;return 1;/ 創(chuàng)建操作 / int creat(sqlist &sl)cout<<" 下面創(chuàng)建學(xué)生信息查詢系統(tǒng),請(qǐng)按提示輸入數(shù)據(jù) :n"
53、sl.length=0; int m; /用于記數(shù)cout<<endl;cout<<" 您一共要建立多少名學(xué)生數(shù)據(jù) ?n"cin>>m;cout<<" 名 n" for(int i=1;i<=m;i+) cout<<" 請(qǐng)輸入第 "<<i<<" 名同學(xué)的學(xué)號(hào) :"cin>>sl.stui-1.No;cout<<endl;cout<<" 請(qǐng)輸入第 "<<i<
54、;<" 名同學(xué)的姓名 :"cin>> ;cout<<endl;cout<<" 請(qǐng)輸入第 "<<i<<" 名同學(xué)的成績 :"cin>>sl.stui-1.score ;sl.length+;cout<<"n 本次操作您一共輸入了 "<<m<<" 名數(shù)據(jù) n"return 1;/ 插入操作 / int insertlist(sqlist &sl,stu
55、dent elem,int pos)cout<<" 請(qǐng)輸入您要插入信息的位置 :n"cin>>pos;if(pos<1|pos>sl.length+1)cout<<" 您要插入的位置不存在,請(qǐng)檢查 !n"return 0;struct student *p;for(p=sl.stu;p<sl.stu+sl.length;p+)if(strcmp(p->No,elem.No )=0) cout<<"對(duì)不起!輸入的學(xué)號(hào)已存在,請(qǐng)輸入其它學(xué)號(hào) !n"cout<<"該學(xué)號(hào)在系統(tǒng)中代表的信息為cout<<"學(xué)號(hào) :"<<p->No<<endl;cout<<"姓名 :"<<p->name<<endl;cout<<"成績 :"<<p->score<<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國磁選除鐵器項(xiàng)目投資可行性研究報(bào)告
- 汽車點(diǎn)火鎖項(xiàng)目可行性研究報(bào)告評(píng)審方案設(shè)計(jì)2025年標(biāo)準(zhǔn)案例范文
- 舞臺(tái)租賃合同范本
- 道路亮化工程項(xiàng)目的可行性研究報(bào)告
- 鈴聲下載服務(wù)合同書
- 沙石購買合同范本
- 2025外聯(lián)部商家意向合同書
- 清遠(yuǎn)市富榮農(nóng)副產(chǎn)品批發(fā)市場-可行性研究報(bào)告52p
- 2025福建省商品房買賣合同(示范文本)
- 2025應(yīng)收賬款質(zhì)押合同的范本
- 充電樁項(xiàng)目運(yùn)營方案
- 退休人員出國探親申請(qǐng)書
- 傷殘撫恤管理辦法實(shí)施細(xì)則
- 高中物理競賽真題分類匯編 4 光學(xué) (學(xué)生版+解析版50題)
- 西方經(jīng)濟(jì)學(xué)-高鴻業(yè)-筆記
- 幼兒園美術(shù)教育研究策略國內(nèi)外
- 高中英語選擇性必修一單詞表
- 物業(yè)公司介紹
- 2024屆河南省五市高三第一次聯(lián)考英語試題及答案
- 【永輝超市公司員工招聘問題及優(yōu)化(12000字論文)】
- 孕婦學(xué)校品管圈課件
評(píng)論
0/150
提交評(píng)論