#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);//按照英語成績(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("不能打開文件!\n"); } else { printf("保存信息到D盤\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語成績(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盤根目錄下,保存文件為“學(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("英語新成績(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("英語成績(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、按英語成績(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ī) 英語成績(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("======歡迎來到學(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("英語成績(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)//按照英語成績(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ù)制到瀏覽器地址欄中訪問下載頁面)
標(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);//按照英語成績(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("不能打開文件!\n"); } else { printf("保存信息到D盤\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語成績(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盤根目錄下,保存文件為“學(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("英語新成績(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("英語成績(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、按英語成績(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ī) 英語成績(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("======歡迎來到學(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("英語成績(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)//按照英語成績(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ù)制到瀏覽器地址欄中訪問下載頁面) #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);//按照英語成績(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("不能打開文件!\n"); } else { printf("保存信息到D盤\n"); fprintf(fp,"本班所有學(xué)生具體信息如下:\r\n"); fprintf(fp," 學(xué)號(hào) 姓名 數(shù)學(xué)成績(jī) 英語成績(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盤根目錄下,保存文件為“學(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語言
上傳時(shí)間: 2019-06-09
上傳用戶:啊的撒旦
STM32 F1系列 MCU ATIUM AD集成庫 原理圖庫 PCB 3D封裝庫文件,STM32F1XXXXX全系列原理圖+PCB封裝庫文件,共209個(gè)器件型號(hào),CSV text has been written to file : STM32 F1.csvLibrary Component Count : 209Name Description----------------------------------------------------------------------------------------------------STM32F100C4T6B STM32 ARM-based 32-bit MCU Value Line with 16 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 48-Pin LQFP, TraySTM32F100C4T7B STM32 ARM-based 32-bit MCU Value Line with 16 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +105癈 Temperature, 48-Pin LQFP, TraySTM32F100C6T6B STM32 ARM-based 32-bit MCU Value Line with 32 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 48-Pin LQFP, TraySTM32F100C6T6BTR STM32 ARM-based 32-bit MCU Value Line with 32 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 48-Pin LQFP, Tape and ReelSTM32F100C6T7B STM32 ARM-based 32-bit MCU Value Line with 32 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +105癈 Temperature, 48-Pin LQFP, TraySTM32F100C8T6B STM32 ARM-based 32-bit MCU Value Line with 64 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 48-Pin LQFP, TraySTM32F100C8T6BTR STM32 ARM-based 32-bit MCU Value Line with 64 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 48-Pin LQFP, Tape and ReelSTM32F100CBT6B STM32 ARM-based 32-bit MCU Value Line with 128 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 48-Pin LQFP, TraySTM32F100CBT7B STM32 ARM-based 32-bit MCU Value Line with 128 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +105癈 Temperature, 48-Pin LQFP, TraySTM32F100R4H6B STM32 ARM-based 32-bit MCU Value Line with 16 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin TFBGA, TraySTM32F100R4T6B STM32 ARM-based 32-bit MCU Value Line with 16 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin LQFP, TraySTM32F100R4T6BTR STM32 ARM-based 32-bit MCU Value Line with 16 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin LQFP, Tape and ReelSTM32F100R6H6B STM32 ARM-based 32-bit MCU Value Line with 32 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin TFBGA, TraySTM32F100R6T6 STM32 ARM-based 32-bit MCU Value Line with 32 kB Flash, 4 kB Internal RAM, -40 to +85癈 Temperature, 64-Pin LQFP, TraySTM32F100R6T6B STM32 ARM-based 32-bit MCU Value Line with 32 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin LQFP, TraySTM32F100R6T6BTR STM32 ARM-based 32-bit MCU Value Line with 32 kB Flash, 4 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin TFBGA, Tape and ReelSTM32F100R8H6B STM32 ARM-based 32-bit MCU Value Line with 64 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin TFBGA, TraySTM32F100R8T6B STM32 ARM-based 32-bit MCU Value Line with 64 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin LQFP, TraySTM32F100R8T6BTR STM32 ARM-based 32-bit MCU Value Line with 64 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin LQFP, Tape and ReelSTM32F100RBH6B STM32 ARM-based 32-bit MCU Value Line with 128 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin TFBGA, TraySTM32F100RBH6BTR STM32 ARM-based 32-bit MCU Value Line with 128 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin TFBGA, Tape and ReelSTM32F100RBT6B STM32 ARM-based 32-bit MCU Value Line with 128 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin LQFP, TraySTM32F100RBT6BTR STM32 ARM-based 32-bit MCU Value Line with 128 kB Flash, 8 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin LQFP, Tape and ReelSTM32F100RCT6B STM32 ARM-based 32-bit MCU Value Line with 256 kB Flash, 24 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin LQFP, TraySTM32F100RDT6 STM32 ARM-based 32-bit MCU Value Line with 384 kB Flash, 32 kB Internal RAM, -40 to +85癈 Temperature, 64-Pin LQFP, TraySTM32F100RDT6B STM32 ARM-based 32-bit MCU Value Line with 384 kB Flash, 32 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-Pin LQFP, TraySTM32F100RET6 STM32 ARM-based 32-bit MCU Value Line with 512 kB Flash, 32 kB Internal RAM, -40 to +85癈 Temperature, 64-Pin LQFP, TraySTM32F100RET6B STM32 ARM-based 32-bit MCU Value Line with 512 kB Flash, 32 kB Internal RAM, Internal Code B, -40 to +85癈 Temperature, 64-
上傳時(shí)間: 2022-04-30
上傳用戶:jiabin
1 do文件簡(jiǎn)介do文件是一次執(zhí)行多條命令的腳本,通過do文件可以把多個(gè)操作步驟簡(jiǎn)化成一條命令。2 do文件建立do文件建立方式較多,常用的建立方式有如下兩種:a)在ModelSim軟件中執(zhí)行【File]->【New】->【Sourcel-【do1,會(huì)在ModelSim的MDI窗口中打開一個(gè)新的文件窗口,編輯完該do文件后執(zhí)行【File]->【Save As.】即可保存成do文件:b)在Windows系統(tǒng)中新建一個(gè)記事本,在“另存為”的時(shí)候把后綴名改為.do也可以保存為do文件,可以以記事本的形式進(jìn)行編輯,也可在ModelSim中打開進(jìn)行編輯。3 do文件編寫步驟ModelSim仿真的一般步驟如下:a)創(chuàng)建一個(gè)工程和工程庫;b)加載設(shè)計(jì)文件,包括源文件和testbench文件:c)編譯源文件;d)運(yùn)行仿真,并查看結(jié)果:e)進(jìn)行工程調(diào)試。
標(biāo)簽: do文件
上傳時(shí)間: 2022-06-26
上傳用戶:
近年來,隨著多媒體技術(shù)、計(jì)算機(jī)網(wǎng)絡(luò)與通信技術(shù)的的快速發(fā)展,傳統(tǒng)的監(jiān)控系統(tǒng)也不斷向著新的發(fā)展方向進(jìn)行著不斷的更新與發(fā)展。進(jìn)而隨著嵌入式技術(shù)的出現(xiàn)以及人們對(duì)降低監(jiān)控系統(tǒng)成本和提高可靠性的迫切需求,基于嵌入式系統(tǒng)的網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)將成為新的研發(fā)熱點(diǎn)。 本文的目的是把嵌入式技術(shù)與計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)相結(jié)合,構(gòu)造一個(gè)性能穩(wěn)定且具有較強(qiáng)處理能力的數(shù)字化遠(yuǎn)程視頻監(jiān)控系統(tǒng)。該監(jiān)控系統(tǒng)以嵌入式Linux系統(tǒng)平臺(tái)作為服務(wù)器端,服務(wù)器程序在其上以后臺(tái)方式運(yùn)行,等待監(jiān)控系統(tǒng)環(huán)境中的客戶機(jī)使用瀏覽器向其發(fā)送訪問請(qǐng)求,實(shí)現(xiàn)在局域網(wǎng)乃至Internet網(wǎng)上對(duì)攝像頭的遠(yuǎn)程控制。 文中把系統(tǒng)設(shè)計(jì)分為三大部分:系統(tǒng)硬件設(shè)計(jì)、嵌入式Linux在硬件平臺(tái)的實(shí)現(xiàn)和系統(tǒng)軟件設(shè)計(jì)。硬件設(shè)計(jì)部分首先提出了整個(gè)硬件系統(tǒng)的實(shí)現(xiàn)方案,接著詳細(xì)介紹了S3C2410處理器與存儲(chǔ)器、以太網(wǎng)控制器芯片以及USB和串口的接口電路設(shè)計(jì);第二部分詳細(xì)敘述了嵌入式Linux在本系統(tǒng)硬件平臺(tái)的移植實(shí)現(xiàn)及應(yīng)用程序的開發(fā)特點(diǎn),重點(diǎn)講述了本系統(tǒng)平臺(tái)上Linux的引導(dǎo)加載程序Bootloader的設(shè)計(jì)過程;系統(tǒng)軟件部分首先介紹了USB接口攝像頭驅(qū)動(dòng)在嵌入式Linux下的實(shí)現(xiàn),重點(diǎn)講述了Video4Linux下視頻采集的實(shí)現(xiàn),接著論述了如何實(shí)現(xiàn)圖像的JPEG壓縮,最后針對(duì)基于B/S模式的網(wǎng)絡(luò)通信系統(tǒng)結(jié)構(gòu),詳細(xì)闡述了網(wǎng)絡(luò)通信的具體實(shí)現(xiàn)過程和方法。 最后在辦公室局域網(wǎng)通過對(duì)系統(tǒng)測(cè)試,顯示了系統(tǒng)運(yùn)行結(jié)果,實(shí)現(xiàn)了利用局域網(wǎng)或Internet網(wǎng)對(duì)遠(yuǎn)程環(huán)境進(jìn)行監(jiān)控的功能。
標(biāo)簽: ARM 網(wǎng)絡(luò)視頻監(jiān)控 系統(tǒng)設(shè)計(jì)
上傳時(shí)間: 2013-07-04
上傳用戶:lgnf
永磁同步發(fā)電機(jī)由于一系列高效節(jié)能的優(yōu)點(diǎn),在工農(nóng)業(yè)生產(chǎn)、航空航天、國防和日常生活中得到廣泛應(yīng)用,并且受到許多學(xué)者的關(guān)注,其研究領(lǐng)域主要涉及永磁同步發(fā)電機(jī)的設(shè)計(jì)、精確性能分析、控制等方面。 本課題作為國家自然科學(xué)基金項(xiàng)目《無刷無勵(lì)磁機(jī)諧波勵(lì)磁的混合勵(lì)磁永磁電機(jī)的研究》的課題,主要研究永磁電機(jī)的電磁場(chǎng)空載和負(fù)載計(jì)算,求出永磁電機(jī)的電壓波形和電壓調(diào)整率,為分段式轉(zhuǎn)子的混合勵(lì)磁永磁電機(jī)的研究奠定基礎(chǔ),主要做了以下工作: 首先介紹了永磁同步發(fā)電機(jī)的基本原理,包括永磁同步發(fā)電機(jī)的結(jié)構(gòu)形式和永磁同步發(fā)電機(jī)的運(yùn)行性能,采用傳統(tǒng)解析理論給出了電壓調(diào)整率的計(jì)算方法及外特性的計(jì)算模型;然后用有限元ANSYS對(duì)永磁同步發(fā)電機(jī)樣機(jī)進(jìn)行實(shí)體建模,經(jīng)過定義分配材料、劃分網(wǎng)格、加邊界條件和載荷、求解計(jì)算等,得到矢量磁位Az、磁場(chǎng)強(qiáng)度H、磁感應(yīng)強(qiáng)度B等結(jié)果,直觀地看出電機(jī)內(nèi)部的磁場(chǎng)分布情況。 其次根據(jù)電磁場(chǎng)計(jì)算結(jié)果,應(yīng)用齒磁通法對(duì)其進(jìn)行后處理。該方法求解轉(zhuǎn)子在一個(gè)齒距內(nèi)不同位置處的磁場(chǎng),以定子齒的磁通為計(jì)算單位,根據(jù)繞組與齒的匝鏈關(guān)系,計(jì)算出磁鏈隨時(shí)間的變化,進(jìn)而得到永磁同步發(fā)電機(jī)空、負(fù)載時(shí)電壓大小及波形。通過計(jì)算結(jié)果寫實(shí)驗(yàn)結(jié)果對(duì)比,驗(yàn)證了齒磁通法的正確性,為計(jì)算永磁同步發(fā)電機(jī)各種性能特性提供有力工具。 最后,基于齒磁通法對(duì)永磁同步發(fā)電機(jī)的外特性進(jìn)行了深入研究,定量分析了結(jié)構(gòu)參數(shù)對(duì)外特性的影響規(guī)律,提出了有效降低電壓調(diào)整率的方法的是:增加氣隙長度g的同時(shí),適當(dāng)增加永磁體的磁化方向的長度hm;此外,要盡量的減少每相串聯(lián)匝數(shù)N和增大導(dǎo)線面積以減小阻抗參數(shù)。通過改變電機(jī)的結(jié)構(gòu)參數(shù),對(duì)其電磁場(chǎng)進(jìn)行計(jì)算,找到永磁電機(jī)電壓調(diào)整率的變化規(guī)律,為加電勵(lì)磁的混合勵(lì)磁永磁電機(jī)做準(zhǔn)備,達(dá)到穩(wěn)定輸出電壓的目的。
標(biāo)簽: 永磁同步 發(fā)電機(jī) 磁場(chǎng)分析
上傳時(shí)間: 2013-04-24
上傳用戶:15853744528
心音信號(hào)是人體最重要的生理信號(hào)之一,包含心臟各個(gè)部分如心房、心室、大血管、心血管及各個(gè)瓣膜功能狀態(tài)的大量生理病理信息。心音信號(hào)分析與識(shí)別是了解心臟和血管狀態(tài)的一種不可缺少的手段。本文針對(duì)目前該研究領(lǐng)域中存在的分析方法問題和分類識(shí)別技術(shù)難點(diǎn)展開了深入的研究,內(nèi)容涉及心音構(gòu)成的分析、心音信號(hào)特征向量的提取、正常心音信號(hào)(NM)和房顫(AF)、主動(dòng)脈回流(AR)、主動(dòng)脈狹窄(AS)、二尖瓣回流(MR)4種心臟雜音信號(hào)的分類識(shí)別。本文的工作內(nèi)容包括以下5個(gè)方面: a)心音信號(hào)采集與預(yù)處理。本文采用自行研制的帶有錄音機(jī)功能的聽診器實(shí)現(xiàn)對(duì)心音信號(hào)的采集。通過對(duì)心音信號(hào)噪聲分析,選用小波降噪作為心音信號(hào)的濾波方法。根據(jù)實(shí)驗(yàn)分析,選擇Donoho閾值函數(shù)結(jié)合多級(jí)閾值的方法作為心音信號(hào)預(yù)處理方案。 b)心音信號(hào)時(shí)頻分析方法。文中采用5種時(shí)頻分析方法分別對(duì)心音信號(hào)進(jìn)行了時(shí)頻譜特性分析,結(jié)果表明:不同的時(shí)頻分析方法與待分析心音信號(hào)的特性有密切關(guān)系,即需要在小的交叉項(xiàng)干擾與高的時(shí)頻分辨率之間作綜合的考慮。鑒于此,本文提出了一種自適應(yīng)錐形核時(shí)頻(ATF)分析方法,通過實(shí)驗(yàn)驗(yàn)證該分布能較好地反映心音信號(hào)的時(shí)頻結(jié)構(gòu),其性能優(yōu)于一般錐形核分布(CKD)以及Choi-Williams分布(CWD)、譜圖(SPEC)等固定核時(shí)頻分析方法,從而選擇自應(yīng)錐形核時(shí)頻分析方法進(jìn)行心音信號(hào)分析。 c)心音信號(hào)特征向量提取。根據(jù)對(duì)3M Littmann() Stethoscopes[31]數(shù)據(jù)庫中標(biāo)準(zhǔn)心音信號(hào)的時(shí)頻分析結(jié)果,提取8組特征數(shù)據(jù),通過Fihser降維處理方法提取出了實(shí)現(xiàn)分類可視化,且最易于分類的心音信號(hào)的2維特征向量,作為心音信號(hào)分類的特征向量。 d)心音信號(hào)分類方法。根據(jù)心音信號(hào)特征向量組成的散點(diǎn)圖,研究了支持向量機(jī)核函數(shù)、多分類支持向量機(jī)的選取方法,同時(shí),基于分類的目的 性和可信性,本文提出以分類精度最大為判斷準(zhǔn)則的核函數(shù)參數(shù)與松弛變量的優(yōu)化方法,建立了心音信號(hào)分類的支持向量機(jī)模型,選取標(biāo)準(zhǔn)數(shù)據(jù)庫中NM、AF、AR、AS、MR每類心音信號(hào)的80組2維特征向量中每類60組數(shù)據(jù)作為支持向量機(jī)的學(xué)習(xí)樣本,對(duì)余下的每類20組數(shù)據(jù)進(jìn)行測(cè)試,得到每類的分類精度(Ar)均為100%,同時(shí)對(duì)臨床上采集的與上述4種同類心臟雜音信號(hào)和正常心音信號(hào)中每類24個(gè)心動(dòng)周期進(jìn)行分類實(shí)測(cè),分類精度分別為:NM、AF、MR的分類精度均為100%,而AR、AS均為95.83%,驗(yàn)證了該方法的分類有效性。 e)心音信號(hào)分析與識(shí)別的軟件系統(tǒng)。本文以MATLAB語言的可視化功能實(shí)現(xiàn)了心音信號(hào)分析與識(shí)別的軟件運(yùn)行平臺(tái)構(gòu)建,可完成對(duì)心音信號(hào)的讀取、預(yù)處理,繪制時(shí)-頻、能量特性的三維圖及兩維等高線圖;同時(shí),利用MATLAB與EXCEL的動(dòng)態(tài)鏈接,實(shí)現(xiàn)對(duì)心音信號(hào)分析數(shù)據(jù)的存儲(chǔ)以及統(tǒng)計(jì)功能;最后,通過對(duì)心音信號(hào)2維特征向量的分析,實(shí)現(xiàn)心音信號(hào)的自動(dòng)識(shí)別功能。 本文的研究特色主要體現(xiàn)在心音信號(hào)特征向量提取的方法以及多分類支持向量機(jī)模型的建立兩方面。 綜上所述,本文從理論與實(shí)踐兩方面對(duì)心音信號(hào)進(jìn)行了深入的研究,主要是采用自適應(yīng)錐形核時(shí)頻分析方法提取心音信號(hào)特征向量,根據(jù)心音信號(hào)特征向量組成的散點(diǎn)圖,建立心音信號(hào)分類的支持向量機(jī)模型,并對(duì)正常心音信號(hào)和4種心臟雜音信號(hào)進(jìn)行了分類研究,取得了較為滿意的分類結(jié)果,但由于用于分類的心臟雜音信號(hào)種類及數(shù)據(jù)量尚不足,因此,今后的工作重點(diǎn)是采集更多種類的心臟雜音信號(hào),進(jìn)一步提高心音信號(hào)分類精度,使本文研究成果能最終應(yīng)用于臨床心臟量化聽診。 關(guān)鍵詞:心音信號(hào),小波降噪,非平穩(wěn)信號(hào),心臟雜音,信號(hào)處理,時(shí)頻分析,自適應(yīng),支持向量機(jī)
上傳時(shí)間: 2013-04-24
上傳用戶:weixiao99
本文分析了永磁同步直線電動(dòng)機(jī)的運(yùn)行機(jī)理與運(yùn)行特性,并通過坐標(biāo)變換,分別得出了電機(jī)在a—b—c,α—β、d—q坐標(biāo)系下的數(shù)學(xué)模型。針對(duì)永磁同步直線電機(jī)模型的非線性與耦合特性,采用了次級(jí)磁場(chǎng)定向的矢量控制,并使id=0,不但解決了上述問題,還實(shí)現(xiàn)了最大推力電流比控制。為了獲得平穩(wěn)的推力,采用了SVPWM控制,并對(duì)它算法實(shí)現(xiàn)進(jìn)行了研究。 針對(duì)速度環(huán)采用傳統(tǒng)PID控制難以滿足高性能矢量控制系統(tǒng),通過對(duì)傳統(tǒng)PID控制和模糊控制理論的研究,將兩者相結(jié)合,設(shè)計(jì)出能夠在線自整定的模糊PID控制器。將該控制器代替?zhèn)鹘y(tǒng)的PID控制器應(yīng)用于速度環(huán),以提高系統(tǒng)的動(dòng)靜態(tài)性能。 在以上分析的基礎(chǔ)上,設(shè)計(jì)了永磁同步直線電機(jī)矢量控制系統(tǒng)的軟、硬件。其中電流檢測(cè)采用了新穎的電流傳感器芯片IR2175,以解決溫漂問題;速度檢測(cè)采用了增量式光柵尺,設(shè)計(jì)了與DSP的接口電路,通過M/T法實(shí)現(xiàn)對(duì)電機(jī)的測(cè)速。最后在Matlab/Simlink下建立了電機(jī)及其矢量控制系統(tǒng)的仿真模型,并對(duì)分別采用傳統(tǒng)PID速度控制器和模糊PID速度控制器的系統(tǒng)進(jìn)行仿真,結(jié)果表明采用模糊PID控制具有更好的動(dòng)態(tài)響應(yīng)性能,能有效的抑制暫態(tài)和穩(wěn)態(tài)下的推力脈動(dòng),對(duì)于負(fù)載擾動(dòng)具有較強(qiáng)的魯棒性。
上傳時(shí)間: 2013-07-04
上傳用戶:13681659100
本書主要闡述設(shè)計(jì)射頻與微波功率放大器所需的理論、方法、設(shè)計(jì)技巧,以及將分析計(jì)算與計(jì)算機(jī)輔助設(shè)計(jì)相結(jié)合的優(yōu)化設(shè)計(jì)方法。這些方法提高了設(shè)計(jì)效率,縮短了設(shè)計(jì)周期。本書內(nèi)容覆蓋非線性電路設(shè)計(jì)方法、非線性主動(dòng)設(shè)備建模、阻抗匹配、功率合成器、阻抗變換器、定向耦合器、高效率的功率放大器設(shè)計(jì)、寬帶功率放大器及通信系統(tǒng)中的功率放大器設(shè)計(jì)。 本書適合從事射頻與微波動(dòng)功率放大器設(shè)計(jì)的工程師、研究人員及高校相關(guān)專業(yè)的師生閱讀。 作者簡(jiǎn)介 Andrei Grebennikov是M/A—COM TYCO電子部門首席理論設(shè)計(jì)工程師,他曾經(jīng)任教于澳大利亞Linz大學(xué)、新加坡微電子學(xué)院、莫斯科通信和信息技術(shù)大學(xué)。他目前正在講授研究班課程,在該班上,本書作為國際微波年會(huì)論文集。 目錄 第1章 雙口網(wǎng)絡(luò)參數(shù) 1.1 傳統(tǒng)的網(wǎng)絡(luò)參數(shù) 1.2 散射參數(shù) 1.3 雙口網(wǎng)絡(luò)參數(shù)間轉(zhuǎn)換 1.4 雙口網(wǎng)絡(luò)的互相連接 1.5 實(shí)際的雙口電路 1.5.1 單元件網(wǎng)絡(luò) 1.5.2 π形和T形網(wǎng)絡(luò) 1.6 具有公共端口的三口網(wǎng)絡(luò) 1.7 傳輸線 參考文獻(xiàn) 第2章 非線性電路設(shè)計(jì)方法 2.1 頻域分析 2.1.1 三角恒等式法 2.1.2 分段線性近似法 2.1.3 貝塞爾函數(shù)法 2.2 時(shí)域分析 2.3 NewtOn.Raphscm算法 2.4 準(zhǔn)線性法 2.5 諧波平衡法 參考文獻(xiàn) 第3章 非線性有源器件模型 3.1 功率MOSFET管 3.1.1 小信號(hào)等效電路 3.1.2 等效電路元件的確定 3.1.3 非線性I—V模型 3.1.4 非線性C.V模型 3.1.5 電荷守恒 3.1.6 柵一源電阻 3.1.7 溫度依賴性 3.2 GaAs MESFET和HEMT管 3.2.1 小信號(hào)等效電路 3.2.2 等效電路元件的確定 3.2.3 CIJrtice平方非線性模型 3.2.4 Curtice.Ettenberg立方非線性模型 3.2.5 Materka—Kacprzak非線性模型 3.2.6 Raytheon(Statz等)非線性模型 3.2.7 rrriQuint非線性模型 3.2.8 Chalmers(Angek)v)非線性模型 3.2.9 IAF(Bemth)非線性模型 3.2.10 模型選擇 3.3 BJT和HBT汀管 3.3.1 小信號(hào)等效電路 3.3.2 等效電路中元件的確定 3.3.3 本征z形電路與T形電路拓?fù)渲g的等效互換 3.3.4 非線性雙極器件模型 參考文獻(xiàn) 第4章 阻抗匹配 4.1 主要原理 4.2 Smith圓圖 4.3 集中參數(shù)的匹配 4.3.1 雙極UHF功率放大器 4.3.2 M0SFET VHF高功率放大器 4.4 使用傳輸線匹配 4.4.1 窄帶功率放大器設(shè)計(jì) 4.4.2 寬帶高功率放大器設(shè)計(jì) 4.5 傳輸線類型 4.5.1 同軸線 4.5.2 帶狀線 4.5.3 微帶線 4.5.4 槽線 4.5.5 共面波導(dǎo) 參考文獻(xiàn) 第5章 功率合成器、阻抗變換器和定向耦合器 5.1 基本特性 5.2 三口網(wǎng)絡(luò) 5.3 四口網(wǎng)絡(luò) 5.4 同軸電纜變換器和合成器 5.5 wilkinson功率分配器 5.6 微波混合橋 5.7 耦合線定向耦合器 參考文獻(xiàn) 第6章 功率放大器設(shè)計(jì)基礎(chǔ) 6.1 主要特性 6.2 增益和穩(wěn)定性 6.3 穩(wěn)定電路技術(shù) 6.3.1 BJT潛在不穩(wěn)定的頻域 6.3.2 MOSFET潛在不穩(wěn)定的頻域 6.3.3 一些穩(wěn)定電路的例子 6.4 線性度 6.5 基本的工作類別:A、AB、B和C類 6.6 直流偏置 6.7 推挽放大器 6.8 RF和微波功率放大器的實(shí)際外形 參考文獻(xiàn) 第7章 高效率功率放大器設(shè)計(jì) 7.1 B類過激勵(lì) 7.2 F類電路設(shè)計(jì) 7.3 逆F類 7.4 具有并聯(lián)電容的E類 7.5 具有并聯(lián)電路的E類 7.6 具有傳輸線的E類 7.7 寬帶E類電路設(shè)計(jì) 7.8 實(shí)際的高效率RF和微波功率放大器 參考文獻(xiàn) 第8章 寬帶功率放大器 8.1 Bode—Fan0準(zhǔn)則 8.2 具有集中元件的匹配網(wǎng)絡(luò) 8.3 使用混合集中和分布元件的匹配網(wǎng)絡(luò) 8.4 具有傳輸線的匹配網(wǎng)絡(luò) 8.5 有耗匹配網(wǎng)絡(luò) 8.6 實(shí)際設(shè)計(jì)一瞥 參考文獻(xiàn) 第9章 通信系統(tǒng)中的功率放大器設(shè)計(jì) 9.1 Kahn包絡(luò)分離和恢復(fù)技術(shù) 9.2 包絡(luò)跟蹤 9.3 異相功率放大器 9.4 Doherty功率放大器方案 9.5 開關(guān)模式和雙途徑功率放大器 9.6 前饋線性化技術(shù) 9.7 預(yù)失真線性化技術(shù) 9.8 手持機(jī)應(yīng)用的單片cMOS和HBT功率放大器 參考文獻(xiàn)
標(biāo)簽: 射頻 微波功率 放大器設(shè)計(jì)
上傳時(shí)間: 2013-04-24
上傳用戶:W51631
圖像的采集和傳輸是實(shí)時(shí)監(jiān)控、遠(yuǎn)程控制、智能小區(qū)等諸多領(lǐng)域的關(guān)鍵技術(shù)。基于傳統(tǒng):PC的圖像采集已成為現(xiàn)實(shí)。隨著信息技術(shù)的迅速發(fā)展,嵌入式系統(tǒng)的研究開發(fā)成為了后PC時(shí)代的一個(gè)熱點(diǎn),它被廣泛應(yīng)用于工業(yè)現(xiàn)場(chǎng)、信息家電等各行各業(yè)。同時(shí),圖像的遠(yuǎn)程采集傳輸也朝著專業(yè)化、多樣化和低成本的方向發(fā)展。利用嵌入式技術(shù)來實(shí)現(xiàn)圖像的遠(yuǎn)程采集傳輸正順應(yīng)了時(shí)代發(fā)展,有較大的實(shí)用價(jià)值。 本文主要研究了基于嵌入式的遠(yuǎn)程圖像采集傳輸系統(tǒng)。嵌入式終端采用$3C2410為核心的目標(biāo)板為硬件平臺(tái),采用嵌入式Linux為系統(tǒng)平臺(tái)。系統(tǒng)通過連接在嵌入式終端的USB攝像頭完成靜態(tài)圖像數(shù)據(jù)采集,并進(jìn)行圖像壓縮處理。在圖像傳輸方面,論文設(shè)計(jì)了兩種模式:一種是通過Intemet傳輸?shù)摹⒒贐/S模式的傳輸方式。在該模式下,遠(yuǎn)端客戶機(jī)通過瀏覽器訪問架設(shè)在終端里的嵌入式服務(wù)器而獲得圖像信息。另一種是基于GPRS網(wǎng)絡(luò)實(shí)現(xiàn)遠(yuǎn)程無線圖像傳輸。終端將采集到的圖像數(shù)據(jù)通過GPRS網(wǎng)絡(luò)發(fā)送到擁有固定Ip的監(jiān)控服務(wù)器上來完成圖像遠(yuǎn)程傳輸。 本文首先介紹了圖像采集傳輸和嵌入式方面的相關(guān)內(nèi)容,并介紹了本論文所采用的開發(fā)平臺(tái)。為了順利開發(fā)接著構(gòu)建了開發(fā)環(huán)境,這里包括U-boot的移植、Linux系統(tǒng)的內(nèi)核編譯和移植、設(shè)備驅(qū)動(dòng)模塊的加載以及交叉編譯環(huán)境的建立。在此基礎(chǔ)上,利用Vide04Linux的接口函數(shù),用C語言實(shí)現(xiàn)了圖像原始數(shù)據(jù)的采集程序,并利用JPEG算法了實(shí)現(xiàn)圖像壓縮。在基于B/S模式的傳輸方式中,首先利用Boa架設(shè)了嵌入式服務(wù)器,然后用C語言完成CGI腳本,該腳本將圖像嵌入網(wǎng)頁并實(shí)時(shí)更新以實(shí)現(xiàn)網(wǎng)頁的動(dòng)態(tài)輸出。在基于GPRS實(shí)現(xiàn)遠(yuǎn)程無線圖像傳輸方式中,論文詳細(xì)分析了系統(tǒng)通訊數(shù)據(jù)流的特征,提出了采用辨識(shí)特征字符、數(shù)據(jù)打包等策略以實(shí)現(xiàn)GPRS的網(wǎng)絡(luò)連接和數(shù)據(jù)通訊,并且在此基礎(chǔ)上用C語言編程實(shí)現(xiàn)。同時(shí),在PC(Linux)上用Socket編程實(shí)現(xiàn)了監(jiān)控服務(wù)器軟件,該軟件用以接收?qǐng)D像數(shù)據(jù)和控制嵌入式終端的系統(tǒng)狀態(tài)。最后,論文分析比較了兩種傳輸方式的區(qū)別和優(yōu)缺點(diǎn)。試驗(yàn)證明,采用兩種方式都能成功實(shí)現(xiàn)圖像的遠(yuǎn)程采集傳輸,并且試驗(yàn)效果較好。
標(biāo)簽: 嵌入式 遠(yuǎn)程圖像
上傳時(shí)間: 2013-05-17
上傳用戶:squershop
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1