C語言綜合應(yīng)用實(shí)例.doc_第1頁
C語言綜合應(yīng)用實(shí)例.doc_第2頁
C語言綜合應(yīng)用實(shí)例.doc_第3頁
C語言綜合應(yīng)用實(shí)例.doc_第4頁
C語言綜合應(yīng)用實(shí)例.doc_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C語言綜合應(yīng)用實(shí)例一、學(xué)生信息管理系統(tǒng)#include /*I/O函數(shù)*/#include /*其它說明*/#include /*字符串函數(shù)*/#define BUFLEN 100 /* 緩沖區(qū)最大字符數(shù) */#define LEN 15 /* 學(xué)號和姓名最大字符數(shù),實(shí)際請更改 */#define N 100 /* 最大學(xué)生人數(shù),實(shí)際請更改*/struct record /*結(jié)構(gòu)體*/char codeLEN+1; /* 學(xué)號 */char nameLEN+1; /* 姓名 */int age; /* 年齡 */char sex3; /* 性別 */char timeLEN+1; /* 出生年月 */char add30; /* 家庭地址 */char telLEN+1; /* 電話號碼 */char mail30; /* 電子郵件地址 */stuN;int k=1,n,m; /* 定義全局變量 */ void readfile();/* 函數(shù)聲明 */void seek();void modify();void insert();void del();void display();void save();void menu(); int main() while(k)menu();system(pause);return 0; 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.謝謝您的使用!n); void readfile()/* 建立信息 */char *p=student.txt;FILE *fp;int i=0;if (fp=fopen(student.txt,r)=NULL) printf(Open file %s error! Strike any key to exit!,p);system(pause);exit(0);while(fscanf(fp,%s %s%d%s %s %s %s %s,stui.code,,&stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail)=8)i+;i=i;fclose(fp);n=i;printf(錄入完畢!n); void seek() /*查找*/int i,item,flag;char s121; /* 以姓名和學(xué)號最長長度+1為準(zhǔn) */printf(-n);printf(-1.按學(xué)號查詢-n);printf(-2.按姓名查詢-n);printf(-3.退出本菜單-n);printf(-n);while(1)printf(請選擇子菜單編號:);scanf(%d,&item);flag=0;switch(item)case 1:printf(請輸入要查詢的學(xué)生的學(xué)號:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0)flag=1;printf(學(xué)生學(xué)號 學(xué)生姓名 年齡 性別 出生年月 地址 電話 E-mailn);printf(-n);printf(%6s %7s %6d %5s %9s %8s %10s %14sn,stui.code,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);if(flag=0)printf(該學(xué)號不存在!n); break;case 2:printf(請輸入要查詢的學(xué)生的姓名:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(,s1)=0)flag=1;printf(學(xué)生學(xué)號 學(xué)生姓名 年齡 性別 出生年月 地址 電話 E-mailn);printf(-n);printf(%6s %7s %6d %5s %9s %8s %10s %14sn,stui.code,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);if(flag=0)printf(該姓名不存在!n); break;case 3:return;default:printf(請?jiān)?-3之間選擇n); void modify() /*修改信息*/int i,item,num;char sex13,s1LEN+1,s2LEN+1; /* 以姓名和學(xué)號最長長度+1為準(zhǔn) */printf(請輸入要要修改的學(xué)生的學(xué)號:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0) /*比較字符串是否相等*/num=i;printf(-n);printf(1.修改姓名n);printf(2.修改年齡n);printf(3.修改性別n);printf(4.修改出生年月n);printf(5.修改地址n);printf(6.修改電話號碼n);printf(7.修改E-mail地址n);printf(8.退出本菜單n);printf(-n);while(1)printf(請選擇子菜單編號:);scanf(%d,&item);switch(item)case 1:printf(請輸入新的姓名:n);scanf(%s,s2);strcpy(,s2); break;case 2:printf(請輸入新的年齡:n);scanf(%d,&stunum.age);break;case 3:printf(請輸入新的性別:n);scanf(%s,sex1);strcpy(stunum.sex,sex1); break;case 4:printf(請輸入新的出生年月:n);scanf(%s,s2);strcpy(stunum.time,s2); break;case 5:printf(請輸入新的地址:n);scanf(%s,s2);strcpy(stunum.add,s2); break;case 6:printf(請輸入新的電話號碼:n);scanf(%s,s2);strcpy(stunum.tel,s2); break;case 7:printf(請輸入新的E-mail地址:n);scanf(%s,s2);strcpy(stunum.mail,s2); break;case 8:return;default:printf(請?jiān)?-8之間選擇n); void sort()/*按學(xué)號排序*/int i,j,*p,*q,s; char temp10;for(i=0;ii;j-)if(strcmp(stuj-1.code,stuj.code)0)strcpy(temp,stuj-1.code);strcpy(stuj-1.code,stuj.code);strcpy(stuj.code,temp);strcpy(temp,);strcpy(,);strcpy(,temp);strcpy(temp,stuj-1.sex);strcpy(stuj-1.sex,stuj.sex);strcpy(stuj.sex,temp);strcpy(temp,stuj-1.time);strcpy(stuj-1.time,stuj.time);strcpy(stuj.time,temp);strcpy(temp,stuj-1.add);strcpy(stuj-1.add,stuj.add);strcpy(stuj.add,temp);strcpy(temp,stuj-1.tel);strcpy(stuj-1.tel,stuj.tel);strcpy(stuj.tel,temp);strcpy(temp,stuj-1.mail);strcpy(stuj-1.mail,stuj.mail);strcpy(stuj.mail,temp); p=&stuj-1.age; q=&stuj.age; s=*q; *q=*p; *p=s; void insert() /*插入函數(shù)*/ int i=n,j,flag;printf(請輸入待增加的學(xué)生數(shù):n);scanf(%d,&m);do flag=1;while(flag)flag=0;printf(請輸入第 %d 個(gè)學(xué)生的學(xué)號:n,i+1);scanf(%s,stui.code);for(j=0;ji;j+)if(strcmp(stui.code,stuj.code)=0)printf(已有該學(xué)號,請檢查后重新錄入!n);flag=1;break; /*如有重復(fù)立即退出該層循環(huán),提高判斷速度*/printf(請輸入第 %d 個(gè)學(xué)生的姓名:n,i+1);scanf(%s,);printf(請輸入第 %d 個(gè)學(xué)生的年齡:n,i+1);scanf(%d,&stui.age);printf(請輸入第 %d 個(gè)學(xué)生的性別:n,i+1);scanf(%s,stui.sex);printf(請輸入第 %d 個(gè)學(xué)生的出生年月:(格式:年.月)n,i+1);scanf(%s,stui.time);printf(請輸入第 %d 個(gè)學(xué)生的地址:n,i+1);scanf(%s,stui.add);printf(請輸入第 %d 個(gè)學(xué)生的電話:n,i+1);scanf(%s,stui.tel);printf(請輸入第 %d 個(gè)學(xué)生的E-mail:n,i+1);scanf(%s,stui.mail);if(flag=0) i=i;i+;while(in+m);n+=m;printf(錄入完畢!nn);sort(); void del()int i,j,flag=0;char s1LEN+1;printf(請輸入要?jiǎng)h除學(xué)生的學(xué)號:n);scanf(%s,s1);for(i=0;in;i+)if(strcmp(stui.code,s1)=0) flag=1;for(j=i;jn-1;j+)stuj=stuj+1;if(flag=0)printf(該學(xué)號不存在!n);if(flag=1)printf(刪除成功,顯示結(jié)果請選擇菜單6n);n-; void display() int i;printf(所有學(xué)生的信息為:n);printf(學(xué)生學(xué)號 學(xué)生姓名 年齡 性別 出生年月 地址 電話 E-mailn);printf(-n);for(i=0;in;i+) printf(%6s %7s %5d %5s %9s %8s %10s %14sn,stui.code,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail); void save()int i;FILE *fp;fp=fopen(student.txt,w); /*寫入*/for(i=0;in;i+)fprintf(fp,%s %s %d %s %s %s %s %sn,stui.code,,stui.age,stui.sex,stui.time,stui.add,stui.tel,stui.mail);fclose(fp); void menu()/* 界面 */int num;printf( nn 學(xué)生信息管理系統(tǒng) nn);printf( * nn);printf( * 制作人: * n n);printf( * nn); printf(*系統(tǒng)功能菜單* n);printf(友情提醒:查詢前請先刷新系統(tǒng)! n);printf( - - n);printf( * n);printf( * 0.系統(tǒng)幫助及說明 * * 1.刷新學(xué)生信息 * n);printf( * n); printf( * 2.查詢學(xué)生信息 * * 3.修改學(xué)生信息 * n);printf( * n);printf( * 4.增加學(xué)生信息 * * 5.按學(xué)號刪除信息 * n);printf( * n);printf( * 6.顯示當(dāng)前信息 * * 7.保存當(dāng)前學(xué)生信息* n);printf( * * n);printf( * 8.退出系統(tǒng) * n);printf( * n);printf( - - n);printf(請選擇菜單編號:);scanf(%d,&num);switch(num) case 0:help();break;case 1:readfile();break;case 2:seek();break;case 3:modify();break;case 4:insert();break;case 5:del();break;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf(請?jiān)?-8之間選擇n);二、學(xué)生成績管理編寫一個(gè)菜單驅(qū)動(dòng)的學(xué)生成績管理程序。要求如下: 能輸入并顯示n個(gè)學(xué)生的m門考試科目的成績、總分和平均分。 按總分由高到低進(jìn)行排序。 任意輸入一個(gè)學(xué)號,能顯示該學(xué)生的姓名、各門功課的成績。#include #include #include #include #define STU_NUM40 /* 最多的學(xué)生人數(shù) */#define COURSE_NUM10/* 最多的考試科目 */struct studentintnumber;/* 每個(gè)學(xué)生的學(xué)號 */charname10; /* 每個(gè)學(xué)生的姓名 */intscoreCOURSE_NUM;/* 每個(gè)學(xué)生M門功課的成績 */intsum; /* 每個(gè)學(xué)生的總成績 */floataverage; /* 每個(gè)學(xué)生的平均成績 */;typedef struct student STU;/* 函數(shù)功能:向鏈表的末尾添加從鍵盤輸入學(xué)生的學(xué)號、姓名和成績等信息函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址整型變量n,表示學(xué)生人數(shù)整型變量m,表示考試科目函數(shù)返回值:無*/void AppendScore(STU *head, int n, int m)intj;STU*p;for (p=head; pnumber);printf(Input name:);scanf(%s, p-name);for (j=0; jscore+j);/*函數(shù)功能:打印n個(gè)學(xué)生的學(xué)號、姓名和成績等信息函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址整型變量n,表示學(xué)生人數(shù)整型變量m,表示考試科目函數(shù)返回值:無*/void PrintScore(STU *head, int n, int m)STU *p;int i;char str100 = 0, temp3;strcat(str, Number Name );for (i=1; i=m; i+)strcat(str, Score);itoa(i,temp, 10);strcat(str, temp);strcat(str, );strcat(str, sum average);printf(%s, str); /* 打印表頭 */for (p=head; pnumber, p-name);for (i=0; iscorei);printf(%11d%9.2fn, p-sum, p-average);/* 函數(shù)功能:計(jì)算每個(gè)學(xué)生的m門功課的總成績和平均成績函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址整型變量n,表示學(xué)生人數(shù)整型變量m,表示考試科目函數(shù)返回值:無*/void TotalScore(STU *head, int n, int m)STU *p;int i;for (p=head; psum = 0;for (i=0; isum = p-sum + p-scorei;p-average = (float)p-sum / m;/* 函數(shù)功能:用選擇法按總成績由高到低排序函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址整型變量n,表示學(xué)生人數(shù)函數(shù)返回值:無*/void SortScore(STU *head, int n)int i, j, k;STU temp;for (i=0; in-1; i+)k = i;for (j=i; jsum (head+k)-sum)k = j;if (k != i)temp = *(head+k);*(head+k) = *(head+i);*(head+i) = temp; /* 函數(shù)功能:查找學(xué)生的學(xué)號函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址整型變量num,表示要查找的學(xué)號整型變量n,表示學(xué)生人數(shù)函數(shù)返回值:如果找到學(xué)號,則返回它在結(jié)構(gòu)體數(shù)組中的位置,否則返回-1*/int SearchNum(STU *head, int num, int n)int i;for (i=0; inumber = num)return i;return -1;/* 函數(shù)功能:按學(xué)號查找學(xué)生成績并顯示查找結(jié)果函數(shù)參數(shù):結(jié)構(gòu)體指針head,指向存儲學(xué)生信息的結(jié)構(gòu)體數(shù)組的首地址整型變量n,表示學(xué)生人數(shù)整型變量m,表示考試科目函數(shù)返回值:無*/void SearchScore(STU *head, int n, int m)int number, findNo;printf(Please Input the number you want to search:); scanf(%d, &number);findNo = SearchNum(head, number, n);if (findNo = -1)printf(nNot found!n);elsePrintScore(head+findNo, 1, m);/*函數(shù)功能:顯示菜單并獲得用戶鍵盤輸入的選項(xiàng)函數(shù)參數(shù):無函數(shù)返回值:用戶輸入的選項(xiàng)*/char Menu(void)char ch;printf(nManagement for Students scoresn);printf( 1.Append recordn);printf( 2.List recordn);printf( 3.Search recordn);printf( 4.Sort recordn);printf( 0.Exitn);printf(Please Input your choice:);scanf( %c, &ch); /*在%c前面加一個(gè)空格,將存于緩沖區(qū)中的回車符讀入*/return ch;main() charch;intm, n;STU stuSTU_NUM;printf(Input student number and course number(n40,m10):);scanf(%d,%d, &n, &m);while (1)ch = Menu(); /* 顯示菜單,并讀取用戶輸入 */switch (ch)case1:AppendScore(stu, n, m);/* 調(diào)用成績添加模塊 */ TotalScore(stu, n, m);break;case2:PrintScore(stu, n, m); /* 調(diào)用成績顯示模塊 */break;case3:SearchScore(stu, n, m);/* 調(diào)用按學(xué)號查找模塊 */break;case4:SortScore(stu, n); /* 調(diào)用成績排序模塊 */printf(nSorted resultn);PrintScore(stu, n, m);/* 顯示成績排序結(jié)果 */break;case0:exit(0); /* 退出程序 */printf(End of program!); break;default:printf(Input error!);break;學(xué)生成績管理系統(tǒng)#include stdio.h #include stdlib.h #include string.h int shoudsave=0; /* */ int password() char password10; int flag,i=1; do printf(password?n); scanf(%s,password); if(strcmp(password,123) flag=0; i+; else flag=1; break; while(i提示:輸入錯(cuò)誤!n); void Nofind() printf(n=提示:沒有找到該學(xué)生!n); void printc() /* 本函數(shù)用于輸出中文 */ printf( 學(xué)號t 姓名 性別 英語成績 數(shù)學(xué)成績 C語言成績 總分 平均分n); void printe(Node *p)/* 本函數(shù)用于輸出英文 */ printf(%-12s%st%st%dt%dt%dt %dt %dn,p-data.num,,p-data.sex,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.totle,p-data.ave); Node* Locate(Link l,char findmess,char nameornum) /* 該函數(shù)用于定位連表中符合要求的接點(diǎn),并返回該指針 */ Node *r; if(strcmp(nameornum,num)=0) /* 按學(xué)號查詢 */ r=l-next; while(r!=NULL) if(strcmp(r-data.num,findmess)=0) return r; r=r-next; else if(strcmp(nameornum,name)=0) /* 按姓名查詢 */ r=l-next; while(r!=NULL) if(strcmp(,findmess)=0) return r; r=r-next; return 0; void Add(Link l) /* 增加學(xué)生 */ Node *p,*r,*s; char num10; r=l; s=l-next; while(r-next!=NULL) r=r-next; /* 將指針置于最末尾 */ while(1) printf(請你輸入學(xué)號(以0返回上一級菜單:); scanf(%s,num); if(strcmp(num,0)=0) break; while(s) if(strcmp(s-data.num,num)=0) printf(=提示:學(xué)號為%s的學(xué)生已經(jīng)存在,若要修改請你選擇4 修改!n,num); printstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next; p=(Node *)malloc(sizeof(Node); strcpy(p-data.num,num); printf(請你輸入姓名:); scanf(%s,); getchar(); printf(請你輸入性別:); scanf(%s,p-data.sex); getchar(); printf(請你輸入c語言成績:); scanf(%d,&p-data.cgrade); getchar(); printf(請你輸入數(shù)學(xué)成績:); scanf(%d,&p-data.mgrade); getchar(); printf(請你輸入英語成績:); scanf(%d,&p-data.egrade); getchar(); p-data.totle=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=p-data.totle / 3; /* 信息輸入已經(jīng)完成 */ p-next=NULL; r-next=p; r=p; shoudsave=1; void Qur(Link l) /* 查詢學(xué)生 */ int sel; char findmess20; Node *p; if(!l-next) printf(n=提示:沒有資料可以查詢!n); return; printf(n=1按學(xué)號查找n=2按姓名查找n); scanf(%d,&sel); if(sel=1)/* 學(xué)號 */ printf(請你輸入要查找的學(xué)號:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) printf(tttt查找結(jié)果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else if(sel=2) /* 姓名 */ printf(請你輸入要查找的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) printf(tttt查找結(jié)果n); printstart(); printc(); printe(p); printstart(); else Nofind(); else Wrong(); void Del(Link l) /* 刪除 */ int sel; Node *p,*r; char findmess20; if(!l-next) printf(n=提示:沒有資料可以刪除!n); return; printf(n=1按學(xué)號刪除n=2按姓名刪除n); scanf(%d,&sel); if(sel=1) printf(請你輸入要?jiǎng)h除的學(xué)號:); scanf(%s,findmess); p=Locate(l,findmess,num); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:該學(xué)生已經(jīng)成功刪除!n); shoudsave=1; else Nofind(); else if(sel=2) printf(請你輸入要?jiǎng)h除的姓名:); scanf(%s,findmess); p=Locate(l,findmess,name); if(p) r=

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論