c語言課程設(shè)計-學(xué)生信息管理系統(tǒng)_第1頁
已閱讀1頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  課程設(shè)計說明書(論文) </p><p>  題 目 學(xué)生信息管理系統(tǒng) </p><p>  課 程 名 稱  高級語言程序設(shè)計(C) </p><p>  院(系、部、中心 )  通信工程學(xué)院 </p><p>  專 業(yè)

2、 電子信息工程 </p><p>  班 級 電信082 </p><p>  學(xué) 生 姓 名 *** </p><p>  學(xué) 號 ** </p><p>  設(shè) 計 地 點 **** <

3、/p><p>  指 導(dǎo) 教 師 ** ______ </p><p><b>  目 錄 </b></p><p>  一、課程設(shè)計任務(wù)。。。。。。。。。。。。。。2 </p><p>  二、系統(tǒng)設(shè)計方案。。。。。。。。。。。。。。。 2 </p><p>  三、數(shù)據(jù)

4、結(jié)構(gòu)描述與定義。。。。。。。。。。。2 </p><p>  四、程序主要代碼分析。。。。。。。。。。。2 </p><p>  五、測試結(jié)果與分析。。。。。。。。。。。。。 2 </p><p>  六、課程設(shè)計總結(jié)。。。。。。。。。。。。。。 2 </p><p>  七、參考文獻(xiàn):。。。。。。。。。。。。。。。。 2 </p

5、><p><b>  一、課程設(shè)計任務(wù) </b></p><p><b> ?。ㄒ唬┣把?</b></p><p>  本課程是繼《高級語言程序設(shè)計(C)》課程之后,訓(xùn)練學(xué)生綜合運用本課程知識,結(jié)合實際系統(tǒng)運用C語言進(jìn)行系統(tǒng)設(shè)計以及調(diào)試,加深對本課程的理解,提高學(xué)生綜合應(yīng)用知識的能力、分析問題、解決問題的能力和利用C語言進(jìn)行綜

6、合系統(tǒng)設(shè)計的實踐技能。 </p><p>  學(xué)C語言程序設(shè)計已有1學(xué)期了,對C語言的基本概念和常用算法也有了一定的了解,平時雖然也做過一些練習(xí),也看了不少程序從而掌握一定的語法知識和編程經(jīng)驗。但是對于有些功能強(qiáng)大的軟件還是沒有嘗試過能否編得起來。所以決定在所學(xué)知識的基礎(chǔ)上,再加以拓展,利用4個半天時間編個主題明確、具有一定使用價值的中小程序,以提高自身的編程水平與上機(jī)調(diào)試技能。 </p><

7、p> ?。ǘ┱n程設(shè)計題目及要求 </p><p>  學(xué)生信息管理系統(tǒng)設(shè)計: </p><p>  學(xué)生信息包括:學(xué)號,姓名,年齡,性別,出生年月,地址,電話,E-mail等。試設(shè)計一學(xué)生信息管理系統(tǒng),使之能提供以功能: </p><p>  系統(tǒng)以菜單方式工作 </p><p>  學(xué)生信息錄入功能(學(xué)生信息用文件保存)----輸入

8、 </p><p>  學(xué)生信息瀏覽功能----輸出 </p><p>  查詢、排序功能----算法 </p><p>  按學(xué)號查詢、按姓名查詢 </p><p>  學(xué)生信息的刪除與修改 </p><p><b>  二、系統(tǒng)設(shè)計方案 </b></p><p>  (

9、一)總體框架圖: </p><p>  學(xué)生管理系統(tǒng):1、錄入學(xué)生信息 </p><p><b>  2、修改學(xué)生信息 </b></p><p><b>  3、查詢學(xué)生信息 </b></p><p><b>  4、瀏覽學(xué)生信息 </b></p><p&g

10、t;<b>  5、增加學(xué)生信息 </b></p><p><b>  6、推出信息系統(tǒng) </b></p><p><b> ?。ǘ┠K設(shè)計 </b></p><p>  模塊一:頭文件,變量定義,函數(shù)的聲明 </p><p>  對系統(tǒng)所使用的變量進(jìn)行定義,對函數(shù)進(jìn)行聲明

11、</p><p>  模塊二:學(xué)生信息系統(tǒng)使用幫助 </p><p>  聲明函數(shù)void help(),對整個系統(tǒng)進(jìn)行使用說明 </p><p>  模塊三:錄入學(xué)生信息 </p><p>  聲明函數(shù)void readfile(),說明一個文件指針FILE *fp 打開文件"student.txt" </p>

12、;<p>  模塊四:學(xué)生信息的查找 </p><p>  聲明void seek()為查找函數(shù),通過switch(item)設(shè)定用學(xué)號查找,用姓名查找兩個分支 </p><p>  模塊五:學(xué)生信息的修改 </p><p>  聲明void modify()為學(xué)生信息修改函數(shù),通過switch(item)設(shè)定所要修改的項目 </p>&

13、lt;p>  模塊六:學(xué)生信息按學(xué)號排序 </p><p>  聲明void sort()將錄入學(xué)生系按升序排列,用的是“冒泡排序法”實現(xiàn)排序 </p><p>  模塊七:增加學(xué)生信息 </p><p>  聲明void insert()插入學(xué)生信息,先通過判斷學(xué)生是否存在,若否則繼續(xù)輸入,若是跳出,重新循環(huán) </p><p>  模

14、塊八:刪除學(xué)生信息 </p><p>  聲明void del()實現(xiàn)學(xué)生信息刪除,通過學(xué)號對比確定要刪除的信息,然后用后一個替換掉。 </p><p>  模塊九:顯示學(xué)生信息 </p><p>  通過display()函數(shù)輸出學(xué)生信息 </p><p><b>  模塊十:保存信息 </b></p>

15、<p>  通過fp=fopen("student.txt","w");寫入信息 </p><p>  模塊十一:界面菜單 </p><p>  通過switch(num)調(diào)用,以上各函數(shù),實現(xiàn)功能 </p><p>  三、數(shù)據(jù)結(jié)構(gòu)描述與定義 </p><p><b> ?。ㄒ唬┙Y(jié)

16、構(gòu)體: </b></p><p>  “結(jié)構(gòu)體名”用作結(jié)構(gòu)體類型的標(biāo)志,它又稱“結(jié)構(gòu)體標(biāo)記”。聲明一個結(jié)構(gòu)體類型的一般形式為: </p><p>  Struct 結(jié)構(gòu)體名 </p><p><b>  {成員表列}; </b></p><p>  大括弧內(nèi)是該結(jié)構(gòu)體中的各個成員,由它們組成一個結(jié)構(gòu)體。對各成

17、員都應(yīng)進(jìn)行類型聲明,即 </p><p><b>  類型名 成員名 </b></p><p>  也可以把“成員表列”稱為“域表”。每一個成員也稱為結(jié)構(gòu)體中的一個域。成員名定名規(guī)與變量名同。 </p><p> ?。ǘ┙Y(jié)構(gòu)體數(shù)組: </p><p>  一個結(jié)構(gòu)體變量中可以存放一組數(shù)據(jù)(如本程序中一個學(xué)生的學(xué)號、姓名

18、、成績等)。因為程序中需存放若干個學(xué)生的信息,這些數(shù)據(jù)需要參加運算,就得運用數(shù)組即結(jié)構(gòu)體數(shù)組。結(jié)構(gòu)體數(shù)組的每個數(shù)組元素都是一個結(jié)構(gòu)體類型的數(shù)據(jù),它們分別包括各個成員(分量)項。 </p><p>  四、程序主要代碼分析 </p><p>  #include<stdio.h>  /*I/O函數(shù)*/#include<stdlib.h> /*其它說明*/

19、#include<string.h> /*字符串函數(shù)*/#define BUFLEN 100 /* 緩沖區(qū)最大字符數(shù) */#define LEN 15 /* 學(xué)號和姓名最大字符數(shù),實際請更改 */#define N 100 /* 最大學(xué)生人數(shù),實際請更改*/struct record /*結(jié)構(gòu)體*/{char code[LEN+1]; /* 學(xué)號 */char name[LEN+1]; /* 姓名 */int

20、 age; /* 年齡 */char sex[3]; /* 性別 */char time[LEN+1]; /* 出生年月 */char add[30]; /* 家庭地址 */char tel[LEN+1]; /* 電話號碼 */char mail[30]; /* 電子郵件地址 */}stu[N];int k=1,n,m; /* 定義全局變量 */ </p><p>  void readfile()

21、;/* 函數(shù)聲明 */void seek();void modify();void insert();void del();void display();void save();void menu(); </p><p>  int main(){  while(k)menu();system("pause");return 0;} </p&

22、gt;<p>  void help(){ printf("\n0.歡迎使用系統(tǒng)幫助!\n");printf("\n1.進(jìn)入系統(tǒng)后,先刷新學(xué)生信息,再查詢;\n");printf("\n2.按照菜單提示鍵入數(shù)字代號;\n");printf("\n3.增加學(xué)生信息后,切記保存按7;\n");printf("\n4.

23、謝謝您的使用!\n");} </p><p>  void readfile()/* 建立信息 */{char *p="student.txt";FILE *fp;int i=0;if ((fp=fopen("student.txt","r"))==NULL){  printf("Open file

24、 %s error! Strike any key to exit!",p);system("pause");exit(0);}while(fscanf(fp,"%s %s%d%s %s %s %s %s",stu[i].code,stu[i].name,&stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,s

25、tu[i].mail)==8){i++;i=i;}fclose(fp);n=i;printf("錄入完畢!\n");} </p><p>  void seek() /*查找*/{int i,item,flag;char s1[21]; /* 以姓名和學(xué)號最長長度+1為準(zhǔn) */printf("------------------\n");print

26、f("-----1.按學(xué)號查詢-----\n");printf("-----2.按姓名查詢-----\n");printf("-----3.退出本菜單-----\n");printf("------------------\n");while(1){printf("請選擇子菜單編號:");scanf("%d&quo

27、t;,&item);flag=0;switch(item){case 1:printf("請輸入要查詢的學(xué)生的學(xué)號:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){flag=1;printf("學(xué)生學(xué)號  學(xué)生姓名  年齡  性別 

28、;  出生年月   地址     電話       E-mail\n");printf("-----------------</p><p>  void modify() /*修改信息*/{int i,item,num;char sex1[3],s1[LE

29、N+1],s2[LEN+1]; /* 以姓名和學(xué)號最長長度+1為準(zhǔn) */printf("請輸入要要修改的學(xué)生的學(xué)號:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0) /*比較字符串是否相等*/num=i;printf("------------------\n");printf

30、("1.修改姓名\n");printf("2.修改年齡\n");printf("3.修改性別\n");printf("4.修改出生年月\n");printf("5.修改地址\n");printf("6.修改電話號碼\n");printf("7.修改E-mail地址\n");printf

31、("8.退出本菜單\n");printf("------------------\n");while(1){printf("請選擇子菜單編號:");scanf("%d",&item);switch</p><p>  void sort()/*按學(xué)號排序*/{int i,j,*p,*q,s; 

32、60;char temp[10];for(i=0;i<n-1;i++){for(j=n-1;j>i;j--)if(strcmp(stu[j-1].code,stu[j].code)>0){strcpy(temp,stu[j-1].code);strcpy(stu[j-1].code,stu[j].code);strcpy(stu[j].code,temp);strcpy(temp,stu[j-1].n

33、ame);strcpy(stu[j-1].name,stu[j].name);strcpy(stu[j].name,temp);strcpy(temp,stu[j-1].sex);strcpy(stu[j-1].sex,stu[j].sex);strcpy(stu[j].sex,temp);strcpy(temp,stu[j-1].time);strcpy(stu[j-1].time,stu[j].time);strcp

34、y(stu[j].time,temp);strcpy(te</p><p>  void insert() /*插入函數(shù)*/{ int i=n,j,flag;printf("請輸入待增加的學(xué)生數(shù):\n");scanf("%d",&m);do{ flag=1;while(flag){flag=0;printf("請

35、輸入第 %d 個學(xué)生的學(xué)號:\n",i+1);scanf("%s",stu[i].code);for(j=0;j<i;j++)if(strcmp(stu[i].code,stu[j].code)==0){printf("已有該學(xué)號,請檢查后重新錄入!\n");flag=1;break; /*如有重復(fù)立即退出該層循環(huán),提高判斷速度*/}}printf("

36、請輸入第 %d 個學(xué)生的姓名:\n",i+1);scanf("%s",stu[i].name);printf("請輸入第 %d 個學(xué)生的年齡:\n",i+1);scanf("%d",&stu[i].age);printf("請輸入第 %d 個學(xué)生的性別:\n",i+1);scanf("%s",stu[i].se

37、x);printf("請輸入第 %d 個學(xué)生的</p><p>  void del(){int i,j,flag=0;char s1[LEN+1];printf("請輸入要刪除學(xué)生的學(xué)號:\n");scanf("%s",s1);for(i=0;i<n;i++)if(strcmp(stu[i].code,s1)==0){ fla

38、g=1;for(j=i;j<n-1;j++)stu[j]=stu[j+1];}if(flag==0)printf("該學(xué)號不存在!\n");if(flag==1){printf("刪除成功,顯示結(jié)果請選擇菜單6\n");n--;}} </p><p>  void display(){ int i;printf("所有學(xué)

39、生的信息為:\n");printf("學(xué)生學(xué)號  學(xué)生姓名  年齡  性別   出生年月   地址     電話     E-mail\n");printf("-------------------------------------------

40、-------------------------\n");for(i=0;i<n;i++){ printf("%6s %7s %5d %5s %9s %8s %10s %14s\n",stu[i].code,stu[i].name,stu[i].age,stu[i].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}} &l

41、t;/p><p>  void save(){int i;FILE *fp;fp=fopen("student.txt","w"); /*寫入*/for(i=0;i<n;i++){fprintf(fp,"%s %s %d %s %s %s %s %s\n",stu[i].code,stu[i].name,stu[i].age,stu[i

42、].sex,stu[i].time,stu[i].add,stu[i].tel,stu[i].mail);}fclose(fp);} </p><p>  void menu()/* 界面 */{int num;printf(" \n\n             

43、   電信082學(xué)生信息管理系統(tǒng)     \n\n");printf("  *****************                    

44、;          \n\n");printf("  * 制作人:顧加楠 *                    

45、          \n \n");printf("  *****************                   

46、           \n\n"); </p><p>  printf("*********************系統(tǒng)功能菜單************************       \n");printf(&quo

47、t;友情提醒:查詢前請先刷新系統(tǒng)!    \n");printf("     ----------------------   ----------------------   \n");printf("     ****************

48、*****************************     \n");printf("     * 0.系統(tǒng)幫助及說明   * *  1.刷新學(xué)生信息    *     \n");printf(" 

49、    *********************************************     \n"); printf("     * 2.查詢學(xué)生信息     * *  3.修改學(xué)生信息    *

50、60;    \n");printf("     *********************************************     \n");print</p><p>  case 0:help();break;case 1:readfile();b

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論