第一篇:C語言課程設計學生選課系統
題目
一、學生選課管理系統
第一部分:課程設計名稱、目的、要求
第二部分:程序總體設計思路
第三部分:程序功能劃分、圖示及流程圖
第四部分:程序設計數據、運行結果
第五部分:程序的優缺點
第六部分:心得體會
第七部分:附錄(源程序)
第八部分:附錄(參考文獻)
目錄
..............................................................................第一部分:課程設計名稱、目的、要求
名稱:學生選修課程系統設計
目的:運用C語言提高解決實際問題的能力 實驗環境:Microsoft Visual C++ 6.0 內容:
假定有n門課程,每門課程有課程編號,課程名稱,課程性質,總學時,授課學時,實驗或上機學時,學分,開課學期等信息,學生可按要求(如總學分不得少于60)自由選課。【功能】
系統以菜單方式工作?
課程信息錄入功能(課程信息用文件保存)--輸入? 課程信息瀏覽功能--輸出?
查詢功能:(至少一種查詢方式)--算法? 按學分查詢? 按課程性質查詢? 學生選修課程(可選項)?
第二部分:程序總體設計思路
由于C語言是面對過程的語言,故我的設計思路是根據目標程序運行的過程來編寫的。
具體的設計思路如下:
程序的要求是設計學生選修課管理系統,對選修課程能夠進行錄入和修改操作等,要求有菜單界面和退出功能。首先,考慮到程序的數據輸入,可以設置一個管理員登陸選項,通過該選項進入管理員界面,進行選修課的錄入和修改操作,最后將錄入的課程保存到相應的文件中。然后定義各種函數的功能包括查看,查詢,刪除等。另一個為學生登陸界面,該界面學生可以進行課程選擇和瀏覽查詢等操作。在進行該操作之前需要對管理員保存的文件進行讀取,然后對其中的內容進行查詢等,在學生選好課程以后,可以將其選好的課程保存于相應的文件中,以便下次進行修改。通過函數的層層調用來實現程序的邏輯結構。中間通過文件的打開和關閉實現對文件內部所包含的數據的操作。
整個程序的設計思路到此結束。
第三部分:程序功能劃分、圖示及流程圖
【功能模塊劃分及其流程圖】
本程序功能模塊根據程序設計的需求,綜合程序的實用性、人性化、智能化的考慮,將程序劃分為6個部分分別編寫,程序主體功能將由這9個部分來完成。這9個部分依次是:
1.登錄界面函數;void login()2.學生登錄界面據函數:void stu_login()3.管理員登錄界面函數:void man_login()4.退出界面函數:void bye_sys()
5.課程選擇函數:void c_select()6.課程瀏覽函數:void c_view()7.課程查詢函數:void c_search()8.課程增加函數:void c_add()9.課程刪除函數:void c_delete()10.菜單函數:void index()11.主函數部分; main()
總體設計:
學生選課系統管理員登錄學生登錄新增課程刪除課程課程瀏覽查詢課程學生選課課程瀏覽課程查詢c_add函數c_delete函數c_view函數c_search函數c_select函數c_view函數c_search函數
系統功能模塊圖
部分函數流程圖:
1、課程選擇函數:
開始輸入要選擇的課程的編號j=0;j
2、課程查詢函數
開始輸入要查詢的課程的編號j=0;j 3、課程增加函數 開始輸入要增加的課程的編號j=0;j 4、課程刪除函數 開始輸入要刪除的課程的編號nj=0;j 本程序是一款應用軟件,故數據設計、程序運行結果應在程序的 運用中得以體現,現在通過一個程序的運用事例來對程序運行結果進行演示與實現。【軟件運用舉例】 1、程序開始界面如下: 選擇某個選項,如進行管理員登錄,進行課程的增加 進入管理員界面: 2、再選擇所要進行的操作,如進行課程增加,結果如下: 下面可以進行繼續增加課程或者退出: 3、選擇課程瀏覽,可以分頁查看相應的課程信息: 第一頁: 第二頁: 4、課程查詢 查找結果: 4、管理員課程刪除操作: 刪除后可以進行瀏覽,觀察刪除后的結果: 可見刪除后只有一條記錄。刪除操作完成正確。下面進行學生操作的使用方法: 1、學生登陸界面: 2、選擇學生選課選項: 3、學生登陸也可進行課程瀏覽和查詢函數,其結果與管理員登陸相同,不再演示。 第五部分:程序的優缺點 【程序的優點】 算法是程序的靈魂,程序的優點首先表現在算法上的優點,其次才是功能上的。 [算法上的優點]主要體現在以下三點: 1.程序采用main主函數方式設計,程序的主體的功能大都由該功能 完成。程序如此設計有利于程序的進一步改進及有助于程序執行效率的提高。 2.程序對文件數據的讀寫采用了fread和fwrite塊讀寫函數,能夠將文件中的數據完全讀出,然后賦到定義的數組中,再在相應的數組中進行一系列操作,最終再寫入文件。 3.插入操作在本程序中將課程信息直接插入數組最后一個節點,從而減少了數據的相互移動,節省了時間。 [功能上的優點] 主要體現在以下兩點: 1. 簡潔明了的程序菜單。程序主要采用了層次不同的菜單,相互獨立又相互聯系,巧妙相接,符合用戶的使用習慣與思維。2. 人性化的程序提示語言,程序提示語言較人性化,不僅大多為祈使語句、疑問句,而且提示明確,具有較強的明確的指導作用。程序提示不僅層次分明,提示方式多樣,而且提示信息井然有序,更加有利于用戶順利、準確地看懂程序并進行操作。 【程序的缺點】 主要表現在以下兩點: 1、本程序沒有進行相應的密碼操作,所以對于使用者來說可能存在比較大的不保密性。需要改善。 2、本程序沒有使用文本讀寫函數fscanf和fprintf,所以的到的課程文件和選課文件都是二進制形式。 第六部分:心得體會 選課系統程序比起通訊錄程序來講好寫一些,由于本程序用到了數組,對于數組的操作掌握的比較熟練,所以在編寫程序的時候困難沒有那么多。 本程序在編寫的過程中用到了許多通訊錄中的模塊化設計和函數互相調用的思想,使得編寫比較方便和好用。 通過該系統的課程設計分析,我掌握了模塊化設計的方法,理解和運用了結構化程序設計的思想和方法,掌握和提高了運用C語言進行程序設計的能力。 程序設計的過程,實際上是確定解決問題的詳細步驟,而這個步驟通常叫做流程,在程序設計過程中理清楚整個問題的流程很重要,然后采取逐步細化的方法實現整個程序。 對于一個較大的應用程序,一般不可能一次就設計出一個很完善的系統。通常要先設計滿足基本要求的系統,然后再測試或者在使用的過程中不斷完善,慢慢地做成一個功能很完善選修課程管理系統。所以在進行調試的時候需要對許多變量理解和掌握其變化規律等,這對于我更好的掌握visual C中調試的工具有很大的幫助。 總之經過這次課程設計,我對c語言的使用和理解都有了很大的加深,對于編程的思想也有了很多新的理解和感受。 第七部分:附錄 一、參考文獻: 1、李麗娟主編,C語言程序設計教程(第二版),人民郵電出版社 2、嚴蔚敏主編,數據結構(C語言),清華大學出版社 3、崔單主編,C語言程序設計案例精粹,電子工業出版社 4、譚浩強主編,程序設計(第三版),清華大學出版社 二、源程序 #include“stdio.h” #include“stdlib.h” #include“windows.h” #include“string.h” void index();//首頁 void login();void bye_sys();//退出界面 void stu_login();//學生登錄菜單 void c_select();void c_view();//課程瀏覽 void c_add();//增加課程 void c_delete();void c_searchs();//學生查詢函數 void c_searchm();//管理員查詢函數 void c_viewm();//管理員瀏覽函數 void c_views();//學生瀏覽函數 struct course//定義課程結構體 { int c_num; char c_name[20]; int c_score; int c_nelepeo;//課程已選人數 int c_melepeo;//課程人數上限 };struct student { char s_number[10]; char s_password[10];};struct manager { char m_name[10];char m_password[10];}; void index()//首頁 { char input; printf(“nnttt*****************************n”); printf(“ttt 湖南大學學生選課系統n”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt*****************************nnn”); printf(“ttt**********設計者:劉曉斌******nnn”); input=getchar(); system(“cls”);} void login()//登陸界面 { void stu_login(); void man_login(); void bye_sys(); int input; do { system(“cls”); printf(“nnnt1.學生登錄n”); printf(“t2.管理員登陸n”); printf(“t3.退出本系統n”); printf(“t請選擇服務類別:”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3)//輸入數不等于選項的時候打印畫面 { printf(“nt輸入出錯!請重新選擇~n”); printf(“nt按任意鍵返回選擇頁面~nt”); getchar();getchar(); system(“cls”); } if(input==3)//如果輸入3退出系統 { bye_sys(); } }while(input!=1&&input!=2&&input!=3); switch(input) { case 1:stu_login();break; case 2:man_login();break; } } void bye_sys()//退出界面 { exit(0);} void man_login(){ void c_add(); void c_delete(); void c_view(); void c_searchm(); int in; do { system(“cls”); printf(“nnt1.新增課程n”); printf(“t2.刪除課程n”); printf(“t3.課程瀏覽n”); printf(“t4.課程查詢n”); printf(“t5.退出n”); printf(“nnt請選擇服務種類:”); scanf(“%d”,&in); if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5) { printf(“nt沒有這項服務t按任意重新選擇”); getchar();getchar(); } }while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5); switch(in) { case 1:c_add();break; case 2:c_delete();break; case 3:c_viewm();break; case 4:c_searchm();break; case 5:login();break; } } void stu_login()//學生登錄菜單 { void c_select(); void c_view(); void c_searchs(); void login(); int input; do { system(“cls”); printf(“nnnt--學生登陸--”); printf(“nnt1.學生選課n”); printf(“t2.課程瀏覽n”); printf(“t3.課程查詢n”); printf(“t4.退出n”); scanf(“%d”,&input); if(input!=1&&input!=2&&input!=3&&input!=4) { printf(“nt沒有這項服務~n”); printf(“t按任意鍵重新選擇”); getchar(); getchar(); } }while(input!=1&&input!=2&&input!=3&&input!=4); switch(input) { case 1:c_select();break; case 2:c_views();break; case 3:c_searchs();break; case 4:login();break; } } void c_select(){ int n,in,i=0,j;int flag=0; FILE *fp; FILE *fp1; char input; struct course courses[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判斷是否存在課程 { printf(“nnnt課程不存在nn”); printf(“t<按任意鍵返回管理菜單>nt”); input=getchar(); input=getchar(); stu_login();//進入學生登陸菜單 } else//存在的話循環讀取文件中的信息直到文件指針到文件尾部 { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件讀完后關閉 } printf(“nntt請輸入你要選課程的編號:”); scanf(“%d”,&n); if((fp1=fopen(“courseselect.dat”,“rb”))==NULL) { fp1=fopen(“courseselect.dat”,“wb”); } else { fclose(fp1); fp1=fopen(“courseselect.dat”,“ab”); } for(j=0;j if(courses[j].c_num==n) flag++; if(flag==0) { printf(“nntt不存在對應課程n”); printf(“nntt繼續選課請按1,退出請按2:n”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default: printf(“輸入錯誤,將返回登錄界面!n”); login();break; } } else { fwrite(&courses[j],sizeof(struct course),1,fp1); fclose(fp1); printf(“nntt選課成功t請選擇:”); printf(“nntt1.繼續選課”); printf(“nntt2.退出,返回登錄界面!”); scanf(“%d”,&in); switch(in) { case 1:c_select();break; case 2:stu_login();break; default:break; } } } void c_viewm()//課程瀏覽 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判斷是否存在課程 { system(“cls”); printf(“nnnt課程不存在nn”); printf(“t<按任意鍵返回管理菜單>nt”); getchar();getchar(); stu_login();//進入學生登陸菜單 } else//存在的話循環讀取文件中的信息直到文件指針到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件讀完后關閉 do { system(“cls”); if(i==1) { printf(“nnnttt沒有記錄!n”); getchar();getchar(); man_login(); } else { printf(“nt------共有%d條記錄-------”,i-1); printf(“nnt課程編號: %dn”,courseview[n].c_num); printf(“nnt課程名字: %sn”,courseview[n].c_name); printf(“nnt課程學分: %dn”,courseview[n].c_score); printf(“nnt課程已選人數: %dn”,courseview[n].c_nelepeo); printf(“nnt課程人數上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一頁t2.下一頁t3.回目錄”); printf(“n請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到達首頁 t按任意鍵返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到達尾頁t按人意見返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{man_login();break;} default: { printf(“nt操作錯誤t按任意鍵返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_views()//課程瀏覽 { void stu_login(); void c_view(); int inp,i=0,n=0; FILE *fp; char input; struct course courseview[10]; if((fp=fopen(“course.dat”,“rb”))==NULL)//判斷是否存在課程 { system(“cls”); printf(“nnnt課程不存在nn”); printf(“t<按任意鍵返回管理菜單>nt”); getchar();getchar(); stu_login();//進入學生登陸菜單 } else//存在的話循環讀取文件中的信息直到文件指針到文件尾部 { do { fread(&courseview[i],sizeof(struct course),1,fp); i=i+1; } while(!feof(fp)); fclose(fp);//文件讀完后關閉 do { system(“cls”); if(i==1) { printf(“nnnttt沒有記錄!n”); getchar();getchar(); stu_login(); } else { printf(“nt------共有%d條記錄-------”,i-1); printf(“nnt課程編號: %dn”,courseview[n].c_num); printf(“nnt課程名字: %sn”,courseview[n].c_name); printf(“nnt課程學分: %dn”,courseview[n].c_score); printf(“nnt課程已選人數: %dn”,courseview[n].c_nelepeo); printf(“nnt課程人數上限: %dn”,courseview[n].c_melepeo); printf(“nnt1.上一頁t2.下一頁t3.回目錄”); printf(“n請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1: { if(n==0) { printf(“nt已到達首頁 t按任意鍵返回”); input=getchar(); input=getchar(); } else { n=n-1; } break; } case 2: { if(n==i-2) { printf(“nt已到達尾頁t按人意見返回”); input=getchar(); input=getchar(); } else { n=n+1; } break; } case 3:{stu_login();break;} default: { printf(“nt操作錯誤t按任意鍵返回”); getchar();getchar(); break; } } } }while(inp!=3); } } void c_searchs(){ void stu_login(); void c_searchs(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判斷課程信息是否存在 { system(“cls”); printf(“nnt課程不存在t按任意鍵返回”); getchar();getchar(); stu_login(); } else//存在的話循環讀取文件中的信息直到文件指針到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt請輸入你要查詢的課程編號:”); scanf(“%d”,&id); do//檢查輸入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt課程編號:%dn”,coursesear[k].c_num); printf(“nnt課程名字:%sn”,coursesear[k].c_name); printf(“nnt課程學分:%dn”,coursesear[k].c_score); printf(“nnt課程已選人數:%dn”,coursesear[k].c_nelepeo); printf(“nnt課程人數上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目錄繼續查詢t2.退出查詢系統n”); printf(“請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt沒有這項服務t請按任意鍵重新輸入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在對應記錄n”); printf(“nnt1.回目錄繼續查詢t2.退出查詢系統n”); printf(“請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchs(); case 2:stu_login(); default: { printf(“nt沒有這項服務t請按任意鍵重新輸入”); getchar();getchar(); } } } }while(inp!=1); } void c_searchm(){ void stu_login(); void c_searchm(); int id,i=0,j,inp,k; int flag=0; FILE *fp; struct course coursesear[10]; if((fp=fopen(“course.dat”,“rb”))==NULL) //判斷課程信息是否存在 { system(“cls”); printf(“nnt課程不存在t按任意鍵返回”); getchar();getchar(); stu_login(); } else//存在的話循環讀取文件中的信息直到文件指針到文件尾部 { do { fread(&coursesear[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } system(“cls”); printf(“nnttt請輸入你要查詢的課程編號:”); scanf(“%d”,&id); do//檢查輸入是否符合要求 { for(j=0;j { if(id==coursesear[j].c_num) { flag++; k=j; } } if(flag==1) { system(“cls”); printf(“nnt課程編號:%dn”,coursesear[k].c_num); printf(“nnt課程名字:%sn”,coursesear[k].c_name); printf(“nnt課程學分:%dn”,coursesear[k].c_score); printf(“nnt課程已選人數:%dn”,coursesear[k].c_nelepeo); printf(“nnt課程人數上限:%dn”,coursesear[k].c_melepeo); getchar();getchar(); printf(“nnt1.回目錄繼續查詢t2.退出查詢系統n”); printf(“請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt沒有這項服務t請按任意鍵重新輸入”); getchar();getchar(); } } } else { system(“cls”); printf(“nnt不存在對應記錄n”); printf(“nnt1.回目錄繼續查詢t2.退出查詢系統n”); printf(“請選擇:”); scanf(“%d”,&inp); switch(inp) { case 1:c_searchm(); case 2:man_login(); default: { printf(“nt沒有這項服務t請按任意鍵重新輸入”); getchar();getchar(); } } } }while(inp!=1);} void c_add()//增加課程 { void c_add(); void man_login(); int i=0,j,inp; FILE *fp; struct course course_new; struct course courses[10]; system(“cls”); printf(“nntt請輸入課程信息”); printf(“nntt1.課程編號:”); scanf(“%d”,&course_new.c_num); printf(“nntt2.課程名字:”); scanf(“%s”,course_new.c_name); printf(“nntt3.課程學分:”); scanf(“%d”,&course_new.c_score); printf(“nntt4.課程已選人數:”); scanf(“%d”,&course_new.c_nelepeo); printf(“nntt5.課程人數上限:”); scanf(“%d”,&course_new.c_melepeo); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); for(j=0;j<=i-1;j++) if(course_new.c_num==courses[j].c_num) { system(“cls”); printf(“nnttt對不起,這個編號已經使用過nntt按任意鍵返回管理菜單”); getchar();getchar(); man_login(); break; } } if((fp=fopen(“course.dat”,“rb”))==NULL) { fp=fopen(“course.dat”,“wb”); } else { fclose(fp); fp=fopen(“course.dat”,“ab”); } fwrite(&course_new,sizeof(struct course),1,fp); fclose(fp); printf(“nntt信息輸入完畢t按任意鍵繼續”); getchar();getchar(); do { system(“cls”); printf(“nntt1.繼續輸入”); printf(“nntt2.返回管理菜單”); printf(“nntt請選擇”); scanf(“%d”,&inp); if(inp!=1&&inp!=2) { printf(“輸入不符合要求t按任意鍵重新選擇”); getchar();getchar(); } }while(inp!=1&&inp!=2); switch(inp) { case 1:c_add();break; case 2:man_login();break; } } void c_delete()//查詢后刪除 { FILE *fp; int i=0,j,n,k,flag=0; struct course courses[10]; void c_delete(); void man_login(); printf(“nntt請輸入你要刪除的課程編號:”); scanf(“%d”,&n); if((fp=fopen(“course.dat”,“rb”))!=NULL) { do { fread(&courses[i],sizeof(struct course),1,fp); i=i+1; }while(!feof(fp)); fclose(fp); } else { printf(“nntt不存在任何課程t按任意鍵返回”); getchar();getchar(); man_login(); } for(j=0;j { if(courses[j].c_num==n) { flag=1; fp=fopen(“course.dat”,“wb”); for(k=0;k fwrite(&courses[k],sizeof(struct course),1,fp); fclose(fp); fp=fopen(“course.dat”,“ab”); for(k=j+1;k { fwrite(&courses[k],sizeof(struct course),1,fp); } printf(“nntt記錄已刪除!t按任意鍵返回ntt”); getchar();getchar(); man_login(); fclose(fp); } } if(flag==0) { printf(“nntt不存在對應的課程t按任意鍵返回”); getchar();getchar(); man_login(); } // printf(“nntt記錄已刪除!t按任意鍵返回ntt”); } int main(){ index();login();return 0;} 1、課程設計的目的、任務 《匯編語言》課程設計對于鞏固匯編語言理論知識,加強學生的實際動手能力和提高學生綜合素質十分必要。課程設計的目的主要是通過程序設計方法和技能的基本訓練,鞏固在課堂上學到的有關程序設計的基本知識和基本方法,通過實際動手能力的培養,進一步熟悉匯編語言的結構和使用方法,達到能獨立閱讀、編制和調試一定規模的匯編語言程序的水平。 2、軟件需求分析和設計 2.1學生成績管理系統是對學生成績的管理,其中包括以下幾個模塊:(1).插入一個數據(插入學生學號以及語數外三個成績)。(2)修改一個數據。(3)刪除學生成績數據。(4)查找學生成績。(5)查看學生成績的排名(6)查看學生成績分布(7)按esc鍵退出系統 2.2學生成績管理系統應該包含以下信息:學號,語文成績,英語成績,數學成績。因此,系統應該提供以下功能:(1)輸出顯示菜單。(2)輸入學生的成績(3)修改學生成績(4)刪除學生成績(5)查詢學生成績(6)顯示學生成績排名(7)顯示成績分布統計(8)按esc鍵退出系統 2.3依據程序的功能需求,該系統的功能結構圖如下 系統功能結構圖 2.4 程序流程圖: 主程序流程圖 查找學生成績 插入學生學號及成績 修改學生的成績 顯示各個學科各分數段的人數 3、程序實現說明 3.1學生管理系統中各子程序如下: (1).輸入全部學生學號以及語文,英語,數學三科的成績。子程序名:insert 子程序描述:該子程序為輸入字程序。系統在開始的時候是沒有數據的,通過該子程序可以初始化系統,將學生的學號及成績輸入系統。 代碼: insert proc near;定義進程子程序:插入學生,學號及 成績 call input;調用input add n,1 ret insert endp (2).修改輸入的成績。子程序名:modify 子程序描述:通過子程序修改學生的成績 代碼: modify proc near;定義進程子程序:修改學生學號,成績 md1:output mess1;輸出mess1 shuru;調用宏shuru:二位數據輸入 mov bl,n mov bh,0 mov al,dl mov si,0 md: cmp al,xh[si];先查找輸入的學生是否存在 je qq1_1;查到的話,就跳轉到qq1_1輸入修改的值,也就是重新輸入。;結果相等則跳轉到qq1_1 add si,1 cmp si,bx jbe md;小于等于則跳轉到md output mess;輸出mess jmp md1;不相等繼續輸入學號 qq1_1:;轉入修改的值重新輸入。mov di,si output mess2 output mess4 mov si,0 mov cx,3 qq3_1:shuruu;cmp dx,78h; jbe qq2_1;output ts3;jmp qq1_1;qq2_1:mov buf[si],dl output bg;add si,1 loop qq3_1 mov al,buf[0];mov chi[di],al mov al,buf[1] 分別輸入語文,英語,數學成績,并將其放 在緩沖區buf中 比較輸入的成績是否大于120,如果大于120的 話,那么重 新輸入成績 小于等于則轉移到qq2_1 輸出ts3 跳轉到qq1_1 輸出空格 將存入buf中的成績,分別賦值給存放對應科 目的成績的數組 mov eng[di],al mov al,buf[2] mov mat[di],al ret modify endp (3).刪除學生的成績。子程序名:delete 子程序描述:通過子程序刪除學生的成績 代碼: de proc near;刪除某個學生的記錄 sc1:output mess1 shuru;調用宏shuru,接受輸入的學號 mov bl,n mov bh,0 mov al,dl mov si,0 sc: cmp al,xh[si];查詢輸入學號的學生信息是否存在,不存在的話,重新輸入學號 je sc2;相等則轉移到sc2 add si,1 cmp si,bx jbe sc;小于等于則轉移到sc output mess;輸出mess jmp sc1 sc2: sub bx,si cmp bx,0 je sc3;相等則轉移到sc3 mov cx,bx sc4:mov dl,chi[si+1] mov chi[si],dl mov dl,eng[si+1] mov eng[si],dl mov dl,mat[si+1] mov mat[si],dl mov dl,xh[si+1] mov xh[si],dl add si,1 loop sc4;loop循環指令,執行操作(cx)<--(cx)-1.若 cx!=0,跳轉到標號sc處循環執行;cx=0,則推出 循環,執行loop的下一條指令 sub n,1 sc3: ret de endp (3).查詢學生的成績。子程序名:find 子程序描述:通過子程序查詢學生的成績 代碼: find proc near;定義進程子程序:查找學生成績 call sum;求學生的總成績 call ping;求學生的平均成績 bj1:output mess1;輸出mess1 shuru;二位數數據輸入 mov bl,n mov bh,0 mov al,dl mov si,0 bj: cmp al,xh[si];將輸入的學號與輸入的學號相比,je i;存在的話,將此學生的成績輸出。je表示結果相 等則轉移。add si,1 cmp si,bx jbe bj;output mess jmp bj1 i: output strr2 shuzi xh[si];shuzi output bg;mov al,chi[si] cbw;shuzii ax;shuzii output bg;mov al,eng[si] cbw;shuzii ax;shuzii output bg mov al,mat[si] cbw shuzii ax output bg; mov al,pj[si] cbw 小于等于則轉移到bj 為二位數據輸出 輸出空格 將字節變為字 為三位數據輸出。輸出空格 將字節變為字 為三位數據輸出 輸出空格的字符串,用于與標題欄對齊 shuzii ax output bg mov ax,si mov bl,2 mul bl mov bx,ax shuzii zc[bx];shuzii為三位數據輸出 output bg;輸出空格的字符串,用于與標題欄對齊 shuzi mc[si];shuzi為二位數據輸出 ret find endp (4).顯示學生的成績排名。子程序名:show 子程序描述:通過子程序顯示學生的成績排名 代碼: show proc near;定義進程子程序:顯示結果排名 call sum;調用宏sum call ping;調用宏ping call rank;調用宏rank call shuchu;調用宏shuchu ret show endp 3.2程序運行抓圖: 主菜單 修改學生成績 刪除學生成績 顯示各個學科各分數段的人數 4、程序總結 通過兩個星期的學習,努力,終于完成了報告。系統可以很好的運行。這兩個多星期的時間,幾乎每天不是在敲代碼,就是在看代碼,查書,上網。系統中用到了很多最近才學習的知識,比如宏,子程序。這些都使得代碼的運行效率提高了,代碼行數減少了。系統還用到了bios的清屏功能。這些功能如果不是做課程設計,我想我很難會接觸到這些知識。 由于自己對知識掌握的不是很牢固,其中也會碰到一些困難。每當遇到問題的時候,我會先上網去查找,看看有沒有人提過這方面的問題。互聯網是強大的,大部分的問題通過網絡都可以解決。部分找不到的問題,我就去請教班里學得好的同學。他們對知識的掌握遠超過我。這樣下來,很多問題都迎刃而解了。 課程設計是一個很好的掌握書本上知識的過程。平時上課之后,自己都不會想著去敲一些代碼聯系聯系。通過做課程設計,將理論與實踐結合了起來,對知識的理解更加深入了。 2007-2008學年第二學期 《C語言程序設計》 課程設計報告 系 部: 三 系 專業班級: 電子資訊工程(2)班 學 號: 070306210 姓 名: 冀 鵬 超 設計題目: 同學通訊錄設計 起訖日期: 2008.6.16 至 2008.6.29 指導老師: 徐 化 祥 2008 年 6 月 宿遷學院課程設計報告 課程設計(論文)內容要求: 1.本課程設計的目的 (1)熟練掌握C語言的基本知識和技能;(2)掌握程序設計的一些經典算法和基本方法;(3)了解數組、指針和結構體的應用; (4)利用所學的基本知識和技能,解決日常生活中經常面臨的問題;(5)培養分析、解決問題的能力;提高學生的科技論文寫作能力。 2.課程設計的任務及要求 1)課程設計題目:同學通訊錄設計 2)基本要求: (1)設計一個菜單將在實現的功能顯示出來,并有選擇提示; (2)通訊簿應包含姓名、性別、電話號碼、QQ號碼、Email、班級、宿舍等基本信息;(3)能夠查詢全部成員清單; (4)能夠按號碼或姓名查詢某一個成員的信息;(5)能夠增加、修改某一個成員的信息; (6)要求有錯誤提示功能,例如性別只能輸入F,M,輸入錯誤提示重新輸入。 3)創新要求: (1)加入刪除功能,實現對指定成員信息的刪除操作; (2)信息的輸入輸出可以用文件的存取和顯示的方式,建立文件,直接存取默認檔或指定文件。 4)課程設計報告編寫要求 (1)要按照課程設計模板的規格書寫課程設計報告;(2)報告包括目錄、正文、心得體會、參考文獻等; (3)課程設計論文用A4紙統一打印,裝訂按學校的統一要求完成。 5)參考數據: (1)譚浩強.C程序設計(第三版).北京:清華大學出版社,2005.7(2)張強華.C語言程序設計.北京:人民郵電出版社,2001.8(3)http://www.tmdps.cn/ 6)提交內容: 6.18 209實驗室 編程設計與調試 6.186.28 209實驗室 提交所有數據 6.282345int i,j;/*下面的循環是對初始值的處理*/ for(i=0;i strcpy(stu[i].sex,”“);stu[i].age=0;strcpy(stu[i].tel,”“);strcpy(stu[i].major,”“);strcpy(stu[i].classes,”“);strcpy(stu[i].room,”“);strcpy(stu[i].qq,”“);strcpy(stu[i].email,”“);strcpy(stu[i].others,”“);} 宿遷學院課程設計報告 int print1(){ int n;printf(”tttt<<通訊錄>>n“);printf(”**************************************************************n“);printf(”t歡迎使用本通訊錄應用程序,愿您從中找到所需要的信息。n“);printf(”制作人:冀鵬超 & 李長明t學號:070306210 & 070306211t班級:07電子信息(2)班n“);printf(”**************************************************************n“);printf(”n“);printf(”ttt1.瀏覽通訊簿n“);printf(”ttt2.輸入同學信息n“);printf(”ttt3.查詢同學信息n“);printf(”ttt4.刪除同學信息n“);printf(”ttt5.增加同學信息n“);printf(”ttt6.修改同學信息n“);printf(”ttt7.退出通訊簿n“);printf(”n請輸入您的選擇(1-7):“);scanf(”%d“,&n);return n;} void menu(struct txl stu[]){ int i,j,flag=1;char str[15];for(;flag==1;){ switch(print1()) 電話{ :case 1: for(i=0;stu[i].age!=0;i++){ printf(”姓名: %sn性別:%sn年齡:%dn%sn 班 級 : %sn 宿 舍 : %sn 專 業 : %snQQ號:%snEmail: %sn“,stu[i].name,stu[i].sex,stu[i].age,stu[i].tel,stu[i].classes,stu[i].room,stu[i].major,stu[i].qq,stu[i].email); } printf(”其它信息:%sn“,stu[i].others);if(i==0)printf(”目前通訊簿為空,請先輸入信息n“); 宿遷學院課程設計報告 ,stu[i].room,stu[i].major,stu[i].qq,stu[i].email); } if(i==N)printf(”t通訊簿中沒有你要找的同學!n“);break; printf(”其它信息:%sn“,stu[i].others);break;} case 4: printf(”現在你將進行刪除操作!請輸入要刪除的同學的名字,按Enter結束.n“); scanf(”%s“,str);for(i=0;i if(strcmp(stu[i].name,str)==0){ printf(”姓名: %sn性別:%sn年班級:%sn 宿舍:%sn 專業:%snQQ齡:%dn電話:%sn號:%snEmail: %sn“,stu[i].name,stu[i].sex,stu[i].age,stu[i].tel,stu[i].classes,stu[i].room,stu[i].major,stu[i].qq,stu[i].email); printf(”該同學將被刪除n“); } 宿遷學院課程設計報告 scanf(”%s“,stu[i].name);printf(”輸入同學的性別: “);scanf(”%s“,stu[i].sex);printf(”輸入同學的年齡: “);scanf(”%d“,stu[i].age);printf(”輸入同學的電話: “);scanf(”%s“,stu[i].tel);printf(”輸入同學的班級: “);scanf(”%s“,stu[i].classes);printf(”輸入同學的宿舍: “);scanf(”%s“,stu[i].room);printf(”輸入同學的專業: “);scanf(”%s“,stu[i].major);printf(”輸入同學的QQ號: “);scanf(”%s“,stu[i].qq);printf(”輸入同學的Email: “);scanf(”%s“,stu[i].email);printf(”輸入同學的其它信息: “);scanf(”%s“,stu[i].others);} } break;case 7: flag=0;break;default: printf(”你的輸入有錯誤,請重新輸入!n");} } } void main(){ struct txl stu[N]; } init(stu);menu(stu); 宿遷學院課程設計報告 四、測試結果 1.通訊錄菜單如下圖所示: 2.輸入“1”,進行“瀏覽通訊錄操作: 3.輸入“2”,進行“輸入同學信息”的操作: 宿遷學院課程設計報告 8.輸入“7”,進行“退出通訊簿”操作: 宿遷學院課程設計報告 五、設計心得 自從記事以來就聽過了計算機這個高科技,現在終于實現了自己的一個小小愿望——成為了計算機系的一名學生,這學期我們學的C語言,以前就聽過這個名字,打開書一看簡直一竅不通,學好這門科簡直就是一個挑戰,課前課后都要把書啃一遍,要不然上課就跟不上,終于學期快結束了,我們有一個課程設計,在兩個星期內,完成一個復雜的程序,我們的題目是做一個通訊簿。 通過為期一周的C課程設計實驗課使我了解到了一個程序開發的過程,雖然規模不大,但為我以后的編程學習打下了基礎。在編程的過程中,我體會到了學習編程的辛苦,為了一個算法的實現而思考,為了一個小小的編譯錯誤而花時間去尋找,這需要很大的毅力和耐心,而且要有良好的思維,這才使得我完成這個任務,也使我感到一分喜悅,畢竟自己完成了一個有模有樣的程序。于此,我也發現自己的一些不足,良好的編程習慣的養成,堅定的毅力和耐心仍是我要加強的,同別人的交流也是必須的,這樣才能不斷使我進步。在這次設計中,我遇到了很多困難,但我沒有向困難低頭,通過查詢數據,虛心向同學、老師請教,才一一得到了解決。我發現平時學的太少了,在今后我首先要把老師在課堂講的弄懂,弄透,在此基礎上利用課余時間多看課外書籍,拓寬知識面。在設計過程中,合作精神必不可少。單憑一個人的力量是不能完成的,畢竟一個人學的很有限。每個人掌握的不同。我相信:態度決定一切,只有努力才有收獲。 總的來說,這次程序設計讓我獲益匪淺,對C語言也有了進一步的認識:C語言功能高、表達能力強、使用靈活方便、目標程序效率高。 C語言是在國內外廣泛使用的一種計算機語言,我相信除了以上優點之外還有許多,希望能在以后的學習中有更深入的認識。 很感謝這次的課程設計,它使我更加深刻地體會到多看專業書的重要性,只有掌握了一定量的專業知識才能得心應手地解決諸多問題;另外,做任何事都要有耐心,不要一遇到困難就退縮;在學習和工作中要時刻謹記“團結”二字,它好比通向成功的鋪路石,不可或缺。 人生的道路是曲折的,但正是因為曲折人生才光彩奪目,在人生的路上,總遇到重重困難,但正是因為困難我們才變的更堅強。今后的路還很長,面對困難,讓我們用行動去俘虜它吧! 宿遷學院課程設計報告 六、參考文獻 [1] 譚浩強.C++程序設計.北京:清華大學出版社,2004 [2] http://www.tmdps.cn/ [4] http://www.tmdps.cn/ [5] 劉振安.C程序設計課程設計.北京:機械工業出版社,2004 [6] 張強華.C語言程序設計.北京:人民郵電出版社,2001.8 617- “選課注冊管理系統”課程設計指導書 課題名稱:選課注冊管理系統 設計目標:按照軟件工程的規范,以SQL Server或Oracle為后臺數據庫,以Visual C++、Delphi等為前端開發工具,模擬高等學校的選課情況,設計并實現一個學生選課注冊管理系統。 需求描述: 1.系統用戶 本系統的用戶是學校的學生、教師和管理員。學生使用本系統查詢新學期將開設的課程和授課教師的情況,選擇自己要學習的課程,并進行登記注冊。教師使用本系統查詢新學期將開設的課程、參加聽課的學生情況。教學管理員使用本系統進行教學管理,包括課程管理和新學期的課程選課注冊管理。 2.系統功能 本系統負責新學期的課程選課注冊工作;應提供的服務功能如下: (1)錄入與生成新學期課程表:教學管理員在新學期開始前錄入新學期課程,打印將開設的課程目錄表,供師生參考選擇。若某課程的實際選課學生少于10人,則停開該課程,把該課程從課程目錄表中刪除;若某課程的選課學生多于30人,則停止選課。 (2)學生選課注冊:新學期開始前一周為選課注冊時間,在此期間學生可以選 課注冊,并且允許改變或取消注冊申請。 (3)查詢:可以查詢課程信息、學生選課信息和學生、教師信息。 (4)選課注冊信息的統計與報表生成:教學管理員對學生的選課注冊信息進行 統計(按課程、按學生、按班級)。 3.系統結構 假定在學校的計算中心有功能強大的工作站機器,在各系、各部門、圖書館、學生宿舍都有臺式PC機,學校的全部計算機已經聯網。本系統將采用客戶機/服務器結構建立,應用服務器和數據庫服務器設置在學校計算中心的工作站。學生、教師和教學管理員可以在各系、各部門、圖書館、學生宿舍的臺式PC機上使用本系統。結果形式: 提交課程設計報告、源程序和可演示的軟件 課程設計報告要求:詳見課程設計模板 課程設計參考思路: (1)熟悉數據庫和開發工具,掌握開發工具與本地數據庫的連接方法。 (2)理解系統的信息需求,進行合理的數據庫設計,建立各數據庫表。 (3)理解系統的功能需求,設計應用軟件。結合Delphi 或VC++進行系統界面(窗 體、菜單以及相應控制按鈕)的設計、連接與操縱數據庫方案的設計,編寫程序。 (4)系統運行、調試并完善。 (5)撰寫設計報告。 C語言課程設計報告——劉顯安 C語言課程設計 姓名:劉顯安 學號:09041131 班級:090411 專業:計算機科學與技術 學院:信息工程學院 設計題目:學生通訊錄管理系統 指導教師:宋文琳 提交時間:2010年9月4日 第1頁(共25頁) C語言課程設計報告——劉顯安 課程題目:學生通訊錄管理系統 要求:學生通訊錄信息包括:學號、姓名、班機、聯系電話、E-mail、宿舍等 主要功能:1、2、3、4、5、通訊錄信息錄入功能 通訊錄信息刪除功能 通訊錄信息瀏覽功能 通訊錄信息查詢功能 按學號排序功能 一、總體設計 首先,整個系統必須有一個主函數,為了盡量提高程序的易修改性,且不至于相互干擾,將每一個功能分成不同的模塊,用不同的函數來實現,例如在我寫的這個程序中,一共用了11個函數,分別是: 主菜單函數menu()、關于函數gaunyu()、幫助函數help()、輸出單個學生信息函數shuchu()、輸入函數shuru()、輸出所有學生信息函數findall()、按姓名查找函數findname()、按學號查找函數findnum()、刪除函數shanchu()、排序函數paixu()、主函數main(),這樣在整個程序的設計過程中也就一目了然,寫起來也相對輕松了不少。 這個程序我只是總體上參考了一下網上程序的架構,具體的各個函數是參照課本上《鏈表》那一章的內容的,比如結構體的建立、查找和排序等功能,這些書上都有類似的,其中排序功能雖沒有原版的,第2頁(共25頁) C語言課程設計報告——劉顯安 但是在第六章中有一個用冒泡法排序的例題,我就是仿照這個模式來對結構體進行排序的,總之整個程序中蘊含了我很多的汗水。 二、具體設計 關于這個程序的具體設計,也不是一兩句話就能說完的,所以我也不想再在這里贅述了,因為程序里都可以看的到,幾乎每個函數都傾注了我的大量汗水,我在這上面花了不少的時間,不過從中也收獲了很多,因為不停地修改不停的調試,總之還是直接看源程序吧,因為也沒必要在這里重復地說廢話。 三、源代碼 以下是整個程序的源代碼,其中我的主菜單函數是很美觀的,但由于這里字體和板式的限制,不能很好的顯現,可以看我下面程序運行的截圖就知道了。—————————————————— #include struct student{ 第3頁(共25頁) C語言課程設計報告——劉顯安 long num;char name[20];int banji;char tel[11];char Email[20];int sushe;struct student *next;}; struct student *stu;int n; void menu(void){ /*主菜單函數*/ system(“cls”);puts(“****************************************************************************”);puts(“** ^_^學生通訊錄管理系統^_^ **”);puts(“****************************************************************************”);puts(“******** 計 ********”); 第4頁(共25頁) C語言課程設計報告——劉顯安 puts(“******* *******”);puts(“****** 算 ******”);puts(“***** 0 1=錄入學生通訊錄信息 *****”);puts(“**** 9 機 ****”);puts(“*** ***”);puts(“** 科 **”);puts(“* *”);puts(“** 1 學 **”);puts(“*** ***”);puts(“**** 與 ****”);puts(“***** *****”);0 4 劉 2= 顯 安 6= 第5頁(共25頁) 列出所有學生通訊錄 3=按姓名查詢信息 4=按學號查詢信息 5=刪除學生信息 按學號將通訊錄排序 7=關于 8=幫助 0=退出 C語言課程設計報告——劉顯安 puts(“****** 技 ******”);puts(“******* *******”);puts(“******** 術 ********”);puts(“****************************************************************************”);} void guanyu()/*關于函數*/ { system(“cls”);puts(“n ************************** ”);puts(“ *** 版權所有,翻版必究!***”);puts(“**** copyright◎劉顯安!****”);puts(“ *** 2009~2010 ***”);puts(“ **************************”);puts(“n返回主菜單請按【9】”);if(getche()=='9')menu();} struct student *shuru(void)/*輸入函數*/ 第6頁(共25頁) C語言課程設計報告——劉顯安 { system(“cls”);struct student *s1,*s2;n=1;int num;puts(“請輸入學生個數(提示:個數不能輸入0!):”);scanf(“%d”,&num);s1=s2=(struct student *)malloc(sizeof(struct student));puts(“*************************************************”);puts(“請輸入學號:”);scanf(“%ld”,&s1->num);puts(“請輸入學生姓名:”);scanf(“%s”,s1->name);puts(“請輸入班級:”);scanf(“%d”,&s1->banji);puts(“請輸入電話號碼:”);scanf(“%s”,s1->tel);puts(“請輸入電子郵件:”);scanf(“%s”,s1->Email);puts(“請輸入學生宿舍號:”);scanf(“%d”,&s1->sushe);stu=s1; 第7頁(共25頁) C語言課程設計報告——劉顯安 while(n 第8頁(共25頁) C語言課程設計報告——劉顯安 s2=s1;s2->next=NULL;return(stu);//system(“cls”);} void shuchu(struct student *s){ /*輸出單個學生信息*/ printf(“* %-8ld”,s->num);printf(“%-15s”,s->name);printf(“%-8d”,s->banji);printf(“%-15s”,s->tel);printf(“%-15s”,s->Email);printf(“%-5d *n”,s->sushe);} void findall()/*輸出所有學生信息*/ { system(“cls”);struct student *s;//if(n=2)//printf(“n現在有%d個學生信息,分別是:n”,n);//else 第9頁(共25頁) C語言課程設計報告——劉顯安 printf(“n現在有%d個學生信息,分別是:n”,n);puts(“________________________________________________________________________”);puts(“* 學號 姓名 班級 電話 電子郵件 宿舍 *”);s=stu;while(s!=NULL){ shuchu(s);s=s->next;} puts(“________________________________________________________________________”);puts(“返回主菜單請按【9】”);if(getche()=='9')menu();} void findname(){ /*按姓名查找函數*/ system(“cls”);struct student *s;char name[20];printf(“n請輸入你要查詢的學生姓名:n”); 第10頁(共25頁) C語言課程設計報告——劉顯安 scanf(“%s”,name);s=stu;while(strcmp(s->name,name)!=0){ s=s->next;} if(s==NULL){ puts(“查無此學生姓名!”);goto end;} else { puts(“該學生的信息為:”);puts(“* 學號 姓名 電子郵件 宿舍 *”);shuchu(s);} end:;puts(“返回主菜單請按【9】”);if(getche()=='9')menu();} 第11頁(共25頁) 班級 電話 C語言課程設計報告——劉顯安 void findnum()/*按學號查找函數*/ { system(“cls”);struct student *s;puts(“請輸入你要查詢的學生學號:”);long i;scanf(“%ld”,&i);s=stu; while(s->num!=i){ s=s->next;} if(s==NULL){puts(“查無此學生學號!”);goto end;} else { puts(“該學生的信息為:”);puts(“* 學號 姓名 班級 郵件 宿舍 *”);shuchu(s); 第12頁(共25頁) 子電話 電C語言課程設計報告——劉顯安 } end:;puts(“返回主菜單請按【9】”);if(getche()=='9')menu();} struct student *shanchu(struct student*stu)/*刪除函數*/ { system(“cls”);long num;char s;struct student *s1,*s2;if(stu==NULL){ puts(“傻冒!沒有任何學生信息,還刪個屁啊,刪刪刪!”);goto end;} puts(“請輸入你要刪除的學生學號:”);scanf(“%ld”,&num);s1=stu;puts(“警告:你確定要刪除這個學生的信息嗎(Y/N)?”);scanf(“%s”,&s); 第13頁(共25頁) C語言課程設計報告——劉顯安 if((s=='Y')||(s=='y')){ while((num!=s1->num)&&(s1->next!=NULL)){s2=s1;s1=s1->next;} if(num==s1->num){ puts(“該學生的信息為:”);puts(“* 學號 姓名 班級 電話 電子郵件 宿舍 *”);shuchu(s1);if(s1==stu)stu=s1->next;else s2->next=s1->next;puts(“注意喲,該學生的信息已經刪除了!剩下的學生通訊錄信息如下:”);n=n-1;} } findall();return(stu);end:; 第14頁(共25頁) C語言課程設計報告——劉顯安 puts(“返回主菜單請按【9】”);if(getche()=='9')menu();} void paixu(){ /*排序函數*/ struct student *p, *p1,*p2;int i,j;int temp;char b[20];if(stu==NULL){printf(“n學生信息不存在n”);goto end;} for(i=0;i {temp=p1->num;p1->num=p2->num;p2->num=temp; strcpy(b,p1->name);strcpy(p1->name,p2->name);strcpy(p2->nam 第15頁(共25頁) C語言課程設計報告——劉顯安 e,b); temp=p1->banji;p1->banji=p2->banji;p2->banji=temp; strcpy(b,p1->tel);strcpy(p1->tel,p2->tel);strcpy(p2->tel,b); strcpy(b,p1->Email);strcpy(p1->Email,p2->Email);strcpy(p2->Email,b);temp=p1->sushe;p1->sushe=p2->sushe;p2->sushe=temp; } p1=p1->next;} } p=stu;puts(“已按學生學號順序排序完畢!重新排序如下:”); puts(“****************************************************************************”);puts(“* 學號 姓名 班級 電話 電子郵件 宿舍 *”); while(p!=NULL) 第16頁(共25頁) C語言課程設計報告——劉顯安 { printf(“* %-8ld”,p->num);printf(“%-15s”,p->name);printf(“%-8d”,p->banji);printf(“%-15s”,p->tel);printf(“%-15s”,p->Email);printf(“%-5d *n”,p->sushe);p=p->next;} end:;puts(“返回主菜單請按【9】”);if(getche()=='9')menu();} void help()/*幫助函數*/ { system(“cls”);puts(“n1、請按提示操作,第一次進入本系統時請按“1”錄入學生信息,”);puts(“ 否則有可能造成程序運行錯誤!”);puts(“ 2、添加、修改功能本系統暫不提供,還有待以后完善,謝謝 第17頁(共25頁) C語言課程設計報告——劉顯安 合作!”);puts(“ 3、請注意查看“Num Lock”是否打開,如果沒有打開,則按數字n 鍵可能導致程序錯誤!”);puts(“ 4、版權所有,翻版必究!請按“7”鍵查看關于。”);puts(“n返回主菜單請按【9】”);if(getche()=='9')menu();} void main()/*主函數*/ { char a;menu();puts(“n您為首次使用本系統,強烈建議您按1開始錄入學生信息,”);puts(“否則有可能導致程序運行錯誤!您可以按8查看幫助.”);a=getche();while(a){ puts(“");switch(a){case'0':goto end;break;case '1': puts(”n好了,您可以開始向本系統錄入學生通訊錄信息了: 第18頁(共25頁) C語言課程設計報告——劉顯安 “);stu=shuru();system(”cls“);menu();puts(”n學生信息錄入完畢,請輸入你的選擇(0~6):n“); break;case '2':findall();puts(”n請輸入你的選擇(0~6):“);break;case '3':findname();puts(”n請輸入你的選擇(0~6):“);break;case '4':findnum();puts(”n請輸入你的選擇(0~6):“);break;case '5':stu=shanchu(stu);puts(”n請輸入你的選擇(0~6):“);break;case '6':paixu();puts(”n請輸入你的選擇(0~6):“);break;case '7':guanyu();puts(”n請輸入你的選擇(0~6):“);break;case '8':help();puts(”n請輸入你的選擇(0~6):“);break;default:puts(”輸錯了!笨蛋!快點按數字1鍵錄入學生信息吧!“);break;} a=getche();} end:;puts(”謝謝您使用本系統,歡迎再次使用!"); 第19頁(共25頁) C語言課程設計報告——劉顯安 } ————————————————————————— 四、調試 主要是通過截圖來顯示運行過程 以下是程序運行的主界面: 按1后,開始錄入信息,程序會提示你輸入學生個數(例如本例中輸入4個),當輸完4個學生的信息時,程序會提示你已輸入完畢: 第20頁(共25頁) C語言課程設計報告——劉顯安 學生信息錄入完畢,提示輸入(0到6)進行選擇: 第21頁(共25頁) C語言課程設計報告——劉顯安 這時我選擇按2輸出所有學生信息,按9返回: 按3按姓名查詢信息: 按4按學號查詢信息: 第22頁(共25頁) C語言課程設計報告——劉顯安 按5刪除學生信息,這是按學號刪除學生信息,本例中,刪除學號為41212的學生信息: 刪除成功后,系統自動將剩下的學生信息列出: 按6按學號從小到大進行排序,可以發現,排序成功: 第23頁(共25頁) C語言課程設計報告——劉顯安 按8查看幫助函數: 呵呵,這是我設置的關于函數,滿足一下敝人的虛榮心嘛^_^,版權所有,翻版必究哦! 最后按0退出系統: 第24頁(共25頁) C語言課程設計報告——劉顯安 呵呵,怎么樣?我寫的程序還行吧。嘿嘿…… 三、總結 這個程序我只是總體上參考了一下網上程序的架構,具體的各個函數是參照課本上《鏈表》那一章的內容的,比如結構體的建立、查找和排序等功能,這些書上都有類似的,其中排序功能雖沒有原版的,但是在第六章中有一個用冒泡法排序的例題,我就是仿照這個模式來對結構體進行排序的,總之整個程序中蘊含了我很多的汗水。 第25頁(共25頁)第二篇:語言課程設計-學生成績管理系統
第三篇:C語言課程設計任務書-學生通訊系統(范文模版)
第四篇:課程設計--選課注冊管理系統(小編推薦)
第五篇:學生通訊錄管理系統(C語言課程設計實驗報告)