學生信息管理系統(tǒng) .doc
《學生信息管理系統(tǒng) .doc》由會員分享,可在線閱讀,更多相關(guān)《學生信息管理系統(tǒng) .doc(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、滁州學院 課程設(shè)計報告 課程名稱: 數(shù)據(jù)結(jié)構(gòu) 設(shè)計題目: 學生成績信息管理系統(tǒng) 系 別: 計算機科學與技術(shù) 專 業(yè): 計算機科學與技術(shù) 組 別: 第十組 起止日期: 11年5 月 20日 ~ 11年 6 月25日 指導
2、教師: 楊斌 計算機科學與技術(shù)系二○一一年制 課程設(shè)計題目 學生成績管理系統(tǒng) 組長 孫大成 學號 2010211119 班級 計科一班 系別 計算機科學與技術(shù) 專業(yè) 計算機科學與技術(shù) 組員 陳鳳霞 高山 陳世光 指導教師 楊斌 課程設(shè)計目的 方便用戶對學生成績的管理和查詢 課程設(shè)計所需環(huán)境 Microsoft Visual C++ 6.0 課程設(shè)計任務(wù)要求 應(yīng)用數(shù)據(jù)結(jié)構(gòu)的知識從文本中讀取數(shù)據(jù),設(shè)計算法,完成對學生
3、成績的管理和查詢 課程設(shè)計工作進度計劃 序號 起止日期 工 作 內(nèi) 容 分工情況 1 5/20~5/25 將學生的成績從文本文件中讀取出來,存入數(shù)組 陳鳳霞完成 2 5/25~5/30 運用選擇排序法對成績進行降序排列 陳世光完成 3 6/1~6/10 運用直接插入排序?qū)Τ煽冞M行升序排列 孫大成完成 4 6/10~6/15 對某個學生的成績進行查找操作 高山完成 5 6/15~6/20 對不及格學生的成績輸出到新建文檔中 高山完成 6 6/20 設(shè)計主函數(shù)中的循環(huán)算法,便于多次操作 孫大成完成 指導教師簽字:
4、 年 月 日 教研室審核意見: 教研室主任簽字: 年 月 日 課程設(shè)計任務(wù)書 18 目錄 ⒈引言 2 1.1、課程簡介 2 1.2、課程設(shè)計的背景 2 ⒉需求分析 2 2.1問題要求 2 2.2設(shè)計思路 3 2.3運行開發(fā)環(huán)境 3 ⒊概要設(shè)計 3 3.1流程圖 3 3.2 主要數(shù)據(jù)結(jié)構(gòu) 4 3.3 函數(shù)及其實現(xiàn)的功能 4 ⒋詳細設(shè)計 4 ⒌調(diào)試與操作說明 15 5.1、成績的合并后輸出 15 5.2、成績的降序輸出 15 5.3、不及格成績學生的信
5、息: 15 5.3成績的查詢 15 5.4、成績的不及格信息 16 5.5成績的文本中讀取 16 ⒍課程設(shè)計總結(jié)與體會 17 ⒎致謝 17 ⒏參考文獻 17 課程設(shè)計的主要內(nèi)容 ⒈引言 1.1、課程簡介 當今社會,計算機技術(shù)和通信技術(shù)已經(jīng)不斷發(fā)展,處理和傳輸?shù)臄?shù)據(jù)量越來越龐大。文本文件存儲的方式是普通人熟悉的數(shù)據(jù)管理的方式,我們要做的就是在文本中讀取數(shù)據(jù),在程序中處理數(shù)據(jù),生成新的數(shù)據(jù)再保留在文本文檔中,供其他人應(yīng)用。 1.2、課程設(shè)計的背景 課程設(shè)計是為了讓同學們了解學習數(shù)據(jù)結(jié)構(gòu)的作用和意義。數(shù)據(jù)結(jié)構(gòu)是計算機科學與技術(shù)專業(yè)的專業(yè)基礎(chǔ)課。所有的計算機系統(tǒng)軟件和應(yīng)用軟件
6、都要用到各種類型的數(shù)據(jù)結(jié)構(gòu)。因此,想要更好地運用計算機來解決實際問題,僅僅掌握幾門計算機程序設(shè)計語言是遠遠難以應(yīng)付當前眾多復(fù)雜的課題,想要有效地使用計算機,充分發(fā)揮它的性能,還必須學習和掌握好數(shù)據(jù)結(jié)構(gòu)的有關(guān)知識,打好數(shù)據(jù)結(jié)構(gòu)這門課的基礎(chǔ),對于學習計算機專業(yè)其它的課程,如操作系統(tǒng)、軟件工程、編譯原理、數(shù)據(jù)庫、人工智能等十分有益。 ⒉需求分析 2.1問題要求 現(xiàn)有學生成績信息文件1(1.txt),內(nèi)容如下 姓名 學號 語文 數(shù)學 英語 張明明 01 67 78 82 李成友 02 78 91 88 張輝燦
7、 03 68 82 56 王露 04 56 45 77 陳東明 05 67 38 47 …. .. .. .. … 學生成績信息文件2(2.txt),內(nèi)容如下: 姓名 學號 語文 數(shù)學 英語 陳果 31 57 68 82 李華明 32 88 90 68 張明東 33 48 42 56 李明國 34 50 45 87 陳道亮
8、 35 47 58 77 …. .. .. .(文件內(nèi)容可根據(jù)測試要求,自行制定) 試編寫一個管理系統(tǒng),要求如下: 1)、實現(xiàn)對兩個文件數(shù)據(jù)進行合并,生成新文件3.txt 2)、抽取出三科成績中有補考的學生并保存在一個新文件4.txt 3)、對合并后的文件3.txt中的數(shù)據(jù)按總分降序排序(至少采用兩種排序方法實現(xiàn)) 4)、輸入一個學生姓名后,能查找到此學生的信息并輸出結(jié)果(至少采用兩種查找方法實現(xiàn)) 5)、要求使用結(jié)構(gòu)體,鏈或數(shù)組等實現(xiàn)上述要求. 采用多種方法且算法正確者,可適當加分. 2.2設(shè)計思路 利用文件對學生成績等
9、基本信息進行保存,并將其中的兩文件合并成一個,生成新的文件;學生成績的分析,將應(yīng)補考的同學的基本信息保存在另一個文件中;利用合并進行降序。 2.3運行開發(fā)環(huán)境 運行環(huán)境 Microsoft Visual C++ 6.0;開發(fā)工具 C/C++ ⒊概要設(shè)計 3.1流程圖 課程設(shè)計中算法的函數(shù)模塊 學生信息的建立 void create(Data stu[]) 一些學生的信息的排序(合并排序) void hebing(Data stu[])//hebing paixu 補考同學信息的合并 void bukao(Data stu[]) 主函數(shù)的建立
10、 void main() 結(jié)束 圖3.1設(shè)計的流程圖 3.2 主要數(shù)據(jù)結(jié)構(gòu) 結(jié)構(gòu)如下表所述,建立包含系成績、學號、總分的信息存儲等 具體數(shù)據(jù)結(jié)構(gòu)定義如下: typedef struct data//建立結(jié)構(gòu)體數(shù)組 { char name[10]; int Xhao; int china; int math; int english; int sum; }Data; 3.3 函數(shù)及其實現(xiàn)的功能 利用文件對學生成績等基本信息進行保存,并將其中的兩文件合并成一個,生成新的文件;學生成績的分析,將應(yīng)補考的同學的基本信息保存在另一個文件中
11、;利用合并進行降序。
⒋詳細設(shè)計
4.1程序設(shè)計源代碼
#include
12、/////////////////////// void create(Data stu[]) { int i=0; 【1】FILE *fp1,*fp2; if((fp1=fopen("E:\\c語言\\課程設(shè)計作業(yè)\\t1.txt","r"))==NULL) { printf("FILE not found!\n"); exit(0); } if((fp2=fopen("E:\\c語言\\課程設(shè)計作業(yè)\\t2.txt","r"))==NULL) { printf("FILE not found!\n"); exit(0); } while(
13、!feof(fp1)) { fscanf(fp1,"%s%d%d%d%d",stu[i].name,&stu[i].Xhao,&stu[i].china,&stu[i].math,&stu[i].english); stu[i].sum=stu[i].china+stu[i].math+stu[i].english; i++; }; i--; while(!feof(fp2)) { fscanf(fp2,"%s%d%d%d%d",stu[i].name,&stu[i].Xhao,&stu[i].china,&stu[i].ma
14、th,&stu[i].english); stu[i].sum=stu[i].china+stu[i].math+stu[i].english; i++; };i--;k=i; printf("學號 姓名 語文 數(shù)學 英語 總分\n"); for(int j=0;j
15、sum);
}
cout< 16、jj 17、("%d %-5s %d %d %d %d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);
}
}
/////////////////////////////////////
//2、直接插入排序
void hebing2(Data stu[])
{
int t,i;
Data temp;
FILE *fp5;
if((fp5=fopen("E:\\c語言\\課程設(shè)計作業(yè)\\t5.txt","w"))==NULL)
18、{ printf("FILE not found!\n");
exit(0);
}
for(i=2;i<=k;i++)
{
stu[0]=stu[i];
t=i-1;
while(stu[t].sum > stu[0])
{
stu[t+1]=stu[t];
t=t-1;
}
stu[t+1]= stu[0];
}
for(int j=1;j<=k;j++)
{
fprintf(fp5,"%d %-5s %d %d %d %d\n",stu[j].Xhao,stu[j]. 19、name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);
printf("%d %-5s %d %d %d %d\n",stu[j].Xhao,stu[j].name,stu[j].china,stu[j].math,stu[j].english,stu[j].sum);
}
}
///////////////////////////////////////////////////////////////////////////////
void bukao(Data stu[])
20、
{
FILE *fp4;
if((fp4=fopen("E:\\c語言\\課程設(shè)計作業(yè)\\t4.txt","w"))==NULL)
{ printf("FILE not found!\n");
exit(0);
}
for(int i=0;i 21、china);
fprintf(fp4,"%s\n","語文不及格:");
printf("%s\n","語文不及格:");
}
if(stu[i].math<60){
fprintf(fp4,"%d--%s---%d ",stu[i].Xhao,stu[i].name,stu[i].math);
printf("%d--%s---%d ",stu[i].Xhao,stu[i].name,stu[i].math);
fprintf(fp4,"%s\n","數(shù)學不及格:");
printf("%s\n","數(shù)學不及格:");
22、 }
if(stu[i].english<60){
fprintf(fp4,"%d--%s---%d ",stu[i].Xhao,stu[i].name,stu[i].english);
printf("%d--%s---%d ",stu[i].Xhao,stu[i].name,stu[i].english);
fprintf(fp4,"%s\n","英語不及格:");
printf("%s\n","英語不及格:");
}
}
}
//////////////////////////////////////////////////// 23、///////////////////////////
void search(Data stu[])
{
int j,flag=0;
char name[10];
printf("輸入一個學生的姓名:\n");
scanf("%s",name);
fflush(stdin);
for(int i=0;i 24、,stu[i].china,stu[i].math,stu[i].english,stu[i].sum);
}
}
if(flag==0)
cout<<"not found"< 25、<<" #******輸入“1”,降序排列成績******結(jié)果見文本文件t3******#"< 26、
void main()
{
int j=1;
char ch;
Data stu[20];
Data A[20];
prf();
cout<<"請輸入要執(zhí)行的步驟(以1,2,3,4,5,0 ):"< 27、< 28、
fflush(stdin);
}
}
⒌調(diào)試與操作說明
5.1、成績的合并后輸出
圖5.1成績的合并
5.2、成績的降序輸出
5.3、不及格成績學生的信息:
圖5.2成績的降序排序
5.3成績的查詢
圖5.3成績的查詢
5.4、成績的不及格信息
圖5.4成績的不及格學生信息
5.5成績的文本中讀取
在文本文件中查看上述操作的結(jié)果。
圖5.5文本文件降序成績
圖5.6文本文件補 29、考信息
⒍課程設(shè)計總結(jié)與體會
在課程設(shè)計中,我們組的成員分工合作。他們每個人遇到過不同程度的問題都會想著去解決去實現(xiàn),當一個人解決不了的時候,團隊的優(yōu)越性就體現(xiàn)出來了。我們一起探討,研究終于完成了這次的課程設(shè)計,雖然這只是一個小的程序,沒有牽涉到什么外圍的人力和物理資源。但是我們多少了解做課程設(shè)計的精髓,為以后的學術(shù)報告做好鋪墊。
⒎致謝
感謝本組全體成員的努力以及老師們和同學們的幫助,其中有《數(shù)據(jù)結(jié)構(gòu)》老師楊斌和《C語言程序設(shè)計》老師趙瑞斌等。
⒏參考文獻
[1] 何欽銘,顏輝.C語言程序設(shè)計[M].北京:高等教育出版社,2008.
[2] 胡學剛.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:高等教育出版社,2008
評語:
評閱教師簽名: 年 月 日
成 績
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。