#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//輸出菜單 void choosemenu(void);//菜單選擇 void input_student1(int);//輸入學(xué)生信息 void input_student2(void);//輸入總函數(shù) void input_student3(int &,int);//判斷學(xué)號(hào)是否重復(fù) void input_student4(int,int);//覆蓋原信息 void sort_student3(student s[],int);//按照英語(yǔ)成績(jī)排序 void sort_student4(student s[],int);//按照計(jì)算機(jī)成績(jī)排序 void sort_student2(student s[],int);//按照數(shù)學(xué)成績(jī)排序 void sort_student5(student s[],int);//按照平均成績(jī)排序 float input_score2(int);//計(jì)算學(xué)生平均成績(jī) void print_student2(void);//顯示表頭 void print_student3(int);//顯示學(xué)生信息 void print_student1(int);//顯示全部學(xué)生資料 void sort_student1(void);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學(xué)號(hào)查詢學(xué)生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數(shù) void delete_student2(int,int);//刪除學(xué)生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學(xué)生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計(jì)成績(jī) void input_score1(void);//統(tǒng)計(jì)成績(jī)總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) void save_student(student *,int);//保存學(xué)生信息 void main() { menu(); } void save_student(student *s,int a)//保存學(xué)生信息 { FILE *fp; if((fp=fopen("d:\\學(xué)生信息.txt","wb"))==NULL) { printf("不能打開(kāi)文件!\n"); } else { printf("保存信息到D盤(pán)\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 平均成績(jī)\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學(xué)生數(shù)為%d人\n學(xué)生信息保存在D盤(pán)根目錄下,保存文件為“學(xué)生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計(jì)成績(jī)總函數(shù) { int c; c=search_student2(iNumOfStu); printf("學(xué)號(hào):%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成績(jī)錄入成功!\n"); stu[c].average=input_score2(c); } void input_score3(int a)//統(tǒng)計(jì)成績(jī) { printf("數(shù)學(xué)新成績(jī):"); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)新成績(jī):"); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)新成績(jī):"); scanf("%f",&stu[a].sco.computer); } void change_student2(int a)//修改學(xué)生資料 { printf("學(xué)號(hào):%d----修改為:",stu[a].number); scanf("%d",&stu[a].number); getchar(); printf("姓名:%s----修改為:",stu[a].name); gets(stu[a].name); printf("數(shù)學(xué)成績(jī):%.2f----修改為:",stu[a].sco.math); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)成績(jī):%.2f----修改為:",stu[a].sco.english); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)成績(jī):%.2f----修改為:",stu[a].sco.computer); scanf("%f",&stu[a].sco.computer); } void change_student1(void)//修改總函數(shù) { int c; c=search_student2(iNumOfStu); getchar(); printf("是否要修改此學(xué)生信息?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { change_student2(c); stu[c].average=input_score2(c); printf("信息修改成功!\n"); } } void delete_student1(void)//刪除總函數(shù) { int c; c=search_student2(iNumOfStu); getchar(); printf("是否刪除此條記錄?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { delete_student2(c,iNumOfStu); printf("記錄已刪除!\n"); } } void delete_student2(int a,int b)//刪除學(xué)生信息 { for(int i=a;i<b-1;i++) { stu[i]=stu[i+1]; } --iNumOfStu; } void search_student1(void)//查詢總函數(shù) { printf("1、按學(xué)號(hào)查詢\n2、按平均分最高查詢\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { search_student2(iNumOfStu); break; } case 2: { search_student3(iNumOfStu); break; } default: break; } } void menu(void)//菜單調(diào)度總函數(shù) { print_menu(); choosemenu(); } void sort_student1(void)//排序總函數(shù) { printf("1、按數(shù)學(xué)成績(jī)排序\n2、按英語(yǔ)成績(jī)排序\n3、按計(jì)算機(jī)成績(jī)排序\n4、按平均成績(jī)排序\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { sort_student2(stu,iNumOfStu); break; } case 2: { sort_student3(stu,iNumOfStu); break; } case 3: { sort_student4(stu,iNumOfStu); break; } case 4: { sort_student5(stu,iNumOfStu); break; } default: break; } } void print_student1(int a)//顯示全部學(xué)生資料 { printf("本班所有學(xué)生具體信息如下\n"); print_student2(); for(int i=0;i<a;i++) { print_student3(i); } } void print_student3(int a)//顯示學(xué)生信息 { printf("%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[a].number,stu[a].name,stu[a].sco.math,stu[a].sco.english,stu[a].sco.computer,stu[a].average); } void print_student2(void)//顯示表頭 { printf(" 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 平均成績(jī)\n"); } void input_student4(int a,int b)//覆蓋原信息 { stu[a]=stu[b-1]; --iNumOfStu; } void input_student3(int &a,int b)//判斷學(xué)號(hào)是否重復(fù) { if(a!=0) { int i=0; do { if(stu[a].number==stu[i].number) { printf("此學(xué)號(hào)代表的學(xué)生已錄入\n1、覆蓋原信息\n2、重新輸入\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { input_student4(i,iNumOfStu); a=iNumOfStu-1; printf("信息已替換!\n"); break; } case 2: { printf("請(qǐng)重新輸入學(xué)生信息:\n"); input_student1(iNumOfStu-1); break; } default: break; } break; } ++i; } while(i<b-1); } } void print_menu(void)//輸出菜單 { printf("======歡迎來(lái)到學(xué)生信息管理系統(tǒng)======\n"); printf(" 1、輸入學(xué)生資料\n"); printf(" 2、刪除學(xué)生資料\n"); printf(" 3、查詢學(xué)生資料\n"); printf(" 4、修改學(xué)生資料\n"); printf(" 5、顯示學(xué)生資料\n"); printf(" 6、統(tǒng)計(jì)學(xué)生成績(jī)\n"); printf(" 7、排序?qū)W生成績(jī)\n"); printf(" 8、保存學(xué)生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統(tǒng)\n"); printf("====================================\n"); printf("請(qǐng)選擇:"); } void input_student2(void)//輸入總函數(shù) { char end; printf("請(qǐng)輸入學(xué)生信息(在最后一個(gè)學(xué)生信息錄入完成后以“/”結(jié)束錄入):\n"); for(int i=0;(end=getchar())!='/';i++) { input_student1(i); ++iNumOfStu; input_student3(i,iNumOfStu); } for(int j=0;j<iNumOfStu;j++) { stu[j].average=input_score2(j); } } void input_student1(int a)//輸入學(xué)生信息 { printf("學(xué)號(hào):"); scanf("%d",&stu[a].number); getchar(); printf("姓名:"); gets(stu[a].name); printf("數(shù)學(xué)成績(jī):"); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)成績(jī):"); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)成績(jī):"); scanf("%f",&stu[a].sco.computer); } float input_score2(int a)//計(jì)算學(xué)生平均成績(jī) { return (stu[a].sco.math+stu[a].sco.english+stu[a].sco.computer)/3; } void search_student3(int a)//按平均分最高查詢并輸出 { int max=0; for(int i=0;i<a;i++) { if(stu[max].average<stu[i].average) { max=i; } } print_student2(); print_student3(max); } void sort_student2(student s[],int a)//按照數(shù)學(xué)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.math>stu[max].sco.math) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student3(student s[],int a)//按照英語(yǔ)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.english>stu[max].sco.english) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student4(student s[],int a)//按照計(jì)算機(jī)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.computer>stu[max].sco.computer) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student5(student s[],int a)//按照平均成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].average>stu[max].average) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } int search_student2(int a)//按照學(xué)號(hào)查找學(xué)生并輸出 { int num; int c; printf("請(qǐng)輸入要查詢的學(xué)號(hào):"); scanf("%d",&num); for(int i=0;i<a;i++) { if(num==stu[i].number) { c=i; } } printf("此學(xué)生的信息是:\n"); print_student2(); print_student3(c); return c; } void choosemenu(void)//菜單選擇 { int i; scanf("%d",&i); switch(i) { case 1: { input_student2(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 2: { delete_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 3: { search_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 4: { change_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 5: { print_student1(iNumOfStu); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 6: { input_score1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 7: { sort_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 8: { save_student(stu,iNumOfStu); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 9: { print_help(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 10: { exit_student(); } default: break; } } 運(yùn)行結(jié)果: 源文件下載地址: http://115.com/file/clnq138g#一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng).rar (請(qǐng)將此地址復(fù)制到瀏覽器地址欄中訪問(wèn)下載頁(yè)面)
標(biāo)簽: 成績(jī)查詢系統(tǒng)
上傳時(shí)間: 2019-06-08
上傳用戶:啊的撒旦
#include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//輸出菜單 void choosemenu(void);//菜單選擇 void input_student1(int);//輸入學(xué)生信息 void input_student2(void);//輸入總函數(shù) void input_student3(int &,int);//判斷學(xué)號(hào)是否重復(fù) void input_student4(int,int);//覆蓋原信息 void sort_student3(student s[],int);//按照英語(yǔ)成績(jī)排序 void sort_student4(student s[],int);//按照計(jì)算機(jī)成績(jī)排序 void sort_student2(student s[],int);//按照數(shù)學(xué)成績(jī)排序 void sort_student5(student s[],int);//按照平均成績(jī)排序 float input_score2(int);//計(jì)算學(xué)生平均成績(jī) void print_student2(void);//顯示表頭 void print_student3(int);//顯示學(xué)生信息 void print_student1(int);//顯示全部學(xué)生資料 void sort_student1(void);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學(xué)號(hào)查詢學(xué)生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數(shù) void delete_student2(int,int);//刪除學(xué)生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學(xué)生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計(jì)成績(jī) void input_score1(void);//統(tǒng)計(jì)成績(jī)總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) void save_student(student *,int);//保存學(xué)生信息 void main() { menu(); } void save_student(student *s,int a)//保存學(xué)生信息 { FILE *fp; if((fp=fopen("d:\\學(xué)生信息.txt","wb"))==NULL) { printf("不能打開(kāi)文件!\n"); } else { printf("保存信息到D盤(pán)\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 平均成績(jī)\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學(xué)生數(shù)為%d人\n學(xué)生信息保存在D盤(pán)根目錄下,保存文件為“學(xué)生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計(jì)成績(jī)總函數(shù) { int c; c=search_student2(iNumOfStu); printf("學(xué)號(hào):%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成績(jī)錄入成功!\n"); stu[c].average=input_score2(c); } void input_score3(int a)//統(tǒng)計(jì)成績(jī) { printf("數(shù)學(xué)新成績(jī):"); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)新成績(jī):"); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)新成績(jī):"); scanf("%f",&stu[a].sco.computer); } void change_student2(int a)//修改學(xué)生資料 { printf("學(xué)號(hào):%d----修改為:",stu[a].number); scanf("%d",&stu[a].number); getchar(); printf("姓名:%s----修改為:",stu[a].name); gets(stu[a].name); printf("數(shù)學(xué)成績(jī):%.2f----修改為:",stu[a].sco.math); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)成績(jī):%.2f----修改為:",stu[a].sco.english); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)成績(jī):%.2f----修改為:",stu[a].sco.computer); scanf("%f",&stu[a].sco.computer); } void change_student1(void)//修改總函數(shù) { int c; c=search_student2(iNumOfStu); getchar(); printf("是否要修改此學(xué)生信息?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { change_student2(c); stu[c].average=input_score2(c); printf("信息修改成功!\n"); } } void delete_student1(void)//刪除總函數(shù) { int c; c=search_student2(iNumOfStu); getchar(); printf("是否刪除此條記錄?(“y”代表是)"); char d; scanf("%c",&d); if(d=='y'||d=='Y') { delete_student2(c,iNumOfStu); printf("記錄已刪除!\n"); } } void delete_student2(int a,int b)//刪除學(xué)生信息 { for(int i=a;i<b-1;i++) { stu[i]=stu[i+1]; } --iNumOfStu; } void search_student1(void)//查詢總函數(shù) { printf("1、按學(xué)號(hào)查詢\n2、按平均分最高查詢\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { search_student2(iNumOfStu); break; } case 2: { search_student3(iNumOfStu); break; } default: break; } } void menu(void)//菜單調(diào)度總函數(shù) { print_menu(); choosemenu(); } void sort_student1(void)//排序總函數(shù) { printf("1、按數(shù)學(xué)成績(jī)排序\n2、按英語(yǔ)成績(jī)排序\n3、按計(jì)算機(jī)成績(jī)排序\n4、按平均成績(jī)排序\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { sort_student2(stu,iNumOfStu); break; } case 2: { sort_student3(stu,iNumOfStu); break; } case 3: { sort_student4(stu,iNumOfStu); break; } case 4: { sort_student5(stu,iNumOfStu); break; } default: break; } } void print_student1(int a)//顯示全部學(xué)生資料 { printf("本班所有學(xué)生具體信息如下\n"); print_student2(); for(int i=0;i<a;i++) { print_student3(i); } } void print_student3(int a)//顯示學(xué)生信息 { printf("%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[a].number,stu[a].name,stu[a].sco.math,stu[a].sco.english,stu[a].sco.computer,stu[a].average); } void print_student2(void)//顯示表頭 { printf(" 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 平均成績(jī)\n"); } void input_student4(int a,int b)//覆蓋原信息 { stu[a]=stu[b-1]; --iNumOfStu; } void input_student3(int &a,int b)//判斷學(xué)號(hào)是否重復(fù) { if(a!=0) { int i=0; do { if(stu[a].number==stu[i].number) { printf("此學(xué)號(hào)代表的學(xué)生已錄入\n1、覆蓋原信息\n2、重新輸入\n請(qǐng)選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { input_student4(i,iNumOfStu); a=iNumOfStu-1; printf("信息已替換!\n"); break; } case 2: { printf("請(qǐng)重新輸入學(xué)生信息:\n"); input_student1(iNumOfStu-1); break; } default: break; } break; } ++i; } while(i<b-1); } } void print_menu(void)//輸出菜單 { printf("======歡迎來(lái)到學(xué)生信息管理系統(tǒng)======\n"); printf(" 1、輸入學(xué)生資料\n"); printf(" 2、刪除學(xué)生資料\n"); printf(" 3、查詢學(xué)生資料\n"); printf(" 4、修改學(xué)生資料\n"); printf(" 5、顯示學(xué)生資料\n"); printf(" 6、統(tǒng)計(jì)學(xué)生成績(jī)\n"); printf(" 7、排序?qū)W生成績(jī)\n"); printf(" 8、保存學(xué)生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統(tǒng)\n"); printf("====================================\n"); printf("請(qǐng)選擇:"); } void input_student2(void)//輸入總函數(shù) { char end; printf("請(qǐng)輸入學(xué)生信息(在最后一個(gè)學(xué)生信息錄入完成后以“/”結(jié)束錄入):\n"); for(int i=0;(end=getchar())!='/';i++) { input_student1(i); ++iNumOfStu; input_student3(i,iNumOfStu); } for(int j=0;j<iNumOfStu;j++) { stu[j].average=input_score2(j); } } void input_student1(int a)//輸入學(xué)生信息 { printf("學(xué)號(hào):"); scanf("%d",&stu[a].number); getchar(); printf("姓名:"); gets(stu[a].name); printf("數(shù)學(xué)成績(jī):"); scanf("%f",&stu[a].sco.math); printf("英語(yǔ)成績(jī):"); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)成績(jī):"); scanf("%f",&stu[a].sco.computer); } float input_score2(int a)//計(jì)算學(xué)生平均成績(jī) { return (stu[a].sco.math+stu[a].sco.english+stu[a].sco.computer)/3; } void search_student3(int a)//按平均分最高查詢并輸出 { int max=0; for(int i=0;i<a;i++) { if(stu[max].average<stu[i].average) { max=i; } } print_student2(); print_student3(max); } void sort_student2(student s[],int a)//按照數(shù)學(xué)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.math>stu[max].sco.math) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student3(student s[],int a)//按照英語(yǔ)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.english>stu[max].sco.english) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student4(student s[],int a)//按照計(jì)算機(jī)成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].sco.computer>stu[max].sco.computer) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } void sort_student5(student s[],int a)//按照平均成績(jī)排序 { struct student temp; for(int i=0;i<a-1;i++) { int max=i; for(int j=i+1;j<a;j++) if(stu[j].average>stu[max].average) { max=j; } if(max!=i) { temp=stu[max]; stu[max]=stu[i]; stu[i]=temp; } } print_student2(); for(int k=0;k<a;k++) { print_student3(k); } } int search_student2(int a)//按照學(xué)號(hào)查找學(xué)生并輸出 { int num; int c; printf("請(qǐng)輸入要查詢的學(xué)號(hào):"); scanf("%d",&num); for(int i=0;i<a;i++) { if(num==stu[i].number) { c=i; } } printf("此學(xué)生的信息是:\n"); print_student2(); print_student3(c); return c; } void choosemenu(void)//菜單選擇 { int i; scanf("%d",&i); switch(i) { case 1: { input_student2(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 2: { delete_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 3: { search_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 4: { change_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 5: { print_student1(iNumOfStu); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 6: { input_score1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 7: { sort_student1(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 8: { save_student(stu,iNumOfStu); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 9: { print_help(); printf("按回車鍵返回主菜單"); getchar(); getchar(); menu(); break; } case 10: { exit_student(); } default: break; } } 運(yùn)行結(jié)果: 源文件下載地址: http://115.com/file/clnq138g#一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng).rar (請(qǐng)將此地址復(fù)制到瀏覽器地址欄中訪問(wèn)下載頁(yè)面) #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100 int iNumOfStu=0; struct score { float math; float english; float computer; }; struct student { int number; char name[20]; struct score sco; float average; }; struct student stu[N]; void print_menu(void);//輸出菜單 void choosemenu(void);//菜單選擇 void input_student1(int);//輸入學(xué)生信息 void input_student2(void);//輸入總函數(shù) void input_student3(int &,int);//判斷學(xué)號(hào)是否重復(fù) void input_student4(int,int);//覆蓋原信息 void sort_student3(student s[],int);//按照英語(yǔ)成績(jī)排序 void sort_student4(student s[],int);//按照計(jì)算機(jī)成績(jī)排序 void sort_student2(student s[],int);//按照數(shù)學(xué)成績(jī)排序 void sort_student5(student s[],int);//按照平均成績(jī)排序 float input_score2(int);//計(jì)算學(xué)生平均成績(jī) void print_student2(void);//顯示表頭 void print_student3(int);//顯示學(xué)生信息 void print_student1(int);//顯示全部學(xué)生資料 void sort_student1(void);//排序總函數(shù) void menu(void);//菜單調(diào)度總函數(shù) int search_student2(int);//按學(xué)號(hào)查詢學(xué)生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數(shù) void delete_student2(int,int);//刪除學(xué)生信息 void delete_student1(void);//刪除總函數(shù) void change_student2(int);//修改學(xué)生資料 void change_student1(void);//修改總函數(shù) void input_score3(int);//統(tǒng)計(jì)成績(jī) void input_score1(void);//統(tǒng)計(jì)成績(jī)總函數(shù) void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統(tǒng) void save_student(student *,int);//保存學(xué)生信息 void main() { menu(); } void save_student(student *s,int a)//保存學(xué)生信息 { FILE *fp; if((fp=fopen("d:\\學(xué)生信息.txt","wb"))==NULL) { printf("不能打開(kāi)文件!\n"); } else { printf("保存信息到D盤(pán)\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語(yǔ)成績(jī) 計(jì)算機(jī)成績(jī) 平均成績(jī)\r\n"); for(int i=0;i<a;i++) { fprintf(fp,"%8d%12s%14.2f%14.2f%14.2f%14.2f\n",stu[i].number,stu[i].name,stu[i].sco.math,stu[i].sco.english,stu[i].sco.computer,stu[i].average); fprintf(fp,"\r\n"); } fclose(fp); printf("信息保存成功!\n"); } } void exit_student(void)//退出系統(tǒng) { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統(tǒng)所能容納的最大學(xué)生數(shù)為%d人\n學(xué)生信息保存在D盤(pán)根目錄下,保存文件為“學(xué)生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計(jì)成績(jī)總函數(shù) { int c; c=search_student2(iNumOfStu); printf("學(xué)號(hào):%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成績(jī)錄入成功!
標(biāo)簽: c語(yǔ)言
上傳時(shí)間: 2019-06-09
上傳用戶:啊的撒旦
輸入整數(shù)n,生成1,2,3...n這n個(gè)數(shù)字任意排列組合的所有序列
上傳時(shí)間: 2020-10-18
上傳用戶:
快速傅里葉變換,fft應(yīng)用實(shí)例。供學(xué)習(xí),供參考。 原理:快速傅里葉變換 (fast Fourier transform), 即利用計(jì)算機(jī)計(jì)算離散傅里葉變換(DFT)的高效、快速計(jì)算方法的統(tǒng)稱,簡(jiǎn)稱FFT。快速傅里葉變換是1965年由J.W.庫(kù)利和T.W.圖基提出的。采用這種算法能使計(jì)算機(jī)計(jì)算離散傅里葉變換所需要的乘法次數(shù)大為減少,特別是被變換的抽樣點(diǎn)數(shù)N越多,F(xiàn)FT算法計(jì)算量的節(jié)省就越顯著。
上傳時(shí)間: 2021-07-14
上傳用戶:hhh4321
相當(dāng)好的一本講C語(yǔ)言的書(shū)籍,我看過(guò)后感覺(jué)是提升了一個(gè)檔次,希望更多人可以看看吧。學(xué)習(xí)一下。
標(biāo)簽: 嵌入式 linux 物聯(lián)網(wǎng)
上傳時(shí)間: 2022-04-27
上傳用戶:
Arduino是一個(gè)開(kāi)放源碼電子原型平臺(tái),擁有靈活、易用的硬件和軟件。Arduino專為設(shè)計(jì)師,工藝美術(shù)人員,業(yè)余 愛(ài)好者,以及對(duì)開(kāi)發(fā)互動(dòng)裝置或互動(dòng)式開(kāi)發(fā)環(huán)境感興趣的人而設(shè)的。Arduino可以接收來(lái)自各種傳感器的輸入信號(hào)從而檢測(cè)出運(yùn)行環(huán)境,并通過(guò)控制光源,電機(jī)以及其他驅(qū)動(dòng)器來(lái)影響 其周圍環(huán)境。板上的微控制器編程使用Arduino編程語(yǔ)言(基于Wiring)和Arduino開(kāi)發(fā)環(huán)境(以Processing為基 礎(chǔ))。為了讓更多人了解Arduino并掌握它,電路城特推出Arduino入門(mén)中文教程+實(shí)驗(yàn)代碼+Arduino驅(qū)動(dòng)安裝等。
標(biāo)簽: arduino
上傳時(shí)間: 2022-06-15
上傳用戶:jiabin
1.1課程設(shè)計(jì)的目的開(kāi)發(fā)一個(gè)專用于實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)之間即時(shí)通訊的軟件,以方便兩臺(tái)或兩臺(tái)以上的計(jì)算機(jī)之間信息的交流。,在連接并通信時(shí),尤其是近程的即時(shí)通訊,徹底的脫離了遠(yuǎn)程的服務(wù)器,避免了和遠(yuǎn)程服務(wù)器連接時(shí)過(guò)多的浪費(fèi)網(wǎng)絡(luò)資源。并且避免了服務(wù)器忙或與服務(wù)器無(wú)法連接時(shí),浪費(fèi)過(guò)多時(shí)間用于和服務(wù)器建立連接!因此,這個(gè)軟件是極具適應(yīng)性和實(shí)用性的即時(shí)通訊軟件!本次課程設(shè)計(jì)的目的是學(xué)習(xí)基于UDP協(xié)議實(shí)現(xiàn)網(wǎng)絡(luò)聊天程序,已達(dá)到學(xué)會(huì)面向無(wú)連接方式的程序設(shè)計(jì)方法,并理解網(wǎng)絡(luò)編程中面向無(wú)連接的概念。1.2課程設(shè)計(jì)內(nèi)容1,實(shí)現(xiàn)一個(gè)基于UDP協(xié)議的簡(jiǎn)單的聊天程序,包括服務(wù)器和客戶端。2.支持多人聊天。3,客戶端具有圖形化用戶界面。UDP協(xié)議的全稱是用戶數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無(wú)連接的協(xié)議。在OS1模型中,在第四層-傳輸層,處于IP協(xié)議的上一層。UDP有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),也就是說(shuō),當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。UDP用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議。UDP協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。UDP是OS1參考模型中一種無(wú)連接的傳輸層協(xié)議,它主要用于不要求分組順序到達(dá)的傳輸中,分組傳輸順序的檢查與排序由應(yīng)用層完成,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。UDP協(xié)議基本上是IP協(xié)議與上層協(xié)議的接口。UDP協(xié)議適用端口分別運(yùn)行在同一臺(tái)設(shè)備上的多個(gè)應(yīng)用程序。與所熟知的TCP(傳輸控制協(xié)議)協(xié)議一樣,UDP協(xié)議直接位于IP(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù)OSI(開(kāi)放系統(tǒng)互連)參考模型,UDP和TCP都屬于傳輸層協(xié)議。
標(biāo)簽: java udp協(xié)議
上傳時(shí)間: 2022-06-19
上傳用戶:
前言:由于之前聽(tīng)過(guò)太多人抱怨移植FreeRTOS到STM32有各種各樣的問(wèn)題,小燈經(jīng)過(guò)一年多對(duì)FreeRTOS的研究并在公司產(chǎn)品中應(yīng)用, 多少有些心得, 接下來(lái)就由小燈以最新版的FreeRTOS為例一步一步移植到STM32F103 上,并提醒大家某些需要注意的事項(xiàng)。本文檔為非正式技術(shù)文檔,故排版會(huì)有些凌亂,希望大家能提供寶貴意見(jiàn)以供小燈參考改進(jìn)。下面先以IAR 移植為例, 說(shuō)明移植過(guò)程中的諸多注意事項(xiàng), 最后再以MDK移植時(shí)不再重復(fù)說(shuō)明,所以還是建議大家先花些時(shí)間看IAR 的移植過(guò)程,哪怕你不使用IAR,最好也注意下那一大堆注意事項(xiàng)!一、從官網(wǎng)下載最新版的FreeRTOS源碼下面的網(wǎng)址是官方最新源碼的下載地址:https://sourceforge.net/projects/freertos/files/latest/download?source=files目前官方提供的最新版本是v9.0.0 , FreeRTOS 源碼在解壓目錄下的路徑為FreeRTOS_V9.0.0rc2\FreeRTOS\SourceFreeRTOS組織為了搶用戶也是拼了命的, 不信你打開(kāi)Demo文件夾看看, 里面提供了FreeRTOS在各種單片機(jī)上已經(jīng)移植好的工程,如果建工程時(shí)遇到什么問(wèn)題,可以參考下這些Demo。不過(guò)小燈現(xiàn)在著重于自己動(dòng)手移植FreeRTOS,考慮到原子哥@正點(diǎn)原子的用戶比較多,絕大多數(shù)習(xí)慣了使用MDK來(lái)開(kāi)發(fā)STM32,因此小燈分別以IAR 和MDK兩種使用比較廣泛的開(kāi)發(fā)環(huán)境來(lái)移植FreeRTOS。說(shuō)到IAR 和MDK,不得不提的是小燈自從用了IAR 之后就果斷放棄了MDK,相信很多人有這個(gè)經(jīng)歷,哈哈!在開(kāi)始移植FreeRTOS之前,先介紹下FreeRTOS的源碼:
上傳時(shí)間: 2022-06-20
上傳用戶:
并不是每個(gè)人都需要編譯固件,筆者更推薦你直接使用官方固件,如果需要相應(yīng)的軟件,可以直接通過(guò)opkg 安裝。為滿足更多人需求,這里提供一個(gè)傻瓜教程,照著走一次,就編譯好了,轉(zhuǎn)的別問(wèn)我為什么????1.根據(jù)你的系統(tǒng)安裝相應(yīng)的包,把以下命令復(fù)制粘貼運(yùn)行一次就行。Ubuntu 32bitsudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawkflex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzipUbuntu 64bitsudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gccmultilibflex git-core gettextArch Linuxpacman -S --needed subversion asciidoc bash bc binutils bzip2 fastjar flex git gcc util-linuxgawk intltool zlib make cdrkit ncurses openssl patch perl-extutils-makemaker rsync sdcc unzipwget gettext libxslt boost libusb bin86 sharutils b43-fwcutter findutilsDebian 6 Squeezeapt-get install libncurses5-dev zlib1g-dev gawk flex libssl-dev sdcc-nfDebian 7 Wheezy
上傳時(shí)間: 2022-06-23
上傳用戶:bluedrops
前言說(shuō)明控制的方法遠(yuǎn)遠(yuǎn)不止PID這一招,在許多場(chǎng)合也未必是最佳的控制算法。對(duì)于學(xué)習(xí)能力較好的師弟也可以再去尋求一種更優(yōu)秀的控制算法。PID的分類多如牛毛,例如:模糊PlD、數(shù)字PID、神經(jīng)元PID等等。另外,本文檔是參考幾十個(gè)PID相關(guān)文檔資料整合而成。由于個(gè)人能力等原因,從策劃、編輯、排版等花了一個(gè)多月的時(shí)間才完成此次PlD法的整合。為了更有針對(duì)性和有效性,本文檔主要講解數(shù)字PID及其變種(改進(jìn)式PID):位置式和增量式。以及這兩種PID的C語(yǔ)言編程實(shí)現(xiàn)、參數(shù)的調(diào)整確定和PID控制的應(yīng)用。我們?yōu)槭裁匆肞ID岸法呢?原國(guó)很商單:其一,PlD是一種比較成熟的控制算法,而且還有許多基于PID的變種算法(簡(jiǎn)稱改進(jìn)式PID)。其二,資杜多,學(xué)習(xí)難度路低,入門(mén)快。其三,多屆師兄實(shí)踐過(guò),感覺(jué)效果還不錯(cuò)!但每年資料成指數(shù)增長(zhǎng),從上屆師兄那搭貝了好幾G資料,進(jìn)PID控制的文檔可以夸張的說(shuō)跟天上的“星星”一樣,看了之后眼花繚亂,而且有很多重復(fù)的。為了讓更多人能快速上手使用PID控制算法,結(jié)合個(gè)人經(jīng)驗(yàn)和相關(guān)文檔將它濃縮如下:
標(biāo)簽: pid算法
上傳時(shí)間: 2022-07-01
上傳用戶:
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1