第一篇:北华大学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
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按提示输入:”<
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无此类型性别!重新输入!”<
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找不到你要查找的内容!”<
void school::del(){ student *p,*p2;int num;cout<<“ttt输入编号: ”;cin>>num;if(!find(&p,num,“^”)){ cout<<“tt找不到你要删除的内容!”<
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找不到你要修改的内容!”<
} 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 ☆☆☆☆欢迎进入学籍管理系统☆☆☆☆”< <<“ * * * * * * * * * * * * * * * * * * * * * * * * * * * *”< 六、结论 本程序基本完成了题目要求的功能。但是由于显示的限制,所罗列的学生成绩只给出了数学,英语,计算机的成绩。程序可通过改进,增加科目数。 程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了。解决办法将输出函数的输出格式改一下,难点是计算输出点的控制。 七、心得与体会 此次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++程序设计实验报告 院系:电子与控制工程学院 交通信息与控制工程系 学号: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 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++设计 学生成绩管理系统实验报告