版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1系統(tǒng)概述1.1功能簡介本軟件是一個(gè)簡單的學(xué)校學(xué)生信息管理系統(tǒng),軟件窗口為DOS頁面。學(xué)生信息管理系統(tǒng)的功能主要是實(shí)現(xiàn)學(xué)校學(xué)生的信息化管理。通過學(xué)生信息管理系統(tǒng),教學(xué)管理人員可以實(shí)現(xiàn)對學(xué)生信息的增加、刪除、修改和查詢等操作。本系統(tǒng)最大的優(yōu)點(diǎn)就是操作簡便快捷等。1.2設(shè)計(jì)思路將學(xué)生信息定義為一個(gè)student類,在類中包含私有數(shù)據(jù)成員char stuNo10; /學(xué)號char name20; /姓名int age; /年齡float Math; /數(shù)學(xué)float English; /英語float Physics; /物理float total; /總成績?nèi)缓蠖x了一個(gè)( ) 菜單函數(shù),使功能菜
2、單顯示在運(yùn)行窗口以提示用戶如何進(jìn)行操作。主函數(shù)是一個(gè)程序必不可少的,在主函數(shù)中,使用一個(gè)switch語句來選擇調(diào)用主菜單中的各個(gè)功能函數(shù)。1.3 結(jié)構(gòu)圖 主菜單查看某個(gè)學(xué)生成績查看成績單修改學(xué)生成績登記學(xué)生成績查找學(xué)生信息瀏覽學(xué)生信息刪除學(xué)生信息修改學(xué)生信息創(chuàng)建或錄入學(xué)生信息2系統(tǒng)功能的分析和設(shè)計(jì)2.1初始錄入功能此函數(shù)實(shí)現(xiàn)的功能主要是,對學(xué)生信息的初始化錄入功能,在初始時(shí),文件中沒有任何數(shù)據(jù),可以通過此函數(shù)輸入任意個(gè)學(xué)生的信息,輸入信息之前需先輸入學(xué)生的個(gè)數(shù)在此函數(shù)中使用文件處理的方式,先建立一個(gè)文件輸出流對象,以寫的方式打開stu.txt文件,使輸入的學(xué)生信息都寫入文件。2.2添加函數(shù)此函
3、數(shù)實(shí)現(xiàn)的功能主要是,添加學(xué)生的信息,調(diào)用一次這個(gè)函數(shù)可以選擇添若干個(gè)學(xué)生的信息。在此函數(shù)中也使用文件處理的方式,但使用的是以追加的方式打開文件,使輸入的學(xué)生信息寫在文件里原有信息的后面。2.3刪除函數(shù) 此函數(shù)實(shí)現(xiàn)的功能主要是,刪除一個(gè)學(xué)生的信息。在此函數(shù)中,先以讀的方式打開文件,讀出文件里的信息在顯示在屏幕上,用戶再根據(jù)提示信息輸入想要?jiǎng)h除第幾個(gè)人的信息,關(guān)閉文件。再以寫的方式打開文件,以一個(gè)if條件語句控制,再重新將學(xué)生信息寫入文件(除了打算刪除的那個(gè)學(xué)生的信息),由于是以寫的方式打開的文件,所以文件里原有的輸入就都沒有了,存入的新的數(shù)據(jù)。2.4修改函數(shù) 此函數(shù)實(shí)現(xiàn)的功能主要是,修改一個(gè)學(xué)生
4、的信息。此函數(shù)的設(shè)計(jì)方法和刪除函數(shù)的設(shè)計(jì)思想相類似,應(yīng)用的思想都是將學(xué)生信息重新寫入文件的方法,將原有數(shù)據(jù)覆蓋。2.5查詢函數(shù) 在查詢功能中,可以按多條件查詢,本系統(tǒng)分為兩個(gè)查詢條件,即按學(xué)號查詢和按姓名查詢。使用if語句來選擇查詢條件。 2.5.1按學(xué)號查詢 根據(jù)提示信息輸入學(xué)號后,然后使用一個(gè)for循環(huán)語句,從第一個(gè)學(xué)生開始檢索,如果該學(xué)生的學(xué)號和輸入的學(xué)號相等,則輸出該學(xué)生的信息,由于學(xué)生的學(xué)號是唯一固定的,所以并使用break語句跳出循環(huán)。 當(dāng)無查詢結(jié)果時(shí),會(huì)輸出一條提示信息“無此人信息!” 。 2.5.2按姓名查詢 根據(jù)提示信息輸入姓名后,然后使用一個(gè)for循環(huán)語句,從第一個(gè)學(xué)生開始
5、檢索,如果該學(xué)生的姓名和輸入的姓名一樣,則輸出該學(xué)生的信息,由于學(xué)生的姓名有可能重復(fù)出現(xiàn),所以不能使用break語句跳出循環(huán),應(yīng)該從第一個(gè)學(xué)生開始檢索直到最后一名學(xué)生。 當(dāng)無查詢結(jié)果時(shí),會(huì)輸出一條提示信息“無此人信息!” 。2.6顯示函數(shù) 此函數(shù)實(shí)現(xiàn)的功能主要是,顯示所有學(xué)生的信息。先是從文件中讀取學(xué)生信息,然后在輸出到顯示窗口中。用一個(gè)for循環(huán)語句,來把所有學(xué)生的信息都輸出。2.7退出系統(tǒng) 當(dāng)輸入“0”時(shí),就能退出系統(tǒng),這是通過while語句來控制實(shí)現(xiàn)的。3調(diào)試及運(yùn)行結(jié)果3.1 主菜單3.2創(chuàng)建或錄入學(xué)生信息3.3修改學(xué)生信息3.4刪除學(xué)生信息3.5瀏覽學(xué)生信息3.6查找學(xué)生信息3.7登記
6、成績3.8修改成績3.9查看成績單3.10查看某個(gè)學(xué)生成績總結(jié)4.1遇到的問題及解決方法 首先,是對文件的處理不夠熟練,通過看書和搜集一些資料解決了這個(gè)問題;其次,是在編寫程序的過程中出現(xiàn)了一些語法錯(cuò)誤,后通過調(diào)試逐一解決。4.2收獲和體會(huì)此次c+面向?qū)ο笳n程設(shè)計(jì),在指導(dǎo)教師的精心教導(dǎo)下,我們學(xué)會(huì)了如何用C+編寫一個(gè)簡單的應(yīng)用程序。首先要對程序的設(shè)計(jì)要求有一個(gè)比較明確的認(rèn)識,然后系統(tǒng)分析與系統(tǒng)設(shè)計(jì),最后是代碼設(shè)計(jì)與調(diào)試。程序?qū)崿F(xiàn)上,設(shè)計(jì)了簡單的菜單界面,將各個(gè)功能集中出現(xiàn)在主菜單中,便于調(diào)用。根據(jù)C+課程所學(xué)的概念、理論和方法,按照C+程序設(shè)計(jì)的基本步驟,設(shè)計(jì)出一個(gè)適當(dāng)規(guī)模的程序;進(jìn)一步加深對
7、C+語言的理解和掌握。理論聯(lián)系實(shí)際,加深和鞏固所學(xué)的理論知識,提高實(shí)踐能力和計(jì)算機(jī)的綜合運(yùn)用能力。我們編寫程序的過程是辛苦與快樂的,程序的編寫原則很重要,只要我們在編程,就必須不斷改進(jìn),才能更好提高編程能力。參考文獻(xiàn) 1元芳,王亮編著c+程序設(shè)計(jì),北京,清華大學(xué)出版社,2013年。附錄#includeiostream#includeiomanip/它是I/O流控制頭文#includestdio.h#includestdlib.h/包含了C語言的一些函數(shù)#includestring.h# define SPACE using namespace std;struct studentRecord
8、char stuNo20; /學(xué)號 char name20; /姓名 int age; /年齡 float Math; /數(shù)學(xué) float English; /英語 float Physics; /物理 float total; /總成績*p;void shujucharu ();/數(shù)據(jù)插入void shujuxiugai ();/數(shù)據(jù)修改void shujushanchu ();/數(shù)據(jù)刪除void shujuliulan ();/數(shù)據(jù)瀏覽(按學(xué)號排序)void chengjidengji ();/學(xué)生成績登記void chengjixiugai ();/學(xué)生成績修改void viewTabl
9、e ();/學(xué)生成績查看(按成績排名)void inquiry ();/成績查詢void write ();/文件寫入void read ();/文件讀取int line ();/文件中記錄學(xué)生的數(shù)目int i,n;bool y;void main()int a,b;coutSPACE-歡迎登陸學(xué)生成績管理系統(tǒng)-endlendlendl;cout請選擇功能模塊:endl;coutendl;cout=endl;coutendl; coutSPACE 1 創(chuàng)建或錄入學(xué)生信息 endl;coutSPACE 2 修改學(xué)生信 息 endl;coutSPACE 3 刪除學(xué)生信 息 endl;coutSPA
10、CE 4 瀏覽學(xué)生信 息 endl;coutSPACE 5 查找學(xué)生信 息 endl;coutSPACE 6 登 記 成 績 endl;coutSPACE 7 修 改 成 績 endl;coutSPACE 8 查 看成 績 單 endl; coutSPACE 9 查看某個(gè)學(xué)生成績 endl; coutSPACE 0 退出 endl;cout-endl;couta;system(cls);if(a=1|a=0) y=1; if(y=0) cout請先錄入學(xué)生信息,才能進(jìn)行下面的操作!endl;a=1;y=1;while(a)switch(a)case 1: shujucharu(); break
11、; case 2: shujuxiugai (); break; case 3: shujushanchu (); break; case 4: cout=endl;coutendl;coutSPACE 1、按學(xué)號排序?yàn)g覽 endl;coutSPACE 2、按成績排序?yàn)g覽 endl;coutSPACE 3、退出 endl;cout-b;system(cls);while(b!=3)switch(b)case 1: shujuliulan(); break;case 2: viewTable(); break;default: cout請輸入1-3之內(nèi)的數(shù)!endl;coutendlendl按任
12、意數(shù)字鍵返回瀏覽界面.k;system(cls);cout=endl;coutendl;coutSPACE 1、按學(xué)號排序?yàn)g覽 endl;coutSPACE 2、按成績排序?yàn)g覽 endl;coutSPACE 3、退出 endl;cout-b;system(cls);break;case 5: inquiry (); break; case 6: chengjidengji(); break;case 7: chengjixiugai (); break; case 8:cout=endl;coutendl;coutSPACE 1、按學(xué)號排序?yàn)g覽 endl;coutSPACE 2、按成績排序?yàn)g覽
13、 endl;coutSPACE 3、退出 endl;cout-b;system(cls);while(b!=3)switch(b)case 1: shujuliulan(); break;case 2: viewTable(); break;default: cout請輸入1-3之內(nèi)的數(shù)!endl;coutendlendl按任意數(shù)字鍵返回瀏覽界面.k;system(cls);cout=endl;coutendl;coutSPACE 1、按學(xué)號排序?yàn)g覽 endl;coutSPACE 2、按成績排序?yàn)g覽 endl;coutSPACE 3、退出 endl;cout-b;system(cls);bre
14、ak;case 9: inquiry (); break;default: cout輸入無效,請輸入0-9之內(nèi)的數(shù)!endl;coutendlendl按任意數(shù)字鍵返回菜單界面.k;system(cls);cout=endl;coutendl; coutSPACE 1 創(chuàng)建或錄入學(xué)生信息 endl;coutSPACE 2 修改學(xué)生信 息 endl;coutSPACE 3 刪除學(xué)生信 息 endl;coutSPACE 4 瀏覽學(xué)生信 息 endl;coutSPACE 5 查找學(xué)生信 息 endl;coutSPACE 6 登 記 成 績 endl;coutSPACE 7 修 改 成 績 endl;c
15、outSPACE 8 查 看成 績 單 endl; coutSPACE 9 查看某個(gè)學(xué)生成績 endl; coutSPACE 0 退出 endl;cout-endl;couta;system(cls);/1.文件寫入void write ()FILE * fp;if(fp=fopen(stu.txt,w)!=NULL) for(i=0;in;i+)fprintf(fp,%s %s %d %f %f %f %fn,pi.stuNo,,pi.age,pi.Math,pi.English,pi.Physics,pi.total);fclose(fp);elseprintf(文件打開或創(chuàng)
16、建發(fā)生錯(cuò)誤。n);/2.文件讀取void read ()FILE * fp;if(fp=fopen(stu.txt,r)!=NULL)n=line();p=new struct studentRecord n;for(i=0;in;i+)fscanf(fp,%s %s %d %f %f %f %f,pi.stuNo,,&pi.age,&pi.Math,&pi.English,&pi.Physics,&pi.total);fclose(fp);elsecout文件打開或創(chuàng)建發(fā)生錯(cuò)誤!endl;/3.文件中記錄學(xué)生的數(shù)目int line ()char c; int h=0;FILE
17、* fp; if(fp=fopen(stu.txt,r)!=NULL) while(c=fgetc(fp)!=EOF)if(c=n)h+;fclose(fp);elsecout文件打開或創(chuàng)建發(fā)生錯(cuò)誤n;return h;/4.成績查詢void inquiry ()read();char b20;int m;cout請選擇查詢方式endl;coutSPACE1.學(xué)號查詢endl;coutSPACE2.姓名查詢m;if(m=1|m=2)if(m=1)coutb;system(cls);for(i=0;in;i+)if(strcmp(pi.stuNo,b)=0) coutendl 學(xué)號:pi.stu
18、Non 姓名:n 年齡:pi.agen 數(shù)學(xué):pi.Mathn 英語:pi.Englishn 物理:pi.Physicsn 總分:pi.totalendl;break;if(m=2)coutendlSPACEb;system(cls);for(i=0;in;i+) if(strcmp(,b)=0)coutendl 學(xué)號:pi.stuNon 姓名:n 年齡:pi.agen 數(shù)學(xué):pi.Mathn 英語:pi.Englishn 物理:pi.Physicsn 總分:pi.totalendl;elsecout輸入錯(cuò)誤,請輸入1或2endl;/5.數(shù)據(jù)插入voi
19、d shujucharu ()FILE * fp;if(fp=fopen(stu.txt,a+)!=NULL)/以追加方式打開stu.txt文檔int n;coutn;p=new struct studentRecord n;/建立新節(jié)點(diǎn)if(n=0)coutSPACE沒有進(jìn)行數(shù)據(jù)插入endl;for(int i=0;in;i+)cout請輸入插入的第i+1pi.stuNo; coutendlSPACE; coutendlSPACEpi.age; pi.Math=0;pi.English=0; pi.Physics=0; pi.total=0;for(i=0;in;i+) /輸出
20、fprintf(fp,%s %s %d %f %f %f %fn,pi.stuNo,,pi.age, pi.Math,pi.English,pi.Physics,pi.total);fclose(fp);delete p;/程序用delete 刪除數(shù)組并釋放內(nèi)存elseprintf(文件打開或創(chuàng)建時(shí)發(fā)生錯(cuò)誤.n);/6.數(shù)據(jù)修改void shujuxiugai ()read();shujuliulan();char b20;coutendlSPACEb;for(i=0;in;i+)if(strcmp(pi.stuNo,b)=0) / 判斷字符串b和字符串pi.stuNo是否相等c
21、out該學(xué)生原始信息如下:endl; coutendlpi.stuNot姓名:t數(shù)學(xué)成績:pi.Matht英語成績:pi.Englisht物理成績:pi.Physicst總分:pi.totalendl;coutendl請重新輸入該學(xué)生的信息:endl;coutendlSPACEpi.stuNo;coutendlSPACE;coutendlSPACEpi.age;cout修改成功!=n&(strcmp(pi.stuNo,b)!=0)coutendlSPACE該學(xué)號不存在!endl;coutendlSPACE請輸入需要修改信息學(xué)生的姓名進(jìn)行查找修改!endl; /按姓名
22、查找進(jìn)行修改coutendlSPACEb;for(i=0;in;i+)if(strcmp(,b)=0) coutendlSPACE該學(xué)生原始信息如下:endl; coutendlpi.stuNot姓名:t數(shù)學(xué)成績:pi.Matht英語成績:pi.Englisht物理成績:pi.Physicst總分:pi.totalendl;coutendl請重新輸入該學(xué)生的信息:endl;coutendl pi.stuNo; coutendlSPACE; coutendlSPACEpi.age; coutendlSPACEpi.Math; coutendlSPACEp
23、i.English; coutendlSPACEpi.Physics; pi.total=pi.Math+pi.English+pi.Physics;cout修改成功!=n&(strcmp(pi.stuNo,b)!=0)coutendlSPACE該學(xué)生姓名不存在!endl;write();/7.按學(xué)號排序進(jìn)行數(shù)據(jù)瀏覽void shujuliulan()read ();for(i=0;in-1;i+) int k=i;for(int j=i+1;j0)k=j;struct studentRecord t;t=pi;pi=pk;pk=t; coutsetw(20)學(xué)號setw(20)姓名setw(
24、6)年齡setw(6)數(shù)學(xué)setw(6)英語setw(6)物理setw(8)總分endl;for(i=0;in;i+)coutsetw(15)pi.stuNosetw(18)setw(6)pi.agesetw(6)pi.Math setw(6)pi.Englishsetw(6)pi.Physicssetw(8)pi.totalendl;if(i+1)%10=0)coutendlSPACE按任意數(shù)字鍵繼續(xù)顯示下一屏.endly;system(cls);/8.學(xué)生成績登記void chengjidengji () read();for(i=0;in;i+)coutendlendlpi
25、.stuNotsetw(20)tpi.Math; coutendlttttpi.English; coutendlttttpi.Physics; pi.total=pi.Math+pi.English+pi.Physics;if(i+1)%3=0)system(cls);if(i+1)%5=0)coutendl是否停止輸入Y/Nc; if(c=Y|c=y) break; if (c=N|c=n) ;write(); /9.成績修改void chengjixiugai() read();shujuliulan();char b20;coutendlb;for(i=0;in;i+)if(strcmp(pi.stuNo,b)=0)cout該學(xué)生的原有成績?nèi)缦?endlendl;coutendlpi.stuNt數(shù)學(xué)成績:pi.Matht英語成績:pi.Englisht物理成績:pi.Physicsendl;coutendlpi.Math; coutendl pi.English; coutendl pi.Physics; pi.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省勞動(dòng)協(xié)議樣式
- 2024版數(shù)據(jù)采集服務(wù)合同范本
- 購銷合同范本匯編
- 證券交易委托協(xié)議書范例
- 土地轉(zhuǎn)讓合同協(xié)議書示范文本
- 供貨合同補(bǔ)充協(xié)議案例
- 賓館轉(zhuǎn)讓協(xié)議范本
- 招投標(biāo)項(xiàng)目合作合同
- 上海市超市熟食產(chǎn)品流通安全協(xié)議
- 集團(tuán)短信服務(wù)合同樣本
- 2024年ACOG-《第一產(chǎn)程及第二產(chǎn)程管理》指南要點(diǎn)
- GB/T 43747-2024密封膠粘接性的評價(jià)膠條剝離法
- 建筑工程技術(shù)專業(yè)《裝配式建筑》課程標(biāo)準(zhǔn)
- 火車站物流園區(qū)建設(shè)項(xiàng)目物有所值評價(jià)報(bào)告
- 《養(yǎng)老護(hù)理員》-課件為老年人布置睡眠環(huán)境
- 職業(yè)生涯規(guī)劃醫(yī)學(xué)生
- 醫(yī)學(xué)課件指骨骨折
- 拜占庭歷史與文化智慧樹知到期末考試答案2024年
- 反應(yīng)釜驗(yàn)證方案樣本
- S2-旋挖樁機(jī)安裝拆卸專項(xiàng)方案
- 普通高中物理課程標(biāo)準(zhǔn)解讀
評論
0/150
提交評論