版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)生成績(jī)信息管理系統(tǒng)1引言...............................................11.1設(shè)計(jì)目的與要求..................................11.2設(shè)計(jì)內(nèi)容.........................................12系統(tǒng)需求與功能分析...................................12.1系統(tǒng)需求分析....................................22.2系統(tǒng)功能分析.....................................23總體結(jié)構(gòu)設(shè)計(jì).........................................33.1系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)...................................33.2系統(tǒng)管理流程圖...................................34系統(tǒng)詳細(xì)設(shè)計(jì)和系統(tǒng)實(shí)現(xiàn)...............................45系統(tǒng)測(cè)試...........................................106結(jié)束語(yǔ).............................................15參考文獻(xiàn).............................................15附錄1:鏈表結(jié)構(gòu)化設(shè)計(jì)源程序清單.....................16附錄2:順序表結(jié)構(gòu)化設(shè)計(jì)源程序清單...........................................261引 言1.1 設(shè)計(jì)目的與要求該學(xué)生信息管理系統(tǒng)采用 C++語(yǔ)言開(kāi)發(fā)研制,針對(duì)學(xué)生成績(jī)及其數(shù)據(jù)特點(diǎn),可以全面實(shí)現(xiàn)對(duì)學(xué)生成績(jī)的插入、查詢、修改、刪除和輸出等功能的計(jì)算機(jī)管理。它能使學(xué)生信息數(shù)據(jù)的工作人員從繁重的工作中解脫出來(lái),大大減輕了工作量,減少人為的工作失誤,全面提高學(xué)生信息管理的效率,從而使學(xué)校對(duì)于學(xué)生成績(jī)的管理水平和技術(shù)水平躍上一個(gè)新的臺(tái)階。程序要添加適當(dāng)?shù)淖⑨?,程序的?shū)寫(xiě)要采用縮進(jìn)格式。程序要具在一定的健壯性,即當(dāng)輸入數(shù)據(jù)非法時(shí),程序也能適當(dāng)?shù)刈龀龇磻?yīng),如插入刪除時(shí)指定的位置不對(duì)等等。程序要做到界面友好,在程序運(yùn)行時(shí)用戶可以根據(jù)相應(yīng)的提示信息進(jìn)行操作。根據(jù)實(shí)驗(yàn)報(bào)告模板詳細(xì)書(shū)寫(xiě)實(shí)驗(yàn)報(bào)告,在實(shí)驗(yàn)報(bào)告中給出鏈表根據(jù)姓名進(jìn)行查找的算法和插入算法的流程圖。1.2設(shè)計(jì)內(nèi)容定義一個(gè)包含學(xué)生信息(學(xué)號(hào),姓名,成績(jī))的的順序表和鏈表,使其具有如下功能:根據(jù)指定學(xué)生個(gè)數(shù),逐個(gè)輸入學(xué)生信息;逐個(gè)顯示學(xué)生表中所有學(xué)生的相關(guān)信息;根據(jù)姓名進(jìn)行查找,返回此學(xué)生的學(xué)號(hào)和成績(jī);根據(jù)指定的位置可返回相應(yīng)的學(xué)生信息(學(xué)號(hào),姓名,成績(jī));給定一個(gè)學(xué)生信息,插入到表中指定的位置;刪除指定位置的學(xué)生記錄;統(tǒng)計(jì)表中學(xué)生個(gè)數(shù)。系統(tǒng)需求與功能分析2.1 系統(tǒng)需求分析能完成學(xué)生信息的插入、查詢、修改、刪除、輸出等功能;采用單鏈表與順序表存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn);所有數(shù)據(jù)以外部文件方式保存。2.2系統(tǒng)功能分析要設(shè)計(jì)一個(gè)學(xué)生成績(jī)管理系統(tǒng),其功能包括:①插入函數(shù)Add():將學(xué)生成績(jī)信息插入到鏈表中;②查詢函數(shù)Search():分別可以按學(xué)號(hào)和按姓名進(jìn)行學(xué)生成績(jī)查詢;③刪除函數(shù) Delete() :當(dāng)需要?jiǎng)h除的學(xué)號(hào)和姓名一致時(shí)則刪除對(duì)應(yīng)的學(xué)生記錄;④修改函數(shù) Modify() :修改指定的學(xué)生成績(jī)信息;⑤輸出函數(shù) Show():輸出全部學(xué)生成績(jī)信息;⑥菜單函數(shù) Menu():為程序的菜單函數(shù)為實(shí)現(xiàn)各種功能提供便捷;⑦讀取數(shù)據(jù)函數(shù) Read():從外部文件讀取學(xué)生成績(jī)信息;⑧保存數(shù)據(jù)函數(shù) Save():將數(shù)據(jù)保存到外部文件中??傮w結(jié)構(gòu)設(shè)計(jì)3.1系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)通過(guò)對(duì)學(xué)生信息管理系統(tǒng)的功能分析,可以定義出系統(tǒng)的總體結(jié)構(gòu)模塊圖,如圖3.1所示。學(xué)生成績(jī)管理系統(tǒng)學(xué)學(xué)學(xué)學(xué)學(xué)學(xué)學(xué)生生生生生生生信信信信信信信息息息息息息息插查刪修輸讀保入詢除改出取存圖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)行時(shí)刻的動(dòng)態(tài)模型應(yīng)該由系統(tǒng)的流程決定。當(dāng)用戶運(yùn)行該系統(tǒng)后可以來(lái)進(jìn)行學(xué)生信息插入管理、學(xué)生信息查詢管理、學(xué)生信息刪除管理、學(xué)生信息修改管理及學(xué)生信息輸出等操作,具體的流程如圖3.2所示。查詢修改進(jìn)入系統(tǒng) 數(shù)據(jù)讀入刪除輸出圖3.2系統(tǒng)流程圖
不保存YN數(shù)據(jù)保存 退出系統(tǒng)主模塊應(yīng)負(fù)責(zé)應(yīng)用程序的主界面,由它調(diào)用其他模塊.因此主模塊應(yīng)具有操作性好、界面清晰的特點(diǎn),使用戶能夠很方便地找到所需功能。根據(jù)功能需求的結(jié)果分析,主界面應(yīng)該由學(xué)生信息插入管理,學(xué)生信息查詢管理、學(xué)生信息修改管理、學(xué)生信息刪除管理和學(xué)生信息輸出管理組成,可以通過(guò)輸入相應(yīng)的數(shù)字進(jìn)入相應(yīng)的功能模塊。鏈表學(xué)生信息管理系統(tǒng)詳細(xì)設(shè)計(jì)和系統(tǒng)實(shí)現(xiàn)系統(tǒng)總體設(shè)計(jì)完成后,就可以根據(jù)需求對(duì)各個(gè)模塊來(lái)進(jìn)行實(shí)現(xiàn)了。在本系統(tǒng)中需要編碼實(shí)現(xiàn)的主要有學(xué)生信息插入、學(xué)生信息查詢、學(xué)生信息修改、學(xué)生信息刪除和學(xué)生信息輸出等 5個(gè)模塊。學(xué)生信息插入模塊添加的信息包括學(xué)號(hào) (不允許重復(fù))、姓名(不允許重復(fù))、分?jǐn)?shù)。流程圖如下圖 4.1所示。開(kāi)始插入數(shù)據(jù)輸入學(xué)生信息調(diào)用類成員函數(shù)采用單鏈表保存數(shù)據(jù)結(jié)束圖4.1插入模塊流程圖本程序采用的是尾插法,就是每次將新申請(qǐng)的結(jié)點(diǎn)插在終端結(jié)點(diǎn)的后面,其執(zhí)行過(guò)程如圖 4.2所示。圖4.2尾插法建立單鏈表操作示意圖學(xué)生信息查詢模塊按姓名和學(xué)號(hào)查找學(xué)生信息的流程圖分別如下圖 4.3所示。按姓名查找開(kāi)始輸入要查找姓名判斷NY輸出該學(xué)生的信息 抱歉沒(méi)有該學(xué)生結(jié)束圖4.3按姓名查找學(xué)生信息流程圖在單鏈表中,即使知道被訪問(wèn)結(jié)點(diǎn)的位置 i,也不能像順序表那樣直接按序號(hào)訪問(wèn),而只能從頭指針出發(fā),設(shè)置一個(gè)工作指針
p,順
next
域逐個(gè)結(jié)點(diǎn)往下搜索。當(dāng)
p指向某個(gè)結(jié)點(diǎn)時(shí)判斷是否為第
i個(gè)結(jié)點(diǎn),若是則查找成功;否則,將工作指針
p后移,即將
p指向原來(lái)所指結(jié)點(diǎn)的后繼結(jié)點(diǎn)。
直到
p為
NULL時(shí)查找失敗。單鏈表查找過(guò)程如圖
4.4所示。圖4.4單鏈表查找過(guò)程的示意圖按學(xué)號(hào)查詢學(xué)生信息同按姓名查找學(xué)生信息,此處不再詳細(xì)列出。學(xué)生信息修改模塊首先要查找與要修改數(shù)據(jù)相匹配的信息,若沒(méi)有則返回失敗。否則把相應(yīng)的信息輸出, 然后再重新輸入新的數(shù)據(jù)并保存到單鏈表。學(xué)生信息刪除模塊當(dāng)選擇刪除功能時(shí),首先輸入要?jiǎng)h除的同學(xué)的姓名,然后輸入要?jiǎng)h除的同學(xué)的學(xué)號(hào),如果該同學(xué)存在并且姓名與學(xué)號(hào)匹配的上,則進(jìn)行刪除操作,否則返回失敗。其流程圖 4.5如下:開(kāi)始刪除操作輸入姓名輸入學(xué)號(hào)姓名學(xué)號(hào)一致YN執(zhí)行刪除功能返回主菜單圖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
從鏈上摘下來(lái),最后釋放結(jié)點(diǎn)
ai
的存儲(chǔ)空間,如圖
4.6所示。圖4.6在單鏈表中刪除結(jié)點(diǎn)指針的變化情況學(xué)生信息輸出模塊從單鏈表表頭遍歷整個(gè)單鏈表,將所有數(shù)據(jù)輸出。其部分代碼如下:voidFunction::Show(){charchoose;Student*temp;system("cls");temp=Student_First->Next;if(!temp){cout<<"文件無(wú)數(shù)據(jù)\n\n"<<endl;cout<<"1.返回主菜單"<<endl;cin>>choose;while(choose!='1'){ cout<<"1. 返回主菜單"<<endl;cin>>choose;}Menu();}else{ cout<<"姓名\t 學(xué)號(hào)\t 語(yǔ)文成績(jī)\t 數(shù)學(xué)成績(jī)\t 英語(yǔ)成績(jī)\n";while(temp!=NULL){temp->Out();temp=temp->Next;}}cout<<"1. 返回主菜單"<<endl;cin>>choose;while(choose!='1'){cout<<"1.返回主菜單"<<endl;cin>>choose;}Menu();}系統(tǒng)測(cè)試在完成了系統(tǒng)各方面的設(shè)計(jì)后,并不是可以運(yùn)行就完成的,為了保證系統(tǒng)性能的穩(wěn)定性跟安全性等,就要對(duì)系統(tǒng)做測(cè)試。測(cè)試環(huán)境如下:硬件:P4C2.4GHz,80GB硬盤(pán),512M內(nèi)存;軟件
:WindowsXPPersonal
SP2,分辨率
1024*768,MicrosoftVisualC++6.0
。1.這是鏈表的主界面這是順序表的主界面圖5.1運(yùn)行主界面我就以順序表為例介紹一下我的學(xué)生信息管理系統(tǒng)吧選擇1清空學(xué)生信息功能時(shí),如圖 5.2所示。圖5.2插入學(xué)生成績(jī)信息實(shí)現(xiàn)②返回主菜單后選擇 3插入學(xué)生成績(jī)信息, 4刪除學(xué)生信息,運(yùn)行結(jié)果按由姓名特定位置刪除和按學(xué)號(hào)刪除兩種分別如圖5.3和圖5.4所示。圖5.3按學(xué)生學(xué)號(hào)查找相關(guān)信息實(shí)現(xiàn)圖5.4按學(xué)號(hào)查找相關(guān)信息實(shí)現(xiàn)③當(dāng)在主菜單中選擇 4時(shí),則進(jìn)行刪除功能。其運(yùn)行結(jié)果如圖5.5所示。圖5.5刪除學(xué)生信息功能實(shí)現(xiàn)⑤當(dāng)在主菜單中選擇6時(shí),則進(jìn)行顯示當(dāng)前信息功能。其運(yùn)行結(jié)果如圖5.7所示。圖5.7輸出學(xué)生信息功能實(shí)現(xiàn)6結(jié)束語(yǔ)通過(guò)這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的實(shí)驗(yàn),在解決問(wèn)題的過(guò)程中,充分體會(huì)到了數(shù)據(jù)結(jié)構(gòu)這門(mén)課程對(duì)于軟件設(shè)計(jì)的重要性,也體會(huì)到了數(shù)據(jù)結(jié)構(gòu)+算法=程序這句話的真正含義,一個(gè)實(shí)際問(wèn)題的解決第一步就是要依賴于良好的抽象思維的,將實(shí)際問(wèn)題轉(zhuǎn)化為相應(yīng)的數(shù)據(jù)結(jié)構(gòu),只有這一步做好了,才能采取相應(yīng)的算法和優(yōu)化方法解決問(wèn)題和解決好問(wèn)題。參考文獻(xiàn)[1] 錢新賢,楊猛,程兆煒,張少東. VisualC++ 編程疑難詳解.北京:人民郵電出版社,2000[2] 王紅梅,胡明,王濤.?dāng)?shù)據(jù)結(jié)構(gòu) (C++)[M].北京:清華大學(xué)出版社,2007程學(xué)先.?dāng)?shù)據(jù)庫(kù)原理與技術(shù)[M].北京:中國(guó)水利水電出版社,2001[4]AlexKriegel&BorisM.Trukhnov .SQLBible[M] .北京:電子工業(yè)出版社, 2000[5] 鄭章,程剛,張勇. VisualC++6.0 數(shù)據(jù)開(kāi)發(fā)技術(shù)[M].北京:機(jī)械工業(yè)出版社, 1999.9[6] F.BrokkenandK.Kubat.C++Annotations
.Version
,ICCE,UniversityofGroningen ,Netherlands
,1990.250~280附錄1:鏈表結(jié)構(gòu)化設(shè)計(jì)源程序清單程序名稱:Student.CPP程序功能:采用鏈表與文件實(shí)現(xiàn)一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)。#include<iostream>#include<fstream>#include<cstring>#include<conio.h>#include<ctime>usingnamespacestd;structClass{ intChinese;intMath;intEnglish;};classStudent{public:Student();voidOfile(ofstream&of);voidInfile(ifstream&f);voidOut();voidSet(char*name,intno,Classscore);char*GetName();intGetNo();Student*Next;protected:charName[20];intNo;ClassScore;};Student::Student():Next(0){}char*Student::GetName(){returnName;}intStudent::GetNo(){returnNo;}voidStudent::Set(char*name,intno,Classscore){strcpy(Name,name);No=no;Score=score;}voidStudent::Infile(ifstream&f){f>>Name>>No>>Score.Chinese>>Score.Math>>Score.English;//將數(shù)據(jù)輸入到文件}voidStudent::Ofile(ofstream&of){
of<<"
"<<Name<<"
"<<No<<"
"<<Score.Chinese<<""<<Score.Math<<""<<Score.English;
//
從文件中提取數(shù)據(jù)}voidStudent::Out(){cout<<Name<<"\t"<<No<<"\t"<<Score.Chinese<<"\t\t"<<Score.Math<<"\t\t"<<Score.English<<"\t"<<endl;}classFunction // 功能類{public:Function(); // 構(gòu)造函數(shù)~Function(); // 析構(gòu)函數(shù)voidMenu(); // 菜單函數(shù)voidAdd(); // 錄入學(xué)生成績(jī)函數(shù)voidSearch(); // 查詢學(xué)生成績(jī)函數(shù)voidDelete();
//
刪除學(xué)生成績(jī)函數(shù)voidModify();
//
修改學(xué)生成績(jī)函數(shù)voidShow();
//
顯示學(xué)生成績(jī)函數(shù)private:Student*Student_First;voidRead();
//
讀取學(xué)生成績(jī)函數(shù)voidSave();
//
保存學(xué)生成績(jī)信息函數(shù)};Function::Function(){Student_First=newStudent;Read();}Function::~Function(){deleteStudent_First;}voidFunction::Add() // 錄入學(xué)生成績(jī)信息函數(shù){charname[20];intno;Classscore;charchoose;Student*f1,*p,*f2;system("cls");f1=Student_First;f2=Student_First->Next;while(f1->Next)f1=f1->Next;do{p=newStudent;cout<<"請(qǐng)輸入您要添加的學(xué)生成績(jī)信息:"<<endl;cout<<"請(qǐng)輸入學(xué)生姓名:";cin>>name;while(f2){if(strcmp(f2->GetName(),name)==0){cout<<"該學(xué)生已存在,請(qǐng)確定姓名!\n\n";cout<<"請(qǐng)輸入姓名:";cin>>name;break;}f2=f2->Next;}cout<<"請(qǐng)輸入學(xué)號(hào):";cin>>no;cout<<"請(qǐng)輸入語(yǔ)文成績(jī) :";cin>>score.Chinese;cout<<"請(qǐng)輸入數(shù)學(xué)成績(jī) :";cin>>score.Math;cout<<"請(qǐng)輸入英語(yǔ)成績(jī) :";cin>>score.English;p->Set(name,no,score);f1->Next=p;p->Next=NULL;f1=f1->Next;cout<<"是否繼續(xù)輸入信息 ?(Y\\N)"<<endl;cin>>choose;}while(choose=='y'||choose=='Y');Save();cout<<"1. 返回主菜單"<<endl;cin>>choose;while(choose!='1'){cout<<"1.返回主菜單"<<endl;cin>>choose;}Menu();}voidFunction::Delete()
//
刪除信息函數(shù){charname[20];intno;charchoose;Student*temp,*p;system("cls");p=temp=Student_First->Next;cout<<" 請(qǐng)輸入姓名:";cin>>name;cout<<"輸入學(xué)號(hào):";cin>>no;while(temp){if(strcmp(temp->GetName(),name)==0&&temp->GetNo()==no)判斷該學(xué)生信息是否存在{cout<<"姓名\t學(xué)號(hào)\t語(yǔ)文成績(jī)\t數(shù)學(xué)成績(jī)\t英語(yǔ)成績(jī)\n";temp->Out();cout<<"\n是否刪除(Y/N)";cin>>choose;if(choose=='y'||choose=='Y'){p->Next=temp->Next;deletetemp;cout<<"刪除成功:\n";}break;}p=temp;temp=temp->Next;}Save();cout<<"1. 返回主菜單\n2.繼續(xù)刪除"<<endl;cin>>choose;while(choose!='1'&&choose!='2'){cout<<"1.返回主菜單\n2.繼續(xù)刪除"<<endl;cin>>choose;}if(choose=='1')Menu();elseif(choose=='2')Delete();}voidFunction::Modify()
//
修改學(xué)生信息函數(shù){charchoose,name[20];Student*temp,*p;intno;Classscore;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 語(yǔ)文成績(jī)\t 數(shù)學(xué)成績(jī)\t 英語(yǔ)成績(jī)\n";temp->Out();cout<<" 請(qǐng)輸入姓名:";cin>>name;cout<<" 請(qǐng)輸入學(xué)號(hào):";cin>>no;cout<<"請(qǐng)輸入語(yǔ)文成績(jī) :";cin>>score.Chinese;cout<<"請(qǐng)輸入數(shù)學(xué)成績(jī) :";cin>>score.Math;cout<<"請(qǐng)輸入英語(yǔ)成績(jī) :";cin>>score.English;temp->Set(name,no,score);break;}temp=temp->Next;}Save();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();elseif(choose=='2')Modify();}voidFunction::Read() // 讀取信息函數(shù){Student*p,*p2;p=Student_First;longt;ifstreamis("Student.txt",ios::in);if(!is){ ofstreamos("Student.txt",ios::out);os.close();return;}while(!is.eof()){p2=newStudent;p2->Infile(is);p->Next=p2;p2->Next=NULL;p=p->Next;}}voidFunction::Save()
//
保存學(xué)生成績(jī)信息函數(shù){ofstreamof("Student.txt",ios::out);Student*p=Student_First->Next;while(p){p->Ofile(of);p=p->Next;}of.close();}voidFunction::Search(){intflag(0);charchoose;chart1[20];intt2;system("cls");Student*temp=Student_First->Next;do{cout<<"輸入查詢方式:\n1.按姓名查詢\n2.按學(xué)號(hào)查詢\n";cin>>choose;if(choose=='1'){cout<<"請(qǐng)輸入您要查詢的姓名:";cin>>t1;while(temp){if(strcmp(t1,temp->GetName())==0){flag=1;break;}temp=temp->Next;}if(flag==0)cout<<"\n無(wú)該學(xué)生的信息\n"<<endl;else{ cout<<"姓名\t 學(xué)號(hào)\t 語(yǔ)文成績(jī)\t 數(shù)學(xué)成績(jī)\t 英語(yǔ)成績(jī)\n";temp->Out();}break;}elseif(choose=='2'){cout<<"請(qǐng)輸入您要查詢的學(xué)號(hào)";cin>>t2;while(temp){if(t2==temp->GetNo()){flag=1;break;}temp=temp->Next;}if(flag==0)cout<<"\n無(wú)該學(xué)生的信息\n"<<endl;else{ cout<<"姓名\t 學(xué)號(hào)\t 語(yǔ)文成績(jī)\t 數(shù)學(xué)成績(jī)\t 英語(yǔ)成績(jī)\n";temp->Out();}break;}}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();elseif(choose=='2')Search();}voidFunction::Show(){charchoose;Student*temp;system("cls");temp=Student_First->Next;if(!temp){cout<<"文件無(wú)數(shù)據(jù)\n\n"<<endl;cout<<"1. 返回主菜單"<<endl;cin>>choose;while(choose!='1'){cout<<"1.返回主菜單"<<endl;cin>>choose;}Menu();}else{cout<<"姓名\t學(xué)號(hào)\t語(yǔ)文成績(jī)\t數(shù)學(xué)成績(jī)\t英語(yǔ)成績(jī)\n";while(temp!=NULL){temp->Out();temp=temp->Next;}}cout<<"1. 返回主菜單"<<endl;cin>>choose;while(choose!='1'){cout<<"1.返回主菜單"<<endl;cin>>choose;}Menu();}voidFunction::Menu(){ time_tt;time(&t);charchoose;system("cls");cout<<" ------------------------
版 權(quán) 所 有 : 李 卉-------------------------"<<endl;cout<<endl;cout<<"***********************************************************"<<endl;cout<<"
平頂山學(xué)院歡迎你"<<endl<<endl;cout<<"
學(xué)生成績(jī)信息管理系統(tǒng)"<<endl<<endl;cout<<"
顯示系統(tǒng)時(shí)間和日期
:
"<<ctime(&t)<<endl;cout<<"*********************************************************"<<endl<<endl;cout<<"請(qǐng)選擇您需要的操作 ,選擇相關(guān)操作請(qǐng)輸入相對(duì)的括號(hào)里的阿拉伯?dāng)?shù)字 !"<<endl;cout<<"\n";cout<<"1錄入學(xué)生成績(jī)信息:\n"<<endl;cout<<"2查詢學(xué)生成績(jī)信息:\n"<<endl;cout<<"3刪除學(xué)生成績(jī)信息:\n"<<endl;cout<<"4修改學(xué)生成績(jī)信息:\n"<<endl;cout<<"5顯示全部學(xué)生成績(jī)信息:\n"<<endl;cout<<"6退出系統(tǒng)"<<endl;cout<<"\n";cin>>choose;switch(choose){case'1':Add();break;case'2':Search();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();}}}voidmain(){ Functionfunction;
//
定義功能接口function.Menu();
//
調(diào)用主菜單}附錄2:鏈表結(jié)構(gòu)化設(shè)計(jì)源程序清單#defineLIST_INIT_SIZE10// 確定分配空間大小#include<string.h>#include<malloc.h>#include<iostream.h>#include<conio.h>//getch()#include<stdlib.h>typedefstructstudent{//學(xué)生信息結(jié)構(gòu)體類型charNo[100];charname[7];floatscore;};typedefstruct{//student*stu;intlength; //intlistsize;}sqlist;
//
定義順序類型 sqlist指向數(shù)據(jù)元素的基地址線性表的當(dāng)前長(zhǎng)度下面是函數(shù)的原型聲明intInitlist(sqlist&sl);//順序表初始化intcreat(sqlist&sl);//順序表的建立intinsertlist(sqlist&sl,studentelem,intpos);//順序表的插入操作intsearch(sqlistsl,intpos);//按指定位置刪除intdele_elem1(sqlist&sl,intpos,student&elem);//順序表的按位置刪除操作intdele_elem2(sqlist&sl,char*num,student&elem);//順序表的按學(xué)號(hào)刪除intout_list(sqlistsl);// 順序表的輸出操作//////// 主函數(shù)///////////voidmain(){cout<<"\n\n歡迎使用學(xué)生信息查詢系統(tǒng),請(qǐng)按提示使用!\n\n\n";sqlistsl;Initlist(sl);students;charnumber[9];intpos;while(1){cout<<"\ncout<<"\n 0126
以下程序是使用順序表實(shí)現(xiàn)的: \n";程正爐請(qǐng)您選擇您要執(zhí)行的操作:
\n";cout<<endl<<endl;cout<<"1、清空順序表2、創(chuàng)建順序表3、插入信息4、刪除信息5、查找信息6、顯示當(dāng)前信息0、退出系統(tǒng)`\n";cout<<" \n 請(qǐng)從序號(hào)0--6中選擇,繼續(xù)你所需要的工作 ";intn;charc;cin>>n;if(n==0)// 退出{cout<<"\n 謝謝您的使用,該系統(tǒng)是 11電商一班的程正爐設(shè)計(jì),多謝你的使用! \n";break;}elseif(n==1)//{
清空cout<<"
此操作將清空順序表,您是否繼續(xù)?輸入
n表示你要退出,輸入其他任意鍵繼續(xù)你需要的工作
\n";cin>>c;if(c==n) break;else {Initlist(sl);cout<<"他操作!\n\n";}}elseif(n==2)// 創(chuàng)建{
順序表已清空
!您可以繼續(xù)其cout<<"\n
此操作將創(chuàng)建順序表,您是否繼續(xù)?輸入
n表示你要退出,輸入其他任意鍵繼續(xù)你需要的工作 \n";cin>>c;if(c==n) break;elsecreat(sl);}elseif(n==3)// 插入{cout<<"輸入插入學(xué)生信息: \n";cout<<"請(qǐng)輸入學(xué)生學(xué)號(hào) :";cin>>s.No;cout<<"請(qǐng)輸入學(xué)生姓名 :";cin>>;cout<<"請(qǐng)輸入學(xué)生成績(jī) :";cin>>s.score;insertlist(sl,s,pos);}elseif(n==4)// 刪除功能{intm;cout<<"1、我想按輸入特定位置刪除 \n";cout<<"2、我想按輸入學(xué)生學(xué)號(hào)刪除 \n";cout<<"請(qǐng)您選擇:"; cin>>m;cout<<endl;if(m==1){dele_elem1(sl,pos,s);}elseif(m==2){cout<<"輸入您要?jiǎng)h除的學(xué)生學(xué)號(hào) :";cin>>number;dele_elem2(sl,number,s);cout<<endl; }}elseif(n==5){intnum;cout<<"請(qǐng)輸入您要查找的學(xué)生學(xué)號(hào) :";cin>>num;search(sl,num);}elseif(n==6)// 顯示out_list(sl);elseif(n!=0||n!=1||n!=2||n!=3||n!=4||n!=5||n!=6)cout<<"您的輸入有誤,請(qǐng)重新輸入 !\n";}//while}函數(shù)定義////////////////////////////intInitlist(sqlist&sl){ sl.stu =(student*)malloc(LIST_INIT_SIZE*sizeof(student));if(!sl.stu){return0;cout<<"分配失??!\n";}sl.length=0;sl.listsize=LIST_INIT_SIZE;return1;}創(chuàng)建操作/////intcreat(sqlist&sl){cout<<"下面創(chuàng)建學(xué)生信息查詢系統(tǒng),請(qǐng)按提示輸入數(shù)據(jù) :\n";sl.length=0; intm;// 用于記數(shù)cout<<"您一共要建立多少名學(xué)生數(shù)據(jù) ?\n";cin>>m;cout<<" 名\n"; for(inti=1;i<=m;i++){cout<<"請(qǐng)輸入第"<<i<<"名同學(xué)的學(xué)號(hào):";cin>>sl.stu[i-1].No;cout<<endl;cout<<"請(qǐng)輸入第"<<i<<"名同學(xué)的姓名:";cin>>sl.stu[i-1].name;cout<<endl;cout<<"請(qǐng)輸入第"<<i<<"名同學(xué)的成績(jī):";cin>>sl.stu[i-1].score;cout<<endl;sl.length++;}cout<<"\n 本次操作您一共輸入了 "<<m<<"名數(shù)據(jù)\n";return1;}////// 插入操作/////intinsertlist(sqlist&sl,studentelem,intpos){cout<<"請(qǐng)輸入您要插入信息的位置 :\n";cin>>pos;if(pos<1||pos>sl.length+1){cout<<"您要插入的位置不存在,請(qǐng)檢查!\n";return0;}structstudent*p;for(p=sl.stu;p<sl.stu+sl.length;p++)if(strcmp(p->No,elem.No)==0)它學(xué)號(hào)
{ cout<<" 對(duì)不起!輸入的學(xué)號(hào)已存在,請(qǐng)輸入其!\n";cout<<" 該學(xué)號(hào)在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度生態(tài)園區(qū)沉降監(jiān)測(cè)與可持續(xù)發(fā)展合同范本4篇
- 2025年度瓷磚品牌形象設(shè)計(jì)與廣告投放合同3篇
- 2024石料運(yùn)輸合同違約責(zé)任范本3篇
- 2025年度政府機(jī)構(gòu)公務(wù)出差協(xié)議書(shū)模板4篇
- 2025年度智慧家居SAAS解決方案銷售服務(wù)合同3篇
- 2024版?zhèn)€人之間借款合同書(shū)
- 2025年度幼兒園廚房設(shè)備租賃及運(yùn)營(yíng)管理合同4篇
- 2024門(mén)窗行業(yè)綠色認(rèn)證與環(huán)保評(píng)估合同3篇
- 2025年度智能設(shè)備品牌代理授權(quán)合同協(xié)議4篇
- 2025年度智能交通系統(tǒng)出資股東協(xié)議范本4篇
- HPV檢測(cè)目的及最佳檢測(cè)方法說(shuō)課材料
- 電機(jī)與拖動(dòng)(高職)全套教學(xué)課件
- 壓力管道安全泄壓
- 2023年合規(guī)部門(mén)工作總結(jié)
- 社區(qū)超市融資方案
- 廣東省珠海市香洲區(qū)2022-2023學(xué)年九年級(jí)上學(xué)期期末語(yǔ)文試題(含答案)
- 小兒急性呼吸衰竭護(hù)理查房課件
- 4.與食品經(jīng)營(yíng)相適應(yīng)的主要設(shè)備設(shè)施布局操作流程等文件
- 《施工組織設(shè)計(jì)編制指南》正文
- CKA題庫(kù)及報(bào)名流程
- (完整word)軟件驗(yàn)收單
評(píng)論
0/150
提交評(píng)論