MySQL管理器详析

MySQL管理器详析
MySQL管理器详析

第13章MySQL管理器

当前IT行业流行的关系型数据库有Oracle、SQL Server、DB2和MySQL等。其中MySQL是一个小型的关系型数据库,开发者是瑞典的MySQL AB公司,于2008年6月1日被Sun公司收购。MySQL 拥有体积小、速度快等优点,被广泛的应用在中小型企业的IT系统中,更重要的一点是,它是开源的。由于MySQL应用广泛,因此涌现出许多MySQL的客户端,例如MySQL Front、Navicat与MySQL 自带的MySQL Administrator等,这些都是我们平时在开发MySQL数据库应用时十分常用的MySQL 图形管理工具。这些优秀的工具为我们提供了十分方便的功能去管理MySQL数据库,例如提供浏览数据的图形界面、操作数据的界面、操作各个数据库元素(表、视图、存储过程等)的界面,这些功能为我们带来了极大的方便,可以在一个完全图形化的界面进行数据库处理。使用这些工具,你可以不懂如何编写SQL语句,只需要通过操作图形界面,就可以达到操作数据库的目的。

在本章中,我们将自己开发一个简单的MySQL管理器。在开发的过程中,让大家了解前面所讲到的那些优秀工具的实现原理。在本章开头已经提到,这些管理工具,提供了各种的图形界面让我们去进行各种的操作,因此,开发一个MySQL管理器,除了需要编写一些操作数据库的SQL以外,还需要注意的是图形界面的处理。这些管理工具,实现的原理并无太大差别,但是哪个工具更能得到多数使用者的青睐,更多的就是取决于这些工具给用户带来的使用体验及方便性。

本章所开发的MySQL管理器是基于MySQL5.0开发的,因此如果要得到最佳的运行效果,请使用MySQL5.0。由于MySQL各个版本间都存在差别,例如笔者在开发这个管理器的时候,就遇到MySQL5.0与MySQL5.1之间的微小差别,这些差别对我们开发所产生的影响,将在下面的章节中详细介绍。

13.1 MySQL管理器原理

MySQL管理器,主要功能是让用户可以轻松进行各种的MySQL操作,包括连接管理、数据库管理、表管理、视图管理、存储过程和函数管理,这些功能点我们都可以使用JDBC实现,例如表管理中包括创建表、修改表等功能,我们可以使用JDBC直接执行SQL语句中的CREATE TABLE和ALTER TABLE来达到目的。除了这些功能外,还需要对数据库中的数据进行导出和导与的操作,进行这些操作,我们可以编写程序来实现,但是,更好办法就是使用MySQL的命令(mysql或者mysqldump)来解决,这样可以轻松解决数据的导出与导入,但是,前提就是使用的客户端必须安装MySQL数据库,并且要告诉我们这个管理器,MySQL的具体目录,我们可以使用程序去调用这些MySQL的命令。下面,我们就开始实现这些所定义的功能。

13.2 建立界面

在编写程序前,我们需要准备各个界面,包括连接管理界面、表管理界面、视图管理界面、存储过程(函数)管理界面与查看数据界面等。表管理、视图管理、存储过程和函数管理我们可以建立一个主界面,根据不同的情况显示不同的菜单,而连接管理我们可以使用一棵树来进行管理,可以同时存在多个连接,这些连接下面的子节点就是该连接下面的数据库。

·2· 13.2.1 MySQL 安装目录选择界面

当进入管理器时,我们就需要让用户去选择MySQL

的安装目录,原因就是因为我们需要MySQL 的内置命令,因此需要指定MySQL 的安装目录。图13.1是安装目录选择界面。

图13.1 MySQL 安装目录选择界面

让用户选择MySQL 安装目录十分简单,只提供一个目录选择安装以及显示目录路径的JTextFeild ,并且加入一个确定与取消按钮。当用户选择了MySQL 的安装目录,点击了确定时,就显示我们的主界面,这里需要注意的是,我们在实现的时候,需要判断用户所选择的MySQL[安装目录是否正确,由于mysql 与mysqldump 等命令是存在于MySQL 安装目录下的bin 目录的,因此判断用户所选择的目录是否正确,可以判断在bin 目录下是否存在相应的命令,这些将在下面的章节中描述。MySQL 安装目录在本章代码中对应的是ConfigFrame 类。

13.2.2 主界面

主界面提供各种功能的入口,可以让用户在该界面中使用或者进入各个功能,除了需要提供这些入口外,还需要提供一棵树,更直观的展示当前所使用的连接,以及该连接下面所有的数据库。主界面如图13.2所示。

图13.2 主界面

·3·

主界面由一个工具栏,一棵树以及一个JList组成,其中工具栏中包括的操作如下:

?添加连接:可以让用户添加一个连接。

?查看表:查看当前数据库中所有的表。

?查看视图:查看当前数据库中所有的视图。

?查看存储过程(函数):查看数据库中所有的存储过程与函数。

?打开执行SQL的界面:打开一个执行SQL语句的界面。

在主界面的左边部分,提供一棵树让用户十分直观的看到连接的相关信息,这棵树可以隐藏根节点,第一层节点就是连接,第二层节点就是该连接下所对应的所有的数据库,每一个数据库节点下面可以有三个子节点:表、视图和存储过程,当然,我们在平时使用其他管理工具的时候,还可以有触发器等内容,我们在本章的项目中不提供这些功能。

这里需要注意的是,我们更换了树的各个节点图片,因此需要为JTree添加一个DefaultTreeCellRenderer来设置各个节点的图片以及文字,当然,还需要将各个节点抽象成不同的对象,新建各个视图对象的接口ViewObject,该接口将是所有视图对象的父类,这些视图对象包括树的各个节点,主界面右边列表所显示的各个元素等。

代码清单:code\mysql-manager\src\org\crazyit\mysql\object\ViewObject.java

public interface ViewObject {

//返回显示的图片

Icon getIcon();

}

该接口只有一个getIcon方法,返回一个Icon对象,表示这些界面所对应的图片,另外,树上的各个节点对象,可以有两种形式,第一种就是需要带连接的节点,例如数据库连接节点和数据库节点,第二种就是不需要带有连接的节点,因此我们可以将带有连接的节点抽象成一个父类,让连接节点和数据库节点去继承。另外,还需要提供一个connect的抽象方法,需要让子类去实现。

代码清单:code\mysql-manager\src\org\crazyit\mysql\object\tree\ConnectionNode.java

public abstract class ConnectionNode implements ViewObject {

//JDBC的Connection对象

protected Connection connection;

//连接方法,由子类去实现

public abstract Connection connect();

//省略setter和getter方法

}

代码清单:code\mysql-manager\src\org\crazyit\mysql\object\tree\ServerConnection.java

public class ServerConnection extends ConnectionNode {

private final static String DRIVER = "com.mysql.jdbc.Driver";//MySQL驱动

private String connectionName; //MySQL驱动

private String username; //用户名

private String password; //密码

private String host; //连接ip

private String port; //连接端口

//省略setter和getter方法

//实现接口ViewObject的方法, 根据不同的连接状态显示不同的图片

public Icon getIcon() {

if (super.connection == null) return ImageUtil.CONNECTION_CLOSE;

else return ImageUtil.CONNECTION_OPEN;

}

//重写toString方法, 返回连接名称

public String toString() {

return this.connectionName;

·4·

}

//实现父类的connect方法

public Connection connect() {

}

}

一个ServerConnection对象表示一个连接节点,一个连接节点当然需要包括一些连接的相关信息,包括连接名称、MySQL用户名、密码、连接的IP与端口等信息。该对象实现了ViewObject的getIcon 方法,判断父类ConnectionNode的connection属性是否为空来显示不同的图片,还需要重写toString 方法,返回连接的名称。

代码清单:code\mysql-manager\src\org\crazyit\mysql\object\tree\Database.java

public class Database extends ConnectionNode {

private String databaseName; //数据库名字

private ServerConnection serverConnection; //数据库所属的服务器连接

//需要使用数据库名称与服务器连接对象构造

public Database(String databaseName, ServerConnection serverConnection) {

this.databaseName = databaseName;

this.serverConnection = serverConnection;

}

//实现接口的方法, 判断该数据库是否连接, 再返回不同的图片

public Icon getIcon() {

if (this.connection == null) return ImageUtil.DATABASE_CLOSE;

return ImageUtil.DATABASE_OPEN;

}

//重写toString方法

public String toString() {

return this.databaseName;

}

//实现父类的connect方法

public Connection connect() {

}

}

Database节点对象包括数据库的名字,另外还需要一个ServerConnection对象,由于每个数据库都是某个连接节点下面的子节点,因此需要记录它的父节点,当然,并不是简单的进行记录,还可以让它们共享一些不会经常创建的实例,例如Connection。另外,需要注意的是,无论ServerConnection 或者Database对象,都需要实现ViewObject的getIcon方法,当连接节点或者数据库节点被打开时,都需要改变它们的图片,而显示何种图片,由getIcon方法决定。

代码清单:code\mysql-manager\src\org\crazyit\mysql\object\tree\TableNode.java

public class TableNode implements ViewObject {

private Database database; //所属的数据库节点

//返回表的树节点图片

public Icon getIcon() {

return ImageUtil.TABLE_TREE_ICON;

}

//重写toString方法

public String toString() {

return "表";

}

}

一个T ableNode对象代表一个表的节点,需要提供一个Database属性来表示这个对象是属于哪个

·5·

数据库下面的子节点。如图13.2所示,我们可以看树中每个数据库节点的表节点都是一致的(每个数据库里面都有表),可以将这个表节点理解成是导航栏的某一组成部分,当用户点击了这个节点后,就可以在右边的列表中显示对应数据库的表。

与TableNode一样,另外再次创建两个对象:ViewNode和ProcedureNode,分别代表数据库节点下面的视图节点和存储过程节点,实现方法与TableNode类似。下面为树节点添加一个DefaultTreeCellRenderer类,让其得到这些节点对象,并设置相应的文字和图片。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\tree\TreeCellRenderer.java

public class TreeCellRenderer extends DefaultTreeCellRenderer {

public Component getTreeCellRendererComponent(JTree tree, Object value,

boolean sel, boolean expanded, boolean leaf, int row,

boolean hasFocus) {

DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;

//获得每个节点的ViewObject

ViewObject obj = (ViewObject)node.getUserObject();

if (obj == null) return this;

this.setText(obj.toString());//设置文字

this.setIcon(obj.getIcon());//设置图片

if (sel) this.setForeground(Color.blue); //判断是否选来设置字体颜色

else this.setForeground(getTextNonSelectionColor());

return this;

}

}

在节点处理类TreeCellRenderer类,得到每个节点的ViewObject后,就可以为节点设置文字和图片,我们的ViewObject接口提供了getIcon方法,所以我们就可以在节点处理类中得到每个节点所对应的图片与文字(从toString方法获得)。

树的相关处理就完成了,主界面的右边是一个列表,对应的是一个JList对象,JList里面的每一个元素,都是ViewObject的实现类,只需要实现getIcon方法与重写toString方法即可。每个列表的元素对象都可以将它们的name属性抽象到一个父类中,各个对象去继承它即可,在本例中,我们所涉及有三种数据类型:表、视图和存储过程(函数),我们需要建立三个对象,分别代表这三种数据类型。

在本章的代码中,我们创建了T ableData、ViewData和ProcedureData三个类分别代表表数据、视图数据和存储过程数据,这三个对象都需要实现ViewObject接口,具体的实现与三个节点的实现类似,都需要实现getIcon方法并重写toString。表、视图和存储过程都是某一个数据库下面的元素,因此这三个数据对象都需要保存一个Database属性,表示该数据所属于的数据库。与树一样,还需要提供一个元素处理类,来指定显示的数据图片。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\list\ListCellRenderer.java

public class ListCellRenderer extends DefaultListCellRenderer {

public Component getListCellRendererComponent(JList list, Object value,

int index, boolean isSelected, boolean cellHasFocus) {

JLabel label = (JLabel)super.getListCellRendererComponent(list,

value, index, isSelected, cellHasFocus);

ViewObject vd = (ViewObject)value; //得到ViewObject对象

label.setIcon(vd.getIcon());//设置图片

label.setToolTipText(vd.toString());

//设置选中时的字体颜色

if (isSelected) {

setBackground(Color.blue);

setForeground(Color.white);

}

return this;

·6·

}

}

到这里,主界面的各个对象都创建好了,本章中对应的主界面对象是MainFrame 类,可以在该类中创建对应的树与列表。这里需要注意的是,当创建列表(JList )的时候,可以将JList 设置为横向滚动,调用以下代码即可实现:

dataList.setLayoutOrientation(JList.VERTICAL_WRAP); //dataList 是界面中的

JList 对象

创建主界面后,我们可以在创建树与创建列表的时候加入一些模拟数据来查看效果,具体的效果如图13.3所示:

图13.3 主界面效果

13.2.3 数据显示界面

在整个管理器中,我们需要一个数据显示的界面,而且只有一个。打开数据显示界面的途径有两种,一种是双击一个表查看数据的时候,另外一种就是执行SQL 的时候(执行查询的SQL ),就会打开数据显示界面,将用户感兴趣的数据显示出来。由于一般会存在打开多个表或者多次执行SQL 的情况,因此我们在编写打开数据显示界面的代码的时候,每次都需要去创建这个界面对象的实例。在本章中,界面显示对象对应的类是DataFrame ,数据显示界面如图13.4所示。

·7·

图13.4 数据显示界面

界面比较简单,一个工具条加一个表格即可,工具条中包括的功能有:

?刷新:刷新当前界面的数据。

?降序:当用户选择了某一列并点击该图标的时候,就对该列所对应的字段进行降序排序。

?升序:操作与降序一样,但是对所选字段进行升序排序。

在这个界面中,需要注意的是,这个列表对应的JT able对象并不像其他JTable一样,拥有固定的列,由于我们不可能知道用户将要打开的表有多少列,因此只能在用户打开表的时候,得到该表的信息再动态的生成列与数据。除了这里之外,我们还需要为这个JTable对象进行一些额外的处理,例如我们需要让这个JTable对象可以整列选择,就需要自己编写一个类去继承JTable。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\table\DataT able.java

//当点击表头时, 表示当前所选择的列

private int selectColumn = -1;

public DataTable(DefaultTableModel model) {

//为表头添加鼠标事件监听器

header.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) {

header.getTable().clearSelection();

int tableColumn = header.columnAtPoint(e.getPoint());

selectColumn = tableColumn;

}

});

//为JTable添加鼠标监听器

this.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) {

selectColumn = -1;

updateUI();

·8·

}

});

}

注意以上代码中的类属性selectColumn,当我们用鼠标点击了表头的时候,就将该值设为当前选择的列的索引,当在JTable的其他地方点击了鼠标时,就设置该值为-1,表示没有选择表头。那么我们就需要重写JT able的isCellSelected方法,如果selectColumn不是-1,那么就需要将用户所选择的列整列设为选中状态,以下是isCellSelected方法的实现:

//判断一个单元格是否被选中, 重写JTable的方法

public boolean isCellSelected(int row, int column) {

if (this.selectColumn == column) return true; //如果列数与当前选择的列相同,返回true

return super.isCellSelected(row, column);

}

另外,我们还需要提供一个返回selecColumn值的public的方法。做完这些后,可以点击一列,看到效果如图13.5所示。

图13.5 数据显示界面选择整列

13.2.4 创建连接界面

连接是整个工具的最基础部分,没有连接,其他任何操作都不能进行,因此使用这个MySQL管理工具,就需要提供一个新增连接的界面,让用户去创建各个连接,界面如图13.6所示。

·9·

图13.6 新建连接界面

图13.6中新建连接的界面比较简单,普通的一个表单,界面中包括的元素如下:

?连接名称:该名称在管理器的树中显示,并且该名称不可以重复。

?连接IP:需要连接到的MySQL服务器IP。

?端口:MySQL的端口,默认为3306。

?用户名:连接MySQL的用户名,例如root。

?密码:连接MySQL的密码。

?测试连接:测试输入的信息是否可以连接到MySQL服务器中,当然,如果测试不能连接,也可以添加这个连接。

?确定和取消:点击确定添加连接并关闭该窗口,点击取消不保存连接并关闭窗口。

13.2.5 创建表界面

当用户需要创建一个表的时候,就需要提供一个界面让用户去输入表的各种数据,包括字段名称、类型、是否允许空和主键等信息。创建表界面是本章中最为复杂的界面,用户可以随意的在表中进行操作,最后执行保存,表界面如图13.7所示。

·10·

图13.7 创建表界面

界面如图13.7所示,该界面较为复杂,分成上下两个表格,上面的表格主要处理表的字段信息,包括字段名、类型、是否允许空和主键,在该表格下面,有一个输入默认值的文本框,并提供一个表示字段是否自动增长的多选框。当我们在表格中选中某行数据(字段)的时候,默认值就需要发生相应的改变,自动增长的多选框也要随着改变。在本章中表界面对应的是TableFrame类。

字段表格需要进行特别处理的是允许空和主键的单元格,这两个单元格都需要使用图片来显示。我们编写一个FieldTable类来表示字段表格,并为这个FieldT able提供一个DefaultTableCellRenderer的子类来对单元格进行处理。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\table\FieldTableIconCellRenderer.java public class FieldTableIconCellRenderer extends DefaultTableCellRenderer {

public Component getTableCellRendererComponent(JTable table, Object value,

boolean isSelected, boolean hasFocus, int row, int column) {

//判断单元格的值类型,分别调用setIcon与setText方法

if (value instanceof Icon) this.setIcon((Icon)value);

else this.setText((String)value);

this.setHorizontalAlignment(CENTER);

return this;

}

}

FieldTableIconCellRenderer的实现十分简单,只是判断单格的值再进行处理。在FieldTable使用以下代码即可实现显示图片。

this.getColumn(ALLOW_NULL).setCellRenderer(this.cellRenderer);

this.getColumn(PRIMARY_KEY).setCellRenderer(this.cellRenderer);

以上代码先得到允许空和主键的列后再设置单元格处理类。重新运行程序时,就可以看到效果如图13.7所示,但是否需要对FieldTable加入鼠标事件处理,当点击了允许空和主键的列单元格时,就需要

改变它们图片。为FieldTable加入鼠标监听器。

·11·

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\table\FieldTable.java

//鼠标在JTable中点击的时候触发该方法

private void selectCell() {

int column = this.getSelectedColumn();

int row = this.getSelectedRow();

if (column == -1 || row == -1) return;

//修改图片列

selectAllowNullColumn(row, column);

selectPrimaryKeyColumn(row, column);

}

//点击的单元格位于允许空列

private void selectAllowNullColumn(int row, int column) {

//得到需要更改图片的列(允许空列)

TableColumn tc = this.getColumn(ALLOW_NULL);

if (tc.getModelIndex() == column) {

Icon currentIcon = (Icon)this.getValueAt(row, column);

//根据当前选中的图片来更改允许空的图片

if (ImageUtil.CHECKED_ICON.equals(currentIcon)) {

this.setValueAt(ImageUtil.UN_CHECKED_ICON, row, column);

} else {

this.setValueAt(ImageUtil.CHECKED_ICON, row, column);

}

}

}

//如果鼠标点击的列是"主键列",去掉或者加上图标

private void selectPrimaryKeyColumn(int row, int column) {

//得到需要更改图片的列(主键列)

TableColumn tc = this.getColumn(PRIMARY_KEY);

if (tc.getModelIndex() == column) {

Object obj = this.getValueAt(row, column);

if (ImageUtil.PRIMARY_KEY_BLANK.equals(obj)) {

this.setValueAt(ImageUtil.PRIMARY_KEY, row, column);

} else {

this.setValueAt(ImageUtil.PRIMARY_KEY_BLANK, row, column);

}

}

}

只需要在创建FieldTableIconCellRenderer的时候为表格加入鼠标监听器,该监听器调用以上代码的selectCell方法即可,selectCell方法再去调用点击允许空和主键单元格的方法,即以上的selectAllowNullColumn和selectPrimaryKeyColumn方法,这两个方法中判断用户所选择的列,是否为需要进行图片处理的列(允许空和主键),再对单元格的值(图片)进行修改,就可以达到点击单元格就显示不同图片的效果。另外,当我们点击了某行数据(字段)的时候,还需要处理默认值与自动增长,我们在下面章节将会实现。

实现了字段列表后,还需要注意的是该列表下面的三个按钮,分别是新字段、插入字段和删除字段,新字段与插入字段的区别是,新字段在列表的最后加入一行数据,插入字段在用户所选择的行的前面插入一行数据。

TableFrame下面的外键列表与字段列表不同的是,外键列表不需要进行图片处理,但是每个单元格都需要使用下拉框来代替普通的文字。与字段列表一样,新建一个ForeignTable的类来表示一个外键列表,外键列表有5列,而且每一列中的每个单元格都是下拉框,因此我们需要在ForeignTable中创

·12·

建5个下拉框(JComboBox)以及5个单元格编辑器对象。

5个单元格编辑器对象,以下是ForeignTable的实现。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\table\ForeignTable.java

private DefaultCellEditor fieldNameEditor; //字段名称编辑器对象

private DefaultCellEditor referenceTableEditor; //约束表

private DefaultCellEditor referenceFieldEditor; //约束字段

private DefaultCellEditor onDeleteEditor; //级联删除

private DefaultCellEditor onUpdateEditor; //级联更新

那么在创建这些单元格编辑器对象的时候,就分别以各个下拉框的对象作为构造参数:this.fieldNameEditor = new DefaultCellEditor(this.fieldNameComboBox);

接下来,得到相应的列,再设置编辑器对象即可:

this.getColumn(FIELD_NAME).setCellEditor(this.fieldNameEditor);

做完这些工作后,外键列表中所有的单元格都变成可以使下拉来设定值,我们在开发界面的时候,由于缺乏真实的数据,因此我们可以提供一些模拟的数据来实现效果,到需要实现的时候,就可以替换上真实的数据。新增表与修改表的界面可以共用一个界面,但是同时需要做新增与修改操作的时候,就需要做多一些额外的判断,本章中新增表与修改表为同一个界面(TableFrame)。

13.2.6 视图界面

当用户需要编写一个视图的时候,我们可以提供一个视图界面。视图界面实现十分简单,只有一个JTextArea即可,并附带有保存操作。这里需要注意的是,用户点击保存的时候,需要将视图通过SQL 的CREATE VIEW来创建,那么用户查看视图的时候,与查看表一样,都是需要打开数据浏览界面。图13.8是视图界面。

图13.8 视图界面

在本章中,创建表的界面一样,无论新增视图或者修改视图,都使用相同的一个界面,对应的是ViewFrame。

·13·

13.2.7

存储过程界面

用户需要新建一个存储过程或者函数的时候,可以提供一个新建存储过程界面让用户去操作。存储界面在本章中对应的类是ProcedureFrame 。存储过程界面如图13.9所示。

图13.9 存储过程界面

界面元素说明:

? 输入方法体的JTextArea :用户可以在此输入存储过程或者函数的方法体。 ? 参数JTextField :输入存储过程或者函数的参数。

? 返回值JTextField :可以输入函数的返回值,因为函数才有返回值。如果选择的类型为存储过

程,则该JTextField 不可用。

? 类型下拉框:可以选择编写的类型,是存储过程还是函数。

13.2.8 查询界面

当用户需要执行一些SQL 的时候,可以提供一个查询界面让用户去输入,该界面提供执行SQL 与保存SQL 的功能,执行SQL 的时候,如果是普通的INSERT 、UPDATE 或者其他无需浏览数据的SQL 语句,则可以直接操作。如果执行的是查询、调用存储过程或者函数的语句,那么就需要将结果显示到数据界面,即13.2.3的界面。本章对应的查询界面类是QueryFrame ,查询界面如图13.10所示。

·14·

图13.10 查询界面

13.2.9 树节点右键菜单

在主界面的连接树中,当我们点击了树的某个节点的时候,可以提供一些右键菜单来执行一些相关的操作,例如点击了连接节点,就可以提供关闭连接、删除连接等右键菜单,如果点击了数据库节点,就可以提供关闭数据库或者删除数据库等右键菜单。

点击连接节点的右键菜单如图13.11所示。

图13.11 连接节点菜单

点击数据库节点的右键菜单如图13.12所示。

图13.12 数据库节点右键菜单

由于我们对连接节点或者数据库节点进行选择的时候,就可以打开连接或者数据库,因此并不需要提供打开的菜单,本章中使用JPopupMenu来实现鼠标右键菜单,MainFrame中提供一个JPopupMenu 对象来存放各个菜单当点击了连接节点的时候JPopupMenu删除所有的子菜单,再加入连接节点的菜单(JMenuItem),数据库节点的实现方式与之相同。

·15·13.2.10 数据列表右键菜单

主界面中除了连接树外,还有一个数据列表,当用户在树中点击了表节点、视图节点或者存储过程节点的时候,数据列表中就显示不同的数据,我们可以根据当前所显示的数据来创建不同的鼠标右键菜单。图13.13是数据列表显示表数据的时候的右键菜单。

图13.13 表数据菜单

表数据鼠标右键菜单说明:

?新建表:打开创建表的界面,即13.2.5中的界面。

?编辑表:修改一个表,与新建表使用同一个界面。

?删除表:删除列表中选择数据。

?导出表:将一个表的数据导出。

视图数据的鼠标右键菜单如图13.14所示。

图13.14 视图数据菜单

视图数据鼠标右键菜单说明:

?新建视图:打开13.2.6中的视图界面,用于创建视图。

?编辑视图:修改所选择的视图,与新建视图使用同一个界面。

?删除视图:删除所选择的视图。

存储过程鼠标右键菜单如图13.15所示。

图13.15 存储过程数据菜单

存储过程鼠标右键菜单说明:

·16·

?新建存储过程:打开13.2.7中的存储过程界面,创建存储过程。

?编辑存储过程:修改选择的存储过程,与新建存储过程使用相同的界面。

?删除存储过程:删除所选择的存储过程或者函数。

以上为三种数据的右键菜单,实现方式与树节点的右键菜单一样,当界面的数据发生改变时,就相应的去删除JPopupMenu所有的子菜单,再添加相应的菜单(JMenuItem)即可。

以上的菜单均在主界面(MainFrame)中创建,程序并不知道当前显示的是哪种数据,因此我们需要在MainFrame中提供一个ViewObject的类来标识当前显示的类型,ViewObject是所有界面元素都需要实现的接口,表数据是TableData类,视图数据是ViewData类,存储过程数据是ProcedureData 类,详细请看13.2.2中的各个界面对象。当用户点击了工具栏或者树上的某个节点时,就相应的改变MainFrame中的ViewObject即可。

到此,管理器的所有界面都创建完毕,接下来就可以实现相关的功能。

13.3 实现MySQL安装目录选择功能

实现MySQL安装目录选择功能,我们使用13.2.1的界面。当用户进入管理器的时候,就让用户选择本地的MySQL安装目录,由于我们需要使用MySQL的一些内置命令,因此选择MySQL的安装目录是一个必要的操作,得到MySQL安装目录后,我们就可以找到bin目录下面的命令。因此用户选择了安装目录后,我们的程序就需要对所选择目录进行验证,判断能否找到bin目录。

13.3.1 实现目录选择

选择目录实现十分简单,只需要提供一个文件选择器即可,而且这个文件选择器只可以选择目录,当用户选择了对应的目录后,就可以将其选择的目录显示到13.2.1界面的JT extField中。文件选择器的代码如下。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\ConfigFrame.java

private JTextField field;

public FileChooser(JTextField field) {

this.field = field;

//设置只可以选择目录

this.setFileSelectionMode(FileChooser.DIRECTORIES_ONLY);

}

//重写JFileChooser的方法

public void approveSelection() {

//设置JTextField的值

this.field.setText(this.getSelectedFile().getAbsolutePath());

super.approveSelection();

}

用户选择目录后,就将其所选的目录的绝对路径显示到JTextField中,当点击确定的时候,就可以进行判断,以下代码为点击确定所执行的代码。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\ConfigFrame.java

//取得用户输入值

String mysqlHome = this.mysqlHomeField.getText();

//寻找用户选择的目录,判断是否可以找到MySQL安装目录下的bin目录

File file = new File(mysqlHome + MySQLUtil.MYSQL_HOME_BIN);

//找不到MySQL的安装目录,提示

·17·

if (!file.exists()) {

showMessage("请选择正确MySQL安装目录", "错误");

return;

}

以上代码的黑体部分,需要去判断MySQL安装目录下的bin目录是否存在,如果没有存该目录,则表示用户所选择的目录是错误的,弹出提示并返回。如果用户选择的目录是正确的话,就需要去读取管理器的配置文件。

13.3.2 读取和保存安装目录路径

用户选择了MySQL的安装目录后,我们需要将目录的绝对路径保存到一份配置文件中,这样做的话,就可以不必每一次都去进行目录选择。提供一份mysql.properties的配置文件,以下为该配置文件的读取代码。

代码清单:code\mysql-manager\src\org\crazyit\mysql\util\FileUtil.java

//返回配置文件的MYSQL_HOME配置

public static String getMySQLHome() {

File configFile = new File(MYSQL_PROPERTIES_FILE);

Properties props = getProperties(configFile);

return props.getProperty(MYSQL_HOME);

}

以上代码中的MYSQL_PROPERTIES_FILE就是mysql.properties配置文件的相对路径,找到该文件后,就读取它的mysql.home属性。那么用户在进入MySQL安装目录选择界面的时候,就可以调用以上的方法去获得MySQL安装目录的值。

接下来实现保存安装目录的功能,在这之前,新建一个GlobalContext的类,用于保存管理器全局的一些信息,例如这里的mysql.home属性。以下代码实现保存配置的功能。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\ConfigFrame.java

//省略其他代码...

//如果配置文件的值与用户输入的值不相等,则重新写入配置文件中

if (!mysqlHome.equals(FileUtil.getMySQLHome())) {

FileUtil.saveMysqlHome(this.mysqlHomeField.getText());

}

GlobalContext ctx = new GlobalContext(mysqlHome);

this.mainFrame = new MainFrame(ctx);

this.mainFrame.setVisible(true);

this.setVisible(false);

注意以上代码的判断,如果用户前一次所选择的MySQL安装目录与这一次所选择的目录不一致,则需要重新将新的目录信息保存到mysql.properties文件中。这些做的话,就不需要每一次进入系统都去修改配置文件。

13.3.3 读取连接信息

在得到MySQL安装目录,进入主界面时,还需要得到用户所有的连接信息,这些信息用来初始化主界面左边的树,管理器是针对MySQL数据库的,但是这些连接信息可以不记录到数据库,与保存MySQL安装目录一样,可以提供一些properties文件来保存,每一个连接作为一份properties文件。保存连接的信息我们在下面的章节中实现,这里主要实现读取的实现。

新建一个PropertiesHandler的接口,专门用于处理连接属性文件。该接口提供一个读取数据库连接配置文件的方法,并返回ServerConnection集合,ServerConnection代表一个连接节点,并保存有一些数据库连接的信息,详细请看13.2.2中的ServerConnection类。以下代码读取一份properties,

·18·

并返回一个Properties对象。

代码清单:code\mysql-manager\src\org\crazyit\mysql\util\FileUtil.java

//根据文件得到对应的properties文件

public static Properties getProperties(File propertyFile) throws IOException {

Properties prop = new Properties();

FileInputStream fis = new FileInputStream(propertyFile);

prop.load(fis);

fis.close();

return prop;

}

那么在PropertiesHandler实现类中,就可以读取相应目录下的所有properties文件。

代码清单:code\mysql-manager\src\org\crazyit\mysql\system\PropertiesHandlerImpl.java //得到所有的连接信息

public List getServerConnections() {

File[] propertyFiles = getPropertyFiles();

List result = new ArrayList();

for (File file : propertyFiles) {

ServerConnection conn = createServerConnection(file);

result.add(conn);

}

return result;

}

//将一份properties文件封装成ServerConnection对象

private ServerConnection createServerConnection(File file) {

Properties prop = FileUtil.getProperties(file);

ServerConnection conn = new ServerConnection(FileUtil.getFileName(file),

prop.getProperty(https://www.360docs.net/doc/b216996482.html,ERNAME),

prop.getProperty(FileUtil.PASSWORD),

prop.getProperty(FileUtil.HOST),

prop.getProperty(FileUtil.PORT));

return conn;

}

得到所有的连接信息后,先不需要初始化树,需要将这些信息存放到一个对象中,因为在下面的实现中,这些类或者连接信息需要经常使用到。在13.3.2中提供了一个GlobalContext的类来表示管理器的上下文,可以将这些连接信息放到该类中。

代码清单:code\mysql-manager\src\org\crazyit\mysql\object\GlobalContext.java //存放所有服务器连接的集合

private Map connections = new HashMap();

//添加一个连接到Map中

public void addConnection(ServerConnection connection) {

this.connections.put(connection.getConnectionName(), connection);

}

在GlobalContext中建立一个Map来保存这些连接信息,并提供add方法,由于这个Map是使用连接的名称作为key的,所以就决定了在管理器中不允许出现重名的连接。那么在用户选择MySQL安装目录,点击确定后,就可以将连接加入到GlobalContext中,用户点击确定按钮执行的部分代码。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\ConfigFrame.java

//读取全部的服务器连接配置

List conns = ctx.getPropertiesHandler().getServerConnections();

for (ServerConnection conn : conns) ctx.addConnection(conn);

·19·

到此,MySQL安装目录的功能已经实现,得到用户的各个连接信息后,就可以根据这些连接实现创建树的功能。

13.4 连接管理

进入主界面后,我们需要将各个连接信息创建一棵树,用户往后的各个操作,都与这些棵树息息相关。树的第一层节点是管理器中的各个连接,只需要得到各个连接后,以这些连接对象创建第一层节点即可。本小节将实现连接相关的功能,这些功能包括创建连接节点、打开连接、删除连接等。

13.4.1 创建连接节点

进入主界面时,我们已经可以得到GlobalContext对象,各个连接信息都保存在该对象中,因此可以根据这些连接信息来创建树。在创建树的时候,需要注意的是,我们只需要根据这些连接信息来创建第一层节点,而不需要再去创建下面的几层节点,当用户点击第一层节点(连接节点)的时候,再去访问该连接下面的数据库信息,正常得到这些数据库后,再创建数据库节点。

MainFrame中创建连接节点的方法。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\MainFrame.java

//创建树中服务器连接的节点

private void createNodes(DefaultMutableTreeNode root) {

Map conns = this.ctx.getConnections();

for (String key : conns.keySet()) {

ServerConnection conn = conns.get(key);

//创建连接节点

DefaultMutableTreeNode conntionNode = new DefaultMutableTreeNode(conn);

root.add(conntionNode);

}

}

MainFrame中创建树的方法。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\MainFrame.java

//创建树

private void createTree() {

DefaultMutableTreeNode root = new DefaultMutableTreeNode(new RootNode());

//创建连接节点

createNodes(root);

this.treeModel = new DefaultTreeModel(root);

//构造树

JTree tree = new JTree(this.treeModel);

//设置节点处理类

TreeCellRenderer cr = new TreeCellRenderer();

tree.setCellRenderer(cr);

//设置监听器类

tree.addMouseListener(new TreeListener(this));

tree.setRootVisible(false);

//添加右键菜单

tree.add(this.treeMenu);

this.tree = tree;

}

·20·

以上代码中的TreeCellRenderer为节点的处理类,具体的实现请看13.2.2中TreeCellRenderer类的实现。TreeListener是一个鼠标事件监听器,当用户点击了树的连接节点后,需要建立连接,我们在下面的章节中实现。

13.4.2 打开连接

当用户点击连接节点后,就需要立即打开这个连接,我们使用了一个ServerConnection对象来保存连接的信息,并使用该对象来创建树中的连接节点,打开连接的时候,就可以根据连接的信息去尝试进行服务器连接,使用JDBC进行连接即可。如果成功进行连接,就马上创建该连接节点的子节点(数据库节点),如果不能成功连接,则弹出提示。ServerConnection继承了ConnectionNode这个抽象类,ConnectionNode中保存了一个JDBC的Connection对象,ServerConnection中判断是否连接的标准是判断ConnectionNode的Connection对象是否为空,而且ServerConnection中需要实现父类(ConnectionNode)的connect方法,下面代码是ServerConnection对ConnectionNode的connect 方法的实现。

代码清单:code\mysql-manager\src\org\crazyit\mysql\object\tree\ServerConnection.java //实现父类的方法

public Connection connect() {

//Connection在本类中只有一个实例

if (super.connection != null) return super.connection;

Class.forName(DRIVER);

Connection conn = createConnection("");

super.connection = conn;

return super.connection;

}

//创建连接, 参数是数据库名称

public Connection createConnection(String database) throws Exception {

Class.forName(DRIVER);

Connection conn = DriverManager.getConnection(getConnectUrl() + database,

https://www.360docs.net/doc/b216996482.html,ername, this.password);

return conn;

}

以上的代码中先判断ServerConnection的connection属性是否为空,如果该属性为空(没有连接)则进行创建。注意createConnection方法,该方法声明为public,可以让外部去使用。下面实现树的节点监听器,当节点被选中后,就可以执行connect方法,但是需要注意的是,并不是每个节点都相同,只是连接节点被点击的时候才去进行连接。

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\tree\TreeListener.java

public void mousePressed(MouseEvent e) {

if (e.getModifiers() == MouseEvent.BUTTON1_MASK) {

//左键点击,查看树的节点,调用MainFrame的打开节点方法

this.mainFrame.viewTreeDatas();

}

}

代码清单:code\mysql-manager\src\org\crazyit\mysql\ui\MainFrame.java

//点击树节点的操作

public void viewTreeDatas() {

//获得选中的节点

DefaultMutableTreeNode selectNode = getSelectNode();

if (selectNode == null) return;

//判断点击节点的类型

社会组织管理条例

社会服务机构登记管理条例 (《民办非企业单位登记管理暂行条例》 修订草案征求意见稿) 第一章总则 第一条为了规范社会服务机构的登记管理,保障社会服务机构的合法权益,促进社会服务健康发展,制定本条例。 第二条本条例所称社会服务机构,就是指自然人、法人或者其她组织为了提供社会服务,主要利用非国有资产设立的非营利性法人。 第三条社会服务机构应当遵守宪法、法律、法规与国家政策,不得反对宪法确定的基本原则,不得危害国家的统一、安全与民族的团结,不得损害国家利益、社会公共利益以及其她社会组织与公民的合法权益,不得违背社会道德风尚。 第四条社会服务机构应当根据实际,设立中国共产党的组织,开展党的活动。社会服务机构应当为党组织的活动提供必要条件。 第五条国家保护社会服务机构依照法律、法规、规章及其章程开展活动,任何组织或者个人不得非法干涉。 第六条国务院民政部门与县级以上地方各级人民政府民政部门就是本级人民政府的社会服务机构登记管理机关(以下简称登记管理机关)。 国务院有关部门与县级以上地方各级人民政府的有关部门、国务院或者县级以上地方各级人民政府授权的组织,就是有关行业、业务范围内社会服务机构的业务主管单位(以下简称业务主管单位)。 县级以上人民政府有关部门依照本条例与其她有关法律法规,在各自的职责范围内做好相关工作。 法律、行政法规对社会服务机构的监督管理另有规定的,依照有关法律、行政法规的规定执行。 第七条国家鼓励兴办社会服务机构,通过政府补助、购买服务、土地划拨、人才培养等方式,支持社会服务机构发展。 社会服务机构以及对社会服务机构进行捐赠的个人与组织,依照法律、行政法规的规定享受税收优惠。 对在经济社会发展中作出突出贡献的社会服务机构,按照国家有关规定给予表彰与奖励。 第二章管辖

最新社会组织绩效考核管理办法资料

社会组织绩效考核管理办法 一、总则 1、考核目的 为了贯彻落实精细化管理工作精神和要求,进一步实现薪酬的精准化分配,激发职工积极履职、力争上游的工作积极性和主动性,形成重绩效比贡献的文化氛围,全面促进本社会组织的优质高效运营和科学化管理,结合本社会组织实际,特制定本办法。 2、考核原则 1)本社会组织发展与职工进步的同步原则; 2)定性定量与过程结果的互补原则; 3)适度区分与凸显优秀的结合原则; 4)注重牵引与自我驱动的导向原则。 3、适用范围 本制度适用于本社会组织主管及以下的所有在岗职工(包含正式职工、劳务派遣工、聘用职工等)。 二、组织机构及职责 1、本社会组织设置职工绩效考核领导小组作为考核工作的领导机构。 1)领导小组组成 组长:理事长 副组长:分管人力资源部负责人

成员:人力资源部、办公室等部门负责人 2)领导小组主要职责 (1)对本社会组织职工绩效考核体系的发布、修订进行审议核准; (2)对职工绩效考核体系在各部门的落地、运行进行监察督导; (3)对各部门职工绩效考核体系的实施效果进行监督问责。 2、本社会组织职工绩效考核领导小组下设考核办公室,负责考核日常工作。办公室设在人力资源部。 1)考核办公室组成 组长:人力资源部负责人 副组长:人力资源部负责考核的主管 成员:人力资源部及各部与考核相关的人员 2)考核办公室主要职责 (1)负责对各部门实施办法进行审核、备案; (2)对各部门职工绩效考核的组织、实施、效果进行检查与考核; (3)对职工绩效考核中的申诉进行受理、协调、仲裁; (4)负责统计汇总各部门上报的考核结果,并应用于本社会组织人力资源管理中。 3、各部门负责组织职工的绩效考核在本部门的落地实施工作。 1)各部门根据需要,自行设立内部的考核实施小组,作为落地实施的组织机构。

通讯录管理系统

通讯录管理系统说明书 一、使用的技术和开发平台: 基于https://www.360docs.net/doc/b216996482.html,技术开发的数据库应用程序。开发平台为windows,使用的语言为C#2008,数据库为:MSSQL SERVER2008 二、系统功能模块 本系统是使用c#2008和MSSQL SERVER2008开发的一个数据库应用程序,其主要功能是实现对不同组别的联系人信息进行管理,具体来说分如下几个功能模块: 1、后台管理模块 对系统管理员账户的添加、删除、修改等操作 2、登录验证系统 系统启动时,将出现登录窗口,要求用户输入正确的用户名和密码,否则无法进入系统。 2、联系人管理系统 登录成功后将进入系统的主窗口(FormMain.cs),如下图所示: 其中组别是对联系人分的类,根据添加到数据库中的所有联系人的组别确定,是可以更改的。主窗口第一次显示时,默认显示第一个组别的所有联系人。可以在左边树形列表中选择不同的组别,同时右边的ListView自动显示不同组别的所有联系人。在联系人菜单下可以实现新增联系人、删除联系人、修改或查看联系人以及搜索,不论是新增、删除还是修改联系人完毕后,下面的ListView会同时更新显示联系人及组别。状态栏显示登录账户名和选中组别包含的联系人个数。 当用户单击新增联系人菜单项时,弹出如下窗体(FrmAdd.cs),以实现新增:

其中组别是根据数据库中已有的组别自动加载到组合框中的。当用户在ListView中选择某个联系人后再单击删除联系人菜单项,可将该联系人删除。当用户在ListView中双击某个联系人或单击修改或查看联系人菜单项,会弹出如下窗体(FrmMod.cs),以实现修改或查看联系人:不论是添加还是修改联系人时,组别都是可以修改的,注意姓名和组别不能为空。

公司社团管理办法

公司社团管理办法 第一条目的 为规范公司各类社团日常运作,加强社团组织管理,更有效提供丰富多彩的社团生活,搭建交流平台,培养兴趣爱好,提高综合素养,特制定本办法。 第二条原则 社团以“自愿加入、真诚交流、加强融合”作为组织存在的前提与基本原则,任何一个参与者必须认同和遵守。 第三条适用范围 公司成立的社团团队及经员工自主发起后,经过公司审批通过的社团团体。 第四条权责 1. 企业文化部: 1)社团的成立与废除的核准,进行统筹协调及监督工作; 2)监督社团在国家宪法、法律、公司规章、社团管理办法及相关文件规定的范围内活 动,不得从事与社团管理办法无关的活动; 3)每年度末做好下一年度员工社团总体经费预算; 4)社团经费预算的分配; 5)社团活动费用审核及报销事宜。 2. 社团社长: 1)应遵循“平等、民主、自觉、主动、服务”的行为准则; 2)订立本社团的管理制度,组织讨论并把握社团具体规划与发展方向; 3)讨论决定社团活动的具体内容、时间、地点、形式等;

4)社团活动场地的联系协调工作; 5)活动公告,统计参加活动人数,并做好相关活动记录,每季度末前一周内向企业文化 部提交社团人员出席记录及活动现场照; 6)积极吸纳新社团成员,做好变更记录,人员发展,建立社团内部的协调员组织加强社 团管理; 7)预算、监督、审核、报销并记录社团的经费使用情况; 8)年末编制下年度经费预算并提交企业文化部,每月底发费用明细至企业文化部备案; 9)配合人企业文化部做好社团相关事务工作; 10)所在社团既有备案信息变更或重大事宜由负责人主持通过与社团全体会员共同讨 论决定,最终报企业文化部审核通过或备案; 11)卸任前做好接班人安排,公告社团成员、企业文化部。 3. 社团成员: 1)入会自愿,退会自由; 2) 积极参与社团组织的各项活动; 3) 遵循社团的目的、原则、章程和宗旨,维护社团的声誉、形象、利益; 4) 对所在社团的组织形式、内容提出建设性意见和建议; 5) 参与社团的选举,申请社长、副社长资格等; 第五条社团组织 1.社团自我管理,公司原则上不干涉其活动时间、活动方案等活动流程制定; 2.社团各项活动不得影响正常的工作,不得与公司相关制度和劳动纪律冲突; 3.社团如在活动频率周期内(月周期)相关活动举办非因不可抗力而不达计划或成员满意 度、参与积极性低(不到全体社团成员的50%)、会员人数低(不足10人),企业文

C#课程设计 通讯录管理系统

郑州科技学院 C#课程设计设计(论文) 课题:通讯录管理系统 姓名:刘闯 学号:201015056 班级:10计科2班 导师:王玉萍 课程设计日期:2013年5月31日

目录 摘要 (3) 一.整体设计 (4) 1.1设计构思 (4) 1.2系统数据流图: (5) 1.3开发及运行环境: (5) 2.1 数据库需求分析 (6) 2.2 E-R图 (7) 2.3 数据表设计 (7) 2.4 管理员信息表(db.Admin): (7) 2.5 用户信息表(https://www.360docs.net/doc/b216996482.html,er): (8) 2.6 资料信息表(db.Records): (8) 三.通讯录管理系统的实现 (9)

3.1 类的编写 (9) 3.2 系统用户功能模块设计: (9) 3.3 系统管理员功能模块设计: (11) 3.4 系统设计运行过程中所遇到的问题: (16) 3.4.1 数据库的连接问题 (16) 3.4.2 登录模块出现角色选择问题 (17) 3.4.3 用户信息添加模块问题 (20) 四. C#课程设计总结 (26) 五.主要参考书及手册 (28) 六.致谢 (29)

摘要 日益繁多的人际交往使得我们很难搞清楚与每个人之间的联系方式,特别是对于做经常出差的人来说更是难,所以通讯录能够便捷的给我们带来所需要的相关信息。而随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。 通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。

通讯录管理系统需求分析

通讯录管理系统需求分析 项目编号:S1-BS-HTML-001 l项目概述 1.引言 1.1编写目的 在完成了针对通讯录管理系统的前期调查,同时与多位软件使用者进行了全面深入地探讨和分析的基础上,提出了这份软件需求规格说明书。 此需求规格说明书对《通讯录管理系统》软件做了通讯录管理系统的用户需求分析,明确所要开发的软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。本说明书的预期读者为客户、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员。 本说明书是整个软件开发的依据,它对以后阶段的工作起指导作用。本文也是项目完成后系统验收的依据。

1.2项目背景 本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用技术的创新,在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。通讯录管理系统是典型的信息管理系统(mis),要求应用程序功能完备,易使用等特点。 1.3定义 需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。 2.任务概述 2.1目标 实现通讯录管理系统的基本功能,可以实现电话用户的查询、电话号码的查询、电话号码所在地的查询、电话号码的添加及删除等功能,以方便人们的记录和通讯。 2.2运行环境 2.2.2.1服务端 A. 操作系统:Windows 2003 Server 2.2.2.2客户端 A. Windows 95/98/me/Xp/2000/2003, Unix, Linux,Vista,Mac OS各版 2.3条件与限制 本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用技术的创新,在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记帐的方式来操作的.现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。通讯录管理系统是典型的信息管理系统(mis),要求应用程序功能完备,易使用等特点。 3.数据描述 开始 3.1数据流图 以可读写的方式打开一个数据文件 将此文件的内容读出,并存入一个新的结构体类型的数组中。 调用menu()菜单函数

Java课程设计--个人通讯录管理系统

《JAVA程序设计》课程设计说明书

目录 1 引言 (1) 1.1课程设计选题 (1) 1.2课程设计的目的 (1) 1.3本选题的设计背景 (1) 2 需求分析 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 总体设计 (2) 3.1 系统体系结构设计 (2) 3.2系统功能模块及主要类设计 (3) 3.3数据库设计 (5) 4 详细设计与实现 (7) 4.1 登录模块 (7) 4.2 注册新用户模块 (8) 4.3 查询模块 (9) 4.4 添加模块 (11) 4.5 修改模块 (13) 4.6删除模块 (16) 4.7备份模块 (18) 4.8退出模块 (19) 5 小结和展望 (20) 参考文献 (22) 附录 (22) 使用说明书 (22)

1引言 1.1课程设计选题 《个人通讯录管理系统》 1.2课程设计的目的 通过编写并调试一个Java应用软件,熟悉和掌握使用Java开发应用程序的完整过程。 使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。 1.3本选题的设计背景 一直以来就想做一个比较实用的通讯录管理系统,这样可以方便我对于身边联系人信息的管理,防止遗忘和丢失。 在这样一个信息化的社会里,人们的生活也越来越离不开电脑了,本次通过做个人通讯录管理系统,希望摈弃传统的纸质记录的弊端,发挥电脑软件的优势,方便人们对自己的联系人信息的管理。 2需求分析 2.1 功能需求 2.1.1个人通讯录功能需求 (1)登陆功能。用户可以直接输入用户名和密码,登陆进入通讯录的主功能界面。 (2)注册功能。其他用户可以输入自己的用户名和密码及确认密码,来实现注册成为该通讯录的使用者。 (3)查询功能。在该功能里,用户可以采用模糊查询和精确查询两种查询方式来对自己存储的联系人信息进行查询。 (4)添加功能。在该功能里,用户可以添加自己的常用联系人和分组信息。

学生社团管理办法

学生社团管理办法 为加强对学生社团组织的管理,使我院社团更健康、更有效地发展,特制定本办法。 一、性质、宗旨、原则 1、性质:金陵科技学院学生社团是本院学生为丰富课余生活,经学校批准而自愿组织的群众团体。 2、宗旨:坚持党的路线、方针、政策,以马列主义、毛泽东思想、邓小平理论为行动指南,在校团委和院大学生科协指导下开展工作。 3、原则:社团本着促进学生身心健康,增长知识,开阔眼界,陶冶高尚的情操,树立正确的人生观,培养人才全面发展的原则,积极开展各种具有思想性、知识性、学术性与趣味性的内容丰富、形式多样的课外活动。 二、组织管理 1、学生社团由院团委统一领导,院大学生科协配合团委对各社团进行具体管理。 2、申请成立学生社团需向院团委提出书面申请,经同意后,方可招收会员。 3、申请成立新的学生社团必须具备以下四个基本条件: (1)有明确、规范的社团章程。 (2)明确社团活动的内容和开展活动的方式,以及接纳社团成员的办法。 (3)有相应的筹备组织机构,明确的社团筹备负责人。 (4)有可靠的活动经费来源和相应的管理办法。 4、申请成立学生社团应向院团委提交下列材料: (1)负责人签署的申请书; (2)社团组织的章程; (3)主要负责人的姓名、年龄、简历; (4)成员范围以及计划招收的成员数量; (5)指导教师或有关指导部门。

5、各学生社团章程包括以下内容: (1)社团组织的名称; (2)社团的性质和宗旨; (3)会员的权利和义务; (4)组织机构及负责人产生的程序和职权范围; (5)社团组织的经费来源及管理办法。 三、经费管理 1、各学生社团的活动经费原则上自筹,可以收取一定的会费作为活动基金。社团活动基金要有专人管理,及时向全体社员公开,帐目要清晰。院团委定期检查监督。 2、团委根据社团的需要提供一定活动经费,主要用于大型活动奖励。 3、需利用学校资源获得外单位赞助,应由大学生科协与有关部门进行协调,并归口管理赞助经费。 四、活动管理 1、禁止成立带有狭隘区域性的社团,如老乡会等。 2、学生社团在校园内不得从事以营利为目的的经营性活动。 3、各社团每学期开学后两周内必须提交工作计划。学期结束前要以书面形式将社团学期总结报大学生科协。 4、学生社团组织的对外交流和对外活动必须提前报院团委批准后方可进行。 5、各社团应积极开展一些有意义的活动,并填写活动记录表。大学生科协配合院团委进行考核,院团委每年表彰优秀社团和优秀社团干部。 6、对半年内未开展任何活动的社团,予以注销。 五、本办法自公布之日起生效。

大数据结构-通讯录管理系统地设计与实现

课程设计报告 课程设计名称:数据结构课程设计系:三系 学生姓名: 班级: 学号: 成绩: 指导教师: 开课时间:2011-2012学年一学期

宿迁学院 课程设计任务书 课程名称:数据结构 指导教师: 专业班级: 学生: 起止日期: 2012.12-2013.1

设计题目一:通讯录管理系统的设计与实现 1 概述 1.1现状分析 课程设计是实践教学中的重要环节,它以某一门课程为基础,涉及和课程相关的各方面知识,是一门独立于课程外的特殊课程。课程设计就是让所有同学对课程更全面的应用。本次实验项目“通讯录管理”就是针对数据结构的一门应用较为广泛的系统管理方法。 1.2 实现意义 本次实验应用性能很好,结构清楚,能随时添加、删除、查找、修改、输出联系人;并且可以用、编号两种方式;而且其中增加了排序功能,使得插入之后排序为接下来的操作提供便利,操作更精确,以人性化的方式展现出来,效果十分突出。 2 系统分析 编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出等功能。每个记录包含编号、、性别、、住址个人基本信息。用《数据结构》中的链表做数据结构结合c语言基本知识编写一个通讯录管理系统。本程序相对简单,使用方便,几乎不用特殊的命令,只需按提示输入即可。对于建立通讯录管理系统,则需了解并掌握数据结构与算法的设计方法,尤其在算法方面,链表及结点的联系,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。 3 概要设计 3.1算法的设计 本实验从整体上分为七大模块:(1)通讯录链表的建立;(2)通讯者结点的插入;(3)通讯者结点的查询;(4)通讯者结点的删除;(5)通讯者结点的修改;(6)通讯录链表的输出;(7)退出通讯录管理通讯者结点的删除系统。

社团管理条例(最新)

学生社团管理条例 第一章总则 第一条:为了进一步完善高校学生社团的管理机制,加强大学生思想政治教育工作,推动学生社团健康有序的发展,繁荣校园文化生活,促进校园精神文明建设,推进学生素质教育,依照国家有关规定,特制定本条例。 第二条:学生社团必须旗帜鲜明地坚持其基本原则,接受共青团沈阳理工大学委员会及共青团沈阳理工大学委员会学生社团联合会(以下简称“社联”)的直接管理和监督。第三条:大学生社团是在校学生基于共同的兴趣、爱好、志向和责任感的基础上自发组织的自我教育、自我管理、自我服务的学生组织。 第四条:社团是根据社团创办程序登记注册的具有正规章程的学生团体。实行登记成立、学期注册、工作指导、活动审批等基本管理程序。并在注册后,方可开展活动。 第五条:社团成员必须为本校正式学籍的全日制在校本科学生、研究生。 第六条:学校鼓励社团积极开展学术、科技、文化、体育、文艺等各类对健康有益的活动。 第七条:社团通过收缴会费,接受奖励、赞助或捐赠等方式获得经费。社团经费专款专用,各社团须按照社联规章制度履行经费审批、预支出、报销、终审等手续。 第二章学生社团的成立 第八条:学生社团分为文艺、体育、学术研讨、志愿服务共四类,各类社团登记成立时,均需按照以上各项进行申请。一个社团只能进行一类申请登记。 第九条:申请成立学生社团须具备以下条件: 1.发起人必须思想品质好,热爱社团工作,学有余力,累计挂科数不超过2科,具有一定的组织管理能力,在校期间未受过校纪校规处分; 2.发起者向社联递交成立学生社团的申请材料;上交校级/院级社团成立申请表(到青春理工-团委网站或社联社团交流群进行表格下载); 3.社团应有规范名称并与学生组织性质一致,与自身宗旨相符,准确反映自身特征,符合法律、法规,不得违背校园文明风尚; 4.社团负责人必须符合必备的条件,通过民主选举的方式产生。新社团负责人的产生应得到社联的同意;

学校通讯录管理系统数据库设计

数据库设计 在本实例中使用的是SQLServer 2000数据库管理系统。数据库服务器安装的位置为本机,数据库名称为commu ni catio nserver 。下面将介绍数据库分析和设计、数据表的创建、数据表关系图和创建存储过程的内容。 4.2.1 数据库分析和设计 在本节中,将根据上一节系统功能的设计分析创建各数据表的实体E-R关系图,它是数 据库设计非常重要的一步,下面用E-R图的形式表示出各实体的属性。 1. 用户E-R实体图 用户的实体具有用户ID、密码、姓名、性别、电话、E-mail、用户权限7个属性,ER图如图4-5所示。 图4-5 用户E-R实体图 2. 地区E-R实体图 地区的实体具有地区编号、地区名称2个属性,E-R图如图4-6所示。 图4-6 地区E-R实体图 3. 职务E-R实体图 职务的实体具有职务编号、职务名称2个属性,E-R图如图4-7所示。 图4-7 职务E-R实体图 姓名用户权限性别 1 用户E-mail 地区 职务职务名称

4. 学校E-R 实体图 学校的实体具有学校名称、学校所在地区、在校学生人数3个属性,可用 E-R 图表示, 如图4-8所示。 (学校名称X 学校一(在校学生人数 图4-8 学校E-R 实体图 5. 通讯录E-R 实体图 通讯录的实体具有联系人姓名、地址、联系电话、所属职务、所在学校、所在单位、所 属地区7个属性,E-R 图如图4-9所示。 图4-9 通讯录E-R 实体图 4.2.2 数据表的创建 在上面一节中讲解了实体的 E-R 图,本节中将根据E-R 图的内容,创建企业信息管理系 统中的各数据表,在此系统中共涉及到 5个数据表的应用,分别为如下。 1、 字段采用camel 风格定义 2、 用不同颜色区分字段 主键:蓝色 外键:白色 既是主键又是外键:淡蓝色 普通字段:青绿 学校编号 学校所在地区 联系电话 通讯录 所在单位 * 所在学校 彳所属职务

最新社团管理办法

苏州大学学生社团管理办法 为进一步加强和规范我校学生社团管理,充分发挥学生社团育人功能,推动社团健康发展,依据教育部《普通高等学校学生管理规定》,共青团中央、教育部《关于加强和改进大学生社团工作的意见》,江苏省《江苏省高校学生社团管理办法》和我校相关规章制度,参照民政部《社会团体登记管理条例》及其他相关文件规定,制定本办法。 第一章总则 第一条苏州大学学生社团(以下简称社团),是指在共同的兴趣、爱好、志向和责任感的基础上自发组成的自我管理、自我教育、自我服务的学生组织,是根据社团创办程序在学校登记注册的具有固定章程的学生团体。 第二条社团是我校育人体系的重要组成部分,是思想政治教育和素质教育的有效载体,应在全面提高学生素质、活跃校园文化生活以及维护学校稳定等方面发挥重要作用。 第三条社团必须坚持以马克思列宁主义、毛泽东思想、中国特色社会主义理论体系为指导,坚持四项基本原则,严格遵守相关法律法规和学校规章制度及有关规定,不得危害国家的统一安全和民族的安定团结,不得影响学校正常的教学科研秩序与安定和谐的校园氛围。 第四条社团受校党委的领导。受校党委委托,校党委宣传部负责社团成立、注销的审批和社团内部刊物的审批和年检工作,校团委具体负责本校学生社团的日常管理工作。校学生社团联合会(以下简称社联)在校团委的授权和指导下开展学生社团的登记管理及业务指导工作。校社联的日常工作向校团委负责,校团委负责校社联的日常管理和业务指导。 第五条社团实行登记成立、活动审批、年度检查的基本管理办法和五星级、四星级、三星级的星级管理模式。三星级社团以在本学院(部)内部招收会员和开展活动为主;四星级社团可以在本校区(本部、东区、北区统称老校区)范围内招收会员和开展活动;五星级社团可以在全校范围招收会员和开展活动。挂靠单位为学校党政部门或直属单位的社团可以面向全校招收会员,在全校范围内开展活动。 第六条社团的活动经费主要由挂靠单位提供,学校对于五星级、四星级社团的优秀社团活动给予经费支持,并在活动场地、资源条件等方面予以倾斜。 第七条社团应遵循既要发扬民主,又要加强纪律,既要活跃气氛,又要保证秩序的活动原则,完善自我管理,确保健康发展。 第二章社团成员及管理机构 第八条社团的所有成员必须是具有我校正式学籍的在校学生。外籍学生加入社团后须到国际合作交流处备案。社团成员具有以下权利和义务: (一)所有学生均有按照社团章程自由加入或退出该社团的权利。在享有权利和履行义务方面一律平等。(二)社团成员有权了解所在社团的章程、组织机构和财务制度,对社团的管理和活动提出建议和质询。(三)社团负责人如有违反本办法的有关规定和校纪校规,损害成员利益的,社团成员有权向校社联反映问题和情况。 (四)社团成员应当接受社团定期注册。 (五)社团成员有选举权和被选举权,有按照章程担任社团职务的权利,并承担相应义务。 (六)社团成员应当积极参加社团的各项活动,并有权对社团建设提出批评和建

通讯录管理系统数据库设计说明

通讯录管理系统数据库设计与实现 1 需求简介() 1.1功能概述 1.2数据要求 功能中涉及的数据项说明。 1.用分组基本信息(Admin):包括分组号、分组名; 2.用户基本信息(Dormitory):包括账号、密码、昵称、个性签名,这样可以 方便分清用户记录的联系人;

3.联系人基本信息(linkman):包括、性别、关系、手机号、座机号、QQ、E-mail、 生日、工作单位、地址、所属用户、所属分组; 1.3数据字典 数据项列表 数据项编号数据项名数据项含义与其它数据项的关系存储结构别名TXL-1 G_number 分组号CHAR(10) TXL-2 G_name 分组名CHAR(20) TXL-3 ID 所属用户等同于账号ID CHAR(10) TXL-4 ID 账号CHAR(10) TXL-5 Nickname 昵称CHAR(20) TXL-6 Password 密码CHAR(20) TXL-7 Qianming 签名CHAR(50) TXL-8 L_number 联系人号CHAR(100) TXL-9 Name CHAR(20) TXL-10 Sex 性别CHAR(2) TXL-11 Concern 关系CHAR(10) TXL-12 Phone 手机号CHAR(11) TXL-13 Landline 座机号CHAR(10) TXL-14 QQ QQ号CHAR(10) TXL-15 Email E-mail CHAR(20) TXL-16 Work 工作单位CHAR(30) TXL-17 Address 地址CHAR(30) TXL-18 Birthday 生日Date 数据结构列表 数据结构编号数据结构名 数据结构 含义 组成 DS-1 Grouping 分组G_number,G_name,ID, DS-2 Worker 用户ID,Nickname,Password,Qianming DS-3 Linkman 联系人L_number,Name,Sex,Concern,Phone,Landline,QQ,Email,Work,Address,Birthday,ID,G_number

学生社团组织管理办法1.doc

学生社团组织管理办法1 学生社团组织管理办法 第一章总则 第一条学校学生各类社团(以下简称社团)是在学生处领导下,由学生自愿参加,经组织考核批准成立的我校学生在共同志向、兴趣爱好的基础上组织起来的群众性团体。社团分为理论学习类、文艺艺术类、体育健身类、科技创新类、社会科学类等。 第二条社团必须以马列主义、毛泽东思想、邓小平理论及“三个代表”的思想为指导,坚持四项基本原则,贯彻党和国家的教育方针,严格遵守国家法律法规和学校的规章制度。 第三条社团以创建文明校园,繁荣校园文化、服务学校、服务社会、服务青年学生成长成才为目的,团结和引导广大同学开展各种积极而健康的活动,促进学生综合素质的全面提高。 第四条学生处社团部作为学生社团的管理和指导机构、办事机构,负责社团有关规定的贯彻执行和具体组织实施工作,社团部以“管理、服务”为宗旨,为社团活动当好参谋,并解决社团的实际困难和存在的问题。 第五条学生处社团部遵照“严格管理、积极引导、鼓励发展”的原则。 第六条各类学生社团在享受权利和覆行义务上一律平等。 第七条加强学生社团内部管理,各社团主要负责人是社团管

理的第一责任人,要建立健全学生社团内部管理制度,做到有章可循,有据可依。 第八条凡本校学生,承认协会章程,对社团活动有浓厚的兴趣,均可申请入会。 第二章社团管理 第九条社团成立,应具备下列条件: 1.有6名以上的学生联合发起,发起人必须具备开展活动所具备的基本素质。 2.有规定的名称和相应的组织机构。 3.有相对固定的活动场所。 4.聘请至少一名关心社团活动、思想水平高、学术造诣深或在某方面有专长的教师和干部担任指导教师。 5.有规范的章程,并且章程内容不得与法律规范和校规校纪相抵触。 6.社团的成立具有可行性,确实受广大学生欢迎,能为校园文化建设做出贡献,且该社团的运作具有可操作性。 第十条成立学生社团必须严格履行申请手续,经批准后方可成立并开展工作。 1.申请:成立社团组织要向学生处社团部提出书面申请,报校学生处批准、备案。学生社团履行正式审批手续后,方可进行

通讯录管理系统数据库课程设计报告

湖南涉外经济学院课程设计报告 课程名称数据库原理与应用课程设计 题目通讯录管理系统 组员 学院信息科学与工程学院 班级 指导教师 2015年12月30 日

任务分配表

摘要 随着社会的发展,人际关系变得越来越重要,为了保持良好的人际关系,必须经常与亲戚、朋友、同学、同事保持联系,但是有时候存在着许多的限制条件,比如怎样找到交流对象的各种信息?可能你会想到现实生活中的手机等通讯工具,由于这些工具的单一性,不可能在第一时间找到自己想要的信息资料,因此,为了能够快速查找到联系人的信息,节省查找时间,开发通讯录管理系统。 通讯录管理系统是一个基于SQL数据库储存和JAVA界面模式的个人通讯录管理系统。它是将自己的联系人的具体信息集中管理,成为一个方便人们使用的小软件。在开发过程中主要运用Java, SQL Server技术,由于开发工具和数据库之间的良好使用,可以为开发带来方便,使之成为一个可施行的系统。从而达到开发的目的-----实现对通讯录信息的管理。 通过采用相关技术,以及老师的辅导和同学们的帮助,将系统设计的功能全部实现。功能包括:用户的登录, 添加联系人信息,修改联系人信息,删除联系人信息,查询联系人信息,可以浏览全部通讯的联系人,并且可以根据数据表的各字段来查询你所要找的联系人等功能 关键词: SQL Server,JAVA。

目录 摘要 (3) 第一章绪论 (6) 1.1目的 (6) 1.2背景 (6) 1.3研究内容 (6) 第二章数据库需求分析 (7) 2.1 通讯录系统的功能 (7) 2.2通讯录系统的数据流 (7) 2.3 通讯录系统数据流程图 (8) 2.4通讯录的数据字典 (9) 第三章数据库概念结构设计 (12) 3.1实体 (12) 3.2实体间包括 (12) 3.3 实体属性图 (12) 3.4局部E-R图 (13) 第四章数据库逻辑设计 (15) 4.1 E-R图转化而得到的关系模式 (15) 4.2 由关系模式转换得到的函数依赖 (15) 4.3 关系模式优化 (15) 4.4 对优化后的关系模式的结构 (15) 第五章数据库实施 (17) 5.1数据库创建代码 (17) 5.2数据库表创建代码 (17) 5.2.1用户表 (17) 5.2.2联系人表 (17) 5.2.3分组表 (18) 5.3视图创建代码 (18) 5.4存储过程代码创建 (19) 第六章数据库运行和维护 (20) 6.1登陆模块 (20) 6.2联系人界面 (20) 6.3朋友分组界面及详细查询 (20) 6.4同学分组界面及详细查询 (21) 6.5同事分组界面及详细查询 (22) 6.6查询界面 (23) 6.7增加界面 (24) 6.8修改界面 (24) 6.9删除界面 (25) 第七章总结 (26) 参考文献 (27)

《2015广州市社会组织管理办法》解读及原文

《2015广州市社会组织管理办法》解读及原文——政府将编制向社会组织购买服务的目录 《广州市社会组织管理办法》已经公布,将于2015年1月1日起实施。广州市法制办在12月4日——全国法制日来临之际,特别对《广州市社会组织管理办法》做了权威解读和说明。 广州市法制办解读《广州市社会组织管理办法》: 公务员将不得在社会组织中兼职 广州公务员任职社会组织“禁令”明年元旦起生效。 近期,广州市市长陈建华签发的广州市政府令第108号,公布了《广州市社会组织管理办法》(以下简称《办法》)。这部吸纳了广州市社会组织管理改革成果的政府规章,将从2015年1月1日起实施。为了让社会各界更好地学习《办法》,做好法制宣传,广州市法制办在12月4日——全国法制日来临之际,特别做了权威解读和说明。 根据新规,现职公务员将不得在社会组织中兼职,而离退休后确需兼任的,应当严格按照有关规定审批。 焦点1 放开激活社会组织可直接登记 什么是社会组织?《办法》“开宗明义”:本办法所称社会组织是指在本市行政区域内登记注册的社会团体、民办非企业单位、基金会。 曾几何时,登记成立社会组织可不是一件容易事,既要找到一个业务主管单位作为“婆婆”,又要经过繁复的手续,递交大量资料,在60日内经过重重审批才能获批能否成立。但是,很多有意愿开展公益服务的草根组织,很难达到审批所要达到的严格要求,因此就存在了大量的“隐性社会组织”,抑制了社会组织参与社会服务管理工作的活力。 为了扭转这种情况,放开激活的改革步子率先从广州迈出。2011年11月22日,根据全省体制改革工作会议精神,广州印发了《关于进一步深化社会组织登记改革助推社会组织发展的通知》,明确规定从2012年1月1日起,除依据国家法律法规需前置行政审批外,行业协会、异地商会、公益服务类、社会服务类、

《高校学生社团管理暂行办法》

《高校学生社团管理暂行办法》 《办法》分八个部分:一是总则;二是管理机构;三是成立、年审和注销;四是组织建设;五是活动管理;六是经费管理;七是工作保障;八是附则。 《办法》指出,高校学生社团是指由高校学生依据兴趣爱好自愿组成,为实现成员共同意愿,按照其章程自主开展活动的群众性学生组织。高校学生社团的基本任务是:遵循和贯彻党的教育方针,坚持立德树人的基本导向,团结和凝聚广大同学,按照自愿、自主、自发原则,善用网络技术和新媒体,开展主题鲜明、健康有益、丰富多彩的线上和线下课外活动,繁荣校园文化,培养同学的社会责任感、创新精神和实践能力,提升同学综合素质,促进同学成长成才。 《办法》指出,高校党委统一领导本校学生社团工作,要把加强和改进学生社团工作,作为高校贯彻党的教育方针、推进素质教育的重要组成部分,纳入高校整体工作中。高校团委履行本校学生社团工作的主要管理职能,应设立专门管理机构,配备工作人员,切实承担起学生社团的成立、年审、注销、组织建设、活动管理、经费管理和工作保障等工作。可根据实际工作需要,设立学生社团团工委,建立健全团组织。高校学生会组织要在校内学生组织中发挥枢纽型作用,配合团组织加强对学生社团的引导、服务和联系。 《办法》指出,高校学生社团一般分为思想政治类、学术科技类、创新创业类、文化体育类、志愿公益类、自律互助类及其他类等。学生群众性组织(含团队运营的网络新媒体社团)须按学生社团登记注册。学生社团登记成立时,须按照一定类别向高校团委进行申请登记,按程序批准筹备成立的学生社团,应在相应工作日内召开社团会员大会,批准成立的学生社团应尽快以公告或其他方式宣布成立。要实行年审制度,及时做好学生社团事项变更的登记、章程的修改和注销等工作。 《办法》指出,学生社团的成员应当是该校具有正式学籍的学生。社团成员有权了解所在社团的章程、组织机构和财务制度,有权对社团的管理和活动提出建议和质询,有权按照章程自由加入或退出该社团;社团成员应当定期注册,按章程缴纳会费,积极参加社团的各项活动。学生社团会员大会是学生社团的最高权力机构,依照本社团的章程行使职权。学生社团负责人应通过会员大会民主选举产生。社团指导教师必须是本校在职教职工。 《办法》指出,学生社团举办活动须遵守高校相关规章制度,并按照相应的审批程序进行,不得在学生中散布违背宪法、法律、法规和党的路线方针政策的错误观点和言论,不得开展与其宗旨不符的活动,不得开展纯商业性活动。参与人数较多或在校外举办、参加的学生社团活动,要有预案,确保活动安全、有序地进行。同时加强对来自校外支持学生社团开展调研、交流、访问、培训等活动的审核和管理。原则上企业、社会机构不得在学校建立特定冠名的学生俱乐部、协会等社团。对于与企业、社会机构联系紧密的创新创业类社团,确需冠名,须经高校相关部门批准。高校团委要加强学生社团网络化建设管理工作。要加强对社团运营网站、新媒体平台、印发刊物的管理和指导,注重培养社团成员的网络

通讯录管理系统

西安科技大学 数据库课程设计报告 题目:通讯录管理系统 班级:软件工程0902 学号: 0908010224 姓名:王浩 2011年6月

摘要 基于数据库的通讯录管理系统,采用数据库原理、程序设计方法、数据结构等方面的知识结合vc++的mfc类库进行综合设计,具有基本联系人资料管理以及对于登陆用户的管理,权限设置以及数据的备份和恢复等功能。采用SQL sever 作为通讯录管理系统的后台数据库,使得通讯录管理系统具有更高的稳定性及安全性,也方便了数据库中数据的备份以及发生故障时的还原。 关键词:数据库通讯录管理系统 SQL-sever 后台

目录 目录 (3) 1.绪论 (1) 1.1课程设计目的以及意义 (1) 1.2课程设计内容 (1) 2.需求分析 (2) 2.1功能需求 (2) 2.2数据分析 (2) 3.数据库设计 (3) 3.1概念结构设计 (3) 3.2逻辑结构设计 (3) 3.3物理结构设计 (4) 4.系统功能设计 (5) 5.系统实现 (6) 5.1系统的开发环境 (6) 5.2代码部分 (6) 6.总结 (57)

1.绪论 1.1课程设计目的以及意义 通过本课程设计,培养学生具有C/S模式的数据库应用软件系统的设计和开发能力;熟练掌握SQL Server数据库的使用,熟练掌握使用VC++开发工具开发数据库应用的能力;为毕业设计打下坚实的基础。根据所学的数据库原理与程序设计的知识,能够针对一个小型的数据库管理系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库的目的。根据所学的数据库原理与程序设计的知识, 通过对一个实际问题的分析,设计与实现,将原理与应用相结合,使我学会如何把书本上学到的知识用于解决实际问题,培养自己的动手能力;另一方面,使我能深入理解和灵活掌握教学内容。 1.2课程设计内容 通讯录管理系统 主要的数据表: 用户信息表,联系人信息表等;

社团考评细则

“三爱” 为了促进学生社团系统自身建设,确保社团的正常活动和健康发展,根据学校有关规定和《”三爱”社团管理方案》、《大连中学学生社团活动章程》,制定本细则。考核在校团委的指导和监督下,由学生会具体负责。考核结果将决定其社团的升降级,并按照一定的比值,纳入“大连一中教师综合量化考核”,并计入“大连一中学生综合素质量化考核”总分。 一、考评内容 考评将社团工作分为三大项及附加项。三大项内容分别为: 社员人数考核项目、社团组织管理工作部分考核项目、社团活动部分考核项目。 注意事项: 学生会社团部对各社团的考核每学期一次。结合两学期考核情况,进行年度考核。 学期考核总分: 社团评分占考核总分的15%,会员反馈分占考核总分的20%,学生会社团部考核分占考核总分的65%。 年度考核总分: 第一学期考核总分占年度考核总分的60%,第二学期考核总分占年度考核总分的40%。 二、考评程序 1.上交社团学期工作、活动总结 2.就一学期本社团的社员人数考核项目、社团组织管理工作考核项目、社团活动考核项目及附加项等方面的综合情况如实填写《大连一中学生社团量化考核表》。

3.学生会在社团的学期末会员大会上进行会员反馈评分。 4.学生会结合各社团的社员人数考核项目、社团组织管理工作部分考核项目、社团活动部分考核项目及附加项等方面的综合情况加以考核。 5.学生会将考核结果上报校团委审核。 三、考评标准 (一)社员人数考核指标(10分) 1.不遵守大连一中学社团管理办法的(0分),按照大连一中学生社团管理办法进行社员招聘及资格论证(2分)。 2.每学期末进行社员人数统计,与学期人数相同或增加的(8分),比原人数少15%以内的(5分),比原人数少30%以上的(4分)。 (二)社团组织管理工作考核项目及考核指标(50分) 3.及时、齐全上交本社团社员名单及相关活动材料的(6-10分),延迟的(0-6分),不上交的(0分)。 4.每次社团活动结束后认真打扫活动教室,整理社团活动教室(门窗,风扇等设备),整洁卫生的(6-10分),马马虎虎的,(2-6分)基本上无人管理的(0-2分)。 5.按照学校要求每星期准时开展丰富多彩的活动的(6-10分),偶而不开展活动的(2-6分),经常不开展活动的(0-2分)。 6.社团指导老师集会或相关负责人按时参加各类会议讨论,并积极发表意见和提出建议,及时准确的传达各种精神的(6-10分),经常不参加或参加少部分的议题讨论的(0-6分)。 7.社团骨干培养 (1)有健全的社团骨干培养计划和制度,并得到实施(6-10分),无计划、制度或未实施(0 -6分)。

通讯录管理系统设计说明书

通讯录管理系统设计说明书 系统概述: 随着毕业的来临,我们就将面临分离。为了能在毕业后,能够方便联系我们在大学其间的同学朋友,通讯录就是一个可以帮我们方便查找同学朋友的工具。 随着计算机的普及,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠计算机来帮助人们记住这些事情,极其简便。这就需要有一个使用的通讯录管理系统,用户可以方便的通过自己电脑的通讯录管理系统,来随时查阅自己所需要的信息,而不必再大费周折去翻开那繁琐的记事本。 通讯录管理系统是一个专门针对储存用户联系方式以及一些简单个人信息的实用管理系统,它方便了用户对众多客户、朋友、同事等个人信息的储存和快速查阅的功能,大大减少了查找过程的时间。 关键字:插入,删除,查找,输出。 需求分析: 调查用户需求: 随着同学们的即将毕业,蹋出社会,交际难免地逐渐扩大,与外界联系将更为广泛和密切,传统的手工通讯录、地址簿已经难以满足快节奏、高效率的现代生活的需求。经常发生要在几十甚至上百张名片中找出某一张名片的情况,若由手工完成效率十分低。当交际扩大后,传统的手工通讯录非常不方便,不易查询、修改、存放,不易保密,容易遗失。 由计算机带来管理庞大而繁杂的通讯录是非常合适的,不仅查询和修改方便,并且效率高,速度快,完全能够满足现代化交际活动的要求,同时也更方便同学们联系交往。 本系统专门用于个人通讯信息管理的小型应用软件,主要提供个人通讯信息的登记、修改、浏览、查询和打印等功能。

1.用户的主要信息需求: ①对个人通讯信息资料进行登记、修改、浏览。 ②对个人通讯信息资料进行按姓名和学号查询。 ③对个人通讯信息资料进行打印输出。 系统功能设计与分析: 1.功能模块图 2.功能设计 (1)新建通讯录功能 增加一个新的记录,并保存通讯录; (2)搜索通讯录功能

相关文档
最新文档