#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);//按照英語成績排序 void sort_student4(student s[],int);//按照計(jì)算機(jī)成績排序 void sort_student2(student s[],int);//按照數(shù)學(xué)成績排序 void sort_student5(student s[],int);//按照平均成績排序 float input_score2(int);//計(jì)算學(xué)生平均成績 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ì)成績 void input_score1(void);//統(tǒng)計(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("不能打開文件!\n"); } else { printf("保存信息到D盤\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績 英語成績 計(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盤根目錄下,保存文件為“學(xué)生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計(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("新成績錄入成功!\n"); stu[c].average=input_score2(c); } void input_score3(int a)//統(tǒng)計(jì)成績 { printf("數(shù)學(xué)新成績:"); scanf("%f",&stu[a].sco.math); printf("英語新成績:"); scanf("%f",&stu[a].sco.english); printf("計(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é)成績:%.2f----修改為:",stu[a].sco.math); scanf("%f",&stu[a].sco.math); printf("英語成績:%.2f----修改為:",stu[a].sco.english); scanf("%f",&stu[a].sco.english); printf("計(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請選擇:"); 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é)成績排序\n2、按英語成績排序\n3、按計(jì)算機(jī)成績排序\n4、按平均成績排序\n請選擇:"); 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ì)算機(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請選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { input_student4(i,iNumOfStu); a=iNumOfStu-1; printf("信息已替換!\n"); break; } case 2: { printf("請重新輸入學(xué)生信息:\n"); input_student1(iNumOfStu-1); break; } default: break; } break; } ++i; } while(i<b-1); } } void print_menu(void)//輸出菜單 { printf("======歡迎來到學(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é)生成績\n"); printf(" 7、排序?qū)W生成績\n"); printf(" 8、保存學(xué)生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統(tǒng)\n"); printf("====================================\n"); printf("請選擇:"); } void input_student2(void)//輸入總函數(shù) { char end; printf("請輸入學(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é)成績:"); scanf("%f",&stu[a].sco.math); printf("英語成績:"); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)成績:"); scanf("%f",&stu[a].sco.computer); } float input_score2(int a)//計(jì)算學(xué)生平均成績 { 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é)成績排序 { 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)//按照英語成績排序 { 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ī)成績排序 { 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)//按照平均成績排序 { 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("請輸入要查詢的學(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è)簡單的學(xué)生成績管理系統(tǒng).rar (請將此地址復(fù)制到瀏覽器地址欄中訪問下載頁面)
標(biāo)簽: 成績查詢系統(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);//按照英語成績排序 void sort_student4(student s[],int);//按照計(jì)算機(jī)成績排序 void sort_student2(student s[],int);//按照數(shù)學(xué)成績排序 void sort_student5(student s[],int);//按照平均成績排序 float input_score2(int);//計(jì)算學(xué)生平均成績 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ì)成績 void input_score1(void);//統(tǒng)計(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("不能打開文件!\n"); } else { printf("保存信息到D盤\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績 英語成績 計(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盤根目錄下,保存文件為“學(xué)生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計(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("新成績錄入成功!\n"); stu[c].average=input_score2(c); } void input_score3(int a)//統(tǒng)計(jì)成績 { printf("數(shù)學(xué)新成績:"); scanf("%f",&stu[a].sco.math); printf("英語新成績:"); scanf("%f",&stu[a].sco.english); printf("計(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é)成績:%.2f----修改為:",stu[a].sco.math); scanf("%f",&stu[a].sco.math); printf("英語成績:%.2f----修改為:",stu[a].sco.english); scanf("%f",&stu[a].sco.english); printf("計(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請選擇:"); 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é)成績排序\n2、按英語成績排序\n3、按計(jì)算機(jī)成績排序\n4、按平均成績排序\n請選擇:"); 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ì)算機(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請選擇:"); int c; scanf("%d",&c); switch(c) { case 1: { input_student4(i,iNumOfStu); a=iNumOfStu-1; printf("信息已替換!\n"); break; } case 2: { printf("請重新輸入學(xué)生信息:\n"); input_student1(iNumOfStu-1); break; } default: break; } break; } ++i; } while(i<b-1); } } void print_menu(void)//輸出菜單 { printf("======歡迎來到學(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é)生成績\n"); printf(" 7、排序?qū)W生成績\n"); printf(" 8、保存學(xué)生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統(tǒng)\n"); printf("====================================\n"); printf("請選擇:"); } void input_student2(void)//輸入總函數(shù) { char end; printf("請輸入學(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é)成績:"); scanf("%f",&stu[a].sco.math); printf("英語成績:"); scanf("%f",&stu[a].sco.english); printf("計(jì)算機(jī)成績:"); scanf("%f",&stu[a].sco.computer); } float input_score2(int a)//計(jì)算學(xué)生平均成績 { 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é)成績排序 { 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)//按照英語成績排序 { 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ī)成績排序 { 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)//按照平均成績排序 { 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("請輸入要查詢的學(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è)簡單的學(xué)生成績管理系統(tǒng).rar (請將此地址復(fù)制到瀏覽器地址欄中訪問下載頁面) #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);//按照英語成績排序 void sort_student4(student s[],int);//按照計(jì)算機(jī)成績排序 void sort_student2(student s[],int);//按照數(shù)學(xué)成績排序 void sort_student5(student s[],int);//按照平均成績排序 float input_score2(int);//計(jì)算學(xué)生平均成績 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ì)成績 void input_score1(void);//統(tǒng)計(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("不能打開文件!\n"); } else { printf("保存信息到D盤\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績 英語成績 計(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盤根目錄下,保存文件為“學(xué)生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統(tǒng)計(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("新成績錄入成功!
標(biāo)簽: c語言
上傳時(shí)間: 2019-06-09
上傳用戶:啊的撒旦
# include<stdio.h> # include<math.h> # define N 3 main(){ float NF2(float *x,float *y); float A[N][N]={{10,-1,-2},{-1,10,-2},{-1,-1,5}}; float b[N]={7.2,8.3,4.2},sum=0; float x[N]= {0,0,0},y[N]={0},x0[N]={}; int i,j,n=0; for(i=0;i<N;i++) { x[i]=x0[i]; } for(n=0;;n++){ //計(jì)算下一個(gè)值 for(i=0;i<N;i++){ sum=0; for(j=0;j<N;j++){ if(j!=i){ sum=sum+A[i][j]*x[j]; } } y[i]=(1/A[i][i])*(b[i]-sum); //sum=0; } //判斷誤差大小 if(NF2(x,y)>0.01){ for(i=0;i<N;i++){ x[i]=y[i]; } } else break; } printf("經(jīng)過%d次雅可比迭代解出方程組的解:\n",n+1); for(i=0;i<N;i++){ printf("%f ",y[i]); } } //求兩個(gè)向量差的二范數(shù)函數(shù) float NF2(float *x,float *y){ int i; float z,sum1=0; for(i=0;i<N;i++){ sum1=sum1+pow(y[i]-x[i],2); } z=sqrt(sum1); return z; }
上傳時(shí)間: 2019-10-13
上傳用戶:大萌萌撒
function y=lagr(x0,y0,x) %x0,y0為節(jié)點(diǎn) %x是插值點(diǎn) n=length(x0); m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end
標(biāo)簽: lagr
上傳時(shí)間: 2020-06-09
上傳用戶:shiyc2020
宏晶 STC15F2K60S2開發(fā)板配套軟件源碼 基礎(chǔ)例程30例/**********************基于STC15F2K60S2系列單片機(jī)C語言編程實(shí)現(xiàn)使用如下頭文件,不用另外再包含"REG51.H"#include <STC15F2K60S2.h>***********************/#include "STC15F2K60S2.H"//#include "REG51.H" //sfr P4 = 0xC0;#define uint unsigned int #define uchar unsigned char /**********************引腳別名定義***********************/sbit SEL=P4^3; // LED和數(shù)碼管選擇引腳 高:LED有效 低:數(shù)碼管有效 // SEL連接的單片機(jī)引腳必須為帶有上拉電阻的引腳 或?qū)⑵渲苯舆B接VCC#define data P2 // 數(shù)據(jù)輸入定義 /**********************函數(shù)名稱:Delay_1ms功能描述:延時(shí)入口參數(shù):unsigned int t 表示要延時(shí)t個(gè)1ms 出口參數(shù):無備注:通過參數(shù)t,控制延時(shí)的時(shí)間長短***********************/void Delay_1ms(uint t){ uchar j; for(;t>0;t--) for(j=110;j>0;j--) ;}/**********************函數(shù)名稱:Led_test功能描述:對8個(gè)二極管進(jìn)行測試,依次輪流點(diǎn)亮8個(gè)二極管入口參數(shù):無出口參數(shù):無備注: ***********************/void Led_test(){ uchar G_value=0x01; // 給變量賦初值 SEL=1; //高電平LED有效 while(1) { data=G_value; Delay_1ms(10000); G_value=G_value<<1; if(G_value==0x00) { data=G_value; Delay_1ms(10000); G_value=0x01; } }}/***********************主函數(shù)************************/void main(){ ///////////////////////////////////////////////// //注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關(guān)的IO口均為 // 高阻態(tài),需將這些口設(shè)置為準(zhǔn)雙向口或強(qiáng)推挽模式方可正常使用 //相關(guān)IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2 // P2.3/P2.7/P3.7/P4.2/P4.4/P4.5 ///////////////////////////////////////////////// P4M1=0x00; P4M0=0x00; P2M0=0xff; P2M1=0x00; //將P2設(shè)為推挽 Led_test(); }
標(biāo)簽: STC15F2K60S2
上傳時(shí)間: 2022-05-03
上傳用戶:
隨著圖像分辨率的越來越高,軟件實(shí)現(xiàn)的圖像處理無法滿足實(shí)時(shí)性的需求;同時(shí)FPGA等可編程器件的快速發(fā)展使得硬件實(shí)現(xiàn)圖像處理變得可行。如今基于FPGA的圖像處理研究成為了國內(nèi)外的一個(gè)熱門領(lǐng)域。 本文在FPGA平臺(tái)上,用Verilog HDL實(shí)現(xiàn)了一個(gè)研究圖像處理算法的可重復(fù)配置的硬件模塊架構(gòu),架構(gòu)包括PC機(jī)預(yù)處理和通信軟件,控制模塊,計(jì)算單元,存儲(chǔ)器模塊和通信適配模塊五個(gè)部分。其中的計(jì)算模塊負(fù)責(zé)具體算法的實(shí)現(xiàn),根據(jù)不同的圖像處理算法可以獨(dú)立實(shí)現(xiàn)。架構(gòu)為計(jì)算模塊實(shí)現(xiàn)了一個(gè)可添加、移出接口,不同的算法設(shè)計(jì)只要符合該接口就可以方便的加入到模塊架構(gòu)中來進(jìn)行調(diào)試和運(yùn)行。 在硬件架構(gòu)的基礎(chǔ)上本文實(shí)現(xiàn)了排序?yàn)V波,中值濾波,卷積運(yùn)算及高斯濾波,形態(tài)學(xué)算子運(yùn)算等經(jīng)典的圖像處理算法。討論了FPGA的圖像處理算法的設(shè)計(jì)方法及優(yōu)化策略,通過性能分析,F(xiàn)PGA實(shí)現(xiàn)圖像處理在時(shí)間上比軟件處理有了很大的提高;通過結(jié)果的比較,發(fā)現(xiàn)FPGA的處理結(jié)果達(dá)到了軟件處理幾乎同等的效果水平。最后本文在實(shí)現(xiàn)較大圖片處理和圖像處理窗口的大小可配置性方面做了一定程度的討論和改進(jìn),提高了算法的可用性,同時(shí)為進(jìn)一步的研究提供了更加便利的平臺(tái)。 整個(gè)設(shè)計(jì)都是在ISE8.2和ModelSim第三方仿真軟件環(huán)境下開發(fā)的,在xilinx的Spartan-3E XC3S500E硬件平臺(tái)上實(shí)現(xiàn)。在軟件仿真過程中利用了ISE8.2自帶仿真工具和ModelSim結(jié)合使用。 本課題為制造FPGA的專用圖像處理芯片做了有益的探索性研究,為實(shí)現(xiàn)FPGA為核心處理芯片的實(shí)時(shí)圖像處理系統(tǒng)有著積極的作用。
上傳時(shí)間: 2013-07-29
上傳用戶:愛順不順
由于全球定位系統(tǒng)在航天、航空、航海、海洋上程、大地測量、陸地導(dǎo)航以及軍事上的大量運(yùn)用及其廣闊的應(yīng)用前景,使得GPS接收機(jī)系統(tǒng)成為國內(nèi)外相關(guān)領(lǐng)域競相研究的對象。GPS系統(tǒng)的用戶部分主要是各種型號(hào)的GPS接收機(jī)。所以GPS接收機(jī)中的微處理器的運(yùn)算能力和功耗直接影響整機(jī)的性能。 本文所研究的是基于ARM微處理器和μC/OS—Ⅱ的嵌入式系統(tǒng)開發(fā)及其在GPS接收機(jī)中的應(yīng)用。介紹了OPS接收機(jī)設(shè)計(jì)原理,分析了接收機(jī)硬件模塊的組成和功能,設(shè)計(jì)了由FPGA和ARM完成基帶信號(hào)處理及導(dǎo)航解算的接收機(jī),建立了基于ARM和μC/OS—Ⅱ的GPS接收機(jī)嵌入式硬件開發(fā)平臺(tái)。研究了嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS—Ⅱ,分析了其內(nèi)核的組成結(jié)構(gòu):與處理器無關(guān)代碼、處理器相關(guān)代碼、與應(yīng)用相關(guān)代碼,并重點(diǎn)分析和配置了其中與處理器相關(guān)和與應(yīng)用相關(guān)的代碼部分,最終將其成功移植到ARM LPC2290微處理器上。建立了基于ARM LPC2290和μC/OS—Ⅱ的嵌入式系統(tǒng)軟件編譯和調(diào)試的交叉環(huán)境,設(shè)計(jì)了運(yùn)行在此環(huán)境下的中斷和多任務(wù)來實(shí)現(xiàn)接收機(jī)信號(hào)處理、導(dǎo)航解算及顯示等功能,最終完成了基于ARM和μC/OS—Ⅱ的GPS接收機(jī)軟應(yīng)用件設(shè)計(jì)。 總之,本文從研究嵌入式系統(tǒng)的軟、硬件設(shè)計(jì)及其應(yīng)用著手,掌握了嵌入式系統(tǒng)開發(fā)的核心技術(shù),研制了基于ARM嵌入式開發(fā)平臺(tái)的GPS接收機(jī)。
標(biāo)簽: ARM GPS 嵌入式系統(tǒng) 收機(jī)設(shè)計(jì)
上傳時(shí)間: 2013-04-24
上傳用戶:buffer
隨著圖像分辨率的越來越高,軟件實(shí)現(xiàn)的圖像處理無法滿足實(shí)時(shí)性的需求;同時(shí)FPGA等可編程器件的快速發(fā)展使得硬件實(shí)現(xiàn)圖像處理變得可行。如今基于FPGA的圖像處理研究成為了國內(nèi)外的一個(gè)熱門領(lǐng)域。 本文在FPGA平臺(tái)上,用Verilog HDL實(shí)現(xiàn)了一個(gè)研究圖像處理算法的可重復(fù)配置的硬件模塊架構(gòu),架構(gòu)包括PC機(jī)預(yù)處理和通信軟件,控制模塊,計(jì)算單元,存儲(chǔ)器模塊和通信適配模塊五個(gè)部分。其中的計(jì)算模塊負(fù)責(zé)具體算法的實(shí)現(xiàn),根據(jù)不同的圖像處理算法可以獨(dú)立實(shí)現(xiàn)。架構(gòu)為計(jì)算模塊實(shí)現(xiàn)了一個(gè)可添加、移出接口,不同的算法設(shè)計(jì)只要符合該接口就可以方便的加入到模塊架構(gòu)中來進(jìn)行調(diào)試和運(yùn)行。 在硬件架構(gòu)的基礎(chǔ)上本文實(shí)現(xiàn)了排序?yàn)V波,中值濾波,卷積運(yùn)算及高斯濾波,形態(tài)學(xué)算子運(yùn)算等經(jīng)典的圖像處理算法。討論了FPGA的圖像處理算法的設(shè)計(jì)方法及優(yōu)化策略,通過性能分析,F(xiàn)PGA實(shí)現(xiàn)圖像處理在時(shí)間上比軟件處理有了很大的提高;通過結(jié)果的比較,發(fā)現(xiàn)FPGA的處理結(jié)果達(dá)到了軟件處理幾乎同等的效果水平。最后本文在實(shí)現(xiàn)較大圖片處理和圖像處理窗口的大小可配置性方面做了一定程度的討論和改進(jìn),提高了算法的可用性,同時(shí)為進(jìn)一步的研究提供了更加便利的平臺(tái)。 整個(gè)設(shè)計(jì)都是在ISE8.2和ModelSim第三方仿真軟件環(huán)境下開發(fā)的,在xilinx的Spartan-3E XC3S500E硬件平臺(tái)上實(shí)現(xiàn)。在軟件仿真過程中利用了ISE8.2自帶仿真工具和ModelSim結(jié)合使用。 本課題為制造FPGA的專用圖像處理芯片做了有益的探索性研究,為實(shí)現(xiàn)FPGA為核心處理芯片的實(shí)時(shí)圖像處理系統(tǒng)有著積極的作用。
標(biāo)簽: 圖像處理 算法研究 硬件設(shè)計(jì)
上傳時(shí)間: 2013-05-30
上傳用戶:水瓶kmoon5
遺傳算法是一種基于自然選擇原理的優(yōu)化算法,在很多領(lǐng)域有著廣泛的應(yīng)用。但是,遺傳算法使用計(jì)算機(jī)軟件實(shí)現(xiàn)時(shí),會(huì)隨著問題復(fù)雜度和求解精度要求的提高,產(chǎn)生很大的計(jì)算延時(shí),這種計(jì)算的延時(shí)限制了遺傳算法在很多實(shí)時(shí)性要求較高場合的應(yīng)用。為了提升運(yùn)行速度,可以使用FPGA作為硬件平臺(tái),設(shè)計(jì)數(shù)字系統(tǒng)完成遺傳算法。和軟件實(shí)現(xiàn)相比,硬件實(shí)現(xiàn)盡管在實(shí)時(shí)性和并行性方面具有很大優(yōu)勢,但同時(shí)會(huì)導(dǎo)致系統(tǒng)的靈活性不足、通用性不強(qiáng)。本文針對上述矛盾,使用基于功能的模塊化思想,將基于FPGA的遺傳算法硬件平臺(tái)劃分成兩類模塊:系統(tǒng)功能模塊和算子功能模塊。針對不同問題,可以在保持系統(tǒng)功能模塊不變的前提下,選擇不同的遺傳算子功能模塊完成所需要的優(yōu)化運(yùn)算。本文基于Xilinx公司的Virtex5系列FPGA平臺(tái),使用VerilogHDL語言實(shí)現(xiàn)了偽隨機(jī)數(shù)發(fā)生模塊、隨機(jī)數(shù)接口模塊、存儲(chǔ)器接口/控制模塊和系統(tǒng)控制模塊等系統(tǒng)功能模塊,以及基本位交叉算子模塊、PMX交叉算子模塊、基本位變異算子模塊、交換變異算子模塊和逆轉(zhuǎn)變異算子模塊等遺傳算法功能模塊,構(gòu)建了系統(tǒng)功能構(gòu)架和遺傳算子庫。該設(shè)計(jì)方法不僅使遺傳算法平臺(tái)在解決問題時(shí)具有更高的靈活性和通用性,而且維持了系統(tǒng)架構(gòu)的穩(wěn)定。本文設(shè)計(jì)了多峰值、不連續(xù)、不可導(dǎo)函數(shù)的極值問題和16座城市的旅行商問題 (TSP)對遺傳算法硬件平臺(tái)進(jìn)行了測試。根據(jù)測試結(jié)果,該硬件平臺(tái)表現(xiàn)良好,所求取的最優(yōu)解誤差均在1%以內(nèi)。相對于軟件實(shí)現(xiàn),該系統(tǒng)在求解一些復(fù)雜問題時(shí),速度可以提高2個(gè)數(shù)量級(jí)。最后,本文使用FPGA實(shí)現(xiàn)了粗粒度并行遺傳算法模型,并用于 TSP問題的求解。將硬件平臺(tái)的運(yùn)行速度在上述基礎(chǔ)上提高了近1倍,取得了顯著的效果。關(guān)鍵詞:遺傳算法,硬件實(shí)現(xiàn),并行設(shè)計(jì),F(xiàn)PGA,TSP
標(biāo)簽: FPGA 算法 硬件實(shí)現(xiàn)
上傳時(shí)間: 2013-06-15
上傳用戶:hakim
溫度華氏轉(zhuǎn)變攝氏 #include <stdio.h> #include <stdlib.h> enum x {A,B,C,D,E} int main(void) { int a=73,b=85,c=66 { if (a>=90) printf("a=A等級(jí)!!\n") else if (a>=80) printf("73分=B等級(jí)!!\n") else if (a>=70) printf("73分=C等級(jí)!!\n") else if (a>=60) printf("73分=D等級(jí)!!\n") else if (a<60) printf("73分=E等級(jí)!!\n") } { if (b>=90) printf("b=A等級(jí)!!\n") else if (b>=80) printf("85分=B等級(jí)!!\n") else if (b>=70) printf("85分=C等級(jí)!!\n") else if (b>=60) printf("85分=D等級(jí)!!\n") else if (b<60) printf("85分=E等級(jí)!!\n") } { if (c>=90) printf("c=A等級(jí)!!\n") else if (c>=80) printf("66分=B等級(jí)!!\n") else if (c>=70) printf("66分=C等級(jí)!!\n") else if (c>=60) printf("66分=D等級(jí)!!\n") else if (c<60) printf("66分=E等級(jí)!!\n") } system("pause") return 0 }
標(biāo)簽: include stdlib stdio gt
上傳時(shí)間: 2014-11-10
上傳用戶:wpwpwlxwlx
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1