当前位置:文档之家› 关键源程序及其详细的注释

关键源程序及其详细的注释

关键源程序及其详细的注释
关键源程序及其详细的注释

关键源程序及其详细的注释

<一>、服务器端:

1、Socket初始化

//初始化对话框

BOOL CCSocketDlg::OnInitDialog()

{

count=0;

m_list.InsertColumn(0,"消息");

m_list.SetColumnWidth(0,435);

m_edit.SetLimitText(99);

for (int i=0;i<50;i++)//初始化SOCKET数组msgsock=NULL;

serv.sin_addr.s_addr=htonl(INADDR_ANY); //设定地址serv.sin_family=AF_INET;

serv.sin_port=5000;//htons(5000);

addlen=sizeof(serv);

m_button.EnableWindow(FALSE);

sock=socket(AF_INET,SOCK_STREAM,0); //创建socket if (bind(sock,(sockaddr*)&serv,addlen)) //绑定{

m_edit.SetWindowText("绑定错误");

}else

{

m_edit.SetWindowText("服务器创建成功");//显示提示信息,表示服务器创建成功

listen(sock,5); //开始侦听

AfxBeginThread(&thread,0); //调用线程

}

return TRUE;

}

2、接收线程

//服务器线程

UINT thread(LPVOID p)

{

char buff[100];//定义缓冲区

CSize size;

size.cx=0;

size.cy=30;

int s=1,msgcount,loop=1,flag=0;

CCSocketDlg *dlg=(CCSocketDlg*)AfxGetApp()->GetMainWnd();//获得当前运行对话框句柄

msgcount=dlg->getcount();//获取还没有被占用的数组序号

if (msgcount==-1)//如果不等于-1,则表示,还有空缺SOCKET

loop=0;

if(loop)

{

s=1;

dlg->msgsock[msgcount]=accept(dlg->sock,(sockaddr*)&(dlg->serv),&(dlg->addlen) );//

用空缺的SOCKET等待客户连接

if (dlg->msgsock[msgcount]==INVALID_SOCKET)

{

dlg->m_edit.SetWindowText("Error accept");//如果返回错误,则提示错误

}

else

{

AfxBeginThread(thread,0);//如果和客户端连接成功,则再次启动一个线程

dlg->SetForegroundWindow();//显示连机成功信息

em(dlg->count++,"连接成功");

dlg->m_list.InsertIt

dlg->m_list.InsertItem(dlg->count++,inet_ntoa(dlg->serv.sin_addr));

dlg->m_list.Scroll(size);

dlg->m_button.EnableWindow(TRUE);

while(s!=SOCKET_ERROR)//如果没有发生错误,则一直循环等待数据的到来

{

s=recv(dlg->msgsock[msgcount],buff,100,0); //循环接收数据

dlg->SetForegroundWindow();

if (s!=SOCKET_ERROR)如果接收成功,则显示接收到的数据

{

dlg->m_list.InsertItem(dlg->count++,buff);

dlg->m_list.Scroll(size);

dlg->sendtoall(dlg->msgsock[msgcount],buff);//发送信息到所有的客户端

}

}

send(dlg->msgsock[msgcount],"Disconnected",100,0);//如果发生错误,发送连接中断消息到客户端

dlg->m_list.InsertItem(dlg->count++,"Disconnected");//显示相关信息

dlg->m_list.Scroll(size);

dlg->msgsock[msgcount]=NULL;//将该SOCKET设定为空

for (int i=0;i<50;i++)//判断是否还有其他客户在保持连接

if (dlg->msgsock!=NULL)

flag=1;

if (flag!=1)//如果没有客户连接了,则将发送按钮设置为不可用

dlg->m_button.EnableWindow(FALSE);

closesocket(dlg->msgsock[msgcount]);//关闭连接

}

}

AfxEndThread(0); //终止线程

return 0;

}

3、数据发送

当用户在文本框中输入要发送的信息后,然后单击“发送”按钮,则执行以下代码。//发送数据

void CCSocketDlg::OnButton1()

{

char buff[100];

m_edit.GetWindowText(buff,99);//获得当前文本框中的信息

m_edit.SetWindowText("");//清空文本框的信息

m_list.InsertItem(count++,buff);//向列表框中插入要发送的数据

CSize size;

size.cx=0;

size.cy=30;

m_list.Scroll(size);

for (int i=0;i<50;i++)//循环向所有客户发送信息

{

if (msgsock!=NULL)

send(msgsock,buff,100,0);

}

}

<二>、客户端

1、

连接服务器

连接服务器的程序是在“连接”按扭的单击事件中处理的。

//连接服务器,连接按扭处理事件

void CCSocketcliDlg::OnButton2()

{

char ipaddress[35];//定义标量以保存服务器地址

m_edit2.GetWindowText(ipaddress,30);//获得服务器地址

cli.sin_addr.s_addr=inet_addr(ipaddress);//设定SOCKET需要连接的地址cli.sin_family=AF_INET;

cli.sin_port=5000;//htons(5000);//设定服务器端口

clisock=socket(AF_INET,SOCK_STREAM,0);

//创建socket

ee=1;

AfxBeginThread(thread,0); //启动线程

}

2、

接收数据线程

当用户单击“连接”按钮以后,程序进行相关设定,最后调用了“AfxBeginThread(thread,0);”启动了该线程。

UINT thread(LPVOID v)

{

char buff[100];

char array[25][30]=//定义数组用来存放一些IP地址

{"192.168.0.3",

…(这里省略了部分IP)

"192.168.0.30"};

CSize size;

size.cx=0;

size.cy=30;

int s=1,addcount=0;

CCSocketcliDlg *dlg=(CCSocketcliDlg*) AfxGetApp()->GetMainWnd();//获得对话框

dlg->m_connect.EnableWindow(FALSE);

dlg->m_disconnect.EnableWindow(TRUE);

while(connect(dlg->clisock,(sockaddr*)&(dlg->cli),sizeof(dlg->cli)) &&

dlg->ee!=0) //连接到服务器

{

dlg->m_edit.SetWindowText("等待.....");

for (int i=0;i<=65000;i++)//空循环

for(int j=0;j<=200;j++);

if (addcount==25)

addcount=0;

dlg->cli.sin_addr.s_addr=inet_addr(array[addcount++]);//如果连接不成功,则连接下一个地址

}

if (dlg->ee==1)//如果连接成功,则显示相关信息

dlg->m_list.InsertItem(dlg->count++,"连接成功");

dlg->m_button1.EnableWindow(TRUE);//设定发送按钮为可用状态

dlg->SetForegroundWindow();

while(s!=SOCKET_ERROR && dlg->ee!=0) //循环获得数据

{

s=recv(dlg->clisock,buff,100,0); //调用recv函数接收数据

dlg->SetForegroundWindow();

if (s!=SOCKET_ERROR && dlg->ee!=0)//如果没有发生错误,同时没有断开连接,则显示接收到的数据

dlg->m_list.InsertItem(dlg->count++,buff);

dlg->m_list.Scroll(size);

}

send(dlg->clisock,"Disconnected",100,0);//如果发生错误,发送断开命令

dlg->m_button1.EnableWindow(FALSE);//设定相关控件属性

dlg->m_connect.EnableWindow(TRUE);

dlg->m_disconnect.EnableWindow(FALSE);

closesocket(dlg->clisock);//关闭SOCKET

AfxEndThread(0);//终止该线程

return 0;

}

3、

数据发送

数据发送就是客户端向服务器及其他客户端发送信息,其中向其他用户发送信息是通过服务器实现的,因此,客户只需要将消息发送到服务器就可以了。

//用户单击发送按扭,发送信息

void CCSocketcliDlg::OnButton1()

{

char buff[100];

CSize size;

size.cx=0;

size.cy=30;

m_edit.GetWindowText(buff,99); //获得发送信息

m_edit.SetWindowText("");

m_list.InsertItem(count++,buff);

m_list.Scroll(size);

send(clisock,buff,100,0); //发送数据

}

五、执行结果及其分析。

1、开启服务器端聊天程序。

图一:创建服务器端(提示:服务器创建成功)

服务器端创建成功,并自动绑定了服务器的IP。等待客户端的连接请求,此时的发送按扭是不可用的,当有客户端连接上时发送按扭就变为可用。在下面的编辑框里输入信息就可以发送了。

图二:有客户端连接成功(IP地址为服务器地址)

图三:服务器端发送“你好”并接受“客户端回复”两条信息

图四:有客户端断开连接(提示:Disconnected)

2、客户端程序运行。

客户端程序中输入服务器端所在的IP,然后点连接,如果成功就会提示连接成功,然后在下面的编辑框里输入信息就可以发送了。如果连接不成功就会提示等待,此时有可能是服务器IP输入错误或是服务器端达到了最大的进程。客户端程序可以在程序源代码中预先设置一批服务器的IP,然后点连接,如果当前显示的服务器不能连接成功,则程序自动连接预先设置的第二个IP,一直循环测试连接,当与一台服务器连接成功为时,提示连接成功,并停止循环。

图五:客户端运行(服务器地址显示的为预先设置的IP)

图六:客户端连接成功

图七:客户端发送“你好!”并接受“服务器端回复”两条信息

程序代码注释编写规范

程序代码注释编写规范 为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。 一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 常规注释有以下两种方式。 单行:以"//"符号开始,任何位于该符号之后的本行文字都视为注释。 多行:以"/*"符号开始,以"*/"结束。任何介于这对符号之间的文字都视为注释。 一、说明性文件 说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************* COPYRIGHT (C), MicTiVo International. Co., Ltd. File NAME: // 文件 Author: Version: Date: // 作者、版本及完成日期 DESCRIPTION: // 用于详细说明此程序文件完成的主要功能,与其他模块 // 或函数的接口,输出值、取值范围、含义及参数间的控 // 制、顺序、独立或依赖等关系 Others: // 其它内容的说明 Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明 1.... History: // 修改历史记录列表,每条修改记录应包括修改日期、修改 // 者及修改内容简述 1. Date: Author: Modification: 2. .. *************************************************/ 二、源文件头 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************************ COPYRIGHT (C), MicTiVo International. Co., Ltd. FileName: Author:

JAVA简单项目购物系统的整个开发过程详解(内含源码和注释)

1. 购物系统的需求分析和类划分 购物系统本身是一个十分复杂的系统,有很多细节问题如果深究会更加复杂,并且一般购物系统都是网页类型的,要有一个友好的界面,但是作为一个简单项目,该项目只是为了给JAVA初学者介绍一下开发的基本思想,以及面向对象时应该怎样去设计框架和实现流程,所以只

是基于eclipse开发的一个简单的项目,并没有GUI的参与,并且很多细节问题作为后续研究,整体的设计比较简单,但是足以说明很多设计思想和设计理念,那么下面对基本的需求进行分析。 作为一个简单的购物系统,至少需要具备以下功能(这些功能分布在不同级的菜单中): (1)用户登录功能、用户账号密码修改功能,暂时不提供注册功能; (2)用户成功登录后,需要具备客户信息的管理功能、购物结算功能以及一些抽奖活动等; (3)客户信息管理功能下面又可以分出很多功能,比如说:查询、修改、增加等; (4)购物结算功能下面又可以分出很多功能,比如说:商品选购、付款、账单等; (5)抽奖活动下面又可以设计出多种的抽奖形式,从而进一步划分为许多新的功能模块。 (6)在一级菜单中要提供退出系统的功能,在二级菜单中要提供注销登录的功能,其他级菜单都要能够返回上一级菜单。 上面的这些功能都是一些比较基本的功能,那么如果按照面向流程的思想来设计,就会划分很多功能模块,然后按照流程一步步走就行,但是现在我们采用面向对象的思想来设计,那么应该如何考虑设计框架呢?面向对象的主要思想就是将一些需求抽象为许多类,然后建立这些

类之间的联系,通过不同类之间的协同合作,就可以实现所有的功能。所以,现在的主要任务就是如何合理地抽象出这些类,以及这些类要实现什么功能,类之间的联系又是什么?下面通过本次设计的结构对这一过程进行分析。 (1)StartSMS类:用于系统的启动。我们的系统肯定需要一个启动类,这个类里面包含了main方法,用来启动这个系统,这个类是最顶层的,所以不能牵涉太多底层的细节实现,只需要实现一些顶层的基本流程就行,主要还是要调用底层其他类的一些方法来实现功能。 (2)Data类:用来存放我们的所有数据信息,本次设计主要存放的是已经预存的一些可供购买的商品信息和已经注册的会员信息。为什么需要这个类呢?大家想一想,在面向对象的设计中,我们的数据比较多,肯定不能零散地到处定义、任意修改,这样会使得系统的聚合程度太低,容易出现很多错误,并且难以进行后期功能扩展和错误修改,所以我们要把用到的一些公有的数据进行归类,然后放在一个类中,并且在该类中提供对这些数据进行操作的方法。 (3)Menu类:用于显示及处理各级菜单。既然我们设计的是一个购物系统,那么即使再简单,也需要一个基本的菜单,用来和用户进行交互,由于菜单的比较多,并且各级菜单之间层层相连,所以我们需要对菜单进行统一管理,故而出现了菜单类。注意,这里的菜单只是一些顶层的菜单显示和基本的功能调用,具体底层的算法还是需要更加底层的类来实现的。

程序代码注释编写规范

百度文库- 让每个人平等地提升自我 1 程序代码注释编写规范 为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。 一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 常规注释有以下两种方式。 单行:以"文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************* (C), MicTiVo International. Co., Ltd. 1.File : . History: Date: Author: Modification: 2. .. *************************************************/ 一、源文件头 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************************ (C), MicTiVo International. Co., Ltd. FileName: Author: Version : Date: : / /*receive _process() */ 意:与溢出中断写初值不同}

java+JDBC小项目《学生管理系统》源码带注解

Java+javabean+JDBC学生管理系统 一、项目结构 本项目是使用javabean和jdbc做的,这个包是实体包 这个是菜单包,源码不会再发这些,自己写就好了。 二、项目运行结果

三、源码 废话不多说,直接上源码: 这两个是关键源码,是负责登录和学生信息操作的逻 辑类: public class AdminDaoImpl extends DBHelper implements AdminDao { Admin admin = null; /** * 登录 */ @SuppressWarnings("resource") @Override public Admin login(String name) { String sql = "select * from admin where username=?"; Object[] param = {name}; Object obj = this.excute(sql, param); ResultSet rs = (ResultSet) obj; try { while (rs.next()) { admin = new Admin(); String username = rs.getString("username"); String password = rs.getString("password"); admin.setUsername(username); admin.setPassword(password); } } catch (SQLException e) { System.out.println("未找到此name"); } return admin; } } public class StudentDaoImpl extends DBHelper implements StudentDao { Student stu = null; List list = null; @SuppressWarnings("resource")

声律启蒙原文带详细注释版

《声律启蒙》 上平声 一东1 ————————注释———————— 1一东:“东”指“东韵”,是宋金时期的“平水韵”(也叫“诗韵”)中的一个韵部。“东”叫韵目,即这个韵部的代表字。东韵中包含有许多字,它们的共同点便是韵母相同(当然是指隋唐五代两宋时期的读音),像下面的三段文字中,每个句号之前的那个字,即风、空、虫、弓、东、宫、红、翁、同、童、穷、铜、通、融、虹等 15字,尽管在现代汉语中的韵母并不完全相同,但都同属于东韵,如果是作格律诗,这些字就可以互相押韵。“一”,是指东韵在平水韵中的次序。平水韵按照平、上、去、人四个声调分为106个韵部,其中因为平声的字较多,故分为上下两个部分,东韵是上平声中的第一个韵部。后面的“二冬”、“三江”等情况也相同,不再一一说明。 云对雨,雪对风。晚照对晴空。来鸿对去燕,宿鸟对鸣虫。 三尺剑,六钧弓1。岭北对江东。人间清暑殿,天上广寒宫2。 夹岸晓烟杨柳绿,满园春色杏花红。两鬓风霜,途次早行之客; 一蓑烟雨,溪边晚钓之翁3。 ————————注释———————— 1这一联是两个典故。上联出自《史记·高祖本纪》。汉朝的开国君主刘邦曾经说:我以普通百姓的身份提着三尺长的宝剑而夺取了天下。下联出自《左传》,鲁国有个勇士叫颜高,他使用的弓为六钧(钧为古代重量单位,一钧三十斤),要用 180斤的力气才能拉开。 2清暑殿:洛阳的一座宫殿。广寒宫:《明皇杂录》说,唐明皇于中秋之夜游月宫,看见大门上悬挂着“广寒清虚之府”的匾额,后代便以广寒宫代指月宫。 3次:军队临时驻扎,引申为一般的短暂停留。途次,旅途的意思。 沿对革,异对同1。白叟对黄童2。江风对海雾,牧子对渔翁。 颜巷陋,阮途穷3。冀北对辽东。池中濯足水,门外打头风4。 梁帝讲经同泰寺,汉皇置酒未央宫5。 尘虑萦心,懒抚七弦绿绮;霜华满鬓,羞看百炼青铜6 ————————注释————————

程序代码注释编写规范

程序代码注释编写规范 XXX份公司

为提高控制程序的阅读性与可理解性,现制定相关代码程序代码注释编写的编写规范。 一般情况下,源程序有效注释量必须在20%以上,注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。 常规注释有以下两种方式。 单行:以"//"符号开始,任何位于该符号之后的本行文字都视为注释。 多行:以"/*"符号开始,以"*/"结束。任何介于这对符号之间的文字都视为注释。 一、说明性文件 说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。 示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************* COPYRIGHT (C), MicTiVo International. Co., Ltd. File NAME: // 文件 Author: Version: Date: // 作者、版本及完成日期 DESCRIPTION: // 用于详细说明此程序文件完成的主要功能,与其他模块 // 或函数的接口,输出值、取值范围、含义及参数间的控 // 制、顺序、独立或依赖等关系 Others: // 其它内容的说明 Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明 1.... History: // 修改历史记录列表,每条修改记录应包括修改日期、修改 // 者及修改内容简述 1. Date: Author: Modification: 2. .. *************************************************/ 二、源文件头 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。 示例:下面这段源文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。 /************************************************************

蜀道难 讲义(含详细注解) 完美版

奇之又奇,千古绝唱——李白《蜀道难》讲义 ①噫y ī吁x ū嚱x ī!(蜀人方言,犹“哎呀呀”)危高乎高哉!蜀道之难,难于上青天。 ( 中心句。如晴天霹雳,震撼人心,开启出一篇“奇之又奇”的文字。起韵)蚕丛远古蜀王及鱼凫远古蜀王,开国(的事迹)何多么茫然渺茫!(想象五 丁开山)尔 那,开国之初来四万八千岁,(夸 张)(蜀地)不与秦塞秦地通人烟(住户,烟,炊烟。)(秦地)西当d āng 挡住太白有太白山挡住(只)有(一条)鸟道,(飞鸟)可以横绝 飞越峨△眉△巅山顶。地崩山摧(蜀国迎亲的)壮士死,然后天梯指高险的山路石栈栈道相钩连。(想 象)上n->状有(使)六龙回回转日太阳神之高标(可作一方最高标志的 山峰),(想象六龙回日 以上共引用了四个神话故事:蚕丛、鱼凫、五丁开山、六龙回日)下n->状有(使)冲波滚滚波涛逆折 倒流之回川。(想象)黄鹤黄鹄,健飞的大鸟之飞尚不得过,猿猱náo 猿的一种,善攀援欲度 愁攀援。(虚写映衬:人行走难上加难)青泥1岭名何盘盘曲折盘旋!百步九折萦绕着岩峦山崖。扪 mén 摸参参宿星,蜀地是其分野 历经过井井宿星,秦地是其分野仰(头)胁息屏住气不敢呼吸,以手抚膺胸坐徒,空长叹。(摹写神情、动作 一、写蜀道 的来历和蜀道的高峻,虚写。 ) ②问君指入蜀的友人西游指入蜀何时还,(我)畏担心途(之)巉岩高而险的山岩不可 攀。但见悲鸟号 哀号(于)古木,雄飞雌从绕林间。(缺乏安全感,不敢失伴)又闻子规(杜鹃,啼声哀怨动人,蜀国古望 帝魂魄所化)啼夜月月夜,愁(声回荡于)空山。(这四句借景抒情。)蜀道之难,难于上青天!(承前启后。承接前面“畏涂巉岩不可攀”,引发后面的“其险也如此”。下句开始转韵)使人听此凋 使…凋谢朱颜(脸色由红润变成铁青)。连峰去距离天不盈尺,枯松倒挂倚绝壁。(夸张:山峰之高,绝壁之险)飞湍t ūan 急流瀑流瀑布争喧豗 hu ī喧响,砯p īng n-v 冲击 崖转\使…滚动石万壑山谷雷。其险也如此,(蜀人会)嗟尔远道之人胡为 为何乎来(此)哉?(二、写蜀道的不可攀和蜀道的极其险恶,实写。) 山名,指剑阁的大剑山和小剑山,两山之间有一条长30里长的栈道。)峥嵘高峻突兀而崔嵬高耸貌,一夫一人当关守关,万夫莫开不能打开。所守(之将领)或倘若匪=非(自己的)亲亲信,化为狼 1 青泥岭,在今甘肃徽县南。悬崖万仞,山多云雨,行者屡逢泥淖,故号青泥岭。

程序源代码注释规范

程序注释规范说明 程序注释规范应包括以下三方面: 一、文件头部注释 在代码文件的头部进行注释,这样做的好处在于,我们能对代码文件做变更跟踪。在代码头部分标注出创始人、创始时间、修改人、修改时间、代码的功能,这在团队开发中必不可少,它们可以使后来维护/修改的同伴在遇到问题时,在第一时间知道他应该向谁去寻求帮助,并且知道这个文件经历了多少次迭代、经历了多少个程序员的开发和修改。 样本: /***************************************************** ** 作者:Liuchao ** 创始时间:2007-11-12 ** 修改人:Liuchao ** 修改时间:2007-11-12 ** 修改人:Liaochao ** 修改时间:2007-11-12 ** 描述: ** 主要用于产品信息的资料录入,… *****************************************************/ 二、函数、属性、类等注释 请使用///三斜线注释,这种注释是基于XML的,不仅能导出XML制作帮助文档,而且在各个函数、属性、类等的使用中,编辑环境会自动带出注释,方便你的开发。以protected,protected Internal,public声明的定义注释都建议以这样命名方法。 例如: ///

/// 用于从ERP系统中捞出产品信息的类 ///

class ProductTypeCollector { … } 三、逻辑点注释 在我们认为逻辑性较强的地方加入注释,说明这段程序的逻辑是怎样的,以方便我们自己后来的理解以及其他人的理解,并且这样还可以在一定程度上排除BUG。在注释中写明我们的逻辑思想,对照程序,判断程序是否符合我们的初衷,如果不是,则我们应该仔细思考耀修改的是注释还是程序了… 四、变量注释 我们在认为重要的变量后加以注释,说明变量的含义,以方便我们自己后来的理解以及其他人的理解,并且这样还可以在一定程度上排除BUG.我们常用///三斜线注释。 /// 用于从ERP系统中捞出产品信息的类 class ProductTypeCollector { int STData;/// … }

JAVA源代码规范

JAVA代码规范 (初稿) 2004、4 ?版本更新信息 本版本创建/修改、维护、批准涉及人员如下: 创建/修改者:XX 维护者:XX 批准者:XX 具体版本更新记录如表1-1: 表1-1 版本更新记录 修改方式:A-增加 M-修改 D-删除?目得 本文提供一整套编写高效可靠得 Java 代码得标准、约定与指南。它们以安全可靠得软件工程原则为基础,使代码易于理解、维护与增强灵活性。通过遵循一套通用得程序设计标准,显著提高 Java 软件开发者得生产效率,为开发团队得程序设计带来更大得一致性,使软件开发团队得效率明显提高。 ?规范得执行 本文档适用于公司内进行软件开发得所有技术人员,即公司内软件开发人员编写得所有源代码都必须遵循本规范。 除临时性项目之外得任何项目均应严格按照此标准执行,“临时性项目”指:?为市场推广目得而编写得示程序 ?为一次性用途而编写得临时性小程序 为学习目得而编写得测试程序 ?文档类别

本文档属标准规范类得项目限制级文档,未经总经理及总经理授权人员批准,不得提供公司以外得人员阅读与使用。 ?版本更新条件 本文档得定期评审时间为每年得1月,评审及修订步骤依据SEPG工作规范规定。此外,如遇下列条件可进行评审,并根据评审结果决定就是否需要进行修订: ?本文档所列得引用得标准已经更新。 ?本文档得使用者若对本文档有任何评论、建议或意见,请通过企业内部网络发电子邮件给SEPG,所收到得电子邮件将会在评审与修订时给予充分 得考虑。 ?使用对象 本文档得使用对象包括: ?项目管理者 ?质量保证人员 ?软件开发人员 目录 1介绍 (4) 1、1为什么要有编码规范 (4) 2通用代码格式 (4) 2、1文件组织 (4) 2、2缩进 (5) 2、3行长度 (6) 2、4换行 (6) 2、5空行 (7) 2、6空格 (7) 2、7注释 (8) 2、7、1注释约定 (8) 2、7、2实现注释得格式 (9) 2、7、3文档注释 (10) 2、7、4快速浏览javadoc (10) 2、8声明 (11) 2、8、1每行声明变量得数量 (11) 2、8、2初始化 (11) 2、8、3布局 (11) 2、8、4类与接口得声明 (12) 2、9语句 (12) 2、9、1简单语句 (12) 2、9、2复合语句 (13) 2、9、3返回语句 (13) 2、9、4if,if-else,if else-if else语句 (13)

会计科目表科目详细注解(精华版)

会计科目表科目详细注解(精华版) (一)、资产类科目 1001 库存现金 1、本科目核算各公司费用出纳及收款出纳的库存现金。 2、当天的现金收入及时交存银行(开户行或指定通存卡),并严格按照本制度规定核算现金的各项收支业务。 3、现金收支的主要帐务处理如下: ⑴、从银行提取现金:根据支票存根所记载的提取金额,借记本科目,贷记“银行存款”科目;将现金存入银行,根据银行退回的进帐单第一联,借记“银行存款”科目,贷记本科目。所附原始凭证:提取现金要附盖有期缝章的现金支票存根联;现金进帐附银行盖章的现金进帐单。 (2)、支付职工借支款或小额货款,根据签批手续齐全的借条所记载的金额,借“其他应收款”、“应付帐款”“原材料”等科目,贷记本科目。还款时,根据出纳开具的收据,借记本科目,贷记“其他应收款”等科目。 所附原始凭证:据借人签字认可且按公司审批权限审批齐全的借条。还款则附出纳开具的、还款人签字认可的、出纳签收的还款收据。 ⑶、POS机刷卡,按日汇总在未到开户行前:借“其他货币资金---POS划款”,贷记本科目,次日银行收到时,从其他货币资金转入银行存款。所付原件:客户签字的POS机消费单。⑷、支付日常费用开支:根据签批手续齐全的费用报销单,借记有关费用科目,贷记本科目。如为直接冲往来的费用报销单,则借记有关费用科目,贷记往来科目。 所附原始凭证:按公司审批权限审批齐全的费用报销单,费用报销单应附有的原始单据:①购入数量大、经常性使用的、需储存的工具、物料、促销品等:需附发票、购物清单、入库单、签呈等; ②购入个人或本部门使用的工具、物料等:需附发票、签呈、购物清单等;使用者还应在发票上签收(如是部门使用的由部门经理签收)。 ③土建工程和设备购建:需附发票、签呈、工程决算单、验收单等。 ④差旅费需附车票、住宿发票(如在车上过夜则应注明,坐卧铺车不得报住勤补助)

Java实验报告及其源代码 Java基本程序设计

实验1 Java基本程序设计 一、实验目的 1.掌握设置Java 程序运行环境的方法; 2.了解Java 的数据类型; 3.掌握变量的声明方式; 4.理解运算符的优先级; 5.掌握Java 基本数据类型、运算符与表达式; 6.掌握Java基本输入输出方法。 二、实验环境 1.PC微机; 2.DOS操作系统或 Windows 操作系统; 3.Java sdk程序开发环境、eclipse集成环境。 三、实验内容 1.货币转换 在控制台下输入任意一个美元数值,将其转换成等价的人民币数值(假设100美元=636.99人民币)后在消息框中输出。 2.输出两个数的较大值 分别在两个对话框中输入两个任意的数值,显示其较大的数值。 四、实验步骤 1.新建Java项目,并创建package ; 2.创建两个java类文件,分别命名为 CurrencyConversion.java 和 valueCompare.java ; 3.在 CurrencyConversion.java 中写入代码: package FirstExperiment; import java.util.Scanner;

import javax.swing.JOptionPane; public class CurrencyConversion { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Please input the money(dollar): "); Scanner input = new Scanner(System.in); double moneyOfDollar = input.nextDouble(); double moneyOfRMB = moneyOfDollar * 6.3699 ; String output = "$" + moneyOfDollar + "=" + "¥" + moneyOfRMB ; JOptionPane.showMessageDialog(null, output); } } 4.在 valueCompare.java 中写入代码: package FirstExperiment; import javax.swing.JOptionPane; public class valueCompare { public static void main(String[] args) { String stringNumber1 = JOptionPane.showInputDialog("Please input the first number") ; double number1 = Double.parseDouble(stringNumber1) ; String stringNumber2 = JOptionPane.showInputDialog("Please input the second number") ; double number2 = Double.parseDouble(stringNumber2); if(number1 > number2) JOptionPane.showMessageDialog(null, number1 + " is bigger"); else

毕业论文注释格式

一、参考文献格式: 1 参考文献是对期刊论文引文进行统计和分析的重要信息源之一,在本规范中采用GB7714推荐的顺序编码制格式著录。 2 参考文献著录项目 a.主要责任者(专著作者、论文集主编、学位申报人、专利申请人、报告撰写人、期刊文章作者、析出文章作者)。多个责任者之间以“,”分隔,注意在本项数据中不得出现缩写点“.”。主要责任者只列姓名,其后不加“著”、“编”、“主编”、“合编”等责任说明。 b.文献题名及版本(初版省略)。 c.文献类型及载体类型标识。 d.出版项(出版地、出版者、出版年)。 e.文献出处或电子文献的可获得地址。 f.文献起止页码。 g.文献标准编号(标准号、专利号……)。 3 参考文献类型及其标识 (1) 根据GB3469规定,以单字母方式标识以下各种参考文献类型: 参考文献类型 专著 论文集 报纸文章 期刊文章

学位论文 报告 标准 专利 文献类型标识 M C N J D R S P (2) 对于专著、论文集中的析出文献,其文献类型标识建议采用单字母“A”;对于其他未说明的文献类型,建议采用单字母“Z”。 (3) 对于数据库(database)、计算机程序(computer program)及电子公告(electronic bulletin board)等电子文献类型的参考文献,建议以下列双字母作为标识: 电子参考文献类型 数据库 计算机程序 电子公告

电子文献类型标识 DB CP EB (4) 电子文献的载体类型及其标识 对于非纸张型载体的电子文献,当被引用为参考文献时需在参考文献类型标识中同时标明其载体类型。本规范建议采用双字母表示电子文献载体类型:磁带(magnetic tape)——MT,磁盘(disk)——DK,光盘(CD-ROM)——CD,联机网络(online)——OL,并以下列格式表示包括了文献载体类型的参考文献类型标识: [文献类型标识/载体类型标识] 如:[DB/OL]——联机网上数据库(database online) [DB/MT]——磁带数据库(database on magnetic tape) [M/CD]——光盘图书(monograph on CD-ROM) [CP/DK]——磁盘软件(computer program on disk) [J/OL]——网上期刊(serial online) [EB/OL]——网上电子公告(electronic bulletin board online) 以纸张为载体的传统文献在引作参考文献时不必注明其载体类型。 4 文后参考文献表编排格式 参考文献按在正文中出现的先后次序列表于文后;表上以“参考文献:”(左顶格)或“[参考文献]”(居中)作为标识;参考文献的序号左顶

Java串口通信程序(程序及注释) 可编译运行

Java的串口通信程序 首先需要到到sun主页下载串口通信的包,因为一般的jrd中不含有这个包的,有点补丁的意思。(CSDN上也有)。解压缩,为了使Java Communications API能够正确的与Windows系统交互,需要几个小的技巧。下面是三个很重要的文件,你可以从Sun的网站上下载得到 comm.jar win32com.dll https://www.doczj.com/doc/6913813229.html,m.properties 对于JVM来说,要正确的识别串口,将这几个文件放在系统中合适的位置使很重要的。 comm..jar应该放在以下目录中 %JAVA_HOME%/lib %JAVA_HOME%/jre/lib/ext win32com.dll应该放在以下目录中 %windir%system32 https://www.doczj.com/doc/6913813229.html,.properties应该放在以下目录中 %JAVA_HOME%/lib %JAVA_HOME%/jre/lib 你可以通过编译和运行Sun的例程来验证串口是否可以使用了。 JBuilder中安装安装Java Communication API (以下在JBuilder 2006中测试通过) 如果你使用JBuilder,那么还需要为JBuilder配置API。 一般来说,根据你的JBuilder配置,你也许需要将win32com.dll和 https://www.doczj.com/doc/6913813229.html,.properties安装到相应的目录中,可以参照上述的目录。例如,如果你使用JBuilder附带的JVM的话,你也许需要将win32com.dll和 https://www.doczj.com/doc/6913813229.html,.properties放到C:\Borland\JBuilder2006\jdk1.5的相应位置。

《祭十二郎文》详细注解版

《祭十二郎文》详细注解 (1)年、月、日,季父(叔父)愈闻汝丧之(助词,取独)七日,乃(副词,表间隔之长,才、这才。作“这才”解时有的表条件,“必以长安君为质,兵乃出。”)能衔(含,怀着。衔恨、衔冤)哀致(表达、献出,致敬、致谢、致歉、致辞)诚,使建中远(形作状)具(备办、准备)时(形容词,应时的)羞(通“馐”,美味食物,又“珍”。)之(指示代词,这、这一类)奠(名词,祭品),告(告慰)汝十二郎之灵(在天之灵):(2)呜呼!吾少孤(幼而丧父),及(介词,等到)长(动词,长大),不省(明白、知道,不省人事)所(所动结构,所怙=怙的人=父亲)怙(依靠,怙恶不悛,失怙:丧父。),惟兄嫂是依(“惟…是…”:“是”是宾语前置的标志,前为前置宾语,后为动词,翻译时要调整语序。惟利是图、惟命是从、惟才是举、惟你是问、惟马首是瞻。相同情形的是“之”:惟其疾之忧、惟此之慎、惟鱼之念、惟陈言之务去、惟命之从)。中年兄殁(死亡,同没。)南方,吾与(连词,和)汝俱幼,从嫂归葬河阳。既(不久,后来,是“既而”的省略。)又与汝就食(谋生)江南。零丁孤苦,未尝一日相离也。吾上(名作状)有三兄,皆不幸早世(通逝)。承(继承、接续)先人后(后嗣)者(助词,句中停顿),在孙惟汝,在子惟吾;两世(代)一身,形单影只。嫂尝抚汝指吾而(连词,表修饰)言曰:“韩氏两世,惟此(这,这两个人。)而已!”汝时(副词,当时)犹(副词,还、尚)小,当(副词,表情理上应该如次,应当、应该)不复记忆;吾时虽能记忆,亦未知(懂得、明白)其(代嫂子)言之悲也。 (3)吾年十九,始(副词,初次、第一次)来京城。其(代词,那)后四年,而归视(探视、探望)汝;又四年,吾往河阳省(探视、省视)坟墓,遇汝从(跟随,指护送)嫂丧来葬。又二年,吾佐董丞相于汴州,汝来省(探视、探望)吾;止(留居、停留,“望门投止”)一岁,请归取(接取,“还必相迎取”)其孥(妻子儿女,指家属,“妻孥怪我在”)。明年(古今异义词,第二年),丞相薨(古代侯王死亡,唐代二品以上官员死亡)。吾去(离开)汴州,汝不果(复合虚词,一作未果,表事实与预料不相符合,“没有能够”、“没有实现”。“南阳刘子骥,高尚士也,闻之,欣然规往,未果。”)来。是年,吾佐戎(辅佐军务)徐州,使(派遣)取汝者(代词,…的人)始(副词,才、这才)行,吾又罢(停职)去(离开),汝又不果来。吾念,汝从于(介词,在)东,东亦客(作客、客居,寄居他乡)也,不可以久(副词活用为动词,久居);图(打算、考虑)久远者(助词,句中停顿),莫如(复合虚词,不如,不及、比不上。“莫”为否定副词)西(名作状)归,将成家(古今异义词,安家落户)而(表承接)致(使……来,招引、引来)汝。呜呼!孰(疑问代词,谁)谓(以为、认为,引申指预料、料想)汝遽(副词,仓促、匆忙、急忙)去(离开)。吾与汝俱少年(古今异义词,青壮年),以为虽(即使、即便)暂相别,终(副词,终究)当(副词,表情理上应该如次,应当、应该)久与(介词,和)相处,故(连词,因此、所以)舍(丢下)汝而(表承接)旅食(在外地谋生)京师,以求升斗(比喻极微薄)之禄;诚(假设连词,如果真的、如果确实)知其(代词,那、那样做)如此,虽(连词,即便、即使)万乘(本义借代大国,此指及其富贵、封邑广大)之公相(公卿宰相),吾不以(介词,因、因为)一日辍(停止,指丢下、离开)汝而(表承接)就(动词,往、到、去,指就职上任。)也。 (4)去年,孟东野往。吾书(名作动,写信)与(动词,给)汝曰:“吾年未四十,而(转折连词,可是、但是)视(名词,视力)茫茫(模糊不清、昏昧不明),而(连词,并且)发苍苍(斑白、灰白),而(连词,并且)齿牙动摇。念诸父(伯父叔父辈,“迨诸父异

程序注释及运行结果

第二部分程序注释及运行结果 读者须知: 为了便于读者理解,现将光盘上第一部分可直接在MATLAB6.I 下运行的MATLAB程序的编号和书本上的内容对应如下,每个程序题目括号内的file.m是对应书本上的内容在光盘上第一部分的程序编号。 第二章的随机序列产生程序 例2.1 用乘同余法产生随机数(见光盘FLch2sjxleg1.m) ①编程如下: A=6; N=100; %初始化; x0=1; M=255; for k=1:N %乘同余法递推100次; x2=A*x0; %x2和x0分别表示x i和x i-1; x1=mod (x2,M); %将x2存储器的数除以M,取余数放x1(x i)中; v1=x1/256; %将x1存储器的数除以256得到小于1的随机数放v1中; )存放在矩阵存储器v的第k列中,v(:,k) v(:,k)=v1; % 将v1中的数( i %表示行不变、列随递推循环次数变化; x0=x1; %x i-1= x i; v0=v1; end %递推100次结束; v2=v %该语句末无‘;’,实现矩阵存储器v中随机数放在v2中,% 且可直接显示在MA TLAB的window中; k1=k; %grapher %以下是绘图程序; k=1:k1; plot(k,v,k,v,'r'); xlabel('k'), ylabel('v');tktle('(0-1)均匀分布的随机序列') ②程序运行结果如图2.5所示。

图2.5 采用MA TLAB产生的(0,1)均匀分布的随机序列图 ③产生的(0-1)均匀分布的随机序列 在程序运行结束后,产生的(0,1)均匀分布的随机序列,直接从MATLAB的window 界面中copy出来如下(v2中每行存6个随机数): v2 = 0.0234 0.1406 0.8438 0.0820 0.4922 0.9609 0.7852 0.7266 0.3750 0.2578 0.5508 0.3164 0.9023 0.4336 0.6094 0.6680 0.0234 0.1406 0.8438 0.0820 0.4922 0.9609 0.7852 0.7266 0.3750 0.2578 0.5508 0.3164 0.9023 0.4336 0.6094 0.6680 0.0234 0.1406 0.8438 0.0820 0.4922 0.9609 0.7852 0.7266 0.3750 0.2578 0.5508 0.3164 0.9023 0.4336 0.6094 0.6680 0.0234 0.1406 0.8438 0.0820 0.4922 0.9609 0.7852 0.7266 0.3750 0.2578 0.5508 0.3164 0.9023 0.4336 0.6094 0.6680 0.0234 0.1406 0.8438 0.0820 0.4922 0.9609 0.7852 0.7266 0.3750 0.2578 0.5508 0.3164 0.9023 0.4336 0.6094 0.6680 0.0234 0.1406 0.8438 0.0820 0.4922 0.9609 0.7852 0.7266 0.3750 0.2578 0.5508 0.3164 0.9023 0.4336 0.6094 0.6680 0.0234 0.1406 0.8438 0.0820

JAVA常见名词解释

JAVA常见名词解释 面向对象: 面向对象程序设计(Object-Oriented Programming)是一种起源于六十年代,发展已经将近三十年的程序设计思想。其自身理论已十分完善,并被多种面向对象程序设计语言(Object-Oriented Programming Language,以下简称OOPL)实现。对象是对现实世界实体的模拟,由现实实体的过程或信息牲来定义。一个对象可被认为是一个把数据(属性)和程序(方法)封装在一起的实体,这个程序产生该对象的动作或对它接受到的外界信号的反应。这些对象操作有时称为方法。区别面向对象的开发和传统过程的开发的要素有:对象识别和抽象、封装、多态性和继承。(参见百度百科:面向对象) 面向对象要素:封装、多态、继承 Java名词解释: Abstract class 抽象类:抽象类是不允许实例化的类,因此一般它需要被进行扩展继承。 Abstract method 抽象方法:抽象方法即不包含任何功能代码的方法。 Access modifier 访问控制修饰符:访问控制修饰符用来修饰Java中类、以及类的方法和变量的访问控制属性。 Anonymous class 匿名类:当你需要创建和使用一个类,而又不需要给出它的名字或者再次使用的使用,就可以利用匿名类。 Anonymous inner classes 匿名内部类:匿名内部类是没有类名的局部内部类。 API 应用程序接口:提供特定功能的一组相关的类和方法的集合。

Array 数组:存储一个或者多个相同数据类型的数据结构,使用下标来访问。在Java中作为对象处理。 Automatic variables 自动变量:也称为方法局部变量method local variables,即声明在方法体中的变量。 AWT抽象窗口工具集:一个独立的API平台提供用户界面功能。 Base class 基类:即被扩展继承的类。 Blocked state 阻塞状态:当一个线程等待资源的时候即处于阻塞状态。阻塞状态不使用处理器资源 Call stack 调用堆栈:调用堆栈是一个方法列表,按调用顺序保存所有在运行期被调用的方法。 Casting 类型转换:即一个类型到另一个类型的转换,可以是基本数据类型的转换,也可以是对象类型的转换。 char 字符:容纳单字符的一种基本数据类型。 Child class 子类:见继承类Derived class Class 类:面向对象中的最基本、最重要的定义类型。 Class members 类成员:定义在类一级的变量,包括实例变量和静态变量。 Class methods 类方法:类方法通常是指的静态方法,即不需要实例化类就可以直接访问使用的方法。 Class variable 类变量:见静态变量Static variable Collection 容器类:容器类可以看作是一种可以储存其他对象的对象,常见的容器类有Hashtables和Vectors。 Collection interface 容器类接口:容器类接口定义了一个对所有容器类的公共接口。

于休烈详细注释翻译

《旧唐书 于休烈传》注释、译文 于休烈,河南人也。至性 (多指天赋的卓绝的品性)贞悫 ( qu è 坚贞诚信) ,机鉴 (机警)敏悟 (犹聪明) 。自幼好学,善属 (写)文。举 (考中)进士,授秘书省正字。转比部员外郎, 郎中。杨国忠辅政,排不附己者,出(离开朝廷)为中部郡太守。值禄山构难 (叛乱) ,肃宗践祚(即位;登基) ,休 烈迁太常少卿,知 (主管,掌管)礼仪事,兼修 (编修)国史。肃宗自凤翔还京,励精 (振奋精神)听受 (听从,接受) ,尝 (曾经)谓休烈曰: “君举必书,良史也。朕有过失,卿书之否?”对曰: “禹、 汤罪(归罪)己,其兴(兴起)也勃 (蓬勃)焉。有德之君,不忘规过 (规正过失) ,臣不胜大庆。 ”时中原荡覆 (动荡,颠覆) ,典章(典制,法令制度)殆 (几乎)尽,无史籍检寻 (翻阅,查寻) 。休烈奏曰: “ 《国史》 《实录》 ,圣朝大典 (重要典籍) ,修撰多时,今并无本 (刻本) 。伏望 (表希望的敬词。多用于下对上)下(下诏)御史台推勘 (考察,推求)史馆所由(祈请下诏御史台 查勘史馆藏书之来源) ,令府县招访 (招收,寻访) 。有人别 (从别处)收得《国史》 《实录》 ,如送官司 (官府) ,重加购赏 (悬赏;奖赏) 。 ” 前(前任)修(编修)史官工部侍郎韦述陷贼,入东京,至是以 (把)其家藏《国史》一百一十三卷送于官。休烈寻 (不久)转工部侍郎、修国史,献《五代帝王论》 ,帝甚嘉之。宰相 李揆 矜能 (夸耀自己的才能)忌贤(妒忌贤才) 以(因为)休烈 修国史 与己 齐列(平列,平等)嫉之\奏为国子祭酒权 (暂且)留 史馆 修撰 以(来)下 (贬低)之 . 休烈恬然(安然) 自持(自处) 殊不介意。 代宗即位,甄别 (审核官吏)名品 (名位,品级) (句意:审察鉴定官员之优者) ,宰臣(帝王的重臣;宰相)元载称之(于休烈) ,乃拜右散骑常侍, 依前兼修国史,累封东海郡公,加金紫光禄大夫。在朝凡 (总共) 三十余年,历掌 (历任)清要 (地位显贵、职司重要而政务不繁的官职) ,家无儋石 (d àn sh í借指少量米粟)之蓄。恭俭 (恭谨俭约)温仁 (温厚仁爱) ,未尝以喜愠形于颜色。而亲(亲近)贤(贤才)下 士(屈身交接贤士) ,推毂 (荐举;援引)后进 (后辈) ,虽(虽然)位(地位)崇(尊)年高,曾无 (连一点也没有)倦色。笃好 (十分爱好)坟籍 (这里指古代的典籍) ,手不释卷,以至于终。 大历七年卒,年八十一。是岁春,休烈妻韦氏卒。上(皇 上)特(特 别)诏(下诏)赠韦氏国夫人(命妇的一种封号。) ,葬日给卤l ǔ簿b ù (古代帝王驾出时扈从(随从)的仪仗队。自汉以后亦用于后妃、太子、王公大臣。唐制四品以上皆给卤簿)鼓吹 (演奏乐曲的乐队) 。及闻休烈卒,追悼久之,褒赠 (褒奖,追赠)尚书左仆射,赙(f ù拿钱财帮助别人办理丧事)绢百匹、布五十端,遣谒者(官名。使者的别称。)内常侍吴承倩就私第宣慰 (宣旨,慰问) 。儒者之荣,少有其比(少有能与之相比的) 。 (节选自《旧唐书?于休烈传》 ) 参考译文 于休烈,河南人。于休烈性情纯厚谨慎,机敏聪明。从小好学,善于写文章,考中进士科,授任秘书省正字,改任比部员外郎,郎中。杨国忠辅佐朝政,排挤不依附自己的人,于休烈出京任中部郡太守。 正值安禄山叛乱, 肃宗即位,改任太常少卿,掌管礼仪事务,兼修国史。肃宗从凤翔返回京城,振奋精神听取臣下建议,曾经于休烈说:“国君的任何举动都要记録下来,这才是良史。朕有过失,卿是否记下了?”他回答说:他回

相关主题
文本预览
相关文档 最新文档