




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C語言綜合應(yīng)用實例一、學(xué)生信息管理系統(tǒng)#include<stdio.h> /*I/O函數(shù)*/#include<stdlib.h> /*其它說明*/#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 codeLEN+1; /* 學(xué)號 */char nameLEN+1; /* 姓名 */int age; /*
2、 年齡 */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();sys
3、tem("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;in
4、t 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+
5、;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(&quo
6、t;%d",&item);flag=0;switch(item)case 1:printf("請輸入要查詢的學(xué)生的學(xué)號:n");scanf("%s",s1);for(i=0;i<n;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
7、,,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;i<n;i+)if(strcmp(,s1)=0)flag=1;printf("學(xué)生學(xué)號 學(xué)生姓名 年齡 性別 出生年月 地址 電話 E-mailn");printf("
8、-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("請在1-3之間選擇n"); void modify() /*修改信息*/int i,item,num;char sex13,s1LEN+1,s2L
9、EN+1; /* 以姓名和學(xué)號最長長度+1為準(zhǔn) */printf("請輸入要要修改的學(xué)生的學(xué)號:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.code,s1)=0) /*比較字符串是否相等*/num=i;printf("-n");printf("1.修改姓名n");printf("2.修改年齡n");printf("3.修改性別n");printf("4.修改出生年月n");printf("
10、;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);
11、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("請輸入新
12、的地址: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("請在1-8之間
13、選擇n"); void sort()/*按學(xué)號排序*/int i,j,*p,*q,s; char temp10;for(i=0;i<n-1;i+)for(j=n-1;j>i;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);strcp
14、y(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);strcp
15、y(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 個學(xué)生的學(xué)號:n",i+1);sc
16、anf("%s",stui.code);for(j=0;j<i;j+)if(strcmp(stui.code,stuj.code)=0)printf("已有該學(xué)號,請檢查后重新錄入!n");flag=1;break; /*如有重復(fù)立即退出該層循環(huán),提高判斷速度*/printf("請輸入第 %d 個學(xué)生的姓名:n",i+1);scanf("%s",);printf("請輸入第 %d 個學(xué)生的年齡:n",i+1);scanf("%d",&stui.
17、age);printf("請輸入第 %d 個學(xué)生的性別:n",i+1);scanf("%s",stui.sex);printf("請輸入第 %d 個學(xué)生的出生年月:(格式:年.月)n",i+1);scanf("%s",stui.time);printf("請輸入第 %d 個學(xué)生的地址:n",i+1);scanf("%s",stui.add);printf("請輸入第 %d 個學(xué)生的電話:n",i+1);scanf("%s",stui.t
18、el);printf("請輸入第 %d 個學(xué)生的E-mail:n",i+1);scanf("%s",stui.mail);if(flag=0) i=i;i+;while(i<n+m);n+=m;printf("錄入完畢!nn");sort(); void del()int i,j,flag=0;char s1LEN+1;printf("請輸入要刪除學(xué)生的學(xué)號:n");scanf("%s",s1);for(i=0;i<n;i+)if(strcmp(stui.code,s1)=0) fl
19、ag=1;for(j=i;j<n-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;i<n;i+) printf("%6s %7s %5d
20、 %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;i<n;i+)fprintf(fp,"%s %s %d %s %s %s %s %sn",stui.code,,stui.age,stui.sex,stui.ti
21、me,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(&qu
22、ot; * 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(&qu
23、ot; * * 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();brea
24、k;case 6:display();break;case 7:save();break;case 8:k=0;break;default:printf("請在0-8之間選擇n");二、學(xué)生成績管理編寫一個菜單驅(qū)動的學(xué)生成績管理程序。要求如下:§ 能輸入并顯示n個學(xué)生的m門考試科目的成績、總分和平均分。§ 按總分由高到低進(jìn)行排序。§ 任意輸入一個學(xué)號,能顯示該學(xué)生的姓名、各門功課的成績。#include <stdio.h>#include <string.h>#include <ctype.h>#includ
25、e <stdlib.h>#define STU_NUM40 /* 最多的學(xué)生人數(shù) */#define COURSE_NUM10/* 最多的考試科目 */struct studentintnumber;/* 每個學(xué)生的學(xué)號 */charname10; /* 每個學(xué)生的姓名 */intscoreCOURSE_NUM;/* 每個學(xué)生M門功課的成績 */intsum; /* 每個學(xué)生的總成績 */floataverage; /* 每個學(xué)生的平均成績 */;typedef struct student STU;/* 函數(shù)功能:向鏈表的末尾添加從鍵盤輸入學(xué)生的學(xué)號、姓名和成績等信息函數(shù)參數(shù):結(jié)
26、構(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; p<head+n; p+)printf("nInput number:");scanf("%d", &p->number);printf("Input name:");scanf("%s", p->name);for (j=0; j<m;
27、 j+)printf("Input score%d:", j+1);scanf("%d", p->score+j);/*函數(shù)功能:打印n個學(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
28、(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; p<head+n; p+) /* 打印n個學(xué)生的信息 */printf("nNo.%3d%8s", p->number, p->name);for (i=0; i
29、<m; i+)printf("%7d", p->scorei);printf("%11d%9.2fn", p->sum, p->average);/* 函數(shù)功能:計算每個學(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; p<head+n; p+)p->sum = 0;for (
30、i=0; i<m; i+)p->sum = 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; i<n-1; i+)k = i;for (j=i; j<n; j+)if (head+j)->sum > (head+
31、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; i<n; i+)if (head+i)->number = num)return
32、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
33、 (findNo = -1)printf("nNot found!n");elsePrintScore(head+findNo, 1, m);/*函數(shù)功能:顯示菜單并獲得用戶鍵盤輸入的選項函數(shù)參數(shù):無函數(shù)返回值:用戶輸入的選項*/char Menu(void)char ch;printf("nManagement for Students' scoresn");printf(" 1.Append recordn");printf(" 2.List recordn");printf(" 3.Sear
34、ch recordn");printf(" 4.Sort recordn");printf(" 0.Exitn");printf("Please Input your choice:");scanf(" %c", &ch); /*在%c前面加一個空格,將存于緩沖區(qū)中的回車符讀入*/return ch;main() charch;intm, n;STU stuSTU_NUM;printf("Input student number and course number(n<40,m&l
35、t;10):");scanf("%d,%d", &n, &m);while (1)ch = Menu(); /* 顯示菜單,并讀取用戶輸入 */switch (ch)case'1':AppendScore(stu, n, m);/* 調(diào)用成績添加模塊 */ TotalScore(stu, n, m);break;case'2':PrintScore(stu, n, m); /* 調(diào)用成績顯示模塊 */break;case'3':SearchScore(stu, n, m);/* 調(diào)用按學(xué)號查找模塊 *
36、/break;case'4':SortScore(stu, n); /* 調(diào)用成績排序模塊 */printf("nSorted resultn");PrintScore(stu, n, m);/* 顯示成績排序結(jié)果 */break;case'0':exit(0); /* 退出程序 */printf("End of program!"); break;default:printf("Input error!");break;學(xué)生成績管理系統(tǒng)#include "stdio.h" #inc
37、lude "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<=3); return flag; struct stud
38、ent char num10;/* 學(xué)號 */ char name20; char sex4; int cgrade; int mgrade; int egrade; int totle; int ave; char neartime10;/* 最近更新時間 */ ; typedef struct node struct student data; struct node *next; Node,*Link; void menu() printf("*"); printf("t1登記學(xué)生資料ttttt2刪除學(xué)生資料n"); printf("t3
39、查詢學(xué)生資料ttttt4修改學(xué)生資料n"); printf("t5保存學(xué)生資料ttttt6排序?qū)W生資料n"); printf("t7統(tǒng)計學(xué)生資料ttttt8輸出學(xué)生資料n"); printf("t9幫助信息ttttt0退出系統(tǒng)n"); printf("*n"); void printstart() printf("-n"); void Wrong() printf("n=>提示:輸入錯誤!n"); void Nofind() printf("n=&g
40、t;提示:沒有找到該學(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->,p->data.sex,p->data.egrade,p->data.mgrade,p->data.cgrade,p->d
41、ata.totle,p->data.ave); Node* Locate(Link l,char findmess,char nameornum) /* 該函數(shù)用于定位連表中符合要求的接點,并返回該指針 */ 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"
42、;)=0) /* 按姓名查詢 */ r=l->next; while(r!=NULL) if(strcmp(r->,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'返回上一級菜單:)&qu
43、ot;); 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 *)m
44、alloc(sizeof(Node); strcpy(p->data.num,num); printf("請你輸入姓名:"); scanf("%s",p->); getchar(); printf("請你輸入性別:"); scanf("%s",p->data.sex); getchar(); printf("請你輸入c語言成績:"); scanf("%d",&p->data.cgrade); getchar(); printf
45、("請你輸入數(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->
46、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é)號:");
47、 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");
48、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(&qu
49、ot;%d",&sel); if(sel=1) printf("請你輸入要刪除的學(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("請你輸入要刪除的姓名:"); scanf("%s",findmess); p=Locate(l,findmess,"name");
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年國家公共圖書館研究生入學(xué)考試試卷
- 2025年現(xiàn)代統(tǒng)計分析與決策支持的課程考試卷及答案
- 2025年甘肅省特崗教師招聘2261人筆試參考題庫及答案詳解1套
- 物資裝備倉庫管理制度
- 特困中心安全管理制度
- 特護(hù)病房護(hù)士管理制度
- 特殊體質(zhì)學(xué)生管理制度
- 特殊學(xué)校代幣管理制度
- 特殊教育培訓(xùn)管理制度
- 特殊病例后續(xù)管理制度
- 蘇炳添人物介紹運動體育介紹人物經(jīng)歷流線歷程動畫精美課件
- 2024年下半年南昌財政局事業(yè)單位招考易考易錯模擬試題(共500題)試卷后附參考答案
- 《棉鈴蟲的習(xí)性》課件
- 售后延保合同范例
- 通信工程建設(shè)標(biāo)準(zhǔn)強(qiáng)制性條文匯編(2023版)-定額質(zhì)監(jiān)中心
- 中建2024裝配式建筑+鋁模一體化施工技術(shù)手冊
- 2024秋國開《職場寫作》形考作業(yè)1-4參考答案
- 自動尋優(yōu)控制系統(tǒng)在生料立磨中的應(yīng)用實踐
- 土地延期合同范本
- 1.4行列式的性質(zhì)
- GB/T 4706.19-2024家用和類似用途電器的安全第19部分:液體加熱器的特殊要求
評論
0/150
提交評論