#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);//輸入學生信息 void input_student2(void);//輸入總函數 void input_student3(int &,int);//判斷學號是否重復 void input_student4(int,int);//覆蓋原信息 void sort_student3(student s[],int);//按照英語成績排序 void sort_student4(student s[],int);//按照計算機成績排序 void sort_student2(student s[],int);//按照數學成績排序 void sort_student5(student s[],int);//按照平均成績排序 float input_score2(int);//計算學生平均成績 void print_student2(void);//顯示表頭 void print_student3(int);//顯示學生信息 void print_student1(int);//顯示全部學生資料 void sort_student1(void);//排序總函數 void menu(void);//菜單調度總函數 int search_student2(int);//按學號查詢學生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數 void delete_student2(int,int);//刪除學生信息 void delete_student1(void);//刪除總函數 void change_student2(int);//修改學生資料 void change_student1(void);//修改總函數 void input_score3(int);//統計成績 void input_score1(void);//統計成績總函數 void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統 void save_student(student *,int);//保存學生信息 void main() { menu(); } void save_student(student *s,int a)//保存學生信息 { FILE *fp; if((fp=fopen("d:\\學生信息.txt","wb"))==NULL) { printf("不能打開文件!\n"); } else { printf("保存信息到D盤\n"); fprintf(fp,"本班所有學生具體信息如下:\r\n"); fprintf(fp," 學號 姓名 數學成績 英語成績 計算機成績 平均成績\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)//退出系統 { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統所能容納的最大學生數為%d人\n學生信息保存在D盤根目錄下,保存文件為“學生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統計成績總函數 { int c; c=search_student2(iNumOfStu); printf("學號:%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)//統計成績 { printf("數學新成績:"); scanf("%f",&stu[a].sco.math); printf("英語新成績:"); scanf("%f",&stu[a].sco.english); printf("計算機新成績:"); scanf("%f",&stu[a].sco.computer); } void change_student2(int a)//修改學生資料 { printf("學號:%d----修改為:",stu[a].number); scanf("%d",&stu[a].number); getchar(); printf("姓名:%s----修改為:",stu[a].name); gets(stu[a].name); printf("數學成績:%.2f----修改為:",stu[a].sco.math); scanf("%f",&stu[a].sco.math); printf("英語成績:%.2f----修改為:",stu[a].sco.english); scanf("%f",&stu[a].sco.english); printf("計算機成績:%.2f----修改為:",stu[a].sco.computer); scanf("%f",&stu[a].sco.computer); } void change_student1(void)//修改總函數 { int c; c=search_student2(iNumOfStu); getchar(); printf("是否要修改此學生信息?(“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)//刪除總函數 { 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)//刪除學生信息 { for(int i=a;i<b-1;i++) { stu[i]=stu[i+1]; } --iNumOfStu; } void search_student1(void)//查詢總函數 { printf("1、按學號查詢\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)//菜單調度總函數 { print_menu(); choosemenu(); } void sort_student1(void)//排序總函數 { printf("1、按數學成績排序\n2、按英語成績排序\n3、按計算機成績排序\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)//顯示全部學生資料 { printf("本班所有學生具體信息如下\n"); print_student2(); for(int i=0;i<a;i++) { print_student3(i); } } void print_student3(int a)//顯示學生信息 { 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(" 學號 姓名 數學成績 英語成績 計算機成績 平均成績\n"); } void input_student4(int a,int b)//覆蓋原信息 { stu[a]=stu[b-1]; --iNumOfStu; } void input_student3(int &a,int b)//判斷學號是否重復 { if(a!=0) { int i=0; do { if(stu[a].number==stu[i].number) { printf("此學號代表的學生已錄入\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("請重新輸入學生信息:\n"); input_student1(iNumOfStu-1); break; } default: break; } break; } ++i; } while(i<b-1); } } void print_menu(void)//輸出菜單 { printf("======歡迎來到學生信息管理系統======\n"); printf(" 1、輸入學生資料\n"); printf(" 2、刪除學生資料\n"); printf(" 3、查詢學生資料\n"); printf(" 4、修改學生資料\n"); printf(" 5、顯示學生資料\n"); printf(" 6、統計學生成績\n"); printf(" 7、排序學生成績\n"); printf(" 8、保存學生資料\n"); printf(" 9、獲取幫助信息\n"); printf(" 10、退出系統\n"); printf("====================================\n"); printf("請選擇:"); } void input_student2(void)//輸入總函數 { char end; printf("請輸入學生信息(在最后一個學生信息錄入完成后以“/”結束錄入):\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)//輸入學生信息 { printf("學號:"); scanf("%d",&stu[a].number); getchar(); printf("姓名:"); gets(stu[a].name); printf("數學成績:"); scanf("%f",&stu[a].sco.math); printf("英語成績:"); scanf("%f",&stu[a].sco.english); printf("計算機成績:"); scanf("%f",&stu[a].sco.computer); } float input_score2(int a)//計算學生平均成績 { 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)//按照數學成績排序 { 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)//按照計算機成績排序 { 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)//按照學號查找學生并輸出 { int num; int c; printf("請輸入要查詢的學號:"); scanf("%d",&num); for(int i=0;i<a;i++) { if(num==stu[i].number) { c=i; } } printf("此學生的信息是:\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; } } 運行結果: 源文件下載地址: http://115.com/file/clnq138g#一個簡單的學生成績管理系統.rar (請將此地址復制到瀏覽器地址欄中訪問下載頁面) #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);//輸入學生信息 void input_student2(void);//輸入總函數 void input_student3(int &,int);//判斷學號是否重復 void input_student4(int,int);//覆蓋原信息 void sort_student3(student s[],int);//按照英語成績排序 void sort_student4(student s[],int);//按照計算機成績排序 void sort_student2(student s[],int);//按照數學成績排序 void sort_student5(student s[],int);//按照平均成績排序 float input_score2(int);//計算學生平均成績 void print_student2(void);//顯示表頭 void print_student3(int);//顯示學生信息 void print_student1(int);//顯示全部學生資料 void sort_student1(void);//排序總函數 void menu(void);//菜單調度總函數 int search_student2(int);//按學號查詢學生信息并輸出 void search_student3(int);//按平均分最高查詢并輸出 void search_student1(void);//查詢總函數 void delete_student2(int,int);//刪除學生信息 void delete_student1(void);//刪除總函數 void change_student2(int);//修改學生資料 void change_student1(void);//修改總函數 void input_score3(int);//統計成績 void input_score1(void);//統計成績總函數 void print_help(void);//輸出幫助信息 void exit_student(void);//退出系統 void save_student(student *,int);//保存學生信息 void main() { menu(); } void save_student(student *s,int a)//保存學生信息 { FILE *fp; if((fp=fopen("d:\\學生信息.txt","wb"))==NULL) { printf("不能打開文件!\n"); } else { printf("保存信息到D盤\n"); fprintf(fp,"本班所有學生具體信息如下:\r\n"); fprintf(fp," 學號 姓名 數學成績 英語成績 計算機成績 平均成績\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)//退出系統 { exit(1); } void print_help(void)//輸出幫助信息 { printf("本系統所能容納的最大學生數為%d人\n學生信息保存在D盤根目錄下,保存文件為“學生信息.txt”。\n感謝使用!\n",N); } void input_score1(void)//統計成績總函數 { int c; c=search_student2(iNumOfStu); printf("學號:%d\n",stu[c].number); printf("姓名:%s\n",stu[c].name); input_score3(c); printf("新成績錄入成功!
標簽: c語言
上傳時間: 2019-06-09
上傳用戶:啊的撒旦
書中以4個面向來表現C++的本質:procedural(程序性的)、generic(泛型的)、object-based(個別對象的)、object-oriented(面向對象的),全書圍繞著一系列逐漸繁復的程序問題,以及用以解決這些問題的語言特性。循此方式,讀者不只學到C++的函數和結構,也會學習到它們的設計目的和基本原理
標簽: Essential+C++
上傳時間: 2019-06-10
上傳用戶:wigen
產品型號(封裝形式): VK3702DM VK3702TM VK3702OM——(SOP8 ) VK3706OM VK3706OM VK3706DM VK3708BM VK3710IM——(SOP16) 產品品牌:VINTEK/元泰 產品年份:新年份 深圳永嘉微電原廠直銷,大量現貨更有優勢!讓您的生產高枕無憂。 聯系人:許碩 QQ:191 888 5898 TEL:188 9858 2398(微信) ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3702DM提供2個觸摸感應按鍵,一對一直接輸出,提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現。 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3702TM提供 2 個觸摸感應按鍵,一對一的 Toggle 模式輸出,提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3702OM提供 2 個觸摸感應按鍵,一對一直接輸出,輸出為開漏(open drain)型態,適合作 AD 鍵。提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現。 ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3706OM提供6個觸摸感應按鍵,一對一直接輸出,輸出為開漏(open drain)型態,適合作AD鍵。提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現! ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3706DM提供6個觸摸感應按鍵,一對一直接輸出,提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現! ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3708BM提供8個觸摸感應按鍵,二進制(BCD)編碼輸出,具有一個按鍵承認輸出的顯示,按鍵後的資料會維持到下次按鍵,可先判斷按鍵承認的狀態。提供低功耗模式,可使用於電池應用的產品。對於防水和抗干擾方面有很優異的表現! ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●● 產品描述 VK3710IM提供10個觸摸感應按鍵及兩線式串列界面,並有中斷輸出INT腳與MCU聯繫。提供低功耗模式,可使用於電池應用的產品。特性上對於防水和抗干擾方面有很優異的表現! 我們的優勢 1:我司為VINTEK/臺灣元泰半導體股份有限公司/VINKA的授權大中華區代理商,產品渠道正宗,確保原裝,大量庫存現貨! 2:公司工程力量雄厚,真誠技術服務支持,搭配原廠服務各種應用產品客戶。 3:好價格源自連接原廠直銷,你有量,我有價,確保原裝的好價格。 優勢代理元泰VKD常用觸控按鍵IC,簡介如下: 標準觸控IC-電池供電系列 VKD223EB --- 工作電壓/電流:2.0V-5.5V/5uA-3V 感應通道數:1 通訊接口 更長響應時間快速模式60mS,低功耗模式220ms 封裝:SOT23-6 VKD223B --- 工作電壓/電流:2.0V-5.5V/5uA-3V 感應通道數:1 通訊接口 更長響應時間快速模式60mS,低功耗模式220ms 封裝:SOT23-6 VKD232C --- 工作電壓/電流: 2.4V-5.5V/2.5uA-3V 感應通道數:2封裝:SOT23-6 通訊接口:直接輸出,低電平有效 固定為多鍵輸出模式,內建穩壓電路 VKD233DH(更小體積2*2)---工作電壓/電流: 2.4V-5.5V/2.5uA-3V 1按鍵 封裝:DFN6L 通訊接口:直接輸出,鎖存(toggle)輸出 有效鍵更長時間檢測16S VKD233DB(推薦) --- 工作電壓/電流: 2.4V-5.5V/2.5uA-3V 1感應按鍵 封裝:SOT23-6 通訊接口:直接輸出,鎖存(toggle)輸出 低功耗模式電流2.5uA-3V VKD233DH(推薦)---工作電壓/電流: 2.4V-5.5V/2.5uA-3V 1感應按鍵 封裝:SOT23-6 通訊接口:直接輸出,鎖存(toggle)輸出 有效鍵更長時間檢測16S 標準觸控IC-多鍵觸摸按鈕系列 VKD104SB/N --- 工作電壓/電流:2.4V-5.5V/13uA-3V 感應通道數/按鍵數:4 通訊接口:直接輸出,鎖存輸出,開漏輸出 封裝:SSOP-16 VKD104BC --- 工作電壓/電流:2.4V-5.5V/13uA-3V 感應通道數/按鍵數:4 通訊接口:直接輸出,鎖存輸出,開漏輸出 封裝:SOP-16 VKD104BR --- 工作電壓/電流:2.4V-5.5V/13uA-3V 感應通道數/按鍵數:2 通訊接口:直接輸出, toggle輸出 封裝:SOP-8 VKD104QB --- 工作電壓/電流:2.4V-5.5V/13uA-3V 感應通道數/按鍵數:4 通訊接口:直接輸出,鎖存輸出,開漏輸出 封裝:QFN-16 VKD1016B --- 工作電壓/電流:2.4V-5.5V/20uA-3V 感應通道數/按鍵數:16-8 通訊接口:直接輸出,鎖存輸出,開漏輸出 封裝:SSOP-28 VKD1016L --- 工作電壓/電流:2.4V-5.5V/20uA-3V 感應通道數:16-8 通訊接口:直接輸出,鎖存輸出,開漏輸出 封裝:SSOP-28 (元泰原廠授權 原裝保障 工程技術支持 大量現貨庫存) 標準觸控IC-VK36系列 VK3601SS --- 工作電壓/電流:2.4V-5.5V/1mA-5.0V 感應通道數:1 通訊接口:1 INPUT/1PWM OUT 封裝:SOP-8 VK3601S --- 工作電壓/電流:2.4V-5.5V/4mA-3.3V 感應通道數:1 通訊接口:1 INPUT/1PWM OUT 封裝:SOP-8 VK3602XS --- 工作電壓/電流:2.4V-5.5V/ 60uA-3V 感應通道數:2 通訊接口:2對2 toggle輸出 封裝:SOP-8 VK3602K --- 工作電壓/電流:2.4V-5.5V/ 60uA-3V 感應通道數:2 通訊接口:2對2 toggle輸出 封裝:SOP-8 VK3606DM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:6 通訊接口:1對1直接輸出 封裝:SOP-16 VK3606OM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:6 通訊接口:1對1開漏輸出 封裝:SOP-16 VK3608BM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:6 通訊接口:BCD碼直接輸出 封裝:SOP-16 VK3610IM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:6 通訊接口:SCL/SDA/INT通訊口 封裝:SOP-16 標準觸控IC-VK37系列 VK3702DM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:2 通訊接口:1對1直接輸出 封裝:SOP-8 VK3702OM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:2 通訊接口:1對1開漏輸出 封裝:SOP-8 VK3702TM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:2 通訊接口:1對1toggle輸出 封裝:SOP-8 VK3706DM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:6 通訊接口:1對1直接輸出 封裝:SOP-16 VK3706OM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:6 通訊接口:1對1開漏輸出 封裝:SOP-16 VK3708BM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:8 通訊接口:BCD碼直接輸出 封裝:SOP-16 VK3710IM --- 工作電壓/電流:3.1V-5.5V/ 3mA-5V 感應通道數:10 通訊接口:SCL/SDA/INT通訊口 封裝:SOP-16 標準觸控IC-VK38系列 VK3809IP --- 工作電壓/電流:2.5V-5.5V/1.1mA-3V 感應通道數:9 通訊接口:IIC/INT通訊口 封裝:SSOP-16 VK3813IP --- 工作電壓/電流:2.5V-5.5V/1.1mA-3V 感應通道數:13 通訊接口:IIC/INT通訊口 封裝:SSOP-20 VK3816IP --- 工作電壓/電流:2.5V-5.5V/1.1mA-3V 感應通道數:16 通訊接口:IIC/INT通訊口 封裝:SSOP-28 VK3816IP-A --- 工作電壓/電流:2.5V-5.5V/1.1mA-3V 感應通道數:16 通訊接口:IIC/INT通訊口 封裝:SSOP-28 以上介紹內容為IC參數簡介,難免有錯漏,且相關IC型號眾多,未能一一收錄。歡迎聯系索取完整資料及樣品! 生意無論大小,做人首重誠信!本公司全體員工將既往開來,再接再厲。爭取為各位帶來更專業的技術支持,更優質的銷售服務,更高性價比的好產品.竭誠希望能與各位客戶朋友深入溝通,攜手共進,共同成長,合作共贏!謝謝。
標簽: VK 3708 3710 BM IM 多按鍵 抗干擾 防水 操作 觸控
上傳時間: 2019-07-10
上傳用戶:szqxw1688
《數據結構與算法分析C++描述》 (第3版)是數據結構和算法分析的經典教材,書中使用主流的程序設計語言C++作為具體的實現語言。書的內容包括表、棧、隊列、樹、散列表、優先隊列、排序、不相交集算法、圖論算法、算法分析、算法設計、攤還分析、查找樹算法、k-d樹和配對堆等。編輯推薦《數據結構與算法分析C++描述》(第3版)適合作為計算機相關專業本科生的數據結構課程和研究生算法分析課程的教材。本科生的數據結構課程可以使用本書第1章~第9章,多學時課程還可以講解第10章;研究生算法分析課程可以使用第6章~第12章。作者簡介作者:(美國)維斯 (Mark Allen Weiss) 譯者:張懷勇 等Mark Allen Weiss,1987年在普林斯頓大學獲得計算機科學博士學位,師從著名算法大師Robert Sedgewick,現任美國佛羅里達國際大學計算與信息科學學院教授。他曾經擔任全美AP(Advanced Placement)考試計算機學科委員會的主席(2000-2004)。他的主要研究方向是數據結構,算法和教育學。
上傳時間: 2022-05-12
上傳用戶:
文件較大,存在網盤中,下載文件獲取分享鏈接及提取碼。內容簡介本書通過大量的典型實例,詳細介紹了51單片機各種C語言應用專題程序設計的流程、方法、技巧及設計思想。全書共分31章,第1章~第3章為基礎知識,介紹了51單片機開發的硬件結構、指令系統、C語言設計以及Keil8051C編譯器知識;第4章~第31章為本書的重點,通過28個典型的C語言應用實例,詳細介紹了51單片機的各種應用開發和使用技術,包括輸入/輸出、數據采集、控制系統、存儲系統與外設擴展、信號與算法實現、網絡通信與傳輸、電源監控與抗干擾設計。全書實例豐富、代表性強,涉及領域廣,每個例子都調試通過,都有具體的設計思路、硬件電路、軟件設計以及程序代碼分析,同時附錄里專門提供了本書實例配套實驗箱內容,對于讀者學習51單片機的應用開發提供了良好的參考和指導價值。本書語言簡潔,層次清晰,書中的所有程序代碼都使用C語言實現,簡單易學、易懂。本書適合計算機、自動化、電子及硬件等相關專業的學生進行學習,同時也可供從事51單片機開發的科研設計人員參考使用。
上傳時間: 2022-06-24
上傳用戶:
本課題完成了基于FPGA的數據采集器以及IIC總線的模數轉換器部分、通訊部分的電路設計。其中FPGA采用Xilinx公司Spartan-Ⅱ系列的XC2S100芯片,在芯片中嵌入32位軟處理器MicroBlaze;ⅡC總線的模數轉換采用Microchip公司的MCP3221芯片,通訊部分則在FPGA片內用VHDL語言實現。通過上述設計實現了“準單片化”的模擬量和數字量的數據采集和處理。 所設計的數據采集器可以和結構類似的上位機通訊,本課題完成了在上位機中用VHDL語言實現的通信電路模塊。通過上述兩部分工作,將微處理器、數據存儲器、程序存儲器等數字邏輯電路均集成在同一個FPGA內部,形成一個可編程的片上系統。FPGA片外僅為模擬器件和開關量驅動芯片。FPGA內部的硬件電路采用VHDL語言編寫;MCU軟核工作所需要的程序采用C語言編寫。多臺數據采集器與服務器構成數據采集系統。服務器端軟件用VB開發,既可以將實時采集的數據以數字方式顯示,也可以用更加直觀的曲線方式顯示。 由于數據采集器是所有自控類系統所必需的電路模塊,所以一個通用的片上系統設計可以解決各類系統的應用問題,達到“設計復用”(DesignReuse)的目的。采用基于FPGA的SOPC設計的更加突出的優點是不必更換芯片就可以實現設計的改進和升級,同時也可以降低成本和提高可靠性。
上傳時間: 2013-07-12
上傳用戶:a155166
單片機中實現MP3的代碼實現!用C語言實現的!完整代碼
標簽: mp
上傳時間: 2013-04-24
上傳用戶:Jason1990
嵌入式系統是一種將底層硬件、實時操作系統和應用軟件相結合的專用計算機系統,在經濟社會和人們的日常生活中得到了越來越廣泛的應用。嵌入式系統的研究與開發已成為現代電子領域的重要研究方向之一。嵌入式實時操作系統是嵌入式系統應用軟件開發的支撐平臺,網絡化是主要趨勢之一。 μC/OS-Ⅱ作為一種新興的嵌入式實時操作系統,以其免費公開源碼、面向中小型應用、可搶占、多任務以及較好的移植性等突出特點,在各類嵌入式設備中得到廣泛應用。然而,μC/OS-Ⅱ內核中不支持TCP/IP協議棧,因而無法適應嵌入式設備網絡化的需要。本文的主要目標是:在計算資源嚴重受限的條件下,研究使嵌入式系統支持TCP/IP協議的策略及其實現方法。 本課題以實驗室現有的Samsung S3C44BOX芯片為核心的ARM開發板作為硬件平臺,分析了ARM7TDM[內核的特點及S3C44BOX的結構。在詳細分析實時操作系統μC/OS-Ⅱ及其內核原理的基礎上對其進行適當的改進并成功移植到ARM硬件平臺上。針對μC/OS-Ⅱ內核不支持TCP/IP協議棧的問題,引進了嵌入式TCP/IP協議uIP,將其應用到μC/OS-Ⅱ上,成為μC/OS-Ⅱ的網絡服務模塊,實現了對μC/OS-Ⅱ的網絡功能的擴充,并在uIP基礎上編寫了相關的網絡驅動程序。最后,本課題設計了基于HTTP協議的嵌入式Web服務器和基于TFTP協議的遠程文件傳輸,從而使網絡遠程監控測量和在線程序的更新下載成為現實。 本課題經過數月的軟硬件的設計和調試,已實現了最初的設計目標。測試結果表明:移植到ARM處理器上的μC/OS-Ⅱ內核可以成功實現對任務的調度;對μC/OS-Ⅱ內核擴充的TCP/IP協議——uIP可正常運行:嵌入式Web服務器和遠、程文件傳輸在實驗室局域網中的穩定運行,更加證明了本課題的成功性。
上傳時間: 2013-05-17
上傳用戶:LSPSL
GPS技術在導航、定位及精確打擊等方面產生了重要影響,已經廣泛地應用在各種武器平臺上。但是,在干擾環境下也顯現出許多問題。由于其到達地球表面的信號極其微弱(-160dBW),在現在復雜的電磁環境中容易受到干擾,尤其是C/A碼信號更易受到干擾,并且隨著導航戰的發展對GPS的抗干擾已成為爭取導航資源的有效措施。因此,研究干擾環境下的GPS接收機設計具有重要意義。 本文首先簡要介紹了GPS信號的結構及構成,通過對GPS信號特征以及接收機抗干擾能力的分析,結合干擾對接收機的作用方式及效果,確定GPS最易受的干擾類型為阻塞式干擾,然后針對這種干擾類型提出了一種有效的抗干擾技術-----自適應調零天線技術。接下來,著重研究了GPS接收機在此抗干擾技術前提下的若干抗干擾方法,并對其進行了詳細的分析和討論。 研究過程中,通過對最佳化準則和空域自適應濾波的理解,首先對不同天線陣列結構進行了性能仿真和比較分析,然后在對稱圓形天線陣列的基礎上對空域自適應算法進行了仿真分析,針對其自由度有限的問題接著對空時濾波方法做了詳細討論,在7元對稱圓形陣列的基礎上仿真說明了二者各自的優缺點。考慮到實際的干擾環境和本課題研究的初期階段,因此選用了適合本課題干擾環境的空域濾波方法,并對其自適應算法進行了適當的改進,使得其抗干擾性能獲得了一定程度的改善。 最后,詳細說明了該接收機抗干擾模塊的FPGA實現原理。詳細給出了頂層及各子模塊的設計流程與RTL視圖,實驗結果驗證了該算法的有效性。
上傳時間: 2013-06-03
上傳用戶:xfbs821
Proteus下進行直流電機的仿真文件\r\n配合DC_Motor.c使用
上傳時間: 2013-08-27
上傳用戶:MATAIYES