久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

北華大學C++實習報告(學生學籍管理系統)(最終版)

時間:2019-05-11 23:57:23下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《北華大學C++實習報告(學生學籍管理系統)(最終版)》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《北華大學C++實習報告(學生學籍管理系統)(最終版)》。

第一篇:北華大學C++實習報告(學生學籍管理系統)(最終版)

北華大學

C++實習報告

——學生學籍管理系統

姓名: 曹均富

班級:電子15-1 學號:201516050121 院系:電氣信息工程學院 指導教師:高玉峰 實習日期:12.12~12.16

目錄

一、實習目的和任務……………………………………….…..…3

二、軟件介紹……………………………………………..……..…3

三、實習題目……………………………………………..……..…4

四、系統分析………………………………………………………5

五、系統實現………………………………………………………10

六、結論……………………………………………………………17

七、心得與體會……………………………………………………17

八、參考文獻………………………………………………………..18

九、老師評語………………………………………………………..19

一、實習目的和任務

1.【摘要】 學籍管理系統設計涉及學生信息的錄入,顯示,查找,刪除,修改,統計,保存,退出等功能,從而能夠對信息進行處理。程序中運用了相關類的知識,同時定義了一定數量的數據及成員函數。程序使用了數組記錄統計的相關數據,運用了指針實現相應功能函數的功能,運用了student ,school兩個類實現面向對象的要求。程序的完成涉及到程序的分析,模塊的分解,程序的控制,程序的調試。

2.【關鍵詞】 學籍管理 vc++6.0 面向對象 程序控制 類

二、軟件介紹 1.軟件簡介

Microsoft Visual C++,(簡稱Visual C++、MSVC、VC++或VC)是Microsoft公司推出的以C++語言為基礎的開發Windows環境程序,面向對象的可視化集成編程系統。它不但具有程序框架自動生成、靈活方便的類管理、代碼編寫和界面設計集成交互操作、可開發多種程序等優點,而且通過的設置就可使其生成的程序框架支持數據庫接口、OLE2.0,WinSock網絡。[1]

Microsoft Visual C++ 6.0,簡稱VC6.0,是微軟于1998年推出的一款C++編譯器,集成了MFC 6.0,包含標準版(Standard Edition)、專業版(Professional Edition)與企業版(Enterprise Edition)[2]

。發行至今一直被廣泛地用于大大小小的項目開發。(但是,這個版本在Windows XP下運行會出現問題,尤其是在調試模式的情況下(例如:靜態變量的值并不會顯示)。這個調試問題可以通過打一個叫“Visual C++ 6.0 Processor Pack”的補丁[3]

來解決。)

2.軟件組成

1、Developer Studio,這是一個集成開發環境,我們日常工作的99%都是在它上面完成的,再加上它的標題赫然寫著“Microsoft Visual C++”,所以很多人理所當然的認為,那就是Visual C++了。其實不然,雖然Developer Studio提供了一個很好的編輯器和很多Wizard,但實際上它沒有任何編譯和鏈接程序的功能,真正完成這些工作的幕后英雄后面會介紹。我們也知道,Developer Studio并不是專門用于VC的,它也同樣用于VB,VJ,VID等Visual Studio家族的其他同胞兄弟。所以不要把Developer Studio當成Visual C++,它充其量只是Visual C++的一個殼子而已。這一點請切記!

2、MFC。從理論上來講,MFC也不是專用于Visual C++,Borland C++,C++Builder和Symantec C++同樣可以處理MFC。同時,用Visual C++編寫代碼也并不意味著一定要用MFC,只要愿意,用Visual C++來編寫SDK程序,或者使用STL,ATL,一樣沒有限制。不過,Visual C++本來就是為MFC打造的,Visual C++中的許多特征和語言擴展也是為MFC而設計的,所以用Visual C++而不用MFC就等于拋棄了Visual C++中很大的一部分功能。但是,Visual C++也不等于MFC。

3、Platform SDK。這才是Visual C++和整個Visual Studio的精華和靈魂,雖然我們很少能直接接觸到它。大致說來,Platform SDK是以Microsoft C/C++編譯器為核心(不是Visual C++,看清楚了),配合MASM,輔以其他一些工具和文檔資料。上面說到Developer Studio沒有編譯程序的功能,那么這項工作是由誰來完成的呢?是CL,是NMAKE,和其他許許多多命令行程序,這些我們看不到的程序才是構成Visual Studio的基石。3.使用方法

打開Microsoft Visual C++ 6.0后

選擇:文件|新建,在打開的對話框中選擇“工程”

在選擇“Win32 Console Application”->填寫“工程名稱”->選擇“位置”->“確定”.然后在選擇:文件|新建,在打開的對話框中選擇“文件” 在選擇“C++Source file”->填寫“文件名稱”->“確定”.這樣就建好了一個.cpp文件。

然后你在.cpp文件中寫入你的c語言代碼就可以了。

代碼寫好以后你看一下工具里有這樣一個圖標:依次點,編譯,連接,運行就可以了。

三、實習題目

題:學籍管理系統 要求:

1、錄取學生基本信息功能界面。

2、修改學生基本信息功能界面。

3、查詢學生基本信息功能界面。

4、刪除學生基本信息功能界面。預設計方案:

第一步:分析題目,建立類并派生出它的子類,畫出類圖。

第二步:畫出流程,根據流程圖編寫程序清單

第三步:上機調試程序(使用單步調試,設置斷點、分塊調試的方法)。

第五步:及時整理資料,撰寫課程設計報告中有關這個題目的內容。

系統實現環境:

硬件配置:586以上PC兼容機或品牌機,配有彩色顯示器、鼠標、鍵盤,內存不小于64MB,硬盤自由空間不少于200MB。推薦配置為內存128MB或256MB(或以上),硬盤自由空間500MB以上。

操作系統:Windows2000/NT/Xp、Visual C++集成開發環境。

四、系統分析

調查:

程序對學生學籍的數據處理要求

① 能夠輸入并瀏覽學生的基本信息; ② 能夠實現對學生信息的查詢和修改; ③ 能夠對成績進行統計;

④ 能夠對學生的信息進行保存; 現行的系統功能:

資料維護:系統維護包括對各學生信息和成績的錄入操作。資料維護:對數據表中的信息進行瀏覽。

系統查詢:可以對不同科目的總成績、不及率、各科平均成績相關信息。系統邏輯分析:

現行系統組織結構圖:

系統功能結構圖:

類的設計:

類:student

數據成員

編號,姓名,性別,籍貫,民族,生日,政治面貌,省份證,數學成績,英語成績,計算機成績 類:school 成員函數

錄入函數Input():輸入編號到計算機的成績;

統計函數count():統計各科的總成績,計算平均成績,統計各科的及格率; 查詢函數found():按學號或姓名查找學生的記錄; 修改函數mend():修改指定學號學生成績記錄; 刪除函數del():刪除指定學號學生記錄;

輸出函數show():輸出班級所有學生成績記錄;

UML圖:

輸入輸出的設計: 1.界面的設計 ①、界面設計

程序運行后會出現一個簡捷的窗口,便于用戶查詢數據。②、功能設計

通過主窗體調用其他窗體,具體實現可以參照系統分析相關內容。應用系統主控界面包括學生信息錄入,查找等功能模塊。學生信息錄入功能完成學生信息和成績的輸入。記錄查詢功能可以對數據各分類的記錄進行查詢。2.數據輸出設計

系統主界面:

統計界面:

查找界面:

顯示界面:

錄入界面:

修改界面:

五、系統實現

代碼:

#include #include #include #include class student { protected: int number;char name[20];char sex[6];char place[20];char nation[6];char birth[20];char party[10];char id[20];float score[3];public:

student *next;student(){ } ~student(){ } char* getname(){ return name;} int getnumber(){ return number;} double getscore(int i){ return score[i];} float getg(){ return(score[0]+score[1]+score[2]);} void input(){ int e=1;cout<<“ttt按提示輸入:”<>number;cout<<“tt輸入姓名: ”;cin>>name;do {cout<<“tt輸入性別: ”;cin>>sex;if(strcmp(sex,“男”)==0 || strcmp(sex,“女”)==0){ cout<<“tt輸入籍貫: ”;cin>>place;

cout<<“tt輸入民族: ”;cin>>nation;cout<<“tt輸入生日: ”;cin>>birth;cout<<“tt輸入政治面貌: ”;cin>>party;cout<<“tt輸入身份證號: ”;cin>>id;cout<<“tt輸入數學分數: ”;cin>>score[0];cout<<“tt輸入英語分數: ”;cin>>score[1];cout<<“tt輸入計算機分數: ”;cin>>score[2];e=0;} else {cout<<“ttt無此類型性別!重新輸入!”<>number>>name>>sex>>place>>nation>>birth>>party>>id >>score[0]>>score[1]>>score[2];is.get();} void output(){cout<<“學生基本信息如下:”<{ os<next=NULL;key=0;} ~school(){ delete head;} void input();void mend();void del();int find(student **p,int num,char *pn=“^”);void found();void show();void count();void save();void begin();void clear();char mainmenu();int getkey(){ return key;} void setkey(int k){ key=k;} private: student *head;int key;};//錄入函數

void school::input(){student *p,*p2=NULL;p=head;int n;while(p->next)p=p->next;while(n){ p2=new student;p2->input();p->next=p2;p2->next=NULL;p=p->next;school::setkey(1);cout<<“ttt按1繼續,按0返回 : ”;cin>>n;} } //子查找函數

int school::find(student **p1,int num,char *pn){ student *p;p=head;while(p->next){(*p1)=p;

if((p->next)->getnumber()==num||!strcmp((p->next)->getname(),pn))return 1;p=p->next;} return 0;} //查找函數

void school::found()

{ student *p;int num=-1,n=9;char name[20]=“^”;do { cout<<“tt1:按編號查找,2:按姓名查找: ”;cin>>n;}while(n<1||n>2);if(n==1){ cout<<“ttt輸入編號: ”;cin>>num;} if(n==2){ cout<<“ttt輸入姓名: ”;cin>>name;} if(!find(&p,num,name)){ cout<<“tt找不到你要查找的內容!”<next)->output();} //刪除函數

void school::del(){ student *p,*p2;int num;cout<<“ttt輸入編號: ”;cin>>num;if(!find(&p,num,“^”)){ cout<<“tt找不到你要刪除的內容!”<next)->output();p2=p->next;p->next=p2->next;delete p2;school::setkey(1);} void school::show()//顯示函數 { student *p;p=head;while(p->next){(p->next)->output();p=p->next;}} //修改函數

void school::mend(){ student *p;int num=-1,n;char name[20]=“^”;do { cout<<“tt1:按編號修改,2:按姓名修改: ”;cin>>n;}while(n<1||n>2);if(n==1)

{ cout<<“ttt輸入編號: ”;cin>>num;} if(n==2){cout<<“ttt輸入姓名: ”;cin>>name;} if(!find(&p,num,name)){ cout<<“tt找不到你要修改的內容!”<next)->output();(p->next)->input();school::setkey(1);} void school::save()//保存函數 { student *p;p=head;ofstream os(“student.txt”,ios::out);if(school::getkey()==1){ while(p->next){(p->next)->output(os);p=p->next;} } cout<<“ttt文件已保存!”<>num;is.seekg(t);if(num<0){ is.close();return;

} p2=new student;p2->input(is);p->next=p2;p2->next=NULL;p=p->next;}} void school::clear()//清空函數 {student *p,*p2;p=head->next;while(p){p2=p;p=p->next;delete p2;}} void school::count()//統計函數 {student *p;p=head;int n=0;double g[3]={0,0,0};float j[3]={0,0,0};while(p->next){ p=p->next;n++;for(int i=0;i<3;i++){ g[i]=g[i]+(p->getscore(i));(p->getscore(i))>=60.0? j[i]++ : 0;} } cout<<“ttbbbb數學總分:”<

char school::mainmenu(){ char n[6];cout<<“nn ☆☆☆☆歡迎進入學籍管理系統☆☆☆☆”<

<<“ * * * * * * * * * * * * * * * * * * * * * * * * * * * *”<>n;return n[0];} //主函數 void main(){school pp;int k=1;char n;pp.begin();while(k==1){ n=pp.mainmenu();switch(n){ case '1':pp.input();break;case '2':pp.show();break;case '3':pp.found();break;case '4':pp.del();break;case '5':pp.mend();break;case '6':pp.count();break;case '7':pp.save();break;case '0': if(pp.getkey()==1){ cout<<“ttt是否保存? 1 : 保存 0:不保存 : ”;cin>>k;if(k==1)pp.save();} pp.clear();k=0;break;} } } 系統運行的結果:

六、結論

本程序基本完成了題目要求的功能。但是由于顯示的限制,所羅列的學生成績只給出了數學,英語,計算機的成績。程序可通過改進,增加科目數。

程序在顯示學生信息時輸入過于繁雜,不夠清晰明朗,若顯示成類似表格的形式就好了。解決辦法將輸出函數的輸出格式改一下,難點是計算輸出點的控制。

七、心得與體會

此次c++課程設計,在指導教師的精心教導下,我們學會了如何用C++編寫一個簡單的應用程序。首先要對程序的設計要求有一個比較明確的認識,然后系

統分析與系統設計,最后是代碼設計與調試。程序實現上,設計了簡單的查詢界面,將各個功能集中出來按照程序編寫原則,便于查詢。

根據C++課程所學的概念、理論和方法,按照C++程序設計的基本步驟,設計出一個適當規模的程序;進一步加深對C++語言的理解和掌握。理論聯系實際,加深和鞏固所學的理論知識,提高實踐能力和計算機的綜合運用能力。我們編寫程序的過程是辛苦與快樂的,程序的編寫原則很重要,只要我們在編程,就必須不斷改進,才能更好提高編程能力。

八、參考文獻

[1]《C++實習教程》,高玉峰;北華大學出版社

[2]譚浩強編,《C++面向對象程序設計》,清華大學出版社,2005年7月出版

[3]李師賢等譯,《C++精髓》,機械工業出版社,2002年8月出版 [4]韓濱 魏海萍,《C++類庫使用手冊》,電子工業出版社,2007年7月出版

[5]陳燦煌,《C++徹底研究》 中國青年出版社,2005年9月出版。

九、教師評語

教師評語:

成績:

教師簽字:

第二篇:北華大學嵌入式系統實習報告

北華大學

嵌入式系統實習報告

姓名:XXX 班級:測控XXXX 學號:XXXXXXXXX 院系:電氣信息工程學院 指導教師:武海巍

目錄

一、嵌入式系統開發與應用概述...................................................................................................3

二、實習設備...................................................................................................................................3

三、實習目的...................................................................................................................................3

四、實習要求...................................................................................................................................4

五、實習過程...................................................................................................................................4

六、實習體會.................................................................................................................................11

七、參考文獻.................................................................................................................................12

一、嵌入式系統開發與應用概述

在今日,嵌入式ARM 技術已經成為了一門比較熱門的學科,無論是在電子類的什么領域,你都可以看到嵌入式ARM 的影子。如果你還停留在單片機級別的學習,那么實際上你已經落下時代腳步了,ARM 嵌入式技術正以幾何的倍數高速發展,它幾乎滲透到了幾乎你所想到的領域。以嵌入式計算機為技術核心的嵌入式系統是繼網絡技術之后,又一個IT領域新的技術發展方向。由于嵌入式系統具有體積小、性能強、功耗低、可靠性高以及面向行業具體應用等突出特征,目前已經廣泛地應用于軍事國防、消費電子、信息家電、網絡通信、工業控制等各個領域。嵌入式的廣泛應用可以說是無所不在。

嵌入式微處理器技術的基礎是通用計算機技術。現在許多嵌入式處理器也是從早期的PC 機的應用發展演化過來的。在應用中,嵌入式微處理器具有體積小、重量輕、成本低、可靠性高的優點。

二、實習設備

硬件:EmbestEduKit-IV實驗平臺、ULINK2仿真器套件、PC機 軟件:μVision IDE for ARM集成開發環境、Windows 98/2000/NT/XP

三、實習目的

1.初步掌握液晶屏的使用;掌握S3C2410X處理器的LCD控制器的使用; 掌握通過任務調用的方法把液晶顯示函數添加到uC/OS-II中; 通過實驗掌握液晶顯示文本及圖形的方法與程序設計。

2.掌握有關音頻處理的基礎知識;通過實驗了解IIS音頻接口工作理。3.了解μC/OS-II移植條件和內核基本結構;

掌握將μC/OS-II內核移植到ARM9處理器上的方法和步驟。

四、實習要求

通過對μC/OS-II移植實驗、μC/OS-II LCD顯示實驗、IIS音頻實驗的學習,逐步將各部分內容合并,最終得出實習結果。

實習要求在液晶顯示屏上循環顯示學生的信息。學生信息包括顯示每個人的照片、姓名、系別、學號及聲音。能力允許的情況下要求能夠用通過鍵盤選擇,顯示相應學生的信息。

移植μC/OS-II內核到ARM處理器S3C2410,在IDE中觀察其運行狀況編寫S3C2410X處理器的串口通信程序;監視串行口UART1動作;將從UART1接收到的字符串回送顯示。將從UART1接收到的字符串回送顯示。

五、實習過程

1.實習準備

實習任務下達之后,首先是對各個單獨的功能程序的分析和初步了解。在初步分析后,小組決定使用3.7_uCOS_all_test實驗程序作為整個實驗任務的主題框架,并逐步將其他的功能函數融合進來。

在確定了整體的方向后,下一步便是對學生信息的采集,主要是圖像和聲音。通過手機和PC機順利的完成了信息采集。但采集來的信息并不能直接使用,需將其轉換成相應的機器能夠識別的數字信息。在老師提供的軟件和同學提供的幫助下,實習所需的信息整體已準備完畢。2.功能函數植入

因為使用了3.7_uCOS_all_test實驗程序,所以在實現圖片及學生信息顯示時并未遇到太多問題。

主要的難點就在聲音的實現程序7.3_IIS_Test的植入上。首先需將其最主要的文件iis_test.c文件加入工程中,其次就是各種頭文件。但因為其本身帶來的文件與工程中已有文件重名,故而一些文件添加不了,導致函數無法構建。之

后只得將一些語句單獨粘貼到對應的文件中,這個過程非常繁復和枯燥,且中間不停的出現各種變量未定義的情況。所幸的是后來都意義解決了,也最終能夠在軟件中構建成功了。3.函數分析 主程序部分:

int main(){

sys_init();

//

Initial

s3c2410's Clock,Interrupt,Port and UART // iis_test();// iis_play_wave(int nTimes,UINT8T *pWavFile, intnSoundLen);while(1){

} } 圖片圖片更新部分: 全屏刷新:

void BitmapViewTft16Bit_800480(UINT8T *pBuffer){ UINT32T i, j;UINT32T *pView =(UINT32T*)frameBuffer16BitTft800480;color_lcd_test();

for(i = 0;i< LCD_YSIZE_TFT_800480;i++){ for(j = 0;j < LCD_XSIZE_TFT_800480/2;j++){ pView[j] =((*(pBuffer+1))<< 24)+((*(pBuffer))<< 16)+ pBuffer += 4 } pView+=LCD_XSIZE_TFT_800480;} } 小圖片局部刷新:

void liuyuelin(UINT8T *pBuffer,UINT8T x,UINT8T y){ UINT32T i, j;UINT32T *pView =(UINT32T*)frameBuffer16BitTft800480 pView+=800*y+x;pBuffer+=6;for(i = 0;i< 320;i++){ for(j = 0;j < 240/2;j++){((*(pBuffer+3))<< 8)+(*(pBuffer+2));

pView[j] =((*(pBuffer+1))<< 24)+((*(pBuffer))<< 16)+((*(pBuffer+3))<< 8)+(*(pBuffer+2));pBuffer += 4;} pView+=LCD_XSIZE_TFT_800480;} } 這段程序是在原有程序的基礎上改寫的,重點改寫的是Task2和Task3。將Task2中的圖片顯示換成采集到的學生信息,又通過調用Lcd_DspHz24()和Lcd_DspAscII8x16()函數來實現在液晶屏上顯示漢字和數字。這兩個函數的調用比較容易只需要給出列坐標、行坐標、顏色、內容即可在液晶屏上實現理想結果。lcd_clr_rect()函數主要實現的是將給定區域填充為一種顏色,當然本任務中將其填充為白色,則實現了清屏的功能。因為其刷新緩慢,故棄之不用。

通過使用EmbestEduKit-IV實驗板的彩色液晶屏(800*480)進行電路設計,掌握液晶屏作為人機接口界面的設計方法,并編寫任務函數在uC/OS-II系統中實現位圖顯示。在uC/OS-II中建立五個任務Tast1和Tast2,其中Tast1順序熄滅四個LED,延遲一會在順序點亮四個LED。Tast2在LCD屏幕上循環顯示三幅圖片,并打印一些文字信息和背景音樂。過使用EmbestEduKit-III實驗板的256 色彩色液晶屏(320x240)進行電路設計,掌握液晶屏作為人機接口界面的設計方法,并編寫程序實現:畫出多個矩形框;顯示ASCII字符;顯示漢字字符;顯示彩色位圖。

使用ULINK2仿真器連接EmbestEduKit-IV實驗平臺的主板JTAG接口;使用EmbestEduKit-IV實驗平臺附帶的交叉串口線,連接實驗平臺主板上的COM2和PC機的串口(一般PC只有一個串口,如果有多個請自行選擇,筆記本沒有串口設備的可購買USB轉串口適配器擴充);使用EmbestEduKit-IV實驗平臺

附帶的電源適配器,連接實驗平臺主板上的電源接口。

2.串口接收設置

在PC機上運行windows自帶的超級終端串口通信程序,或者使用實驗平臺附帶光盤內設置好了的超級終端,設置超級終端:波特率115200、1位停止位、無校驗位、無硬件流控制,或者使用其它串口通信程序。(注:超級終端串口的選擇根據用戶的PC串口硬件不同,請自行選擇,如果PC機只有一個串口,一般是COM1)

3.打開實驗例程

1)打開實驗程序

2)運行μVision IDE for ARM軟件

3)默認打開的工程在源碼編輯窗口會顯示實驗例程的說明文件readme.txt,詳細閱讀并理解實驗內容。

4)工程提供了兩種運行方式:一是下載到SDRAM中調試運行,二是固化到Nor Flash中運行。用戶可以在工具欄Select Target下拉框中選擇在RAM中調試運行還是固化Flash中運行。下面實驗將介紹下載到SDRAM中調試運行,所以我們在Select Target下拉框中選擇UART_Test IN RAM。

5)接下來開始編譯鏈接工程,在菜單欄“Projiet”選擇“Build target”或者“Rebuild all target files”編譯整個工程。

6編譯完成后,在輸出窗口可以看到編譯提示信息,比如““.SDRAMUART_Test.axf”-0 Error(s), 1 Warning(s).”,如果顯示“0 Error(s)”即表示編譯成功。

7)撥動實驗平臺電源開關,給實驗平臺上電,單擊菜單欄Debug->Start/Stop Debug Session項將編譯出來的映像文件下載到SDRAM中,或者單擊工具欄“”按鈕來下載。

8)下載完成后,單擊菜單欄Debug->Run項運行程序,或者單擊工具欄“”

按鈕來全速運行程序。用戶也可以使用進行單步調試程序。

9)全速運行后,用戶可以在超級終端看到程序運行的信息。

10)用戶可以Stop程序運行,使用μVision IDE for ARM的一些調試窗口跟蹤查看程序運行的信息。注:如果在第4)步用戶選擇在Flash中運行,則編譯鏈接成功后,單擊菜單欄Flash->Download項將程序固化到NorFlash中,從實驗平臺的主板拔出JTAG線,給實驗平臺重新上電,程序將自動運行。

部分程序圖:

工程文件總攬

串口通信實驗:

六、實習體會

通過一周的嵌入式實習,使我對嵌入式這門課有了更深的了解,也學到了很多,也提高了我的動手能力。也讓我們對這學科有了更一步的了解,以前我們學習的只是課本知識,沒有動手的機會,我喜歡編程軟件,喜歡專研,喜歡在錯誤中尋找對的道路。

及時在實習中會涉及到一個很現實的問題,如我們怎么把LCD圖片文件或者IIS聲音文件轉換成.C文件,這也是我們實習的中心問題,之后通過Image2Lcd V1.1軟件和轉換IIS聲音文件的工具ProcBmp.exe來解決這個問題,我在轉碼過程中遇到很多問題,比如圖片大小不合適,造成轉碼不成功,圖片顯示不對,聲音文件過大,聲音輸出不成功等,經過一次次的失敗,一次

次的嘗試,在慢慢的摸索中一點點向目的靠近,最終在老師和同學們的幫助下與組員合作完成實習。

我很享受失敗后成功的那份喜悅,我很珍惜。感謝這次實習,讓我明白專業知識的同時選擇了自己未來的道路。

七、參考文獻

《ARM9嵌入式系統設計與開發應用》熊茂華、楊震倫編著清華大學出版社 《ARM9嵌入式系統設計與開發教程》于明編著電子工業出版社 《Linux嵌入式系統教程》馬忠梅北京航空航天大學出版社

第三篇:北華大學電廠實習報告

北華大學電氣信息工程學院

測控綜合實訓實習報告 班 級:學 號:姓 名:專 業 名 稱:指 導 教 師:

測 控 XX--XX XXXXXXXXXXXX X XX XX X 測控技術與儀器 宋文蕾 浦鐵成

XXXX年XX月XX日

目錄

一、系統簡介.............................................1

二、設備簡介.............................................5

1、ICE調節器.......................................5

2、雙向可控硅.......................................5

3、三相電阻爐.......................................6

4、溫度變送器.......................................6

5、三相調功器.......................................7

6、配電器...........................................7

7、IRV記錄儀.......................................7

三、熱電廠各系統生產流程圖...............................8

四、實習心得與體會......................................12

五、教師評語............................................13

一、系統簡介

1、燃燒系統生產流程

來自煤場的原煤經皮帶機輸送到位置較高的原煤倉中,原煤從原煤倉底部流出經給煤機均勻地送入磨煤機研磨成粉末。自然界的大氣經喜吸風口由送風機送到布置于鍋爐垂直煙道中的空氣預熱器內,接受煙氣的加熱,回收煙氣余熱。從空氣預熱器出來約250左右的熱風分成兩路:一路直接引入鍋爐的燃燒器,作為二次風進入爐膛助燃;另一側則引入磨煤機入口,用來干燥、輸送煤粉,這部分熱風成為一次風。流動性極好的干燥煤粉與一次風組成的氣粉混合物,經管路輸送到粗粉分離器進行粗粉分離,分離出的粗粉再送回到磨煤機入口重新研磨,而合格的細粉和一次風混合物送入細粉分離器進行粉、氣分離,分離出來的細粉送入煤粉倉儲存起來,由給粉機根據鍋爐熱負荷的大小,控制煤粉倉底部放出的煤粉流量,同時從細粉分離器分離出來的一次風作為輸送煤粉的動力,經過排粉機加壓后與給粉機送出的細粉再次混合成氣粉混合物,由燃燒器噴入爐膛燃燒。

圖1.煤粉燃料運行流程圖

2、汽水生產系統流程

儲存在給水箱中的鍋爐給水由給水泵強行打入鍋爐的高壓管路,并導入省煤器。鍋爐給水在省煤器管內吸收管外煙氣和氣灰的熱量,水溫上升到300左右,但從省煤器出來的水溫仍低于該壓力下的飽和溫度,屬于高壓未飽和水。水從省煤器出來后沿管路進入布置在鍋爐外面頂部的氣泡。氣泡下半部是水,上半部是蒸汽。高壓未飽和水沿氣泡底部的下降管到達鍋爐外面底部的下聯箱,鍋爐底部四周的下聯箱上并聯安裝了許多水管,這些水管內由下向上流動吸收爐膛中心火焰的輻射傳熱和高溫煙氣的對流傳熱,由于蒸汽的吸熱能力遠遠小于水,所以規定水冷壁內的氣化率不得大于40%,否則很容易因為工質來不及吸熱發生水冷壁水管熔化爆管事故。

圖2.汽機車間流程圖

3、鍋爐設備的流程 1.鍋爐燃燒系統

鍋爐車間:燃料經燃運車間制粉送入爐膛中燃燒,使燃料的化學能變為熱能。高溫煙氣由爐膛經水平煙道進入尾部煙道,最后從鍋爐中排除。鍋爐排煙在經過煙氣凈化處理,有引風機送入煙囪排入大氣。鍋爐給水便經過省煤器、水冷壁、過熱器變成過熱蒸汽;并把汽輪機高壓氣缸做功后抽回的蒸汽變成再熱蒸汽。鍋爐分類:按蒸汽參數分類:中壓、高壓、超高壓、亞靈界、超臨界;按容量分類:(<220t/h 小型),(220-410t/h中型)(>670t/h大型);按燃燒方式分類:懸浮燃燒鍋爐、沸騰燃燒鍋爐;按循環方式分類:自然循環鍋爐、強制循環鍋爐、控制循環鍋爐。

系統組成:燃燒器、爐膛、空氣預熱器組成。

作用:使燃料在爐內充分燃燒放熱,并將熱量盡可能多的傳遞給工質,并完成對省煤器和水冷壁水管內的水加熱,對過熱器和再熱器管內的干蒸汽加熱,對空氣預熱器管內的空氣加熱。

圖3.鍋爐車間流程圖

自然循環鍋爐

強制循環鍋爐

控制循環鍋爐

直流鍋爐

圖4.四種鍋爐示意圖

2.鍋爐的汽水系統

系統組成:水的預熱氣化系統,干蒸汽的過熱再熱系統。

作用:對水進行預熱、氣化和蒸汽的過熱,并盡可能多的吸收火焰和煙氣的熱量。

3.燃料輸送系統

系統組成:皮帶機、原煤倉和給煤機。作用:完成對原煤的輸送、儲存、供給。4.制粉系統

組成:磨煤機、粗粉分離器、細粉分離器、煤粉倉、給粉機和排粉機。作用:生產流量足夠、顆粒大小符合要求的煤粉,滿足鍋爐燃燒需求。

5.給水系統

組成:給水箱和給水泵

作用:向鍋爐提供壓力足夠高的高壓未飽和水,因為只有高壓才能高溫,工質在高溫高壓下能攜帶更多的熱量。6.通風系統

組成:送風機、引風機和煙囪。作用:保證足夠的空氣進入爐膛并及時排出。

7.除塵系統

組成:除塵器。

作用:對即將進入煙囪高空排放的煙氣進行除塵,減少對環境的污染。

4、汽輪機設備流程

1.回熱加熱系統

組成:回熱加熱器和除氧器。

作用:抽出汽輪機中做了部分功的蒸汽,對鍋爐給水進行加熱,這部分蒸汽自身變成凝結水而氣化潛熱完成被利用。2.凝氣系統

組成:凝結器和抽離器。

作用:建立并維持高度真空,降低汽輪機的倍壓,提高循環熱效率,汽輪機的排氣凝結成水,以便重新送入鍋爐使用。

在輸煤系統中,常用的測量變送器一般有以下幾種:開關量皮帶速度變送器皮帶跑偏開關、煤流開關、皮帶張力開關、煤量信號、金屬探測器、皮帶劃破探測、落煤管堵煤開關、煤倉煤位開關

二、設備簡介

1、ICE調節器

將生產過程參數的測量值與給定值進行比較,得出偏差后根據一定的調節規律產生輸出信號推動執行器消除偏差量,使該參數保持在給定值附近或按預定規律變化的控制器,又稱調節儀表。通常,調節器分為模擬調節器和數字調節器。調節器在使用過程中一般不允許拆卸護蓋,正常情況是每工作200h左右進行一次全面檢查和維護。

2、雙向可控硅

雙向可控硅是在普通可控硅的基礎上發展而成的,它不僅能代替兩只反極性并聯的可控硅,而且僅需要一個觸發電路,是比較理想的交流開關器件。在性能上,可控硅不僅具有單向導電性,而且還具有比硅整流原件更為可貴的可控性,它只有導通和關斷兩種狀態。

優點:以小功率控制大功率,功率放大倍數高達幾十萬倍;反

應極快,在微妙級內開通、關斷;無觸點運行,無火花、無噪音;效率高,成本低等。

缺點:靜態及動態的過載能力較差;容易受干擾而誤導通。

3、三相電阻爐

利用電流使爐內電熱元件或加熱介質發熱,從而對工件或物料加熱的工業爐。電阻爐在機械工業中用於金屬鍛壓前加熱、金屬熱處

理加熱、釬焊、粉末冶金燒結、玻璃陶瓷焙燒和退火、低熔點金屬熔化、砂型和油漆膜層的乾燥等。

電阻爐有室式、井式、臺車式、推桿式、步進式、馬弗式和隧道式等類型。可控氣氛爐、真空爐、流動粒子爐等也都是電阻爐。

電阻爐與火焰爐相比,具有結構簡單、爐溫均勻、便于控制、加熱質量好、無煙塵、無噪聲等優點,但是用費用較高。

4、溫度變送器

溫度變送器是一種將溫度變量轉化為可傳送的標準化輸出信號的儀表。溫度變送器的供電電源不得有尖峰,否則容易損壞變送器。溫度變送器每6個月應校準一次,如果DWB因受電路限制不能進行線性修正,最好按說明選擇量程以保證其線性。溫度變送器主要用于工業過程溫度參數的測量和控制。溫度變送器按供電接線方式可分為兩線制和四線制,除RWB型溫度變送器為三線制外。溫度變送器技術已經非常成熟了,在各個工廠中非常常見,它經常和一些儀表 配套使用,但在配套使用過程中經常有一些小的故障。

5、三相調功器

三相調功器又稱“晶閘管電力調整器”“可控硅電力調整器”“晶閘管調整器”。“晶閘管”又稱“可控硅”(SCR)是一種四層三端半導體器件,把它接在電源和負載中間,配上相應的觸發電路板,就可以調整加到負載上的電壓、電流和功率。

其主要用于各種電加熱裝置的加熱功率調整,既可以手動調整,又可以和電動調節儀表、智能調節儀表、PLC以及計算機控制系統配合,實現對加熱溫度的恒值或程序控制。

三相調功器通過對電壓、電流和功率的精確控制,從而實現精密控溫,并且憑借其先進的數字控制算法,優化了電能使用效率,對節約電能起了重要作用。

6、配電器

配電器的作用是為原工業現場提供一種兩線制傳輸方式,既要為變送器等一次儀表提供24v配電電源,同事又要對輸入的電流信號進行采集、放大、運算和進行抗干擾處理后,再輸出隔離的電力和電壓信號,供紅棉的二次儀表或其他儀表使用。

它的特性有給變送器提供驅動電壓16.5~28v,將變送器4~20mA信號隔離輸送,可選擇4~20mA或1~5v信號輸出,或其他所需的直流信號,模塊化表芯設計,無需零點和滿度調節,帶有工作電源指燈,有單通道,一路輸入一路輸出,雙通道,一路輸入二路輸出。輸入回路短路保護。

7、IRV記錄儀

記錄儀是將一個或多個變量隨時間或另一變量變化的過程轉化為可識別和可讀取的信號的儀器,它能保存所記錄的信號變化以便分析處理,記錄儀的最大特點是能自動記錄周期性或非周期性多路信號的慢變化過程和瞬態電平變化 過程。

根據輸入輸出信號的種類,記錄儀可分為模-數、數-模、模-模、數-數等形式,它們的主體電路根據輸出形式的不同而有所區別。當輸出為數字信號時,其主要電路是能存儲數字信息的存儲器電路,它能隨時將數字信號送給磁帶機、穿孔機或其他設備,或經適當變換用示波器觀察模擬波;當輸出為模擬信號時,記錄儀主題電路是沒有存儲功能的模擬放大驅動電路,必須立即用適當記錄裝置和方法將信號記錄到紙、感光膠片或磁帶上才能保存信息,便于進一步分析處理。

記錄儀的主要技術指標為工作頻率、輸入信號動態范圍、記錄線性度、分辨度、失真度、響應時間、走紙準確度和穩定度,對用作計算機外圍設備的磁帶機還需要有復雜的電路和機構。

三、熱電廠各系統生產流程圖

圖5.熱電廠生產示意圖

圖6.生產工藝流程圖

圖7.汽輪機帶動鍋爐給水泵的工藝流程圖

圖8.給水流程示意圖

9、煙氣脫硫工藝流程圖

圖10.粗粉脫硫工藝流程

圖11.污水深度處理流程圖

四、實習心得與體會

在這次實習中我認識到在電廠工作必須嚴格遵守電廠的規章制度,確保自己在工作中的安全,嚴格按照安全生產流程來操作。進入電廠必須戴安全帽,電廠里設備眾多,聲音嘈雜,管道密集,必須嚴格遵守師傅告訴的安全注意事項。

一周的實習挺短的,但是收獲不少。在今后的學習生活中,要不斷充實完善自己,要努力培養自己的責任意識,加強專業知識的學習,為將來的就業打好基礎。希望接下來的日子里我們能借此實習機會加緊學習,爭取把所學的理論知識運用起來,而不是只知其一不知其二。最后,感謝學校給予我們這次實習機會以及兩位不辭辛苦的帶隊老師和熱電廠的師傅和領導。

五、教師評語

教師評語:

成績:

教師簽字:

第四篇:學生實名制學籍管理系統

學生實名制學籍管理系統

為了更好地落實國家學生營養改善計劃補助資金,必須進一步加強中小學學生學籍管理工作。

1、每學年初收取各學校起始年級(即一年級與七年級)學生名冊,信息內容包括學校所在鄉鎮、學校名稱、學籍號、姓名、籍貫、性別、族別、出生年月、入學時間、家長姓名、家庭詳細住址、備注等,學籍號一旦產生,便作為學生的唯一識別號,在本縣內,不再變更。

2、學生學籍名冊前加做一份統計表,以實時監控學校在校學生人數。

3、小學學生轉學:鄉鎮內轉學,由鄉鎮中心小學自行辦理;縣內跨鄉鎮轉學,由鄉鎮中心小學到縣辦理轉學手續;轉出縣外的,家長持《轉學證》到縣辦理轉學手續;外縣轉入的,由轉入鄉鎮中心小學持《轉學證》到縣辦理轉入手續。

4、初中學生轉學:凡是校際轉學,都要辦理轉學手續,在縣級進行電子登記管理,紙質檔案進行注明,備查;轉出縣外的,學生持《轉學證》到縣辦理轉學手續,在縣級的電子檔案、紙質檔案備注欄登記備案;外縣轉入的,由轉入學校到縣辦理轉入手續。

5、學生的休學、輟學、死亡等其他情況,由學校到縣辦理相關手續,在縣級學生電子和紙質學籍名冊備注欄登記注明流失原因。復學的則直接把該生信息錄入復學時所在年級,原學籍號不變。

6、每年分春秋兩季進行學生學籍年審,核準每一所學校的學生人數。

第五篇:長安大學C++設計 學生成績管理系統實驗報告

C++程序設計實驗報告

院系:電子與控制工程學院 交通信息與控制工程系 學號:2011320101 姓名:XXX

2012年11月20

學生信息管理系統一、問題描述和需求分析;

編寫一個學生信息管理系統,要求如下:

①對某個班級的學生的5門課程的學習成績進行管理,用菜單選擇操作方式完成下列基本功能: ★登記學生成績; ★查詢學生成績; ★插入學生成績; ★刪除學生成績。

②用菜單選擇方式完成下列擴充功能: ★每門課程的平均成績;

★輸出每門課程成績優秀的學生名單及成績;

★輸出只要有一門課程不及格的學生名單及其每門成績; ★對5門課程中可以指定某一門課程進行排序。

二、概要設計;

1)主要變量:

1)intnum;

/*學號*/; char name[20];/*姓名*/; 2)char sex[2];

/ *性別*/; 3)int score[3];

/*成績*/; 4)int sum;

/*總成績*/;

5)int n;

/*聲明一個全局變量*/;

6)struct student *next

/*聲明一個結構體指針*/;(2)自定義函數:

1)Student *cin(void);

/*學生信息成績錄入函數*/ 2)Student *sort_1(Student *head,int);/*聲明按學號排序函數*/ 3)void sort_2(Student *head);/*聲明按總分排序函數*/ 4)void print(Student *head);/*聲明顯示函數*/ 5)Student *sort_all(Student *head);/*聲明排序函數*/ 6)void find(Student *head);/*聲明查詢函數*/

2)

a)模塊的功能及程序說明;

整個系統除了主函數外,另外還有10個函數,實現八大功能:輸入功能、顯示功能、查找功能、排序功能、插入功能、保存功能、讀取功能。各個函數的詳細設計說明分別如下:

1、主函數 main()利用無限次循環for(;;)和swithch()實現各函數的調用,系統根據輸入的數字選項來調用相應的函數。

2、初始化函數STUDENT *init()這是一個無參函數,里面只有一個語句,它的作用是使鏈表初始化,使head的值為NULL。比如:沒有這個函數的話,在你沒有輸入任何數據的情況下,去執行顯示功能的時候會顯示一些亂碼!

3、菜單選擇函數intmenu_select();這是一個無參函數,主要實現“功能選擇”的界面,在這個界面里有顯示系統的九大功能,根據每個功能前面的序號進行選擇,中間還顯示系統當前的時間。等執行完每一個函數功能后,按任一鍵回到主界面也要通過這個函數來實現!

4、輸入記錄函數 STUDENT *create()這是一個無參函數,用來執行第學生成績記錄的輸入,當學生為0時停止輸入,函數結束后,帶回一個指向鏈表頭的指針head。

算法:先聲明一個首節點head,并將head->next設為NULL。每輸入一個數據就聲明一個新節點p,把p->next設為NULL,并且鏈接到之前列表的尾端。

5、顯示記錄函數 void print(STUDENT *head)這是一個不返回值的有參函數,形參為“鏈表頭的指針”,負責對全部學生成績記錄的輸出,不足之處就是不能對學生成績進行分頁顯示。

算法:先將p結點的指針指向第一個結點,將p結點(即第一個結點)的數據輸出。然后再將p結點的指針指向p指針的的指針(即下一結點),將p結點(即第一結點)的數據輸出。重復執行此步聚直到p指針指向NULL為止。

6、查找記錄函數 void search(STUDENT *head)這是一個不返回值的有參函數,形參為“鏈表頭的指針”,實現按學號對某個學生進行查找,并顯示所查找到的記錄。

算法:采用線性查找法往下一個節點查找。輸入所要查找的學生的學號s,設一個指針變量p,先指向第一個結點,當strcmp(p->name,s)&& p!= NULL時,使p后移一個結點,如果p!=NULL,輸出p所指的結點。

7、刪除記錄函數 STUDENT *delete(STUDENT *head)這是一個有參函數,形參為“鏈表頭的指針”,先輸入要刪除的學生記錄的學號,找到后顯示該學生信息,等確認后便可按“Y”進行刪除。算法:從p指向的第一個結點開始,檢查該結點中的num值是否等于輸入的要求刪除的那個學號。如果相等就將該結點刪除,如不相等,就將p后移一個結點,再如此進行下去,直到遇到表尾為止。

8、排序函數 STUDENT *sort(STUDENT *head)這是一個有參函數,形參為“鏈表頭的指針”,按學生成績的平均分高低進行排序,還可以顯示名次。

9、插入函數 STUDENT *insert(STUDENT *head,STUDENT *new)這是一個有參函數,形參有兩個,一個是“鏈表頭的指針”,一個是“待插入指針”,按照原來成績平均分的高低進行插入,插入后會重新進行排序,并返

回。

算法:先將學生的成績按平均分由高分到低分進行排序,再插入一個新生的結點,要求按平均分的高低順序插入。先用指針變量p0指向待插入的結點,p1指向第一個結點。如果p0->average

average,則待插入的結點不應插在p1所指的結點之前。此時將p1后移,并使p2指向剛才p1所指的結點。重復以上的步驟,直到p0->average>=p1->average為止。這時將p0指向的結點插到p1所指結點之前。但是如果p1所指的已是表尾結點,則p1就不應后移了。如果p0->average比所有結點的average都小,則應將p0所指的結點插到鏈表末尾。如果插入的位置既不在第一個結點之前,又不在表尾結點之后,則將p0的值賦給p2->,使p2->next指向待插入的結點,然后將p1的值賦給p0->next,使得p0->next指向p1指向的變量。如果插入位置為第一個結點之前,則將p0賦給head,將p1賦給p0->next。如果要插到表尾之后,應將p0賦給p1->next,NULL賦給p0->next。最后再調用排序的函數,將學生成績重新排序.10、保存數據到文件函數 void save(STUDENT *head)這是一個不返回值的有參函數,形參為“鏈表頭的指針”,可以把學生記錄保存在電腦上由自己任意命名的二進制文件。a)核心算法流程圖;

b)核心源程序模塊;

核心源程序為驅動整個程序運行的最重要的模塊,通過核心源程序將2)中的主要模塊進行組織與構成,依次執行上述的十個模塊中的程序,使程序能夠正常運行。總體功能要求:

(1)鏈表的建立,每個節點包括:學號、姓名、性別、語文、數學、英語、總分。

(2)節點的插入,按學號的順序插入。

(3)刪除鏈表中的節點,按學號或者姓名。

(4)鏈表的輸出。按學號排序、按總分排序功能模塊圖、流程圖(要求有總體的功能模塊圖、各部分流程圖):

核心源程序位于main函數中,先對系統進行初始化,之后進入模式選擇界面,選擇模式并進行相應的操作,返回值 模式選擇界面,直到錄入完成,進行查詢計算,查詢結束 可以選擇刪改,最后退出程序。

四.調試分析

(1)作為一個學生成績管理系統,用戶可以首先使用管理員模式初始化該系統,并產生一個開始的學生成績系統,初始化時可輸入學生姓名、學生學號、學生各科成績等信息。初始化完成之后,用戶可選擇使用管理員模式進入系統修改學生信息,也可以選擇使用用戶模式進入系統,對學生成績進行各項查詢,其中有成績最高分查詢,還可以按照不

同的要求進行排序,有按照學號,按照分數高低等;同時可以生成學生成績表,更加直觀的對比查詢學生各項成績,最后還可以刪除或者添加學生成績及各項信息,避免開始的錄入錯誤。

(2)通過對該課題的程序設計,我認識到了C語言作為一種程序機械語言的靈活性。C語言不僅僅是C++以及其他程序語言的基礎,也可以做出許多復雜的程序,學好C語言是很有好處的。

五.測試結果;

1.初次進入系統,進行學生成績系統的初始化:

可以根據學生人數的多少輸入若干學生的各項信息和成績信息,當要結束時,可以輸入0結束學生信息的錄入。

2.可以選擇按照學生的總分進行排序,并清楚的顯示其排序結果。

3.接下來可以進行學生成績統計排序。

4.在學生成績管理系統中,可以根據初始化的數據,對學生計算學生均分以及求出單科最高分的同學。

六.設計體會;

此次C語言程序設計實踐,本人實在是獲益不淺!C語言是上個學期開的課程,所以這個學期并沒怎么看過,當要開始設計的時候,還真不知從哪下手!結果,第一次的上機,我只坐了一個下午,什么也沒干!回去以后,我想,這樣不行,這樣下去還得了!我就重新學了一遍我們上個學期的教材,發覺自已有許多都遺忘了!特別是有文件的操作,幾乎是一遍空白!幾乎花了我百分之九十的時間,而且還是在一些在其他同學的幫助下和在上網查看了大量的資料之后才做出來!最后,想說兩句,這次設計,讓我重新掌握了C語言,而且還得到了用C語言解決實際問題的寶貴經驗!

通過對該課題的程序設計,我認識到了C語言作為一種程序機械語言的靈活性。C語言不僅僅是C++以及其他程序語言的基礎,也可以做出許多復雜的程序。在試驗當中,通過對許多不甚了解的語言規則的上網查閱,豐富了我自己對C語言的知識與認識。也了解了許多C語言程序設計的基本思路,開闊了自己的視野,也鞏固了上學期對于C語言的學習。

七、附錄

源程序代碼:

#include #include #include #include #define LEN sizeof(Student)typedefstruct student { intnum;/*學號*/ char name[20];/*姓名*/ char sex[2];/*性別*/ int score[3];/*成績*/ int sum;/*總成績*/ struct student *next;}Student;int n;/*聲明一個全局變量*/ Student *cin(void);Student *sort_1(Student *head,int);/*聲明按學號排序函數*/ void sort_2(Student *head);/*聲明按總分排序函數*/ void print(Student *head);/*聲明顯示函數*/ Student *sort_all(Student *head);/*聲明排序函數*/ void find(Student *head);/*聲明查詢函數*/ Student *add_new(Student *head);Student *cin(){ int flag;Student *head,*p1,*p2;n=0;10

head=(Student *)malloc(LEN);p2=head;printf(“n請輸入第%d名學生的學號,學號為0表示結束輸入:”,n+1);scanf(“%d”,&flag);while(getchar()!='n');for(;flag;)/*輸入每個學生的信息*/ { n++;p1=(Student *)malloc(LEN);p1->num=flag;printf(“請輸入第%d名學生的姓名:”,n);/*輸入姓名*/ scanf(“%s”,p1->name);printf(“請輸入第%d學生的性別:”,n);/*輸入性別*/ scanf(“%s”,p1->sex);printf(“請輸入第%d名學生的語文成績:”,n);/*輸入語文成績*/ scanf(“%d”,&p1->score[0]);printf(“請輸入第%d名學生的數學成績:”,n);/*輸入數學成績*/ scanf(“%d”,&p1->score[1]);printf(“請輸入第%d名學生的英語成績:”,n);/*輸入英語成績*/ scanf(“%d”,&p1->score[2]);p1->sum=p1->score[0]+p1->score[1]+p1->score[2];p2->next=p1;p2=p1;printf(“n請輸入第%d名學生的學號,沒有此學生則輸入0表示結束:”,n+1);scanf(“%d”,&flag);} p2->next=NULL;printf(“nn”);return head;} Student *sort_all(Student *head)/*定義排序函數*/ { int choose;for(;;){ printf(“ntt# # # # # 學生成績統計排序 # # # #n”);printf(“tt#t1.按學生學號排序t #n”);printf(“tt#t2.按學生總分排序t #n”);printf(“tt#t7.單科高分及均分t #n”);printf(“tt#t8.顯示當前學生成績t #n”);printf(“tt#t0.返回上一級菜單t #n”);printf(“請輸入你要執行的操作:”);scanf(“%d”,&choose);while(getchar()!='n');11

switch(choose){ case 1: case 2: case 3: case 4: case 5: case 6:head=sort_1(head,choose);break;case 7:print(head);sort_2(head);break;case 8:print(head);break;case 0:return head;default: printf(“nn您的輸入有誤!請重新輸入:nn”);break;} } } Student *sort_1(Student *head,int choose)/*定義按學號排序函數*/ { Student *p1,*p2=head->next,*pm,*px;Student mid;if(!p2)return head;for(p1=p2;p1->next!=NULL;p1=p1->next){ pm=p1;for(p2=p1->next;p2!=NULL;p2=p2->next)switch(choose){ case 1:if(pm->num>p2->num)pm=p2;break;case 2:if(pm->sum

sum)pm=p2;break;case 3:if(pm->score[0]

score[0])pm=p2;break;case 4:if(pm->score[1]

score[1])pm=p2;break;case 5:if(pm->score[2]

score[2])pm=p2;break;} if(pm!=p1){ mid=*pm;*pm=*p1;*p1=mid;px=pm->next;pm->next=p1->next;p1->next=px;} } printf(“n排序后的成績表為:n”);print(head);12

return head;} void sort_2(Student *head)/*定義按總分排序函數*/ { Student *p=head->next;int max_1,max_2,max_3,min_1,min_2,min_3;intmax_sum,min_sum;int sum_1=0,sum_2=0,sum_3=0;float aver_1,aver_2,aver_3,aver_sum;if(!p)return;max_1=min_1=p->score[0];max_2=min_2=p->score[1];max_3=min_3=p->score[2];max_sum=min_sum=p->sum;for(;p;p=p->next){ if(max_1

score[0])max_1=p->score[0];else if(min_1>p->score[0])min_1=p->score[0];if(max_2

score[1])max_2=p->score[1];else if(min_2>p->score[1])min_2=p->score[1];if(max_3

score[2])max_3=p->score[2];else if(min_3>p->score[2])min_3=p->score[2];if(max_sum

sum)max_sum=p->sum;else if(min_sum>p->sum)min_sum=p->sum;sum_1+=p->score[0];sum_2+=p->score[1];sum_3+=p->score[2];} aver_1=1.0*sum_1/n;aver_2=1.0*sum_2/n;aver_3=1.0*sum_3/n;aver_sum=aver_1+aver_2+aver_3;printf(“總共%d名學生,具體數據為:n”,n);printf(“總分最高分為%d,最低分位%d,平均分為%.2fn”, max_sum,min_sum,aver_sum);} void find(Student *head)/*定義查詢函數*/ { Student *p;intchoose,fnum;char tem[20];if(n==0){printf(“n當前系統沒有任何學生數據!n ”);return;} for(;;){ printf(“n請輸入您要查詢學生的方式:nn”);printf(“

1、按學號查詢;

2、按姓名查詢;0、我不查詢了。nn”);printf(“請選擇:”);scanf(“%d”,&choose);while(getchar()!='n');13

if(choose==1){ printf(“n請輸入你要查詢的學生的學號,輸入0退出學號查詢:”);scanf(“%d”,&fnum);for(;fnum;){ for(p=head->next;p!=NULL&&p->num!=fnum;p=p->next);if(!p){ printf(“nn找不到你要查詢的學號,請重新輸入,輸入0表示結束:”);scanf(“%d”,&fnum);} else if(p->num==fnum){ printf(“n學號為%d學生的數據為:n”,p->num);printf(“學號t姓名t性別t 語文成績 數學成績 英語成績 總分n”);/*輸出所有的學生信息*/ printf(“%dt%st%st %d %d %d %dn”,p->num, p->name,p->sex ,p->score[0],p->score[1],p->score[2],p->sum);printf(“nn請輸入你還要查詢的學生的學號,輸入0表示不按學號查詢了:”);scanf(“%d”,&fnum);} } } else if(choose==2){ printf(“n請輸入你要查詢的學生的姓名,輸入0退出姓名查詢:”);scanf(“%s”,tem);for(;strcmp(tem,“0”);){ for(p=head->next;p!=NULL&&strcmp(p->name,tem);p=p->next);if(!p){ printf(“nn找不到你要查詢的姓名,請重新輸入,輸入0表示結束:”);scanf(“%s”,tem);} else if(!strcmp(p->name,tem)){ printf(“n姓名為%s學生的數據為:n”,p->name);printf(“學號t姓名t性別t 語文成績 數學成績 英語成績 總分n”);printf(“%dt%st%st %d %d %d %dn”,p->num,p->name,p->sex ,p->score[0],p->score[1],p->score[2],p->sum);printf(“nn請輸入你還要查詢的學生的姓名,輸入0表示不按姓名查詢了:”);14

scanf(“%s”,tem);} } } else if(choose==0){printf(“n你選擇了不查詢!n”);break;} else {printf(“n你以其他方式選擇了不查詢!n”);break;} } } Student *add_new(Student *head)/*定義插入函數*/ { Student *p;int flag;printf(“nn請輸入你要新加入學生的學號,學號為0表示結束輸入:”);scanf(“%d”,&flag);while(getchar()!='n');for(;flag;){ p=(Student *)malloc(LEN);p->num=flag;printf(“請輸入新加入學生的姓名:”,n);/*輸入姓名*/ scanf(“%s”,p->name);printf(“請輸入新加入學生的性別:”);/*輸入性別*/ scanf(“%s”,p->sex);printf(“請輸入新加入學生的語文成績:”,n);/*輸入語文成績*/ scanf(“%d”,&p->score[0]);printf(“請輸入新加入學生的數學成績:”,n);/*輸入數學成績*/ scanf(“%d”,&p->score[1]);printf(“請輸入新加入學生的英語成績:”,n);/*輸入英語成績*/ scanf(“%d”,&p->score[2]);p->sum=p->score[0]+p->score[1]+p->score[2];p->next=head->next;head->next=p;n++;printf(“n請輸入還要加入學生的學號,沒有此學生則輸入0表示結束:”);scanf(“%d”,&flag);} head=sort_1(head,1);printf(“加入后的成績表為:n”);print(head);return head;} void print(Student *head){ Student *p=head->next;15

if(!p){printf(“nn此系統目前沒有任何學生數據!nnn”);return;} printf(“此系統目前共計學生%d名:n”,n);printf(“**************************學生成績統計一覽************************ *****n”);printf(“學號t姓名t性別t 語文成績 數學成績 英語成績 總分n”);for(;p;p=p->next)printf(“%dt%st%st

%d

%d

%d

%dn”, p->num,p->name,p->sex ,p->score[0],p->score[1],p->score[2],p->sum=p->score[0]+p->score[1]+p->score[2]);} struct student *del(struct student *head,longnum)/*定義刪除學生信息函數*/ {struct student *p1,*p2;if(head==NULL){printf(“nlist null!n”);return head;} p1=head;while(num!=p1->num&& p1->next!=NULL){p2=p1;p1=p1->next;} if(num==p1->num){if(p1==head)head=p1->next;else p2->next=p1->next;printf(“delete:%ldn”,num);n=n-1;} elseprintf(“%ld not deen found!n”,num);return(head);} int main()/*主函數即用戶的操作界面*/ { Student *head;intchoose,i,num;/*聲明局部變量*/ head=(Student *)malloc(LEN);head->next=NULL;for(;;){ printf(“ntt* * * * * 學生成績管理系統 * * * *n”);/*學生成績管理系統*/ printf(“tt*t1.學生數據鍵盤錄入t *n”);/*.學生數據鍵盤錄入*/ printf(“tt*t2.學生數據統計排序t *n”);/*學生數據統計排序*/ printf(“tt*t3.查詢學生數據tt *n”);/*.查詢學生數據*/ printf(“tt*t4.插入學生數據tt *n”);/*插入學生數據*/ printf(“tt*t5.顯示當前成績表t *n”);/*顯示當前成績表*/ printf(“tt*t6.刪除學生數據tt *n”);/*刪除學生數據*/ printf(“tt*t0.退出成績管理系統t *n”);/*退出成績管理系統*/ printf(“n請輸入你要執行的操作:”);/*請輸入你要執行的操作*/ scanf(“%d”,&choose);while(getchar()!='n');16

switch(choose){ case 1:printf(“ntttt**************注意**************”);printf(“nn 此選項將會建立新的學生數據系統 ,原來的數據將不再存在,你確信要刪除原來的數據并建立新的數據系統么?nn”);printf(“

1、建立新的數據系統;0、放棄建立新的數據系統。nn”);printf(“請選擇:”);scanf(“%d”,&i);if(i==1){head=cin();print(head);break;} else if(i==0){ printf(“n你選擇了放棄建立新的數據系統!n”);break;} else { printf(“n你做出別的選擇,當作放棄建立!n”);break;} case 2:head=sort_all(head);break;/*調用排序函數*/ case 3:find(head);break;/*調用查詢函數*/ case 4:head=add_new(head);/*調用插入函數*/ case 5:print(head);break;/*調用顯示函數*/ case 6:printf(“請輸入要刪除的學生學號:”);scanf(“%d”,&num);del(head,num);/*調用刪除函數*/ case 0:system(“pause”);return 0;/*退出系統*/ default: printf(“nn您的輸入有誤!請重新輸入:nn”);break;} } }

下載北華大學C++實習報告(學生學籍管理系統)(最終版)word格式文檔
下載北華大學C++實習報告(學生學籍管理系統)(最終版).doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    學生學籍管理系統需求分析報告.

    學生學籍管理系統需求分析說明書 §1 概述 編寫說明: 本章描述本軟件開發的背景,系統目標,用戶的業務情況,以便于需求理解。§ 1.1背景 傳統的學校學籍管理方法、由于分散管理,易......

    c++超市管理系統課程設計報告

    c++超市管理系統課程設計報告第1章任務描述本次C++實踐課題為“超市管理系統”。要求功能有A、添加商品信息,有商品編號、商品名、供應商代號、進貨價、售出價、存貨數等。進......

    C++課程設計學生成績管理分析系統

    五、解決方案 C++程序設計實踐教學環節任務書 1. 分析程序的功能要求,劃分程序功能模塊。 2. 畫出系統流程圖。 一、題目: 學生成績管理分析系統 3. 代碼的編寫。定義類和各......

    學籍管理系統規劃報告5篇范文

    學生學籍管理系統系統規劃報告組長:李文龍組員:宣德園 候樹勛李曉芳楊娟張星靳超 09計算機科學與技術班第一組1.1設計背景 學籍管理系統是一個教育單位不可缺少的一部分,它的......

    學生成績管理系統C++程序設計(共5篇)

    項目設計題目(學生成績管理系統) 學號: 姓名: 自評成績:成績:1.選題意義、依據 學生成績系統的設計從學生的應用中而來,學生了解該系統的組成和運行過程,它貼近學生的生活能使學生......

    c++大作業 學生成績管理系統 學生實驗報告 樣本[最終版]

    學生實驗報告實驗課名稱: C++程序設計 實驗項目名稱:綜合大作業——學生成績管理系統 專業名稱: 班 學級:號: 學生姓名: 同組成員: 教師姓名:日題目:學生成績管理系統一、 實驗目的: (1......

    中小學信息管理系統學生學籍管理模塊使用說明

    學籍管理模塊分析說明書《中小學信息系統需求分析報告》 §1 概述 編寫說明:本章描述本軟件開發的背景,系統目標,用戶的業務情況,以便于需求理解。 §1·1 背景 在學籍管理中,需......

    北華大學電子CAD實習-Altium Designer實習報告(五篇)

    電子CAD實習報告 北華大學 電子CAD實習報告 姓名: XXX 班級:XX-XX-XX-XX 學號: XXXXXXXX 院系:電氣信息工程學院 指導教師:孫繼元、周維芳 實習日期:XXXX.X.X-XXXX.X.X 1 電子......

主站蜘蛛池模板: 国产婷婷综合在线视频| 久久精品手机观看| 精品伊人久久久大香线蕉下载| 老司机午夜精品视频无码| 日本道色综合久久影院| 国产人妻人伦精品1国产盗摄| 无码人妻精品一区二区蜜桃网站| 99草草国产熟女视频在线| 国产大屁股视频免费区| 亚洲男人成人性天堂网站| av鲁丝一区鲁丝二区鲁丝三区| 美日欧激情av大片免费观看| 日本三级香港三级三级人!妇久| 成在线人av免费无码高潮喷水| 精品国产av一区二区果冻传媒| 中文字幕人妻无码一夲道| 国产精品久久久久蜜臀| 97国产精华最好的产品久久久| 久久欧美国产伦子伦精品| 午夜理伦三级理论三级| 强被迫伦姧高潮无码bd电影| 精品av一区二区久久久| 国产猛烈高潮尖叫视频免费| 国产亚洲一区二区在线观看| 免费观看国产小粉嫩喷水| 一本色道久久88精品综合| 欧美99久久无码一区人妻a片| 国产成_人_综合_亚洲_国产| 丰满大乳少妇在线观看网站| 国产97人人超碰cao蜜芽prom| 亚洲中文字幕无码久久2017| 亚洲日韩中文字幕在线播放| 欧美69久成人做爰视频| 人妻无码αv中文字幕久久琪琪布| 久久综合香蕉国产蜜臀av| 国内永久福利在线视频图片| 欧美激情精品久久久久久| 亚洲国产精品久久久天堂麻豆宅男| 又紧又大又爽精品一区二区| 国产成人片视频一区二区| 亚洲欧美一区二区三区|