




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、C語言課程設計論文 題 目: 學生成績管理系統程序設計 學 院: 地球物理與空間信息學院 專 業: 2010級地球物理專業061103班 姓 名: 寧章桂 指導教師: 曹雪蓮 2012年6月7日目錄第一章 緒論1 1.1 課題背景和意義1 1.2 項目開發的目標1 1.3 開發工具1第二章 設計任務分析2 2.1 題目2 2.2 目的2 2.3 要求2 2.4 學生成績管理系統的功能2第三章 算法與流程圖3第四章 運行結果截屏分析4 4.1 主菜單4 4.2 輸入學生信息4 4.3 顯示當前全部學生信息5 4.4 按各種排序顯示全部學生信息6 4.5 查詢學生信息10 4.6 修改學生信息10
2、 4.7 添加學生信息12 4.8 刪除學生信息13 4.9 從文件讀入學生信息14 4.10 刪除文件中學生信息16 4.11 保存學生信息到文件17第五章 實習感想19附錄一 主要參考文獻20附錄二 源程序代碼21第一章 緒論1.1課題背景和意義該項目開發的軟件為學校學生信息管理系統軟件,是鑒于目前學校學生人數劇增,學生信息呈爆炸性增長的前提下,學校對學生信息管理的自動化與準確化的要求日益強烈的背景下構思出來的,該軟件設計完成后可用于學校,學院等教育單位的學生信息的管理. 目前社會上信息管理系統發展飛快,各個企事業單位都引入了信息管理軟件來管理自己日益增長的各種信息,學生管理系統也是有了很
3、大的發展,商業化的學生信息管理軟件也不少.但本系統完全獨立開發,力求使系統功能簡潔明了,功能齊全且易于操作。 學生信息管理系統是一個教育單位不可缺少的部分。一個功能齊全、簡單易用的信息管理系統不但能有效地減輕學校相關工作人員的工作負擔,它的內容對于學校的決策者和管理者來說都至關重要。所以學生信息管理系統應該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統人工的方式管理文件檔案、統計和查詢數據,這種管理方式存在著許多缺點,如:效率低、保密性差,人工的大量浪費;另外時間一長,將產生大量的文件和數據,這對于查找、更新和維護都帶來了不少困難。隨著科學技術的不斷提高,計算機科學日漸成熟,
4、其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發揮著來越重要的作用。作為計算機應用的一部分,使用計算機對學校的各類信息進行管理,具有手工管理所無法比擬的優點.例如:檢索迅速、查詢方便、效率高、可靠性好、存儲量大、保密性好、壽命長、成本低等。這些優點能夠極大地提高學校信息管理的效率,也是一個單位科學化、正規化管理,與世界接軌的重要條件。1.2項目開發的目標 建立學生信息管理系統,采用計算機對學生信息進行管理,進一步提高辦學效益和現代化水平。幫助廣大教師提高工作效率,實現學生信息管理工作流程的系統化、規范化和自動化。1.3開發工具 本系統在Microsoft Visual C+6.0下
5、開發。第二章、設計任務分析2.1題目 設計一個學生成績管理系統,要求: 1、有簡單操作界面,用戶可通過數字選擇功能; 2、錄入成績(鏈表的建立,每個結點包括:學號、 姓名、數學、物理、英語、計算機、總分); 3、輸出成績(鏈表的輸出,按學號排序、按總分排序); 4、查找成績(按學號或姓名查找結點, 按學號順序插入結點,按學號或者姓名刪除結點); 5、保存到文件, 以及從文件中讀出。2.2目的 (1)掌握和利用C語言進行程序設計的能力; (2)理解和運用結構化程序設計的思想和方法; (3)掌握開發一個小型實用系統的基本方法; (4)學會調試一個較長程序的基本方法; (5)掌握書寫課程設計報告的能
6、力。2.3要求 (1)用C語言實現系統; (2)利用結構體數組實現學生成績的數據結構設計; (3)系統具有錄入、修改、查詢、插入、排序信息和將信息保存到文件、從文件中讀出信息等基本 功能; (4)系統的各個功能模塊要求用函數的形式實現; (5)完成設計任務并書寫課程設計報告;2.4學生成績管理系統的功能 1-輸入學生信息 2-顯示當前全部學生信息 3-按各種排序顯示全部學生信息 4-查詢學生信息 5-修改學生信息 6-添加學生信息 7-刪除學生信息 8-從文件讀入學生信息 9-刪除文件中學生信息 10-保存學生信息到文件 11-退出第三章、算法與流程圖按英語由高到低排列按數學由高到低排列按學號
7、由低到高排列按總分由高到低排列按物理由高到低排列按計算機由高到低排列按各種排序顯示全部學生信息刪除學生信息輸入學生信息顯示當前學生信息查詢學生信息添加學生信息修改學生信息退出保存信息到文件刪除文件信息從文件讀入信息開始 主菜單選擇1選擇2選擇3選擇7選擇10選擇9選擇8選擇6選擇4選擇5選擇11選擇1選擇2選擇4選擇3選擇5選擇6按姓名查詢按姓名修改按學號刪除結束1.系統結構圖第四章、運行結果截屏分析1、主菜單2、 輸入學生信息(1)、選擇功能1(2)、輸入學生信息3、顯示當前學生信息(1)、選擇功能2(2)、顯示當前學生信息4、按各種排序顯示全部學生信息(1)、選擇功能3(2) 、進入選擇排
8、列方法菜單(3)、選擇按學號由低到高排列學生信息(4)、按總分由高到低排列學生信息(5)、按數學由高到低排列學生信(6)、按物理由高到低排列學生信息(7)、按英語由高到低排列學生信息(8)、按計算機由高到低排列學生信息5、查詢學生信息(1)、選擇功能4(2) 、輸入要查詢的學生姓名(3)、顯示所查詢的學生信息6、修改學生信息(1) 、選擇功能5(2) 、輸入要修改的學生姓名(3)、修改成功該同學的原來信息:7、添加學生信息(1) 、選擇功能6(2) 、輸入新插入的同學的信息(3)、添加成功8、刪除學生信息(1) 、選擇功能7(2) 、選擇要刪除的同學(3)、刪除成功9、從文件讀入信息(1) 、
9、文件“學生信息”(2) 、選擇功能8(3)、讀入成功10、刪除文件信息(1) 、文件“11”(2) 、選擇功能9(3)、選擇刪除信息的文件及刪除成功11、保存信息到文件(1)、學生信息(2)選擇功能10(3)、選擇用來保存的文件及保存成功第五章、實習感想 C語言的確是一門很有用的但是又是不容易的一門課程。起初剛開始實習時,以為這個課程設計不會有多難,只不過是把多個函數組合起來就好了,但是,經過這十來天的編程,發現要完完整整把程序按照要求編出來是一件很不容易的事情。在整個編程的過程中,可以說遇到了很多難題,但是讓我印象最深刻的是在編寫從某文件中讀取學生信息這個程序時所遇到的困難。起初,程序時編寫
10、出來了,在組建時也沒有錯誤,但是就是實現不了這個功能,接著就是整整一天的苦戰;終于,能夠讀取文件中的信息了,可是,新問題又來了,在顯示讀取的信息時出現了亂序。自己弄了整整半天還是沒有找出問題的所在,只好請教別人,在一個熱心的學長的幫助下,終于把這個程序完完整整的沒有錯誤地編好了。就編這個函數我就用了差不多兩天的時間!在這個程序完整地編寫下來,我覺得編寫程序需要很大的耐心,一個稍微大點的程序就有個幾百甚至上千行,沒有耐心是很難做得成功的。當然細心也很需要,在編程的過程中有很多錯誤都是自己的粗心造成的,有時甚至自己多次檢查都看不出來,這樣一來,會造成時間的大量浪費。這次的實習也是一次很好的對自我的
11、檢查。它讓我知道了自己在C語言的學習上還不夠認真刻苦,很多知識點還是沒有很好的掌握,甚至有些知識點很生疏,這也許就是我在編寫從某文件中讀取學生信息這一函數時老碰壁的原因所在!從這一點上來看,發現我對待學習的態度還不夠端正,有待加強。不管怎么說,經過這一次課程設計,在C語言方面的收獲最大,讓我讀代碼的能力大大提升了不少,也鞏固了很多知識。最后,在這多謝我的指導老師曹雪蓮老師,也多謝各位為我提供幫助的同學。附錄1 參考文獻張基溫 C語言程序設計案例教程 清華大學出版社譚浩強 C程序設計 清華大學出版社 百度文庫及其他網絡平臺附錄2 源程序代碼#include<stdio.h> #inc
12、lude<conio.h> /清屏 #include <stdlib.h> /顯示目錄 #include<string.h> #define MAX 1000 /定義一個全局變量void input();/學生信息輸入函數 void display();/顯示當前全部學生信息函數void display1();/按各種排序顯示全部學生信息函數 void find();/查找某學生信息函數void modify();/修改某學生信息函數void del(); /刪除某學生信息函數 void insert(); /添加新學生信息函數 void read(); /
13、讀取某文件中學生的信息函數 void del_file(); /刪除某文件中學生信息函數 void save();/保存全部學生信息到某文件函數void average();/求平均值函數 void sum();/求總分函數void sort();/按總分由高到低排列學生信息void Sort_by_num();/按學號由低到高排列學生信息void sort1();/按數學由高到低排列學生信息void sort2();/按物理由高到低排列學生信息void sort3();/按英語由高到低排列學生信息void sort4();/按計算機由高到低排列學生信息int now_no=0; struct
14、 student /聲明結構體類型 struct student unsigned long no; /以下10行為結構體的成員 char name20; char sex4; float score1; float score2; float score3; float score4; float sort; float ave; float sum; ; struct student stuMAX,*p;/定義結構體struct student類型的變量stuMAX和指向struct student類型數據的指針變量*p void main()/主函數 int as; char ch; d
15、o printf("nnnntt&&&*&*&*&*&*&*&&&"); start: printf("nnnnttt 歡迎使用學生成績管理系統n"); printf("nnnntt&&&*按任意鍵繼續*&&&"); ch=getch(); while(!ch); system("cls"); /以下為功能選擇模塊 do printf("nttt歡迎使用學生成績管理系統n
16、"); printf("&&&*&&&n"); printf("ntttt1.輸入學生信息ntttt2.顯示當前全部學生信息ntttt3.按各種排序顯示全部學生信息ntttt4.查詢學生信息ntttt5.修改學生信息ntttt6.添加學生信息ntttt7.刪除學生信息ntttt8.從文件讀入學生信息ntttt9.刪除文件中學生信息ntttt10.保存學生信息到文件ntttt11.退出nn"); printf("&&&*&&&nn"
17、); printf("ttt選擇功能:"); fflush(stdin); /用于清除緩存防止下次用scanf輸入是出現錯誤 scanf("%d",&as); switch(as) case 1:system("cls"); input(); break; case 2:system("cls"); display(); break; case 3:system("cls"); display1(); break; case 4:system("cls"); find
18、(); break; case 5:system("cls"); modify(); break; case 6:system("cls"); insert(); break; case 7:system("cls"); del(); break; case 8:system("cls"); read(); break; case 9:system("cls"); del_file(); break; case 10:system("cls"); save(); break;
19、 case 11:system("exit"); exit(0); default:system("cls"); goto start; while(1); /while(1),1表示真,所以while(1)表示永遠循環下去 /至此功能選擇結束void input() /原始數據錄入模塊 int i=0; char ch; do printf("tttt1.錄入學生信息n輸入第%d個學生的信息n",i+1); printf("n輸入學生學號:"); scanf("%u",&stui.no
20、); fflush(stdin); printf("n輸入學生姓名:"); fflush(stdin); gets(); printf("n輸入學生性別:"); fflush(stdin); gets(stui.sex); printf("n輸入學生數學成績:"); scanf("%f",&stui.score1); printf("n輸入學生物理成績:"); fflush(stdin); scanf("%f",&stui.score2);
21、printf("n輸入學生英語成績:"); fflush(stdin); scanf("%f",&stui.score3); printf("n輸入學生計算機成績:"); fflush(stdin); scanf("%f",&stui.score4); printf("nn"); i+; now_no=i; printf("是否繼續輸入?(Y/N)"); fflush(stdin); ch=getch(); system("cls"); w
22、hile(ch!='n'&&ch!='N'); system("cls"); void display()/顯示當前全部學生信息函數 int i; char as; average(); do printf("ttt班級學生信息列表nn"); printf("&&&*&&&n"); printf("t學號t姓名t性別t數學t物理t英語t計算機t平均t總分nn"); for(i=0;i<now_no&&
23、;0;i+) printf("t%ut%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fnn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.score4,stui.ave,stui.sum); printf("&&&*&&&nn"); printf("tt按任意鍵返回主菜單."); fflush(stdin); as=getch(); while(!as);
24、system("cls"); void display1()/按各種排序顯示全部學生信息函數 int a; start: printf("nttt歡迎使用學生成績管理系統nn");printf("&&&*&&&n"); printf("nttt1.按學號由低到高排列nttt2.按總成績由高到低排列nttt3.按數學成績由高到低排列nttt4.按物理成績由高到低排列nttt5.按英語成績由高到低排列nttt6.按計算機成績由高到低排列nttt7.返回主菜單請選擇其他nn"
25、;);/選擇查看方式printf("&&&*&&&nn");printf("ttt選擇查看方式:"); scanf("%d",&a); switch(a) case 1:system("cls");Sort_by_num();break; case 2:system("cls");sort();break; case 3:system("cls");sort1();break; case 4:system("c
26、ls");sort2();break; case 5:system("cls");sort3();break; case 6:system("cls");sort4();break; default:system("cls");/選擇4.返回主菜單請按其他鍵 void Sort_by_num()/按學號由低到高排序模快struct student temp; /定義結構體變量temp,用作交換時的臨時變量int i,j; char as; sum(); average(); for(i=1;i<now_no;+i) /
27、使用冒泡法升序排列 for(j=1;j<=now_no-i;+j) if(stuj.no<stuj-1.no) temp=stuj; stuj=stuj-1; stuj-1=temp; printf("ttt班級學生信息列表nn"); printf("按學號由低到高排列學生信息:n"); printf("&&&*&&&n"); printf("t學號t姓名t性別t數學t物理t英語t計算機t平均t總分nn"); for(i=0;i<now_no&
28、;&0;i+) printf("t%ut%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fnn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.score4,stui.ave,stui.sum); printf("&&&*&&&nn"); printf("tt按任意鍵返回主菜單."); fflush(stdin); as=getch(); system(
29、"cls"); while(!as); void sort() /按總分由高到低排列學生信息 struct student temp; int i,j; char as; sum(); average(); for(i=1;i<now_no;i+) for(j=1;j<=now_no-i;j+) if(stuj-1.ave<stuj.ave) temp=stuj; stuj=stuj-1; stuj-1=temp; printf("ttt班級學生信息列表nn"); printf("按總分由高到低排列學生信息:n");
30、 printf("&&&*&&&n"); printf("t學號t姓名t性別t數學t物理t英語t計算機t平均t總分nn"); for(i=0;i<now_no&&0;i+) printf("t%ut%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fnn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.score4,stui.ave,stui
31、.sum); printf("&&&*&&&nn"); printf("tt按任意鍵返回主菜單."); fflush(stdin); as=getch(); system("cls"); while(!as); void sort1()/ 按數學分數由高到低排列學生信息 struct student temp; int i,j; char as; sum(); average(); for(i=1;i<now_no;i+) for(j=1;j<=now_no-i;j+) if
32、(stuj-1.score1<stuj.score1) temp=stuj; stuj=stuj-1; stuj-1=temp; printf("ttt班級學生信息列表nn"); printf("按數學分數由高到低排列學生信息:n"); printf("&&&*&&&n"); printf("t學號t姓名t性別t數學t物理t英語t計算機t平均t總分nn"); for(i=0;i<now_no&&0;i+) printf(&
33、quot;t%ut%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fnn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.score4,stui.ave,stui.sum); printf("&&&*&&&nn"); printf("tt按任意鍵返回主菜單."); fflush(stdin); as=getch(); system("cls"); while(!as);
34、 void sort2()/按物理分數由高到低排列學生信息 struct student temp; int i,j; char as; sum(); average(); for(i=1;i<now_no;i+) for(j=1;j<=now_no-i;j+) if(stuj-1.score2<stuj.score2) temp=stuj; stuj=stuj-1; stuj-1=temp; printf("ttt班級學生信息列表nn"); printf("按物理分數由高到低排列學生信息:n"); printf("&
35、&&*&&&n"); printf("t學號t姓名t性別t數學t物理t英語t計算機t平均t總分nn"); for(i=0;i<now_no&&0;i+) printf("t%ut%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fnn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.score4,stui.ave,stui.sum); printf("
36、;&&&*&&&nn"); printf("tt按任意鍵返回主菜單."); fflush(stdin); as=getch(); system("cls"); while(!as); void sort3()/按英語分數由高到低排列學生信息 struct student temp; int i,j; char as; sum(); average(); for(i=1;i<now_no;i+) for(j=1;j<=now_no-i;j+) if(stuj-1.score3<st
37、uj.score3) temp=stuj; stuj=stuj-1; stuj-1=temp; printf("ttt班級學生信息列表nn"); printf("按英語分數由高到低排列學生信息:n"); printf("&&&*&&&n"); printf("t學號t姓名t性別t數學t物理t英語t計算機t平均t總分nn"); for(i=0;i<now_no&&0;i+) printf("t%ut%st%st%.2ft
38、%.2ft%.2ft%.2ft%.2ft%.2fnn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.score4,stui.ave,stui.sum); printf("&&&*&&&nn"); printf("tt按任意鍵返回主菜單."); fflush(stdin); as=getch(); system("cls"); while(!as); void sort4()/按計算機分數
39、由高到低排列學生信息 struct student temp; int i,j; char as; sum(); average(); for(i=1;i<now_no;i+) for(j=1;j<=now_no-i;j+) if(stuj-1.score4<stuj.score4) temp=stuj; stuj=stuj-1; stuj-1=temp; printf("ttt班級學生信息列表nn"); printf("按計算機分數由高到低排列學生信息:n"); printf("&&&*&&a
40、mp;&n"); printf("t學號t姓名t性別t數學t物理t英語t計算機t平均t總分nn"); for(i=0;i<now_no&&0;i+) printf("t%ut%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fnn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.score4,stui.ave,stui.sum); printf("&&&*&
41、amp;&&nn"); printf("tt按任意鍵返回主菜單."); fflush(stdin); as=getch(); system("cls"); while(!as); void find()/查找某學生信息函數* int i; char str20,as; do printf("n"); printf("輸入要查詢的學生姓名:"); /輸入要查詢的學生姓名 fflush(stdin); gets(str); printf("&&&*&&
42、amp;&n"); printf("t學號t姓名t性別t成績1t成績2t成績3t成績4t平均值t總分n"); /輸出查詢學生的信息 for(i=0;i<now_no;i+) if(!strcmp(,str) printf("t%ut%st%st%.2ft%.2ft%.2ft%.2ft%.2ft%.2fn",stui.no,,stui.sex,stui.score1,stui.score2,stui.score3,stui.score4,stui.ave,stui.sum); printf("&&&*&&&nn"); printf("tt按任意鍵返回主菜單."); fflush(stdin); as=getch(); while(!as); system("cls"); void modify()/*修改數據函數*/ int i; char str20; printf("輸入要修改的學生姓名:"); fflush(stdin); gets(str); for(i=0;i<now_no;i+) if(!strcmp(,str) sy
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025《委托代理合同范本》
- 2025年并聯無功補償裝置項目合作計劃書
- 2025抵押保證合同示范文本
- 2025年多翼式鼓風機合作協議書
- 2025存量房委托洽談合同
- 2025年房地產交易會簽購房合同警惕數字陷阱細心核對合同內容
- 2025畫冊版權、知識產權及注冊申請合同協議書范本
- 2025標準駕駛員雇傭合同范本
- 2025年風廓線儀(附帶RASS)合作協議書
- 2025年原子吸收分光光度計項目建議書
- 《物業保安培訓》課件
- 醫療機構安全生產獎勵與舉報制度
- 檔案管理方案
- 2024至2030年中國手打釘槍數據監測研究報告
- 2024年全國數控車工高級技師技能考試題庫(含答案)
- 《PBR次世代游戲建模技術》(微課版)課件 邱雅慧 3 高模制作、4 UV展開
- 中醫經絡完整課件
- 基本養老金核定表(樣式)
- 兼職教練合同協議書
- 2023年人教版六年級語文下冊期末考試卷(A4打印版)
- ESG信息披露、表現和評級綜合研究:國內外對比分析
評論
0/150
提交評論