




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、武漢輕工大學(xué)數(shù)計(jì)學(xué)院C語言課程設(shè)計(jì)報(bào)告班級:電腦類1307班學(xué)號:1305110009:韓品指導(dǎo)教師:賈瑜日期:2014年6月18日一、實(shí)驗(yàn)?zāi)康? .在編輯應(yīng)用程序過程中,逐步加深對 C語言編程的理解;2 .加強(qiáng)實(shí)踐的能力,動(dòng)手能力,同時(shí)進(jìn)一步對所學(xué)的知識進(jìn)行穩(wěn)固;3 .培養(yǎng)初步編程的能力,為以后的學(xué)習(xí)奠定基礎(chǔ)。二、實(shí)驗(yàn)內(nèi)容運(yùn)用所學(xué)的C語言知識編輯應(yīng)用程序:班級成績管理系統(tǒng)以及運(yùn)動(dòng)的時(shí)鐘三.系統(tǒng)軟件環(huán)境:四.課程設(shè)計(jì)題目:1 .必做題:班級成績管理系統(tǒng)對一個(gè)有N個(gè)學(xué)生的班級,每個(gè)學(xué)生有M門課程。該系統(tǒng)實(shí)現(xiàn)對班級 成績的錄入、顯示、修改、排序、保存、查詢等操作的管理。功能要 求:1本系統(tǒng)采用一個(gè)
2、結(jié)構(gòu)體數(shù)組,每個(gè)數(shù)據(jù)的結(jié)構(gòu)應(yīng)當(dāng)包括:學(xué)號、 M門課程名稱。2本系統(tǒng)顯示這樣的菜單:請選擇系統(tǒng)功能項(xiàng):a、成績錄入b、成績顯示c、成績保存d、成績排序e、成績修改要求先輸入密碼f、成績統(tǒng)計(jì)1顯示每門課程成績最高的學(xué)生的基本信息。2顯示每門課程的平均成績 ,柱狀圖顯示。3顯示超過某門課程平均成績的學(xué)生人數(shù)。4顯示某門課程每個(gè)分?jǐn)?shù)段區(qū)間的人數(shù),用餅狀圖顯示g、退出系統(tǒng)3執(zhí)行一個(gè)具體的功能之后,程序?qū)⒅匦嘛@示菜單。4將學(xué)生成績保存到文件中。五.數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)描述:一班級成績管理系統(tǒng)主函數(shù)菜單函數(shù)添加顯示查找修改刪除排序存檔讀檔退由一班級成績管理系統(tǒng)#include <string.h>#in
3、clude <stdio.h>#include <stdlib.h>#include<graphics.h>#include<conio.h>#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)體typedefstructStu
4、dentInfo/數(shù)據(jù)域unsigned intnum;/ 學(xué)號char name11;/float scores_COURSES;/ 各科成績/指針域structStudentInfo *next;/存放下一節(jié)點(diǎn)的地址student;/endstudent *head=NULL;/聲明鏈表頭結(jié)點(diǎn)student *curr=NULL;/聲明指向當(dāng)前節(jié)點(diǎn)的指針int total = 0;/聲明當(dāng)前節(jié)點(diǎn)個(gè)數(shù)intinit();/初始化鏈表intadd_stu();/添加新節(jié)點(diǎn)intshow_all();/顯示所有學(xué)生信息intfind_stu();/查找指定信息節(jié)點(diǎn)intmodify_stu();
5、/修改指定信息節(jié)點(diǎn)intremove_stu();刪除指定信息節(jié)點(diǎn)intsort_list();/對鏈表排序intsave_to_file();/將所有信息保存至文件intread_from_file(); 從文件中讀取信息int picture。;/畫分布圖int quit();/釋放所有節(jié)點(diǎn)空間int entering(student *input);/錄入學(xué)生信息void menu();void show_stu(student *show, int serial);/顯示指定學(xué)生信息void start();/ 程序開始界面void change(student *former, st
6、udent *latter, student *temp);/交換兩個(gè)節(jié)點(diǎn)的數(shù)據(jù)域void main()int h,flag1,flag2;char name20="hyw",password10="hyw"char person20,password110;printf ("tt *歡送進(jìn)入學(xué)生成績管理系統(tǒng)!*nn");printf ("ttt用戶登錄nn");for(h=0;h!=5;)printf("tttt用戶名:");gets(person);flag1=strcmp(person,n
7、ame);printf("tttt密碼:");gets(password1);flag2=strcmp(password,password1);if(flag1=0 && flag2=0)printf("tttt登陸成功!nn");menu();break;elseprintf ("ttt用戶名或密碼錯(cuò)誤!nn");printf ("ttt請注意:您還剩d次時(shí)機(jī)!nn",4-h);h+;)if (h=5)n");printf ("對不起,您輸入的用戶名或密碼有誤,已被強(qiáng)制退出)v
8、oid menu()(int choice=0;init();while(1)system("cls"); 清屏start();printf("請選擇:");scanf("%d",&choice);fflush(stdin);/ 清空緩沖區(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
9、;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;default: break;)system("pause");/暫停批文件的處理并顯示消息)intinit()head = (student *)malloc(_LEN);/ 為頭結(jié)點(diǎn)申請空間if (!head)/如果申請空間失敗,返回return OVERFLOW;)head->
10、next = NULL;/指向下一節(jié)點(diǎn)(空)curr = head->next;/當(dāng)前節(jié)點(diǎn)指針指向第一個(gè)結(jié)點(diǎn)total = 0;/當(dāng)前節(jié)點(diǎn)個(gè)數(shù)初始化為0(頭結(jié)點(diǎn)不計(jì)算在內(nèi))return DONE;)/*功能:頭插法添加新節(jié)點(diǎn),并刷新學(xué)生人數(shù)*/intadd_stu()student *add = (student *)malloc(_LEN);curr = head->next;/當(dāng)前節(jié)點(diǎn)指針指向第一個(gè)節(jié)點(diǎn)printf("t= 當(dāng)前已存入 %d 個(gè)同學(xué) n",total);printf("請輸入第 %d個(gè)學(xué)生的信息n",total+1);if
11、 (BACK = entering(add)free(add);return BACK;)head->next = add;/頭結(jié)點(diǎn)指針域指向新建的節(jié)點(diǎn)add->next = curr;/新建節(jié)點(diǎn)指針域指向第一個(gè)節(jié)點(diǎn)curr = add; /當(dāng)前節(jié)點(diǎn)指向新建的節(jié)點(diǎn)total += 1; / 更新學(xué)生總?cè)藬?shù) return DONE;)/*功能:顯示所有學(xué)生信息*/intshow_all()if ( 0 = total )printf("t=沒有可供顯示的學(xué)生信息!n");return NOFOUND;curr = head->next;當(dāng)前節(jié)點(diǎn)指針指向第一個(gè)
12、節(jié)點(diǎn)printf("t%4s%12s%12s"," 序號","學(xué)號","");for (int m=0; m<_COURSES; m+)printf("%7s"," 科目)printf("n");printf("tn");for (inti=1; i<=total; i+)show_stu(curr,i);curr = curr->next;當(dāng)前節(jié)點(diǎn)指針后移printf("tn");return DONE;/
13、*功能:查找指定學(xué)生信息*/intfind_stu()charstu_name11;int flag=1;printf("請輸入要查找的學(xué)生:");scanf("%s",stu_name);curr = head->next;/ 指向第一個(gè)節(jié)點(diǎn)while (curr != NULL)if (strcmp(stu_name,curr->name) = 0)printf("t%4s%12s%12s"," 序號","學(xué)號","");for (int m=0; m<
14、_COURSES; m+)printf("n");printf("tn");show_stu(curr,flag);return DONE;)curr = curr->next;+flag;)printf("t=沒有找到%s !請仔細(xì)核對再查找n",stu_name);return NOFOUND;)/*功能:修改指定學(xué)生的所有信息*/intmodify_stu()charstu_name11;int flag=1;curr = head->next;/ 指向第一個(gè)節(jié)點(diǎn)printf("請輸入要修改的學(xué)生的:&qu
15、ot;);scanf("%s",stu_name);while (curr != NULL)if (strcmp(stu_name,curr->name) = 0)printf("t%4s%12s%12s"," 序號","學(xué)號","");for (int m=0; m<_COURSES; m+)printf("%7s"," 科目)printf("n");printf("tn");show_stu(curr,flag
16、);entering(curr);printf("t=成功修改了 %s 的所有信息!n",stu_name);return DONE;)curr = curr->next;+flag;)printf("t= 沒有找到 %s !請仔細(xì)核對 n",stu_name);return NOFOUND;)/*功能:刪除指定學(xué)生*/intremove_stu()student *pre=head;charstu_name11;curr = head->next;/ 指向第一個(gè)節(jié)點(diǎn)printf("請輸入要?jiǎng)h除的學(xué)生的:");scanf(
17、"%s",stu_name);while (curr != NULL)if (strcmp(stu_name,curr->name) = 0)pre->next = curr->next;free(curr);-total;printf("t=已成功刪除 "%s"n",stu_name);return DONE;)pre = pre->next;curr = curr->next;)printf("t= 沒有找到 %s !請仔細(xì)核對 n",stu_name);return NOFOUN
18、D;)/*功能:對所有學(xué)生排序*/intsort_list()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(
19、stdin);switch (choice)case '1':while(curr_i->next != NULL)curr_j = curr_i->next;while (curr_j != NULL)if (curr_i->num>curr_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-
20、>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 = curr_i->next;printf("t= 排序成功!n");break;case '3':while(curr_i->next != NULL)curr_j = curr_i->ne
21、xt;while (curr_j != NULL)if (curr_i->scores0 <curr_j->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(temp);return DONE;)/*功能:保存數(shù)
22、據(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->n
23、ext;)fclose(fp);printf("t=信息已成功保存至文件"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=讀取文件會(huì)覆蓋當(dāng)前信息!是否確定載入文件?(y/n):
24、");scanf("%c",&judge);if (judge='n' | judge='N') return BACK;quit();/釋放以前所有信息的空間init();/重新初始化鏈表curr = head;/當(dāng)前節(jié)點(diǎn)指針指向頭結(jié)點(diǎn)student *add=(student *)malloc(_LEN);/申請空間存放讀取的信息while (fread(char *)add, _LEN, 1, fp)/由于存儲的信息是最新的信息在前,所以讀取的時(shí)候?qū)⑵涮砑釉阪湵砦瞐dd->next=curr->next;c
25、urr->next=add;curr=add;add=(student *)malloc(_LEN);+total;fclose(fp);printf("t=文件載入成功!當(dāng)前已有學(xué)生。n",total);return DONE;/*功能:釋放內(nèi)存*/ int quit()curr =head->next;student *temp=curr;while(curr != NULL)temp=curr->next;free(curr);curr=temp;curr=NULL;temp=NULL;free(head);/ 釋放頭節(jié)點(diǎn)return DONE;/*
26、功能:錄入一個(gè)學(xué)生的全部信息*/int entering(student *input)printf("n請輸入學(xué)生的學(xué)號(輸入0退出添加):");scanf("%d",&input->num);if (0 = input->num)return BACK;printf(" 請輸入學(xué)生的(五個(gè)漢字以內(nèi)):");scanf("%s",&input->name);printf(" 請輸入d門科目的成績(用空格隔開):",_COURSES);for (inti=0;
27、i<_COURSES; i+)scanf("%f",&input->scoresi);return DONE;/*功能:顯示指定學(xué)生的所有信息*/voidshow_stu(student *show, int serial)printf("t%4d%12d%12s",serial,show->num,show->name);for (inti=0; i<_COURSES; i+)printf("%7.1f",show->scoresi);)printf("n");)/*功
28、能:根據(jù)權(quán)限進(jìn)入不同的界面*/ void start()printf("n")printf("ttt歡送使用學(xué)生成績管理系統(tǒng)n");printf("t*n");printf("t*n");printf("t|t1-添加學(xué)生.t2顯示信息.|n");printf("t|t3-查找學(xué)生.t4修改信息.|n");printf("t|t5-刪除學(xué)生 .t6學(xué)生排序.|n");printf("t|t7-信息存檔.t8讀取存檔.|n");print
29、f("t|t9-成績統(tǒng)計(jì).t0退出.|n");*void change(student *former, student *latter,student *temp)*temp = *former;strcpy(former->name , latter->name);strcpy(latter->name , temp->name);former->num = latter->num;latter->num = temp->num;for (inti=0; i<_COURSES; i+)former->score
30、si = 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:60-0 黑;"x=a/(a+b+c)*6; y=(a+b)/(a+b+c)*6;circle(320,240,160);setfillcolor(BLUE);fillpie(160,80,480,400,0,y);setfillcolor(RED);fillpie(160
31、,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,600,350);char s="科目";outtextxy(580,320,s);char p=" 平均分"outtextxy(100,100,p);setfillcolor(LIGHTMAGENTA);fillrectangle(250,300,300,350);fillrectangle(350,250,400,350);fillrectangle(450,290,500,350);getch();closegraph()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 云計(jì)算在醫(yī)療健康中的應(yīng)用方案
- 通信工程網(wǎng)絡(luò)技術(shù)考試題
- 音樂版權(quán)轉(zhuǎn)讓和使用授權(quán)協(xié)議書
- 科技創(chuàng)新人才培養(yǎng)與引進(jìn)現(xiàn)狀分析表
- 心理學(xué)社會(huì)認(rèn)知測試題目集
- 公司年度會(huì)議演講實(shí)錄
- 互聯(lián)網(wǎng)數(shù)據(jù)中心IDC服務(wù)合作協(xié)議
- 信息技術(shù)在農(nóng)村應(yīng)用發(fā)展合作框架協(xié)議
- 食管癌最佳治療
- 創(chuàng)業(yè)經(jīng)歷真實(shí)故事
- 三人合伙餐飲合同范本
- (一模)2025年滁州市高三第一次教學(xué)質(zhì)量監(jiān)測 英語試卷(含標(biāo)準(zhǔn)答案)
- 樹木栽培與養(yǎng)護(hù)合同樣本2025
- 人教PEP版(2024)三年級下冊英語Unit3 Learning better單元整體教學(xué)設(shè)計(jì)(共6課時(shí))
- 2025年安徽工貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫(有一套)
- 2025年哈爾濱傳媒職業(yè)學(xué)院單招職業(yè)技能測試題庫完整
- 2025年河南林業(yè)職業(yè)學(xué)院單招職業(yè)技能測試題庫完整版
- 地理-浙江省強(qiáng)基聯(lián)盟2025年2月高三年級聯(lián)考試題和答案
- (必刷)湖南省醫(yī)學(xué)院校高職單招職業(yè)技能測試必會(huì)題庫(含往年真題)
- 《農(nóng)藥學(xué)課程殺菌劑》課件
- 充電樁的建設(shè)合作方案
評論
0/150
提交評論