C語言程序設(shè)計 課件 任務(wù) 10 綜合項目實踐_第1頁
C語言程序設(shè)計 課件 任務(wù) 10 綜合項目實踐_第2頁
C語言程序設(shè)計 課件 任務(wù) 10 綜合項目實踐_第3頁
C語言程序設(shè)計 課件 任務(wù) 10 綜合項目實踐_第4頁
C語言程序設(shè)計 課件 任務(wù) 10 綜合項目實踐_第5頁
已閱讀5頁,還剩63頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

10.1 項目一學(xué)生成績管理系統(tǒng)HTML5的優(yōu)勢

解決了跨瀏覽器的問題

新增多個新特性

(語義化標(biāo)簽、多媒體標(biāo)簽、canvas元素、本地存儲等)

用戶優(yōu)先原則

化繁為簡的優(yōu)勢學(xué)習(xí)內(nèi)容10.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計10.1.2功能設(shè)計10.1.3創(chuàng)建項目10.1.4預(yù)處理信息10.1.5主函數(shù)實現(xiàn)10.1.6功能函數(shù)實現(xiàn)10.1.7功能演示10.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計1HTML5的優(yōu)勢10.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)三9889.573260.5變量聲明功能描述intid存儲學(xué)號charname[50]存儲學(xué)生姓名floatscore1存儲課程1成績floatscore2存儲課程2成績floatscore3存儲課程3成績typedefstruct{intid;charname[50];floatscore1;floatscore2;floatscore3;}Student;10.1.2功能設(shè)計2HTML5的優(yōu)勢10.1.2功能設(shè)計1.添加信息功能addStudent():用于增加一條學(xué)生成績信息記錄。1.刪除信息功能deleteStudent():用于刪除一條學(xué)生成績信息記錄。3.修改信息功能modifyStudent():用于修改一條學(xué)生成績信息記錄,此功能應(yīng)根據(jù)成績信息中的某一唯一標(biāo)識識別要修改的信息。HTML5的優(yōu)勢10.1.2功能設(shè)計4.打印信息清單功能displayStudents():用于打印所有學(xué)生成績信息記錄。5.存儲信息功能saveStudents():用于將學(xué)生成績信息存儲到本地文件。6.本地信息加載功能loadStudents():用于從本地文件讀取學(xué)生成績信息,常用于系統(tǒng)初始化時。7.成績排序功能sortStudents():根據(jù)學(xué)生總成績對所有成績排序。10.1.3創(chuàng)建項目3HTML5的優(yōu)勢10.1.3創(chuàng)建項目新建項目默認(rèn)帶有main.c文件,在該項目中添加兩個新文件,這三個文件的功能說明如下。ScoManage.h:該文件用于保存宏定義、結(jié)構(gòu)體類型以及函數(shù)的聲明。ScoManage.c:該文件用于定義各個功能模塊的實現(xiàn)。main.c:該文件為項目的入口,用于進(jìn)入程序,調(diào)用各函數(shù)已實現(xiàn)系統(tǒng)功能。HTML5的優(yōu)勢10.1.3創(chuàng)建項目新建項目默認(rèn)帶有main.c文件,在該項目中添加兩個新文件,這三個文件的功能說明如下。ScoManage.h:該文件用于保存宏定義、結(jié)構(gòu)體類型以及函數(shù)的聲明。ScoManage.c:該文件用于定義各個功能模塊的實現(xiàn)。main.c:該文件為項目的入口,用于進(jìn)入程序,調(diào)用各函數(shù)已實現(xiàn)系統(tǒng)功能。10.1.4預(yù)處理信息4HTML5的優(yōu)勢10.1.4預(yù)處理信息1 #include<stdio.h>2 #include<stdlib.h>3 #defineMAX_STUDENTS1004 #defineFILE_NAME"students.dat"5 6 typedefstruct{7 intid;8 charname[50];9 floatscore1;10 floatscore2;11 floatscore3;12 }Student;

14 //添加信息

15 voidaddStudent(Studentstudents[],int*count);16 //刪除信息

17 voiddeleteStudent(Studentstudents[],int*count);18 //修改信息

19 voidmodifyStudent(Studentstudents[],intcount);20 //打印信息清單

21 voiddisplayStudents(Studentstudents[],intcount);22 //存儲信息

23 voidsaveStudents(Studentstudents[],intcount);24 //從本地文件加載信息

25 voidloadStudents(Studentstudents[],int*count);26 //成績排序

27 voidsortStudents(Studentstudents[],intcount);ScoManage.h10.1.5主函數(shù)實現(xiàn)5HTML5的優(yōu)勢10.1.5主函數(shù)實現(xiàn)main.c文件中的代碼定義學(xué)生成績管理系統(tǒng)的主程序框架,它使用ScoManage.h文件中定義的函數(shù)原型來執(zhí)行不同的操作。這個程序允許用戶通過命令行界面選擇添加、打印、刪除、修改學(xué)生信息,對學(xué)生成績進(jìn)行排序,以及保存并退出程序等功能。HTML5的優(yōu)勢10.1.5主函數(shù)實現(xiàn)1 #include"ScoManage.h"2 3 intmain(){4 Studentstudents[MAX_STUDENTS];5 intcount=0;6 intchoice,studentID;7 //加載系統(tǒng)文件,讀取學(xué)生成績單

8 loadStudents(students,&count);9 10 while(1){11 printf("\n1.添加信息\n1.打印信息\n3.刪除信息\n4.修改信息\n5.成績排序\n6.保存并退出\n請選擇功能:");12 scanf("%d",&choice);13 switch(choice){14 case1:15 addStudent(students,&count);16 break;17 case2:18 displayStudents(students,count);19 break;20 case3: 21 deleteStudent(students,&count);22 break;23 case4:24 modifyStudent(students,count);25 break;26 case5:27sortStudents(students,count);28 break;29 case6:30 saveStudents(students,count);31 printf("數(shù)據(jù)已保存。\n");32 exit(0);33 default:34 printf("無效選擇,請重新輸入。\n");35 }36 }37 return0;38 }main.c10.1.6功能函數(shù)實現(xiàn)610.1.6功能函數(shù)實現(xiàn)addStudent()//添加學(xué)生成績信息voidaddStudent(Studentstudents[],int*count){if(*count>=MAX_STUDENTS){printf("內(nèi)存已滿.\n");return;}printf("請輸入學(xué)號:");scanf("%d",&students[*count].id);printf("請輸入學(xué)生姓名:");scanf("%s",students[*count].name);printf("請輸入課程1成績:");scanf("%f",&students[*count].score1);printf("請輸入課程2成績:");scanf("%f",&students[*count].score2);printf("請輸入課程3成績:");scanf("%f",&students[*count].score3);(*count)++;printf("成績信息添加成功.\n");}10.1.6功能函數(shù)實現(xiàn)displayStudents()//打印學(xué)生成績信息voiddisplayStudents(Studentstudents[],intcount){inti;printf("\n學(xué)生成績單:\n");for(i=0;i<count;i++){printf("學(xué)號:%d,姓名:%s,課程1:%.2f,課程2:%.2f,課程3:%.2f\n", students[i].id,students[i].name,students[i].score1, students[i].score2,students[i].score3);}}10.1.6功能函數(shù)實現(xiàn)deleteStudent()//刪除學(xué)生成績信息voiddeleteStudent(Studentstudents[],int*count){inti,studentID,found=0; printf("輸入學(xué)號:");scanf("%d",&studentID);for(i=0;i<*count;i++){if(students[i].id==studentID){found=1;break;}}if(!found){printf("成績信息未找到。\n");return;}for(;i<*count-1;i++){students[i]=students[i+1];}

(*count)--;printf("信息刪除成功。\n");}10.1.6功能函數(shù)實現(xiàn)modifyStudent()//修改學(xué)生成績信息voidmodifyStudent(Studentstudents[],intcount){inti,id,found=0;floatnewScore1,newScore2,newScore3;printf("輸入學(xué)號:");scanf("%d",&id);for(i=0;i<count;i++){if(students[i].id==id){printf("輸入課程1成績:");scanf("%f",&newScore1);printf("輸入課程2成績:");scanf("%f",&newScore2);printf("輸入課程3成績:");scanf("%f",&newScore3);students[i].score1=newScore1;students[i].score2=newScore2;students[i].score3=newScore3;printf("信息修改成功。\n");found=1;break;}}if(!found){printf("未找到信息。\n");}}10.1.6功能函數(shù)實現(xiàn)sortStudents()//學(xué)生成績排序voidsortStudents(Studentstudents[],intcount){inti,j;floatsum1,sum2;Studenttemp;for(i=0;i<count-1;i++){for(j=0;j<count-i-1;j++){sum1=students[j].score1+students[j].score2+students[j].score3;sum1=students[j+1].score1+students[j+1].score2+students[j+1].score3;if(sum1<sum2){temp=students[j];students[j]=students[j+1];students[j+1]=temp;}}}printf("排序完成。\n");}10.1.6功能函數(shù)實現(xiàn)saveStudents()//存儲學(xué)生成績信息voidsaveStudents(Studentstudents[],intcount){FILE*file=fopen(FILE_NAME,"wb");if(file==NULL){printf("文件打開失敗.\n");exit(1);}fwrite(&count,sizeof(int),1,file);fwrite(students,sizeof(Student),count,file);fclose(file);}10.1.6功能函數(shù)實現(xiàn)loadStudents()//加載學(xué)生成績文件voidloadStudents(Studentstudents[],int*count){FILE*file=fopen(FILE_NAME,"rb");if(file==NULL){printf("未找到數(shù)據(jù)文件.\n");*count=0;return;}fread(count,sizeof(int),1,file);fread(students,sizeof(Student),*count,file);fclose(file);printf("數(shù)據(jù)讀取成功.\n");}10.1.7功能演示710.1.7功能演示打印系統(tǒng)主頁面1.添加信息功能10.1.7功能演示1.打印信息10.1.7功能演示3.刪除信息10.1.7功能演示4.修改信息10.1.7功能演示5.成績排序1001張三9871002李四9784.5721003王五8879.58310.1.7功能演示6.信息保存10.1.7功能演示7.加載數(shù)據(jù)10.2 項目二圖書信息管理系統(tǒng)HTML5的優(yōu)勢

解決了跨瀏覽器的問題

新增多個新特性

(語義化標(biāo)簽、多媒體標(biāo)簽、canvas元素、本地存儲等)

用戶優(yōu)先原則

化繁為簡的優(yōu)勢學(xué)習(xí)內(nèi)容10.2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計10.2.2功能設(shè)計10.2.3創(chuàng)建項目10.2.4預(yù)處理信息10.2.5主函數(shù)實現(xiàn)10.2.6功能函數(shù)實現(xiàn)10.2.7功能演示10.2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計1HTML5的優(yōu)勢10.2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計圖書的常規(guī)信息包含圖書編號、書名、作者、圖書類別編號、圖書價格等,根據(jù)需求設(shè)計的圖書信息的數(shù)據(jù)結(jié)構(gòu),如表所示。typedefstructbook{ charbnum[10]; //書籍編號

charbname[30]; //書名

charbauthor[20]; //作者

charbclassfy[10]; //類別編號

floatbprice; //價格

structbook*next; //鏈表指針}BookInfo;變量聲明功能描述charbnum[10]存儲書籍編號charbname[30]存儲書名charbauthor[20]存儲作者姓名charbclassfy[10]存儲圖書類別編號floatbprice存儲圖書價格10.2.2功能設(shè)計2HTML5的優(yōu)勢10.2.2功能設(shè)計(1)菜單打印函數(shù)menu()此函數(shù)負(fù)責(zé)展示功能菜單,為用戶提供與程序進(jìn)行交互的入口。通過打印不同的選項,引導(dǎo)用戶選擇想要執(zhí)行的操作,如錄入圖書信息、瀏覽圖書信息、查詢圖書信息等。(2)圖書信息錄入函數(shù)Insert()該函數(shù)實現(xiàn)了向鏈表中添加新圖書信息的功能。用戶輸入圖書的詳細(xì)信息后,函數(shù)會創(chuàng)建一個新的鏈表節(jié)點,并將其添加到鏈表的末尾或指定位置。HTML5的優(yōu)勢10.2.2功能設(shè)計(3)圖書信息瀏覽函數(shù)Print()此函數(shù)負(fù)責(zé)遍歷鏈表,并輸出其中存儲的所有圖書信息。用戶可以通過此函數(shù)查看當(dāng)前鏈表中保存的所有圖書記錄。(4)圖書信息查詢函數(shù)Search()該函數(shù)根據(jù)用戶輸入的某項圖書信息(如書名、作者等),在鏈表中查找對應(yīng)的記錄。如果找到匹配的記錄,函數(shù)會將其詳細(xì)信息輸出給用戶。HTML5的優(yōu)勢10.2.2功能設(shè)計(5)圖書信息修改函數(shù)Update()此函數(shù)允許用戶根據(jù)輸入的某項圖書信息找到對應(yīng)的記錄,并修改其中的內(nèi)容。例如,用戶可以修改圖書的作者、出版日期等信息。(6)圖書信息刪除函數(shù)Delete()該函數(shù)用于刪除鏈表中的指定圖書記錄。用戶輸入某項圖書信息后,函數(shù)會在鏈表中查找對應(yīng)的節(jié)點,并將其從鏈表中刪除。HTML5的優(yōu)勢10.2.2功能設(shè)計(7)圖書信息保存函數(shù)Save()此函數(shù)負(fù)責(zé)將鏈表中的圖書信息寫入到文件中,以便在程序關(guān)閉后仍能保存這些數(shù)據(jù)。用戶可以選擇將數(shù)據(jù)存儲為文本文件、二進(jìn)制文件等格式。(8)創(chuàng)建書單函數(shù)BookInfo()本函數(shù)用于創(chuàng)建一個鏈表結(jié)構(gòu),以存儲圖書的相關(guān)信息。鏈表中的每個節(jié)點都包含一本圖書的詳細(xì)信息,如書名、作者等。此函數(shù)為后續(xù)各項功能的實現(xiàn)提供了基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)。10.2.3創(chuàng)建項目3HTML5的優(yōu)勢10.2.3創(chuàng)建項目新建項目默認(rèn)帶有main.c文件,在該項目中添加兩個新文件,這三個文件的功能說明如下。BooksManage.h:該文件用于保存宏定義、結(jié)構(gòu)體類型以及函數(shù)的聲明。BooksManage.c:該文件用于定義各個功能模塊的實現(xiàn)。main.c:該文件為項目的入口,用于進(jìn)入程序,調(diào)用各函數(shù)已實現(xiàn)系統(tǒng)功能。HTML5的優(yōu)勢10.2.3創(chuàng)建項目新建項目默認(rèn)帶有main.c文件,在該項目中添加兩個新文件,這三個文件的功能說明如下。BooksManage.h:該文件用于保存宏定義、結(jié)構(gòu)體類型以及函數(shù)的聲明。BooksManage.c:該文件用于定義各個功能模塊的實現(xiàn)。main.c:該文件為項目的入口,用于進(jìn)入程序,調(diào)用各函數(shù)已實現(xiàn)系統(tǒng)功能。文件添加完成后,編輯器項目管理部分如圖所示。10.2.4預(yù)處理信息4HTML5的優(yōu)勢10.2.4預(yù)處理信息1 #include<stdio.h>2 3 typedefstructbook{4 charbnum[10]; //書籍編號

5 charbname[30]; //書名

6 charbauthor[20]; //作者

7 charbclassfy[10]; //類別編號

8 floatbprice; //價格

9 structbook*next; //鏈表指針

10 }BookInfo;12 BookInfo*CreateBooksList(); //創(chuàng)建鏈表

13 voidInsert(BookInfo*head); //插入

14 voidDelete(BookInfo*head); //刪除

15 voidPrint(BookInfo*head); //瀏覽

16 voidSearch(BookInfo*head); //查詢

17 voidUpdate(BookInfo*head); //修改

18 voidSave(BookInfo*head); //保存

19 intmenu(); //菜單BooksManage.h10.2.5主函數(shù)實現(xiàn)5HTML5的優(yōu)勢10.2.5主函數(shù)實現(xiàn)main.c文件中的代碼實現(xiàn)了一個基本的圖書管理系統(tǒng),通過鏈表來存儲和管理圖書信息,并提供了用戶交互界面來執(zhí)行各種操作。HTML5的優(yōu)勢10.2.5主函數(shù)實現(xiàn)1 #include"BooksManage.h"2 #include<stdlib.h>3 4 intmain()5 {6 BookInfo*head;7intsel;8head=NULL;9for(;;)10{11 sel=menu(); //輸出菜單,并獲取選擇的功能12 switch(sel)13 {14 case1:15 if(head==NULL)16 head=CreateBooksList();17 Insert(head);18 break;19 case2:Print(head);break;20 case3:Search(head);break;21 case4:Update(head);break;22 case5:Delete(head);break;23 case6:Save(head);break;24 case7:exit(0);break;25 default:break;26 }27 }28return0;29 }main.cHTML5的優(yōu)勢10.2.5主函數(shù)實現(xiàn)1.頭文件包含(1)#include"BooksManage.h":包含了圖書管理系統(tǒng)的自定義頭文件,其中應(yīng)該定義了BookInfo結(jié)構(gòu)體、menu函數(shù)以及圖書管理的各種功能函數(shù)。(2)#include<stdlib.h>:包含了標(biāo)準(zhǔn)庫的頭文件,用于調(diào)用exit函數(shù)等。2.主函數(shù)main主函數(shù)main定義了一個BookInfo類型的指針head,用于指向圖書鏈表的頭節(jié)點。head初始化head為NULL,表示鏈表為空。使用一個無限循環(huán)for(;;)來不斷顯示菜單,并通過處理用戶的選擇。HTML5的優(yōu)勢10.2.5主函數(shù)實現(xiàn)3.菜單處理(1)調(diào)用menu函數(shù)顯示功能菜單,并獲取用戶的選擇sel。(2)將用戶選擇的功能sel傳遞到switch-case結(jié)構(gòu),根據(jù)用戶的選擇執(zhí)行相應(yīng)的功能。4.程序結(jié)束常規(guī)的結(jié)束語句return0;在理論上永遠(yuǎn)不會執(zhí)行,因為使用了無限循環(huán),程序?qū)嶋H上不會自然結(jié)束,除非用戶選擇退出(case7)。需要注意的是,代碼中的CreateBooksList函數(shù)用于初始化鏈表,但在用戶已經(jīng)選擇過一次添加圖書(case1)之后,再次選擇時不會再次調(diào)用CreateBooksList,因為head已經(jīng)不為NULL了。這是為了避免重復(fù)創(chuàng)建鏈表頭節(jié)點。10.2.6功能函數(shù)實現(xiàn)610.2.6功能函數(shù)實現(xiàn)menu()//菜單intmenu(){ intsec; printf("圖書管理系統(tǒng)\n"); printf("━━━━━━━━━━━━━━━━━━\n"); printf("1-圖書信息錄入\n"); printf("2-圖書信息瀏覽\n"); printf("3-圖書信息查詢\n"); printf("4-圖書信息修改\n"); printf("5-圖書信息刪除\n"); printf("6-圖書信息保存\n"); printf("7-退出\n"); printf("━━━━━━━━━━━━━━━━━━\n"); printf("請選擇:"); fflush(stdin); scanf("%d",&sec); while(sec>7||sec<0) { printf("選擇有誤!\n請重新輸入:"); scanf("%d",&sec); } returnsec;}10.2.6功能函數(shù)實現(xiàn)CreateBooksList()//創(chuàng)建書單BookInfo*CreateBooksList(){ BookInfo*head; head=(BookInfo*)malloc(sizeof(BookInfo)); //為頭結(jié)點分配空間

head->next=NULL; //初始化頭指針

returnhead;}10.2.6功能函數(shù)實現(xiàn)Insert()voidInsert(BookInfo*head){ BookInfo*b,*p; charflag='Y'; p=head; while(p->next!=NULL) p=p->next; fflush(stdin); scanf("%s",b->bclassfy); printf("請輸入圖書價格:"); fflush(stdin); scanf("%f",&b->bprice); p->next=b; //將新增加的結(jié)點加入鏈表

p=b; //指針p向后移動,指向尾結(jié)點

b->next=NULL; printf("添加成功!\n繼續(xù)添加?(Y/N):"); fflush(stdin); scanf("%c",&flag); if(flag=='N'||flag=='n')break; elseif(flag=='Y'||flag=='y')continue; } return;}10.2.6功能函數(shù)實現(xiàn)Print()//圖書信息瀏覽函數(shù)Print()voidPrint(BookInfo*head){ BookInfo*p; if(head==NULL||head->next==NULL) //判斷鏈表是否為空

{ printf("無記錄!\n"); return; } p=head; //遍歷鏈表,輸出書籍信息

while(p->next!=NULL) { p=p->next; printf("┃編號:%-6s┃書名:%-10s┃作者:%-10s┃類別編號:%-10s┃價格:%.2lf┃\n", p->bnum,p->bname,p->bauthor,p->bclassfy,p->bprice); }}10.2.6功能函數(shù)實現(xiàn)Search() while(p->next!=NULL) { p=p->next; if(strcmp(p->bname,tmp)==0) { flag=1; //書籍已找到

printf("編號:%s\n書名:《%s》\n作者:%s\n分類:%s\n價格:%.2f\n", p->bnum,p->bname,p->bauthor,p->bclassfy,p->bprice); return; } if(p->next==NULL) printf("\n查詢完畢!"); } if(flag==0) printf("沒有找到《%s》!\n",tmp); } return;}//圖書信息查詢函數(shù)Search()voidSearch(BookInfo*head){ BookInfo*p; chartmp[30]; intflag=0; p=head; if(head==NULL||head->next==NULL) printf("清單為空!\n"); else { printf("請輸入書名:"); fflush(stdin); scanf("%s",tmp);10.2.6功能函數(shù)實現(xiàn)Update() flag=1; //標(biāo)志找到所要修改的書籍

printf("請輸入編號:"); fflush(stdin); scanf("%s",p->bnum); printf("請輸入書名:"); fflush(stdin); scanf("%s",p->bname); printf("請輸入作者:"); fflush(stdin); scanf("%s",p->bauthor); printf("請輸入類別編號:"); fflush(stdin); scanf("%s",p->bclassfy); printf("請輸入價格:"); fflush(stdin); scanf("%f",&p->bprice); } } if(flag==0) printf

溫馨提示

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

評論

0/150

提交評論