c學生成績管理系統(tǒng)分析_第1頁
c學生成績管理系統(tǒng)分析_第2頁
c學生成績管理系統(tǒng)分析_第3頁
c學生成績管理系統(tǒng)分析_第4頁
c學生成績管理系統(tǒng)分析_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、河北大學2013級數(shù)電二班程序設計基礎課程設計報告1系統(tǒng)概述1.1功能簡介本軟件是一個簡單的學校學生信息管理系統(tǒng),軟件窗口為DOS頁面。學生信息管理系統(tǒng)的功能主要是實現(xiàn)學校學生的信息化管理。通過學生信息管理系統(tǒng),教學管理人員可以實現(xiàn)對學生信息的增加、刪除、修改和查詢等操作。本系統(tǒng)最大的優(yōu)點就是操作簡便快捷等。1.2設計思路將學生信息定義為一個student類,在類中包含私有數(shù)據成員char stuNo10; /學號char name20; /姓名int age; /年齡float Math; /數(shù)學float English; /英語float Physics; /物理float total;

2、 /總成績然后定義了一個( ) 菜單函數(shù),使功能菜單顯示在運行窗口以提示用戶如何進行操作。主函數(shù)是一個程序必不可少的,在主函數(shù)中,使用一個switch語句來選擇調用主菜單中的各個功能函數(shù)。1.3 結構圖 主菜單查看某個學生成績查看成績單修改學生成績登記學生成績查找學生信息瀏覽學生信息刪除學生信息修改學生信息創(chuàng)建或錄入學生信息2系統(tǒng)功能的分析和設計2.1初始錄入功能此函數(shù)實現(xiàn)的功能主要是,對學生信息的初始化錄入功能,在初始時,文件中沒有任何數(shù)據,可以通過此函數(shù)輸入任意個學生的信息,輸入信息之前需先輸入學生的個數(shù)在此函數(shù)中使用文件處理的方式,先建立一個文件輸出流對象,以寫的方式打開stu.txt文

3、件,使輸入的學生信息都寫入文件。2.2添加函數(shù)此函數(shù)實現(xiàn)的功能主要是,添加學生的信息,調用一次這個函數(shù)可以選擇添若干個學生的信息。在此函數(shù)中也使用文件處理的方式,但使用的是以追加的方式打開文件,使輸入的學生信息寫在文件里原有信息的后面。2.3刪除函數(shù) 此函數(shù)實現(xiàn)的功能主要是,刪除一個學生的信息。在此函數(shù)中,先以讀的方式打開文件,讀出文件里的信息在顯示在屏幕上,用戶再根據提示信息輸入想要刪除第幾個人的信息,關閉文件。再以寫的方式打開文件,以一個if條件語句控制,再重新將學生信息寫入文件(除了打算刪除的那個學生的信息),由于是以寫的方式打開的文件,所以文件里原有的輸入就都沒有了,存入的新的數(shù)據。2

4、.4修改函數(shù) 此函數(shù)實現(xiàn)的功能主要是,修改一個學生的信息。此函數(shù)的設計方法和刪除函數(shù)的設計思想相類似,應用的思想都是將學生信息重新寫入文件的方法,將原有數(shù)據覆蓋。2.5查詢函數(shù) 在查詢功能中,可以按多條件查詢,本系統(tǒng)分為兩個查詢條件,即按學號查詢和按姓名查詢。使用if語句來選擇查詢條件。 2.5.1按學號查詢 根據提示信息輸入學號后,然后使用一個for循環(huán)語句,從第一個學生開始檢索,如果該學生的學號和輸入的學號相等,則輸出該學生的信息,由于學生的學號是唯一固定的,所以并使用break語句跳出循環(huán)。 當無查詢結果時,會輸出一條提示信息“無此人信息!” 。 2.5.2按姓名查詢 根據提示信息輸入姓

5、名后,然后使用一個for循環(huán)語句,從第一個學生開始檢索,如果該學生的姓名和輸入的姓名一樣,則輸出該學生的信息,由于學生的姓名有可能重復出現(xiàn),所以不能使用break語句跳出循環(huán),應該從第一個學生開始檢索直到最后一名學生。 當無查詢結果時,會輸出一條提示信息“無此人信息!” 。2.6顯示函數(shù) 此函數(shù)實現(xiàn)的功能主要是,顯示所有學生的信息。先是從文件中讀取學生信息,然后在輸出到顯示窗口中。用一個for循環(huán)語句,來把所有學生的信息都輸出。2.7退出系統(tǒng) 當輸入“0”時,就能退出系統(tǒng),這是通過while語句來控制實現(xiàn)的。3調試及運行結果3.1 主菜單3.2創(chuàng)建或錄入學生信息3.3修改學生信息3.4刪除學生

6、信息3.5瀏覽學生信息3.6查找學生信息3.7登記成績3.8修改成績3.9查看成績單3.10查看某個學生成績總結4.1遇到的問題及解決方法 首先,是對文件的處理不夠熟練,通過看書和搜集一些資料解決了這個問題;其次,是在編寫程序的過程中出現(xiàn)了一些語法錯誤,后通過調試逐一解決。4.2收獲和體會此次c+面向對象課程設計,在指導教師的精心教導下,我們學會了如何用C+編寫一個簡單的應用程序。首先要對程序的設計要求有一個比較明確的認識,然后系統(tǒng)分析與系統(tǒng)設計,最后是代碼設計與調試。程序實現(xiàn)上,設計了簡單的菜單界面,將各個功能集中出現(xiàn)在主菜單中,便于調用。根據C+課程所學的概念、理論和方法,按照C+程序設計

7、的基本步驟,設計出一個適當規(guī)模的程序;進一步加深對C+語言的理解和掌握。理論聯(lián)系實際,加深和鞏固所學的理論知識,提高實踐能力和計算機的綜合運用能力。我們編寫程序的過程是辛苦與快樂的,程序的編寫原則很重要,只要我們在編程,就必須不斷改進,才能更好提高編程能力。參考文獻 1元芳,王亮編著c+程序設計,北京,清華大學出版社,2013年。附錄#include"iostream"#include"iomanip"/它是I/O流控制頭文#include"stdio.h"#include"stdlib.h"/包含了C語言的一些函

8、數(shù)#include"string.h"# define SPACE " "using namespace std;struct studentRecord char stuNo20; /學號 char name20; /姓名 int age; /年齡 float Math; /數(shù)學 float English; /英語 float Physics; /物理 float total; /總成績*p;void shujucharu ();/數(shù)據插入void shujuxiugai ();/數(shù)據修改void shujushanchu ();/數(shù)據刪除void

9、shujuliulan ();/數(shù)據瀏覽(按學號排序)void chengjidengji ();/學生成績登記void chengjixiugai ();/學生成績修改void viewTable ();/學生成績查看(按成績排名)void inquiry ();/成績查詢void write ();/文件寫入void read ();/文件讀取int line ();/文件中記錄學生的數(shù)目int i,n;bool y;void main()int a,b;cout<<SPACE<<"-歡迎登陸學生成績管理系統(tǒng)-"<<endl<&

10、lt;endl<<endl;cout<<"請選擇功能模塊:"<<endl;cout<<endl;cout<<"=<菜單>="<<endl;cout<<endl; cout<<SPACE<<" 1 創(chuàng)建或錄入學生信息 "<<endl;cout<<SPACE<<" 2 修改學生信 息 "<<endl;cout<<SPACE<<&q

11、uot; 3 刪除學生信 息 "<<endl;cout<<SPACE<<" 4 瀏覽學生信 息 "<<endl;cout<<SPACE<<" 5 查找學生信 息 "<<endl;cout<<SPACE<<" 6 登 記 成 績 "<<endl;cout<<SPACE<<" 7 修 改 成 績 "<<endl;cout<<SPACE<&

12、lt;" 8 查 看成 績 單 "<<endl; cout<<SPACE<<" 9 查看某個學生成績 "<<endl; cout<<SPACE<<" 0 退出 "<<endl;cout<<"-"<<endl;cout<<"請輸入您的選擇:"cin>>a;system("cls");if(a=1|a=0) y=1; if(y=0) cout<

13、<"請先錄入學生信息,才能進行下面的操作!"<<endl;a=1;y=1;while(a)switch(a)case 1: shujucharu(); break; case 2: shujuxiugai (); break; case 3: shujushanchu (); break; case 4: cout<<"=<瀏覽學生信息>="<<endl;cout<<endl;cout<<SPACE<<" 1、按學號排序瀏覽 "<<e

14、ndl;cout<<SPACE<<" 2、按成績排序瀏覽 "<<endl;cout<<SPACE<<" 3、退出 "<<endl;cout<<"-"<<endl;cin>>b;system("cls");while(b!=3)switch(b)case 1: shujuliulan(); break;case 2: viewTable(); break;default: cout<<"請

15、輸入1-3之內的數(shù)!"<<endl;cout<<endl<<endl<<"按任意數(shù)字鍵返回瀏覽界面."<<endl;int k;cin>>k;system("cls");cout<<"=<瀏覽學生信息>="<<endl;cout<<endl;cout<<SPACE<<" 1、按學號排序瀏覽 "<<endl;cout<<SPACE<&l

16、t;" 2、按成績排序瀏覽 "<<endl;cout<<SPACE<<" 3、退出 "<<endl;cout<<"-"<<endl;cin>>b;system("cls");break;case 5: inquiry (); break; case 6: chengjidengji(); break;case 7: chengjixiugai (); break; case 8:cout<<"=<查看成績

17、單>="<<endl;cout<<endl;cout<<SPACE<<" 1、按學號排序瀏覽 "<<endl;cout<<SPACE<<" 2、按成績排序瀏覽 "<<endl;cout<<SPACE<<" 3、退出 "<<endl;cout<<"-"<<endl;cin>>b;system("cls");while

18、(b!=3)switch(b)case 1: shujuliulan(); break;case 2: viewTable(); break;default: cout<<"請輸入1-3之內的數(shù)!"<<endl;cout<<endl<<endl<<"按任意數(shù)字鍵返回瀏覽界面."<<endl;int k;cin>>k;system("cls");cout<<"=<查看成績單>="<<endl;cou

19、t<<endl;cout<<SPACE<<" 1、按學號排序瀏覽 "<<endl;cout<<SPACE<<" 2、按成績排序瀏覽 "<<endl;cout<<SPACE<<" 3、退出 "<<endl;cout<<"-"<<endl;cin>>b;system("cls");break;case 9: inquiry (); break;d

20、efault: cout<<"輸入無效,請輸入0-9之內的數(shù)!"<<endl;cout<<endl<<endl<<"按任意數(shù)字鍵返回菜單界面."<<endl;int k;cin>>k;system("cls");cout<<"=<菜單>="<<endl;cout<<endl; cout<<SPACE<<" 1 創(chuàng)建或錄入學生信息 "<&

21、lt;endl;cout<<SPACE<<" 2 修改學生信 息 "<<endl;cout<<SPACE<<" 3 刪除學生信 息 "<<endl;cout<<SPACE<<" 4 瀏覽學生信 息 "<<endl;cout<<SPACE<<" 5 查找學生信 息 "<<endl;cout<<SPACE<<" 6 登 記 成 績 "

22、<<endl;cout<<SPACE<<" 7 修 改 成 績 "<<endl;cout<<SPACE<<" 8 查 看成 績 單 "<<endl; cout<<SPACE<<" 9 查看某個學生成績 "<<endl; cout<<SPACE<<" 0 退出 "<<endl;cout<<"-"<<endl;cout&l

23、t;<"請輸入您的選擇:"cin>>a;system("cls");/1.文件寫入void write ()FILE * fp;if(fp=fopen("stu.txt","w")!=NULL) for(i=0;i<n;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(&quo

24、t;文件打開或創(chuàng)建發(fā)生錯誤。n");/2.文件讀取void read ()FILE * fp;if(fp=fopen("stu.txt","r")!=NULL)n=line();p=new struct studentRecord n;for(i=0;i<n;i+)fscanf(fp,"%s %s %d %f %f %f %f",pi.stuNo,,&pi.age,&pi.Math,&pi.English,&pi.Physics,&pi.total);fclose(

25、fp);elsecout<<"文件打開或創(chuàng)建發(fā)生錯誤!"<<endl;/3.文件中記錄學生的數(shù)目int line ()char c; int h=0;FILE * fp; if(fp=fopen("stu.txt","r")!=NULL) while(c=fgetc(fp)!=EOF)if(c='n')h+;fclose(fp);elsecout<<"文件打開或創(chuàng)建發(fā)生錯誤n"return h;/4.成績查詢void inquiry ()read();char b

26、20;int m;cout<<"請選擇查詢方式"<<endl;cout<<SPACE<<"1.學號查詢"<<endl;cout<<SPACE<<"2.姓名查詢"<<endl;cin>>m;if(m=1|m=2)if(m=1)cout<<"請輸入學號:"cin>>b;system("cls");for(i=0;i<n;i+)if(strcmp(pi.stuNo,

27、b)=0) cout<<endl<<" 學號:"<<pi.stuNo<<"n"<<" 姓名:"<<<<"n"<<" 年齡:"<<pi.age<<"n"<<" 數(shù)學:"<<pi.Math<<"n"<<" 英語:"<<pi.Eng

28、lish<<"n"<<" 物理:"<<pi.Physics<<"n"<<" 總分:"<<pi.total<<endl;break;if(m=2)cout<<endl<<SPACE<<"請輸入姓名進行查詢:"cin>>b;system("cls");for(i=0;i<n;i+) if(strcmp(,b)=0)cout<

29、<endl<<" 學號:"<<pi.stuNo<<"n" <<" 姓名:"<<<<"n" <<" 年齡:"<<pi.age<<"n" <<" 數(shù)學:"<<pi.Math<<"n" <<" 英語:"<<pi.English<&l

30、t;"n" <<" 物理:"<<pi.Physics<<"n" <<" 總分:"<<pi.total<<endl;elsecout<<"輸入錯誤,請輸入1或2"<<endl;/5.數(shù)據插入void shujucharu ()FILE * fp;if(fp=fopen("stu.txt","a+")!=NULL)/以追加方式打開stu.txt文檔int n;cou

31、t<<"請輸入需要插入的學生數(shù)目:"cin>>n;p=new struct studentRecord n;/建立新節(jié)點if(n=0)cout<<SPACE<<"沒有進行數(shù)據插入"<<endl;for(int i=0;i<n;i+)cout<<"請輸入插入的第"<<i+1<<"個學生的學號:" /輸入cin>>pi.stuNo; cout<<endl<<SPACE<<

32、" 姓名:" cin>>; cout<<endl<<SPACE<<" 年齡:"cin>>pi.age; pi.Math=0;pi.English=0; pi.Physics=0; pi.total=0;for(i=0;i<n;i+) /輸出fprintf(fp,"%s %s %d %f %f %f %fn",pi.stuNo,,pi.age, pi.Math,pi.English,pi.Physics,pi.total);fclose(fp)

33、;delete p;/程序用delete 刪除數(shù)組并釋放內存elseprintf("文件打開或創(chuàng)建時發(fā)生錯誤.n");/6.數(shù)據修改void shujuxiugai ()read();shujuliulan();char b20;cout<<endl<<SPACE<<"請輸入需要修改信息學生的學號:" /按學號查找進行修改cin>>b;for(i=0;i<n;i+)if(strcmp(pi.stuNo,b)=0) / 判斷字符串b和字符串pi.stuNo是否相等cout<<"該學

34、生原始信息如下:"<<endl; cout<<endl<<pi.stuNo<<"t"<<"姓名:"<<<<"t"<<"數(shù)學成績:"<<pi.Math<<"t"<<"英語成績:"<<pi.English<<"t"<<"物理成績:"<<pi

35、.Physics<<"t"<<"總分:"<<pi.total<<endl;cout<<endl<<"請重新輸入該學生的信息:"<<endl;cout<<endl<<SPACE<<" 學號:" cin>>pi.stuNo;cout<<endl<<SPACE<<" 姓名:" cin>>;cout<<

36、;endl<<SPACE<<" 年齡:" cin>>pi.age;cout<<"修改成功!"<<endl;break;if(i>=n&&(strcmp(pi.stuNo,b)!=0)cout<<endl<<SPACE<<"該學號不存在!"<<endl;cout<<endl<<SPACE<<"請輸入需要修改信息學生的姓名進行查找修改!"<<e

37、ndl; /按姓名查找進行修改cout<<endl<<SPACE<<"請輸入姓名:"cin>>b;for(i=0;i<n;i+)if(strcmp(,b)=0) cout<<endl<<SPACE<<"該學生原始信息如下:"<<endl; cout<<endl<<pi.stuNo<<"t"<<"姓名:"<<<<&qu

38、ot;t"<<"數(shù)學成績:"<<pi.Math<<"t"<<"英語成績:"<<pi.English<<"t"<<"物理成績:"<<pi.Physics<<"t"<<"總分:"<<pi.total<<endl;cout<<endl<<"請重新輸入該學生的信息:"&

39、lt;<endl;cout<<endl<<" "<<" 學號:"cin>>pi.stuNo; cout<<endl<<SPACE<<" 姓名:" cin>>; cout<<endl<<SPACE<<" 年齡:" cin>>pi.age; cout<<endl<<SPACE<<"數(shù)學成績:" cin&

40、gt;>pi.Math; cout<<endl<<SPACE<<"英語成績:" cin>>pi.English; cout<<endl<<SPACE<<"物理成績:" cin>>pi.Physics; pi.total=pi.Math+pi.English+pi.Physics;cout<<"修改成功!"<<endl; break;if(i>=n&&(strcmp(pi.stuNo,b)!

41、=0)cout<<endl<<SPACE<<"該學生姓名不存在!"<<endl;write();/7.按學號排序進行數(shù)據瀏覽void shujuliulan()read ();for(i=0;i<n-1;i+) int k=i;for(int j=i+1;j<n;j+)if(strcmp(pi.stuNo,pj.stuNo)>0)k=j;struct studentRecord t;t=pi;pi=pk;pk=t; cout<<setw(20)<<"學號"<&

42、lt;setw(20)<<"姓名"<<setw(6)<<"年齡"<<setw(6)<<"數(shù)學"<<setw(6)<<"英語"<<setw(6)<<"物理"<<setw(8)<<"總分"<<endl;for(i=0;i<n;i+)cout<<setw(15)<<pi.stuNo<<setw(18

43、)<<<<setw(6)<<pi.age<<setw(6)<<pi.Math <<setw(6)<<pi.English<<setw(6)<<pi.Physics<<setw(8)<<pi.total<<endl;if(i+1)%10=0)cout<<endl<<SPACE<<"按任意數(shù)字鍵繼續(xù)顯示下一屏."<<endl<<endl;int y;cin>

44、>y;system("cls");/8.學生成績登記void chengjidengji () read();for(i=0;i<n;i+)cout<<endl<<endl<<pi.stuNo<<"t"<<setw(20)<<<<"t"<<"數(shù)學成績:" cin>>pi.Math; cout<<endl<<"t"<<"

45、t"<<"t"<<"t"<<"英語成績:" cin>>pi.English; cout<<endl<<"t"<<"t"<<"t"<<"t"<<"物理成績:" cin>>pi.Physics; pi.total=pi.Math+pi.English+pi.Physics;if(i+1)%3=0)sy

46、stem("cls");if(i+1)%5=0)cout<<endl<<"是否停止輸入Y/N"<<endl; char c; cin>>c; if(c='Y'|c='y') break; if (c='N'|c='n') ;write(); /9.成績修改void chengjixiugai() read();shujuliulan();char b20;cout<<endl<<"請輸入需要修改成績的學生的學號

47、:" cin>>b;for(i=0;i<n;i+)if(strcmp(pi.stuNo,b)=0)cout<<"該學生的原有成績如下:"<<endl<<endl;cout<<endl<<pi.stuNo<<"t"<<<<"t"<<"數(shù)學成績:"<<pi.Math<<"t"<<"英語成績:"&l

48、t;<pi.English<<"t"<<"物理成績:"<<pi.Physics<<endl;cout<<endl<<"請重新輸入該學生的數(shù)學成績:" cin>>pi.Math; cout<<endl<<" "<<"英語成績:" cin>>pi.English; cout<<endl<<" "<<"

49、;物理成績:" cin>>pi.Physics; pi.total=pi.Math+pi.English+pi.Physics;cout<<"修改成功!"<<endl; break;if(i>=n&&(strcmp(pi.stuNo,b)!=0)cout<<endl<<SPACE<<SPACE<<"該學號不存在!"<<endl;write();/10.按成績排序進行成績查看void viewTable()read ();for(i=0

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論