學生成績管理系統(tǒng)-C語言課程設計_第1頁
學生成績管理系統(tǒng)-C語言課程設計_第2頁
學生成績管理系統(tǒng)-C語言課程設計_第3頁
學生成績管理系統(tǒng)-C語言課程設計_第4頁
學生成績管理系統(tǒng)-C語言課程設計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、廣州XX學院課程設計(實訓I)報告課 程 C語言課程設計題目 學生成績管理系統(tǒng)專業(yè) 計算機科學與技術指導教師 XX班級 181 學號 201822 姓名 李XX2019年5月30日目錄1需求分析 22設計思路2.3詳細設計3.3.1 編譯預處理3.3.2 數(shù)據(jù)結構定義3.3.3 菜單函數(shù)界面的設計3.3.4 添加學生信息模塊4.3.5 顯示學生信息 5.3.6 按學號排序.6.3.7 按總成績排序7.3.8 刪除單個學生7.3.9 查找指定學生9.3.10 修改學生信息 9.3.11 查看各門課程的成績情況 1.03.12 保存并退出 1.1.4調試分析.124.1 運行工具介紹124.2 調

2、試操作.125測試結果.135.1 添加學生信息1.35.2 顯示學生信息1.35.3 查看各門課程的成績情況 146用戶使用說明.147參考資料.1551、需求分析學校工作流程分析:學校工作總體規(guī)劃由教務人員在學生成績管理系統(tǒng)中輸入學 生的基本信息并對其進行維護管理, 包括對信息的增加、修改及對信息的各項處理操 作等。新的學年,教務人員首先編排班級,冉對在校學生進行基本的信息錄入,新生入 學后由教務人員在管理系統(tǒng)中完成新學生信息的維護。在每個學期開始,教務處根據(jù)班級的情況,以班為單位,為每個班級安排一個班主任,并對各科老師進行安排。每 舉行一次考試后由任課老師對成績進行錄入。班主任對本班的成

3、績匯總。并進行排名, 并對本年級各科成績及總成績進行排名。教務處、班主任及任課老師跟據(jù)實際情況對 錄入的成績進行維護管理,各位同學對以上錄入的信息可以跟據(jù)自己的需要進行適當 的查詢。而且,學生管理系統(tǒng)可以對數(shù)據(jù)庫中的信息進行有效處理,防止數(shù)據(jù)錯亂。 也能夠按照用戶選擇的不同條件進行簡單查詢,方便用戶操作,并減少用戶的操作。 2、設計思路(1)系統(tǒng)主界面允許用戶選擇想要的操作,包括輸入學生信息、顯示學生信息、 查詢學生信息、修改學生信息、刪除學生信息、計算成績以及成績的排序等。通過輸 入相應的序號選擇相應的操作。(2)錄入學生成績信息,用戶根據(jù)提示輸入學生的學號、姓名、以及三門課的成 績,高等數(shù)

4、學的成績、大學英語的成績和C語言的成績。輸入完成一條學生記錄,可 根據(jù)提示信息繼續(xù)輸入下一條學生記錄或者繼續(xù)其他的操作。允許輸入多條學生的成 績信息記錄。輸入完的學生記錄暫時保持在電腦內存中,等待下一步的操作。(3)查詢學生信息,用戶可以根據(jù)學號或者姓名從系統(tǒng)保存的文件中對學生所有 的信息進行查詢,如果沒有查詢到任何信息,系統(tǒng)會提示信息。(4)修改學生信息,首先提示用戶輸入要進行修改的學生的名字, 如果文件中有 該學生的信息存在,則提示用戶輸入要修改的學生的基本信息、 各科成績等,并將修 改結果重新存儲在文件中。如果用戶沒有找到要修改的學生信息,系統(tǒng)將給出提示。(5)刪除學生信息,首先提示用戶

5、輸入要刪除學生的名字,系統(tǒng)根據(jù)用戶輸入的 信息在文件中查找,如果找到,直接刪除該學生全部信息,如果沒有找到,系統(tǒng)給出 提示信息。(6)計算各科成績平均分,主要進行學生成績的平均分計算,進入計算界面,并 選擇相對應的序號,系統(tǒng)自動對各科進行平均分計算。(7)顯示學生信息,用戶在選擇了顯示學生信息后,將剛輸入的學生信息從文件 中調出來顯示,如果沒有數(shù)據(jù),則提示無“沒有該學生”。(8)學生排序,成績信息輸入完整后,根據(jù)學生的總分或者學號對學生從小到大 進行排序,在顯示學生信息的時候可以看到學生的其他信息。(10)操作完成后對操作結果進行保存。運行完畢,退出系統(tǒng)。3、詳細設計3.1 編譯預處理C語言的

6、預處理功能主要有:(1)宏定義;(2)文件包含;(3)條件編譯。#include<stdio.h>#include<stdlib.h>#include<string.h>3.2 數(shù)據(jù)結構定義學生成績管理系統(tǒng)中的變量有學號,性別,名字和三科成績,這些數(shù)據(jù)類型 各不相同,因此需要定義結構體類型。typedef struct/*學號*/*姓名*/*性別*/*成績*/*平均分*/*總成績*/char num10;char name20;char sex2;int score3;float avg;int sum;Student;Student studentAll8

7、0; /* 結構體數(shù)組變量 */3.3 菜單函數(shù)界面的設計系統(tǒng)與用戶交換的界面是通過菜單實現(xiàn)的,菜單按預定義格式顯示主菜 單界面,等待用戶輸入0-8中的任一數(shù)據(jù),系統(tǒng)會根據(jù)用戶的輸入調用相應的功 能模塊,實現(xiàn)用戶所要求的操作。菜單主要通過 printf函數(shù)顯示一些文本選項來 構建一個簡單的字符界面,并且讓用戶通過輸入關鍵字從0-8之間選擇相應的操作,函數(shù)通過switch調用各功能模塊:/*菜單函數(shù)*/int menu_select()int check_number;dosystem("cls");/*運行前清屏 */printf("t*學生成績管理系統(tǒng) *n)/

8、* 菜單添加學生信息 顯示學生信息 按學號排序 按總成績排序*n")*n")*n")*n")選擇*/printf("t*| 1.printf("t*| 2.printf("t*| 3.printf("t*| 4.printf("t*|5.查找單個學生*nprintf("t*|6.刪除指定學生*nprintf("t*|7.修改學生信息*nprintf("t*|8.查看各門課程的成績情況*nprintf("t*|9.待定功能*nprintf("t*n"

9、;);")")")")")")printf("t*|0.保存退出*n/*讀入選擇*/printf("請輸入選擇(0-9):");scanf("%d”,&check_number);while(check_number<0|check_number>9);return(check_number);/* 返回選擇*/3.4 添加學生信息模塊創(chuàng)建學生信息函數(shù)由void Input函數(shù)實現(xiàn),首先定義各個數(shù)據(jù)的類型,然后判 斷學生信息是否存在,倘若沒有該學生,則開始輸入新學生的全部信息

10、。錄入完 畢可以選擇繼續(xù)錄入或者返回。具體函數(shù)如下:void Input(Student student)int i=0,j;char flag,clear10;/*clear10為清除多余的數(shù)據(jù)所用*/char studentNum10;存放判斷學生學號int exist = 0;/判斷學生信息標志/判斷是否已經(jīng)存在相同學生的學號while(flag!='n'&&flag!='N')/判斷 flag 是不是 n/N,以此判斷是否繼續(xù)輸入學生信息printf("請輸入學生學號:");scanf("%s",s

11、tudentNum);while(strcmp(studenti.num,studentNum)!=0&&i<student_number) i+;/*查找判斷*/查找到學生,無法增加學生信息,返回主函數(shù)if(i<student_number)printf("已有相同學號的學生,請重新輸入n");/如果沒有查找到學生,即可增加學生信息else if(i=student_number)memset(studenti.num, 0, sizeof(studenti.num);/字符串清空 strcpy(studenti.num,studentNum)

12、;printf("學生姓名:");scanf("%s",studentstudent_);printf("學生性別:");scanf("%s",studentstudent_number.sex);printf("學生高數(shù)成績:");scanf("%d”,&studentstudent_number.score0);/高數(shù)成績錄入總成績/studentstudent_number.sum += studentstudent_number.score0; p

13、rintf("學生大英成績:");scanf("%d”,&studentstudent_number.score1);/大英成績錄入總成績/studentstudent_number.sum += studentstudent_number.score1;printf("學生C語言成績:");scanf("%d”,&studentstudent_number.score2);/C語言成績錄入總成績/studentstudent_number.sum += studentstudent_number.score2;stu

14、dentstudent_number.sum=0;for(j=0;j<3;j+)studentstudent_number.sum+=studentstudent_number.scorej;studentstudent_number.avg = (float)studentstudent_number.sum/3;/printf("%.2fn",studentstudent_number.avg);gets(clear);/*消除多余的輸入printf("此學生信息錄入完畢,是否繼續(xù)?(Y/N)");scanf("%c",&a

15、mp;flag);/輸入判斷student_number+;i=0;3.5顯示學生信息顯示函數(shù)void Display主要顯示學生基本信息,每當操作完成的時候一般 都會調用此函數(shù)進行預覽。該函數(shù)運行后會逐條顯示學生信息,直到運行結束, 返回到主菜單界面。具體顯示函數(shù)如下:void Display(Student student) int i=0; FILE *fp;/*定義文件指針*/if(fp=fopen("D:Studentstudent.txt","rb")=NULL)/* 打開文件*/ printf("不能打開文件n");/*

16、打開失敗信息*/ printf(""); system("pause"); exit(0); printf("%dn",student_number);/* 循環(huán)duqu數(shù)據(jù)*/ while(i<student_number) printf("%-8s%-8s%-s %3d%3d%3d%.2f %3dn",studenti.num,,studenti.sex,studenti.score0,studenti.score1,studenti.score2,stu denti.avg,s

17、tudenti.sum); i+; system("pause"); fclose(fp); 3.6按學號排序學生成績排序函數(shù)void Sort_by_num用來對學生成績按從小到大的順序 排序,在函數(shù)里主要運用了 “冒泡法”進行排序。通過兩個for循環(huán)實現(xiàn)冒泡排序的全過程,外層for循環(huán)決定冒泡排序的趟數(shù),內層for循環(huán)決定每趟所進行 兩兩比較的次數(shù)。具體函數(shù)如下:void Sort_by_num(Student student)Student temp;for ( i = 0; i < student_number; i+)for ( j = 0; j <

18、student_number-1; j+)if (strcmp(studentj.num , studentj + 1.num)>0)temp=studentj;studentj=studentj+1;studentj+1=temp;3.7 按總成績排序成績排序函數(shù)void Sort_by_sum與學號排序函數(shù)具有異曲同工之妙,具 體函數(shù)如下:void Sort_by_sum(Student student)int i,j;Student temp;for ( i = 0; i < student_number; i+)for ( j = 0; j < student_num

19、ber-1; j+)if (studentj.sum >studentj + 1.sum)temp=studentj;studentj=studentj+1;studentj+1=temp;3.8 刪除單個學生刪除函數(shù)void Delete_a_record,首先確定找到你輸入名字的這個學生的 所有信息,然后用后一個學生的信息覆蓋該學生的相應信息,再寫入文件中,從 而達到刪除該學生信息的目的。具體函數(shù)如下:void Delete_a_record(Student student()char name20;int i,j;char ch2;FILE *fp;printf("請輸入

20、要delete的名字:");scanf("%s”,&name);for(i=0;i<student_number;i+) if(strcmp(name,)=0) j=i;printf("學號:sn性別:sn高數(shù)成績:dn大英成績:%dnC 語言成績: %dn 平均成績: %fn 總成 績:dn",studenti.num,studenti.sex,studenti.score0,studenti.score1,student i.score2,studenti.avg,studenti.sum); else pri

21、ntf("沒有這個學生!"); break; printf("find the student,delete?(y/n)"); scanf("%s",ch);if(strcmp(ch,"Y")=0|strcmp(ch,"y")=0)/* 判斷是否要進行刪除 */ for(j=i;j<student_number;j+)studentj=studentj+1;student_number-;printf("delete successfully!n");for(i=0;i

22、<student_number;i+)if(fp=fopen("D:Studentstudent.txt","rb")=NULL)/*打開文件*/printf("不能打開文件n");/*打開失敗信息*/printf("");system("pause");exit(0);3.9 查找指定學生查找函數(shù)void Query_a_record,通過輸入名字遍歷文件中相同的char類型的字符串來確認該學生,并且打印顯示該學生的所有信息。具體函數(shù)如下:void Query_a_record(Stud

23、ent student) char name20;int i;printf("請輸入要查找的名字:");scanf("%s”,&name);for(i=0;i<student_number;i+) if(strcmp(name,)=0) printf("學號:sn性別:sn高數(shù)成績:dn大英成績:%dnC 語言成績: %dn 平均成績: %fn 總成 績:dn",studenti.num,studenti.sex,studenti.score0,studenti.score1,student i.scor

24、e2,studenti.avg,studenti.sum); else printf("沒有這個學生!"); break; 3.10 修改學生信息修改函數(shù)oid modifyStudentinformation是對之前所輸入的信息出現(xiàn)錯誤, 或者需要修改時使用。用戶根據(jù)提示輸入要編輯學生信息的學號,并按名字查找 該學生的基本信息,如果找到該學生,系統(tǒng)提示要修改的各項內容,修改完成后 提示成功。具體函數(shù)如下:void modifyStudentinformation(Student student口)char name20; int i,j;FILE *fp;printf(&

25、quot;請輸入要修改信息的學生名字:”);scanf("%s”,&name);for(i=0;i<student_number;i+)if(strcmp(name,)=0)printf("學號:n");scanf("%s",studenti.num);printf("性別:n");scanf("%s",studenti.sex);printf("高數(shù):n");scanf("%d”,&studenti.score0);print

26、f("大英:n");scanf("%d”,&studenti.score1);printf("C 語言:n");scanf("%d”,&studenti.score2);elseprintf("沒有這個學生!");break;/*/*打開失敗for(i=0;i<student_number;i+)if(fp=fopen("D:Studentstudent.txt","rb")=NULL)打開文件*/printf("不能打開文件n");

27、信息*/printf("");system("pause");exit(0);printf("已成功修改!");3.11 查看各門課程的成績情況計算函數(shù)void showClass求各科的平均分。首先計算各科的總成績,最后進 行平均分求值,計算完成顯示最后計算結果。具體函數(shù)如下:void showClass(Student student口)int j;int sum=0;float avg1,avg2,avg3;printf("高數(shù)平均分:");for(j=0;j<student_number;j+)sum

28、=studentj.score0+sum;avg1=sum/student_number;printf("%fn",avg1);sum=0;printf("大英平均分:");for(j=0;j<student_number;j+)sum=studentj.score1+sum;avg2=sum/student_number;printf("%fn",avg2);sum=0;printf("C語言平均分:");for(j=0;j<student_number;j+)sum=studentj.score2+

29、sum;avg3=sum/student_number;printf("%fn",avg3);3.12 保存并退出保存函數(shù)void WritetoText主要用來對學生成績運行后的結果進行保存。該函 數(shù)在運行之前先要定義一個指向文件的指針*fp ,在定義一個移動指針fp和保存輸出的文件名studenti。用戶根據(jù)系統(tǒng)的提示,輸入要保存的文件名和保存路徑。 系統(tǒng)以只寫(“w”)方式打開文件,如果移動指針fp不為空則寫入一條記錄。運 行結束返回主菜單。運行過程函數(shù):void WritetoText(Student student口)int i = 0;FILE *fp; /*定

30、義文件指針*/if(fp=fopen("D:Studentstudent.txt","w")=NULL)/* 打開文件*/ printf("不能打開文件n"); system("pause"); exit(0); fprintf(fp,"%dn",student_number);/*循環(huán)寫入數(shù)據(jù)*/ while(i<student_number) fprintf(fp,"%-8s%-8s%-s %3d%3d%3d%.2f %3dn",studenti.num,stude

31、,studenti.sex,studenti.score0,studenti.score1,studenti.score2,stu denti.avg,studenti.sum); i+; fclose(fp);/* 關閉文件*/ 4、調試分析 4.1運行工具介紹Dev-C+是一個Windows環(huán)境下的一個適合于初學者使用的輕量級C/C+集成開發(fā)環(huán)境(IDE),它是一款自由軟件,遵守 GPL許可協(xié)議分發(fā)源代碼。Dev-C+使用MingW64/TDM-GCC 編譯器,遵循C+ 11標準,同時兼容C+98標準。開發(fā)環(huán)境包括多頁面窗口、工程編輯器以及調試器等,在工程編輯 器中集合了編

32、輯器、編譯器、連接程序和執(zhí)行程序,提供高亮度語法顯示的,以 減少編輯錯誤,還有完善的調試功能。4.2調試操作將編寫好的程序在Dev-C+的代碼編輯器里進行編輯,語法檢查正確后進行 運行。系統(tǒng)進入運行后,首先進入學生成績管理系統(tǒng)的主菜單界面,系統(tǒng)提示用 戶輸入0-9之間的不同數(shù)字,來實現(xiàn)不同的操作。主菜單界面如圖1所示。3 E:M®EHomeworkChixu nCCC.exei3Ci型*學生成績管理系統(tǒng)*1.添加學生信息*+2.顯示學生信息+*3.按學號排序*+4,拄總成績排序* 5.查我單外學生* 6,刪除指定學生* 7,修改學生信息*+8,查看務門課程的成績情況* 9.待定功能*

33、 6.探后通由*iJj T* Vu*> gi jJLak- -mjj faJj k-hJa史dfcta J«- »AiiJj »Ai = 串Ai =:irTr f;f ;r r ;r irTv 嘯f .; r;'r wsri r;'r 叫弓,7'' ?S. pZhr?n, M:r 耳.s rj 耳.fTr 耳''Jf ;'r itTr ;1'.;"若,請輸入選擇(0-9):圖i學生成績管理系統(tǒng)主界面5、測試結果5.1 添加學生信息在主菜單界面輸入1,按回車鍵。結果如下圖:I EA再面E

34、HQmBorkCshixunTCCC.exe X* .*+*+#*學 生 成嫦管理 系紡*木木*4*#本* L添加學生信息* 2顯示學生信息* 工按學學排序* 4.按總成績排序* 5.查找曜個學生* 6.刪除指定學生* 工修改學生信息* &青看各門課程的成績情況* 以待定功能* 0*僅而通山* *才* * * * *東* *求*京水*請輸入選擇(07):1南入學生信息情輸入學生學號:201933學4;姓農(nóng):ho8?學生性別:用學生高效成績:普口人大英或績:77怦生Ci吾占成績:酩此學生彷息錄入完畢,是否繼續(xù)? wx)5.2顯示學生信息在主菜單界面輸入2接回車。如下圖:句&刪除指定學生* 1、修改學生信息* 8.荏行各門課程的成績情況* 9.待定功能* 0.保存退出*水木木小水*木本水本本水水冰水*冰冰本冰*冰不中小本本卡冰水率水冰本冰率水*本本本請輸入選擇(0-9) :2顯小已錄201902z

溫馨提示

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

評論

0/150

提交評論