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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、.武漢輕工大學(xué)數(shù)計學(xué)院C 語言課程設(shè)計報告班級 : 計算機類 1307 班學(xué)號:1305110009姓名:韓晶指導(dǎo)教師:賈瑜日期:2014年 6月 18日一、實驗?zāi)康?. 在編輯應(yīng)用程序過程中,逐步加深對C語言編程的理解;.2. 加強實踐的能力,動手能力,同時進(jìn)一步對所學(xué)的知識進(jìn)行鞏固;3. 培養(yǎng)初步編程的能力,為以后的學(xué)習(xí)奠定基礎(chǔ)。二、實驗內(nèi)容運用所學(xué)的 C 語言知識編輯應(yīng)用程序: 班級成績管理系統(tǒng)以及運動的時鐘三系統(tǒng)軟件環(huán)境:本程序主要運行在:Visual C+ 6.0Turbo C/C+ 3.0四. 課程設(shè)計題目:1. 必做題:班級成績管理系統(tǒng)對一個有 N個學(xué)生的班級, 每個學(xué)生有 M門

2、課程。該系統(tǒng)實現(xiàn)對班級成績的錄入、顯示、修改、排序、保存、查詢等操作的管理。功能要求:( 1)本系統(tǒng)采用一個結(jié)構(gòu)體數(shù)組, 每個數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括: 學(xué)號、姓名、 M門課程名稱。( 2)本系統(tǒng)顯示這樣的菜單: 請選擇系統(tǒng)功能項:.a、成績錄入b、成績顯示c、成績保存d、成績排序e、成績修改(要求先輸入密碼)f 、成績統(tǒng)計1)顯示每門課程成績最高的學(xué)生的基本信息。2)顯示每門課程的平均成績,柱狀圖顯示。3)顯示超過某門課程平均成績的學(xué)生人數(shù)。4)顯示某門課程每個分?jǐn)?shù)段區(qū)間的人數(shù),用餅狀圖顯示。g、退出系統(tǒng)( 3)執(zhí)行一個具體的功能之后,程序?qū)⒅匦嘛@示菜單。( 4)將學(xué)生成績保存到文件中。.五數(shù)據(jù)結(jié)

3、構(gòu)設(shè)計描述:(一)班級成績管理系統(tǒng)主函數(shù)菜單函數(shù)添加顯示查找修改刪除排序存檔讀檔退出六. 源程序(一)班級成績管理系統(tǒng)#include #include #include #include#include#define _COURSES 3/ 定義科目數(shù)#define _LEN sizeof(student)/定義結(jié)構(gòu)體大小/ 枚舉返回值情況enum statusOVERFLOW = -1, / 內(nèi)存 ( 溢出 ) 問題DONE = 0, /成功.NOFOUND = 1, / 不存在OPENFAIL = 2, /打開 ( 文件 ) 失敗BACK = 3 /返回;/end/ 定義學(xué)生信息結(jié)構(gòu)體t

4、ypedefstructStudentInfo/ 數(shù)據(jù)域unsigned intnum;/學(xué)號char name11;/姓名float scores_COURSES;/各科成績/ 指針域structStudentInfo *next;/student;/end存放下一節(jié)點的地址student *head=NULL;/聲明鏈表頭結(jié)點student *curr=NULL;/聲明指向當(dāng)前節(jié)點的指針int total = 0;/聲明當(dāng)前節(jié)點個數(shù)intinit();/初始化鏈表intadd_stu();/添加新節(jié)點intshow_all();/顯示所有學(xué)生信息intfind_stu();/查找指定信息節(jié)

5、點intmodify_stu();/修改指定信息節(jié)點intremove_stu();/刪除指定信息節(jié)點intsort_list();/對鏈表排序intsave_to_file();/將所有信息保存至文件intread_from_file();/從文件中讀取信息int picture();/畫分布圖int quit();/釋放所有節(jié)點空間.int entering(student *input);/ void menu();錄入學(xué)生信息void show_stu(student *show, int serial);/顯示指定學(xué)生信息void start();/程序開始界面void change

6、(student *former, student *latter, student *temp);/void main()int h,flag1,flag2;char name20=hyw,password10=hyw;char person20,password110;交換兩個節(jié)點的數(shù)據(jù)域printf (tt *歡迎進(jìn)入學(xué)生成績管理系統(tǒng)!*nn);printf (tttfor(h=0;h!=5;)用 戶登 錄nn);printf(tttt用戶名 :);gets(person);flag1=strcmp(person,name);printf(tttt密碼 :);gets(password1

7、);flag2=strcmp(password,password1);if(flag1=0 & flag2=0)printf(tttt登陸成功!nn);menu();break;elseprintf (ttt用戶名或密碼錯誤!nn);printf (ttt請注意:您還剩%d次機會 !nn,4-h);.h+;if (h=5)printf (對不起,您輸入的用戶名或密碼有誤, 已被強制退出。n);void menu()int choice=0;init();while(1)system(cls);/清屏start();printf(請選擇: );scanf(%d,&choice);fflush(s

8、tdin);/清空緩沖區(qū)switch (choice)case 1:add_stu(); break;case 2:show_all();break;case 3: find_stu(); break;case 4: modify_stu(); break;case 5: remove_stu(); break;case 6: sort_list(); break;case 7: save_to_file(); break;case 8: read_from_file(); break;case 9: picture(); break;case 0: quit();exit(0); break

9、;default: break;system(pause);/暫停批文件的處理并顯示消息.intinit()head = (student *)malloc(_LEN);/為頭結(jié)點申請空間if (!head)/如果申請空間失敗, 返回return OVERFLOW;head-next = NULL;/指向下一節(jié)點 ( 空)curr = head-next;/當(dāng)前節(jié)點指針指向第一個結(jié)點total = 0;/當(dāng)前節(jié)點個數(shù)初始化為0( 頭結(jié)點不計算在內(nèi))return DONE;/* 功能:頭插法添加新節(jié)點,并刷新學(xué)生人數(shù)*/intadd_stu()student *add = (student *)

10、malloc(_LEN);curr = head-next;/當(dāng)前節(jié)點指針指向第一個節(jié)點printf(t=當(dāng)前已存入 %d 個同學(xué) n,total);printf(請輸入第 %d 個學(xué)生的信息 n,total+1);if (BACK = entering(add)free(add);return BACK;head-next = add;/頭結(jié)點指針域指向新建的節(jié)點add-next = curr;/新建節(jié)點指針域指向第一個節(jié)點curr = add; /當(dāng)前節(jié)點指向新建的節(jié)點total += 1; /更新學(xué)生總?cè)藬?shù)return DONE;/* 功能:顯示所有學(xué)生信息*/.intshow_all(

11、)if ( 0 = total )printf(t=沒有可供顯示的學(xué)生信息!n);return NOFOUND;curr = head-next;/當(dāng)前節(jié)點指針指向第一個節(jié)點printf(t%4s%12s%12s,序號 ,學(xué)號 , 姓名 );for (int m=0; m_COURSES; m+)printf(%7s,科目 );printf(n);printf(t-n);for (inti=1; inext;/當(dāng)前節(jié)點指針后移printf(t-n);return DONE;/* 功能:查找指定學(xué)生信息intfind_stu()charstu_name11;int flag=1;*/printf

12、( 請輸入要查找的學(xué)生姓名 scanf(%s,stu_name);:);curr = head-next;/指向第一個節(jié)點while (curr != NULL)if (strcmp(stu_name,curr-name) = 0)printf(t%4s%12s%12s,序號 , 學(xué)號 ,姓名 );for (int m=0; mnext;+flag;printf(t=沒有找到 %s ! 請仔細(xì)核對姓名再查找n,stu_name);return NOFOUND;/* 功能:修改指定學(xué)生的所有信息intmodify_stu()charstu_name11;int flag=1;*/curr = h

13、ead-next;/指向第一個節(jié)點printf( 請輸入要修改的學(xué)生的姓名 scanf(%s,stu_name); while (curr != NULL):);if (strcmp(stu_name,curr-name) = 0)printf(t%4s%12s%12s,序號 , 學(xué)號 ,姓名 );for (int m=0; mnext;+flag;printf(t=沒有找到 %s ! 請仔細(xì)核對姓名n,stu_name);return NOFOUND;/* 功能:刪除指定學(xué)生intremove_stu()student *pre=head;charstu_name11;*/curr = he

14、ad-next;/指向第一個節(jié)點printf(請輸入要刪除的學(xué)生的姓名:);scanf(%s,stu_name);while (curr != NULL)if (strcmp(stu_name,curr-name) = 0)pre-next = curr-next;free(curr);-total;printf(t=已成功刪除 %sn,stu_name);return DONE;pre = pre-next;curr = curr-next;printf(t=沒有找到 %s ! 請仔細(xì)核對姓名n,stu_name);return NOFOUND;./* 功能:對所有學(xué)生排序intsort_l

15、ist()student *temp = (student *)malloc(_LEN);student *curr_i = head-next;student *curr_j = NULL;char choice=0;*/printf(t t1-按學(xué)號排序.t2-按姓名排序.n);printf(t t3-按科目排序.t0-退出排序.n);printf(請選擇: );scanf(%c,&choice);fflush(stdin);switch (choice)case 1:while(curr_i-next != NULL)curr_j = curr_i-next;while (curr_j

16、!= NULL)if (curr_i-numcurr_j-num)change(curr_i,curr_j,temp);curr_j = curr_j-next;curr_i = curr_i-next;printf(t=排序成功 !n);break;case 2:while(curr_i-next != NULL)curr_j = curr_i-next;.while (curr_j != NULL)if (strcmp(curr_i-name , curr_j-name) 0)change(curr_i,curr_j,temp);curr_j = curr_j-next;curr_i =

17、curr_i-next;printf(t=排序成功 !n);break;case 3:while(curr_i-next != NULL)curr_j = curr_i-next;while (curr_j != NULL)if (curr_i-scores0 scores0)change(curr_i,curr_j,temp);curr_j = curr_j-next;curr_i = curr_i-next;printf(t=排序成功 !n);break;case 0:free(temp);return BACK;default:.printf(t=輸入有誤!n);break;free(t

18、emp);return DONE;/* 功能:保存數(shù)據(jù)到文件intsave_to_file()curr=head-next;if (total = 0)*/printf(t=目前還沒有任何信息,不用保存!n);return BACK;FILE *fp;if(fp=fopen(record.dat,wb)=NULL)printf(t=文件打開失敗 !n);return OPENFAIL;while (curr != NULL)/ 將數(shù)據(jù)成塊寫入文件fwrite(char *)curr, _LEN, 1, fp);curr=curr-next;fclose(fp);printf(t=信息已成功保存

19、至文件record.dat文件中 n);return DONE;/* 功能:從文件中讀取數(shù)據(jù)*/intread_from_file().char judge=y;FILE *fp;if(fp=fopen(record.dat,r)=NULL)printf(文件不存在或者打開失敗!n);return OPENFAIL;printf(t=讀取文件會覆蓋當(dāng)前信息! 是否確定載入文件?(y/n):);scanf(%c,&judge);if (judge=n | judge=N)return BACK;quit();/釋放以前所有信息的空間init();/重新初始化鏈表curr = head;/當(dāng)前節(jié)點

20、指針指向頭結(jié)點student *add=(student *)malloc(_LEN);/申請空間存放讀取的信息while (fread(char *)add, _LEN, 1, fp)/由于存儲的信息是最新的信息在前,所以讀取的時候?qū)⑵涮砑釉阪湵砦瞐dd-next=curr-next;curr-next=add;curr=add;add=(student *)malloc(_LEN);+total;fclose(fp);printf(t=文件載入成功 ! 當(dāng)前已有 %d個學(xué)生。 n,total);return DONE;/* 功能:釋放內(nèi)存*/int quit()curr =head-nex

21、t;.student *temp=curr;while(curr != NULL)temp=curr-next;free(curr);curr=temp;curr=NULL;temp=NULL;free(head);/釋放頭節(jié)點return DONE;/* 功能:錄入一個學(xué)生的全部信息 int entering(student *input)*/printf(n請輸入學(xué)生的學(xué)號( 輸入0 退出添加 ) : );scanf(%d,&input-num);if (0 = input-num)return BACK;printf(請輸入學(xué)生的姓名( 五個漢字以內(nèi) ) :);scanf(%s,&inp

22、ut-name);printf(請輸入 %d門科目的成績 ( 用空格隔開 ) :, _COURSES);for (inti=0; iscoresi);return DONE;/* 功能:顯示指定學(xué)生的所有信息*/voidshow_stu(student *show, int serial)printf(t%4d%12d%12s,serial,show-num,show-name);for (inti=0; iscoresi);printf(n);/* 功能:根據(jù)權(quán)限進(jìn)入不同的界面void start()printf(n)*/printf(ttt歡迎使用學(xué)生成績管理系統(tǒng)n);printf(t*n

23、);printf(t|t1-添 加 學(xué) 生 .t2-顯 示信 息.|n);printf(t|t3-查 找 學(xué) 生 .t4-修 改信 息.|n);printf(t|t5-刪 除 學(xué) 生 .t6-學(xué) 生排 序.|n);printf(t|t7-信 息 存 檔 .t8-讀 取存 檔.|n);printf(t|t9-成 績 統(tǒng) 計 .t0-退出.|n);printf(t*n);void change(student *former, student *latter,student *temp)*temp = *former;strcpy(former-name , latter-name);strcpy

24、(latter-name , temp-name);former-num = latter-num;latter-num = temp-num;for (inti=0; iscoresi = latter-scoresi;latter-scoresi = temp-scoresi;voidbing(double a,doubleb,int c)initgraph(640,480);doublex,y;.char s= A:10080紅 ; B:8060藍(lán) ; C:600黑 ;x=a/(a+b+c)*6; y=(a+b)/(a+b+c)*6;circle(320,240,160);setfill

25、color(BLUE);fillpie(160,80,480,400,0,y);setfillcolor(RED);fillpie(160,80,480,400,0,x);outtextxy(160,40,s);getch();closegraph();voidzhu(float a,floatb,float c)initgraph(640,480);setcolor(YELLOW);line(200,350,600,350);line(200,350,200,50);line(190,60,200,50); line(210,60,200,50);line(590,340,600,350);line(590,360,

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論