Qt中的元对象系统

Qt中的元对象系统
Qt中的元对象系统

Qt中的元对象系统

moc

什么是元对象?

In computer science, a metaobject or meta-object is any entity that manipulates, creates, describes, or implements other objects. The object that the metaobject is about is called the base object. Some information that a metaobject might store is the base object's type, interface, class, methods, attributes, variables, functions, control structures, etc.

在计算机科学中,元对象是这样一个东西:它可以操纵,创建,描述,或执行其他对象。元对象描述的对象称为基对象。元对象可能存这样的信息:基础对象的类型,接口,类,方法,属性,变量,函数,控制结构等。

QT中的元对象系统

QT中的元对象系统基于以下三种东西:

1. QObject

提到这个类,相信大家都不陌生。几乎所有在QT开发的类都继承于此类。

QObject这个类为其他需要用到元对象系统的类提供了一个基类。

2.Q_OBJECT

放在类声明中的Q_OBJECT宏是用来为这个类开启元对象特性的,例如动态的属性(dynamic properties),信号(signals)以及槽(slots)。

可这个Q_OBJECT宏到底是什么呢?如下图所示,大家可以看到它是一些函数和一个静态的类成员。

Q_OBJECT宏内容如下:

#define Q_OBJECT \

public: \

Q_OBJECT_CHECK \

static const QMetaObject staticMetaObject; \

Q_OBJECT_GETSTATICMETAOBJECT \

virtual const QMetaObject *metaObject() const; \

virtual void *qt_metacast(const char *); \

QT_TR_FUNCTIONS \

virtual int qt_metacall(QMetaObject::Call, int, void **); \

private:

而Q_OBJECT_CHECK宏的内容是:

#define Q_OBJECT_CHECK \

template inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const \

{ int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; }

这里是检查类声明中是否遗漏Q_OBJECT宏,如果遗漏则在编译时给出错误提示。

而QT_TR_FUNCTIONS宏的内容是:

# define QT_TR_FUNCTIONS \

static inline QString tr(const char *s, const char *c = 0) \

{ return staticMetaObject.tr(s, c); } \

static inline QString trUtf8(const char *s, const char *c = 0) \

{ return staticMetaObject.trUtf8(s, c); } \

static inline QString tr(const char *s, const char *c, int n) \

{ return staticMetaObject.tr(s, c, n); } \

static inline QString trUtf8(const char *s, const char *c, int n) \

{ return staticMetaObject.trUtf8(s, c, n); }

一些字符串操作的算法,这几个方法实际上是隐藏了父类QObject中这个几个方法。我们在类定义中调用的tr或是trUtf8方法都是调用这里的方法。

3 MOC

what does MOC do?

MOC编译器为QObject子类提供了一些实现元对象特性所需的一些代码。就比如说信号,大家只是在类声明的时候声明了所需的信号,就像下面这样:

样当我们把鼠标放到Q_SINGNALS时可以看到下面

这个宏感觉有点奇怪,它要替换的是它自己。实际上它只是一个protected的关键字。

说到这里,大家应该会想到,哦,moc编译器会用protected来替换它。但moc编译器做的远过于此,它会用protected来替换它,但同时还会为这个信号声明方法体。

当moc工具读取一个c++源文件时,如果它发现类的声明中有Q_OBJECT时,它会产生另外一个c++源文件,这个文件中就包含了这些类的元对象代码。这个新产生的文件可以以#include形式包含到这个类的源文件中,但更常用的做法是和这个类的定义一起编译连接。以QT Creator为例,以下代码MainWindow类是我创建工程时选择Mobile Qt Application时自动创建的一个类,其中我自己增加了3个信号3槽,代码如下所示:

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include

#include

namespace Ui {

class MainWindow;

}

class MainWindow : public QMainWindow

{

Q_OBJECT

public:

explicit MainWindow(QWidget *parent = 0);

~MainWindow();

public slots:

void slotTest1(int value);

void slotTest2(const QString value);

void slotTest3(bool value);

signals:

void signalTest1(int value);

void signalTest2(const QString value);

void signalTest3(bool value);

public:

void test();

private:

Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H

#include "mainwindow.h"

#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),

ui(new Ui::MainWindow)

{

ui->setupUi(this);

}

MainWindow::~MainWindow()

{

delete ui;

}

void MainWindow::slotTest1(int value)

{

}

void MainWindow::slotTest2(const QString value) {

}

void MainWindow::slotTest3(bool value)

{

}

void MainWindow::test()

{

connect(this, SIGNAL(signalTest1(int)), this, SLOT(slotTest1(int)));

}

这个类很简单,但当moc读到mainwindow.h时发现Q_OBJECT时,它会在在这个工程目录下的moc目录下创建moc_mainwindow.cpp。让我们来看看这里面都有些什么:/************************************************************** **************

** Meta object code from reading C++ file 'mainwindow.h'

**

** Created: Thu Sep 2 16:23:24 2010

** by: The Qt Meta Object Compiler version 62 (Qt 4.6.3)

**

** WARNING! All changes made in this file will be lost!

*************************************************************** **************/

#include "../mainwindow.h"

#if !defined(Q_MOC_OUTPUT_REVISION)

#error "The header file 'mainwindow.h' doesn't include ."

#elif Q_MOC_OUTPUT_REVISION != 62

#error "This file was generated using the moc from 4.6.3. It"

#error "cannot be used with the include files from this version of Qt."

#error "(The moc has changed too much.)"

#endif

QT_BEGIN_MOC_NAMESPACE

static const uint qt_meta_data_MainWindow[] = {

// content:

4, // revision

0, // classname

0, 0, // classinfo

6, 14, // methods

0, 0, // properties

0, 0, // enums/sets

0, 0, // constructors

0, // flags

3, // signalCount

// signals: signature, parameters, type, tag, flags

18, 12, 11, 11, 0x05,

35, 12, 11, 11, 0x05,

56, 12, 11, 11, 0x05,

// slots: signature, parameters, type, tag, flags

74, 12, 11, 11, 0x0a,

89, 12, 11, 11, 0x0a,

108, 12, 11, 11, 0x0a,

0 // eod

};

static const char qt_meta_stringdata_MainWindow[] = {

"MainWindow\0\0value\0signalTest1(int)\0"

"signalTest2(QString)\0signalTest3(bool)\0"

"slotTest1(int)\0slotTest2(QString)\0"

"slotTest3(bool)\0"

};

const QMetaObject MainWindow::staticMetaObject = {

{ &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,

qt_meta_data_MainWindow, 0 }

};

#ifdef Q_NO_DATA_RELOCATION

const QMetaObject &MainWindow::getStaticMetaObject() { return staticMetaObject; }

#endif //Q_NO_DATA_RELOCATION

const QMetaObject *MainWindow::metaObject() const

{

return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;

}

void *MainWindow::qt_metacast(const char *_clname)

{

if (!_clname) return 0;

if (!strcmp(_clname, qt_meta_stringdata_MainWindow))

return static_cast(const_cast< MainWindow*>(this));

return QMainWindow::qt_metacast(_clname);

}

int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)

{

_id = QMainWindow::qt_metacall(_c, _id, _a);

if (_id < 0)

return _id;

if (_c == QMetaObject::InvokeMetaMethod) {

switch (_id) {

case 0: signalTest1((*reinterpret_cast< int(*)>(_a[1]))); break;

case 1: signalTest2((*reinterpret_cast< const QString(*)>(_a[1]))); break;

case 2: signalTest3((*reinterpret_cast< bool(*)>(_a[1]))); break;

case 3: slotTest1((*reinterpret_cast< int(*)>(_a[1]))); break;

case 4: slotTest2((*reinterpret_cast< const QString(*)>(_a[1]))); break;

case 5: slotTest3((*reinterpret_cast< bool(*)>(_a[1]))); break;

default: ;

}

_id -= 6;

}

return _id;

}

// SIGNAL 0

void MainWindow::signalTest1(int _t1)

{

void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) };

QMetaObject::activate(this, &staticMetaObject, 0, _a);

}

// SIGNAL 1

void MainWindow::signalTest2(const QString _t1)

{

void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) };

QMetaObject::activate(this, &staticMetaObject, 1, _a);

}

// SIGNAL 2

void MainWindow::signalTest3(bool _t1)

{

void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) };

QMetaObject::activate(this, &staticMetaObject, 2, _a);

}

QT_END_MOC_NAMESPACE

看起来还真不少,没关系,让我们来一点一点分析。说到这里我先说一点废话,最近大家都在学习QT,但我发现大家掌握的都不够深入。如果你仅仅是学习一些类的使用时不够的,这对你技术的提高很不好,这是一个习惯,而且是个好习惯,如果你养成了这种习惯,你会发现你学东西会很快,技术当然也是突飞猛进。也会有人会说我也学了一些深层次的东西,就比如说我也学会了信号槽原理啦,我知道怎么用了。作为技术人员,如果你把你的技术高度定位在会用,你会发现你就在那个高度了。闲话少说,我们回到刚才那个话题上来。moc 还真做的不少呢,不过很少有人意识到这点。让我们来看看它都做了些什么。

先看看的一些预处理,wow,不少的if error:

#if !defined(Q_MOC_OUTPUT_REVISION)

#error "The header file 'mainwindow.h' doesn't include ."

#elif Q_MOC_OUTPUT_REVISION != 62

#error "This file was generated using the moc from 4.6.3. It"

#error "cannot be used with the include files from this version of Qt."

#error "(The moc has changed too much.)"

#endif

接着是一个宏QT_BEGIN_MOC_NAMESPACE

在qglobal.h我们可以找到如下:

# define QT_BEGIN_MOC_NAMESPACE QT_USE_NAMESPACE

# define QT_USE_NAMESPACE using namespace :: QT_NAMESPACE;

所以QT_BEGIN_MOC_NAMESPACE就是using namespace :: QT_NAMESPACE;现在看起来是不是很熟悉啊,哈哈。

如下说完这个我们也一并把它的配对的一项QT_END_MOC_NAMESPACE也看一下:

在qglobal.h我们可以找到如下:

# define QT_END_MOC_NAMESPACE

所以它就是一个空的,什么也没有,仅仅是为了配对,看起来比较好看吧。

接着是一个静态全局常量qt_meta_data_MainWindow:

static const uint qt_meta_data_MainWindow[] = {

// content:

4, // revision

0, // classname

0, 0, // classinfo

6, 14, // methods

0, 0, // properties

0, 0, // enums/sets

0, 0, // constructors

0, // flags

3, // signalCount

// signals: signature, parameters, type, tag, flags

18, 12, 11, 11, 0x05,

35, 12, 11, 11, 0x05,

56, 12, 11, 11, 0x05,

// slots: signature, parameters, type, tag, flags

74, 12, 11, 11, 0x0a,

89, 12, 11, 11, 0x0a,

108, 12, 11, 11, 0x0a,

0 // eod

};

你写的每个类,只要是从QObject继承,并且在类的声明中包含Q_OBJECT宏,moc都会为了定义一个(qt_meta_data_+类名)格式的静态变量。

继续,wow,又一个静态变量:

static const char qt_meta_stringdata_MainWindow[] = {

"MainWindow\0\0value\0signalTest1(int)\0"

"signalTest2(QString)\0signalTest3(bool)\0"

"slotTest1(int)\0slotTest2(QString)\0"

"slotTest3(bool)\0"

};

很容易看出来这里放置的是类名和所有的信号槽。这个东西很重要,就是有了这个才可以通过索引到相应的信号和槽的,至于信号槽更深入的东西,信号槽是如何实现的,我们将在下面的内容中讲到。

继续,wow,还没有完呢,又一个全局静态变量:

const QMetaObject MainWindow::staticMetaObject = {

{ &QMainWindow::staticMetaObject, qt_meta_stringdata_MainWindow,

qt_meta_data_MainWindow, 0 }

};

这个就是MainWindow的静态元对象了,看的出来是个结构体,包含了三项:

1. 它的父类的静态元对象。

2. 它的元字符串数据。

3. 它的元数据。

继续看,这下开始到方法了:

#ifdef Q_NO_DATA_RELOCATION

const QMetaObject &MainWindow::getStaticMetaObject() { return staticMetaObject; }

#endif //Q_NO_DATA_RELOCATION

这个方法很简单,就是返回它自己的静态元对象。

const QMetaObject *MainWindow::metaObject() const

{

return QObject::d_ptr->metaObject ? QObject::d_ptr->metaObject : &staticMetaObject;

}

很简单,如果它最顶层父类QObject类的d_ptr->metaObject不为空则返回最顶层父类QObject类的d_ptr->metaObject,否则返回staticMetaObject的指针。

继续,

void *MainWindow::qt_metacast(const char *_clname)

{

if (!_clname) return 0;

if (!strcmp(_clname, qt_meta_stringdata_MainWindow))

return static_cast(const_cast< MainWindow*>(this));

return QMainWindow::qt_metacast(_clname);

}

看的出来这个方法就是控制类型转换的了,通过比较类的元字符串数据,如果相等则当前的this指针转换为空指针返回,否则继续向上找,如果最顶上的类的元字符串数据还是不相同则返回空指针。

继续,

int MainWindow::qt_metacall(QMetaObject::Call _c, int _id, void **_a)

{

_id = QMainWindow::qt_metacall(_c, _id, _a);

if (_id < 0)

return _id;

if (_c == QMetaObject::InvokeMetaMethod) {

switch (_id) {

case 0: signalTest1((*reinterpret_cast< int(*)>(_a[1]))); break;

case 1: signalTest2((*reinterpret_cast< const QString(*)>(_a[1]))); break;

case 2: signalTest3((*reinterpret_cast< bool(*)>(_a[1]))); break;

case 3: slotTest1((*reinterpret_cast< int(*)>(_a[1]))); break;

case 4: slotTest2((*reinterpret_cast< const QString(*)>(_a[1]))); break;

case 5: slotTest3((*reinterpret_cast< bool(*)>(_a[1]))); break;

default: ;

}

_id -= 6;

}

return _id;

}

现在到了QT里的元调用了,这时是QT信号槽原理实现很重要的一步,这里_id就是信号槽对应的索引,可每个信号或是槽对应哪个索引呢,看看它的元字符串数据qt_meta_stringdata_MainWindow,我想你应该知道了。

继续,接着就是信号的实现了:

// SIGNAL 0

void MainWindow::signalTest1(int _t1)

{

void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) };

QMetaObject::activate(this, &staticMetaObject, 0, _a);

}

// SIGNAL 1

void MainWindow::signalTest2(const QString _t1)

{

void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) };

QMetaObject::activate(this, &staticMetaObject, 1, _a);

}

// SIGNAL 2

void MainWindow::signalTest3(bool _t1)

{

void *_a[] = { 0, const_cast(reinterpret_cast(&_t1)) };

QMetaObject::activate(this, &staticMetaObject, 2, _a);

}

这里就是moc为所有信号生成的方法了。

JAVA局域网聊天系统源代码

这是我自己做的简单聊天系统客户端 package LiaoTianSys; import java.awt.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*; import https://www.360docs.net/doc/632621300.html,.Socket; import https://www.360docs.net/doc/632621300.html,.UnknownHostException; public class ConversationFrame extends JFrame { JScrollPane jsp; JTextField jtf; static JTextArea jta; //JTextArea jat1,jta2; JButton enter=new JButton("发送"); JButton jb=new JButton("聊天室好友"); JButton jb2=new JButton("进入聊天室"); JButton jb3=new JButton("刷新在线人员列表"); JPanel jp,jp1,jp3,jp4; DefaultListModel listmodel = new DefaultListModel(); //static String[] NAME=new String[10]; String n[]={"f"}; JList list=new JList(listmodel); JLabel time=new JLabel("当前系统时间:"); JLabel showtime=new JLabel("显示时间"); JLabel jl=new JLabel("输聊天信息"); JLabel nicheng=new JLabel("昵称"); JTextField NCshuru=new JTextField(10); static DataOutputStream dos; static DataInputStream dis; //final LoginFrame lf; Socket socket; public ConversationFrame() { Container con=getContentPane(); con.setLayout(new BorderLayout()); jp=new JPanel(); setSize(700,600); setLocation(100,100); jta=new JTextArea(); jta.setEditable(false);

简单学生信息管理系统

. ——综合性程序设计 题目:简单学生信息管理系统(序列化版)班级: : 学号:

实验目的: 1.综合运用输入、输出的知识,用序列化方法保存、读入数组内容。 2.设计实现一个简单的信息管理系统。 实验内容: 编写能够满足如下条件的程序,分两次四个课时完成 1.声明Student类,该类实现Serializable接口以表明该类可 以进行序列化。该类有姓名、学号、math、os、java用来 存放对应的成绩,在构造方法中进行姓名、学号、课程成 绩的赋值。Override有Object继承来的tostring方法已便 友好格式显示自己的属性; 2.建立一个类,利用数组来存储多个Student,写完一个方法, 在main中写一段测试代码,运行以保证目前所做工作的 正确性,正确后再写其他代码。有以下方法: 1)add(Student stu):增加新的学生,人数满时显示人满或是new一个更长的数组,把现有的Student复制到新 数组 2)dispAll():可以显示所有的学生信息(测试add是否正确) 3)findById(long id):可以按照学号来查找,然后显示符合条件的学生信息,查无此人的话显示错误信息。 4)findByName(string name):可以按照姓名来查找,然后显示符合条件的学生信息,查无此人的话显示错误信 息。(判断姓名是否相等使用string类的 equalsIgnoreCase方法) 5)delBy Id(long id): 可以按照id来删除学生信息,然后显示找到该人,若查无此人的话显示错误信息。 6)save():利用ObjectOutputStream 来把数组写入文件中,需要考虑在什么时候调用该方法。 7)load():利用ObjectIntputStream 来进行反序列化,得到以前保存的内容,注意要考虑以前未保存内容的情 况,可返回错误信息。 3.在控制台显示一个菜单,并实现相应的功能。菜单如下: 1显示所有学生信息2按学号查找3 按姓名查找 4 按学号删除 5 保存 6 读入 7 退出 请输入数字(1-7): 程序代码

职工信息管理系统

职工信息管理系统 1.可行性分析 在当今社会,互联网的发展,给人们的工作和生活带来了极大的便利和高效,信息化,电子化已经成为节约运营成本,提高工作效率的首选。 当前大量企业的员工管理尚处于手工作业阶段,不但效率低下,还常常因为管理的不慎而出现纰漏。因此部分企业需求,设计企业员工信息管理系统,以帮助企业达到员工管理办公自动化、节约管理成本、提高企业工作效率的目的。员工信息管理系统主要对企业员工的信息进行集中管理,方便企业建立一个完善的、强大的员工信息数据库,它是以SQL2000数据库作为开发平台,使用java编写程序、完成数据输入、修改、存储、调用查询等功能。并使用SQL 2000数据库形成数据,进行数据存储。本项目开发计划旨在明确规范开发过程,保证项目质量,统一小组成员对项目的理解,并对其开发工作提供指导;同时还作为项目通过评审的依据。并说明该软件开发项目的实现在技术上、经济上和社会因素上的可行性,评述为了合理地达到开发目标可供选择的各种可能实施方案,说明并论证所选定实施方案的理由。 1.1 技术可行性 根据用户提出的系统功能、性能及实现系统的各项约束条件,根据新系统目标,来衡量所需技术是否具备。本系统主要采用数据库管理方法,服务器选用MySQL Server 数据库,他是它是目前能处理所有中小型系统最方便的流行数据库,它能够处理大量数据,同时保持数据的完整性并提供许多高级管理功能。它的灵活性、安全性和易用性为数据库编程提供了良好的条件。硬件方面,该系统短小精悍对赢家没有太大要求,只要能够运行windows操作系统就可以很好的运行该软件。 1.2操作可行性 由系统分系可以看出本系统的开发在技术上具有可行性。首先系统对于服务器端和客户端所要求的软、硬件的最低配置现在大多数的用户用机都能达到。本系统对管理人员和用户没有任何的特殊要求,实际操作基本上以鼠标操作为主并辅以少量的键盘操作,操作方式很方便。因此该项目具有良好的易用性。用户只要具备简单的应用计算机的能力无论学历,无论背景,均可以使用本系统,用户界面上的按钮的功能明确,用户一看就可以了解怎么使用本系统,以及本系统能够完成的功能,因此本系统在操作上是可行的。 1.3经济可行性 估算新系统的成本效益分析,其中包括估计项目开发的成本,开发费用和今后的运行、维护费用,估计新系统将获得的效益,估算开发成本是否回高于项目预期的全部经费。并且,分析系统开发是否会对其它产品或利润带来一定影响。本系统作为一个课程设计,没有必要考虑维护费用,以及本系统可获得的效益等问题。 1.4法律及社会效益方面的可行性

学生信息管理系统

全国学前教育管理信息系统 培训上机指南 一、网址、用户名及密码 1、专题网址:https://www.360docs.net/doc/632621300.html,/,系统由专题右上方《管理系统入口》进入。 2、用户名(另发)。 3、测试系统初始密码统一为xueqian@2014(仅在培训时为此密码),请勿在培训时修改此密码。在使用正式系统时请修改密码。 二、系统登录注意事项 1、建议电脑为XP系统的情况下使用火狐或谷歌浏览器登录系统。 2、登录系统前,须进行浏览器设置,设置方法如下:“工具”→“Internet选项”→“隐私”→“高级”→勾选“替代自动cookie处理”和“总是允许会话cookie”。 3、不要使用同一浏览器登录多个用户。 4、在输入用户名和密码时注意键盘大小写的切换。 5、登录系统时,如密码连续五次输入错误,系统会自动锁定该账号,锁定时间为15分钟,15分钟以后才能再登录系统,建议骨干学校和市州在登录时如输错4次密码时不要再进行第5次密码的输入,可用同级或上级的系统管理员账号(A开头的账号)重置密码,再进行系统登录。

三、需完成任务 各学校使用学校级系统,市州使用县、市级系统,骨干学校与市州配合完成各项流程(机构管理、幼儿管理、业务管理、一期数据管理、机构在园幼儿情况、系统管理),具体操作步骤如下(以县级学校为例): (一)机构管理 1、使用机构级账号(普通用户)登录系统,进入“机构管理”->“基本信息管理”,进行学校扩展信息的填写(基本信息由系统自动导入),此处应注意“提交”与“保存”两个按钮的区别。 2、使用区县级账号(审核用户)登录系统,进入“业务管理”->“机构数据管理” ->“基本信息审核”,审核学校提交的基本信息。 3、使用机构级账号(普通用户)登录系统,进入“机构管理”->“办学条件信息管理”,根据提示编辑办学条件基本信息与办学条件建筑信息(该页面有两个选项卡),并提交审核。 4、使用区县级账号(审核用户)登录系统,进入“业务管理”->“机构数据管理” ->“办学条件信息审核”,审核学校提交的基本信息。 5、使用机构级账号(普通用户)登录系统,进入“机构管理”->“班级信息管理”,至少创建5个以上的班级(最好有连续的年级)。

局域网聊天系统(详细设计)

局域网聊天系统 详 细 设 计 成绩:

目录 1.功能需求 (1) 2.数据库设计 (1) 2.1 基本表设计 (1) 2.1.1 表结构汇总 (1) 2.1.2 T_Users表结构设计 (2) 2.1.3 XXX表结构设计 (2) 2.2 视图设计 (2) 2.2.1 视图汇总 (2) 2.2.2 XXX视图设计 (2) 2.3 存储过程设计 (3) 2.3.1 存储过程汇总 (3) 2.3.2 XXX存储过程代码 (3) 3.服务器端设计及实现 (3) 3.1 启动服务器功能的设计与实现 (3) 3.1.1 界面设计 (3) 3.1.2 流程 (4) 3.1.3 关键代码 (4) 3.2 消息管理功能的设计与实现 (4) 3.2.1 界面设计 (3) 3.2.2 流程 (4) 3.2.3 关键代码 (4) 4.客户端的设计与实现 (5) 4.1 注册模块的设计与实现 (5) 4.1.1 界面设计 (5) 4.1.2 流程图 (6) 4.1.3 关键代码 (6) 4.2 登陆功能的设计与实现 (6) 4.2.1 界面设计 (5) 4.2.2 流程图 (5) 4.2.3 关键代码 (6) 4.3 聊天功能的设计与实现 (7) 4.3.1 界面设计 (8) 4.3.2 流程图 (8) 4.3.3 关键代码 (9) 5.人员及分工 (9)

局域网聊天系统 详细设计1.功能需求 图 1 项目功能结构图2.数据库设计 2.1 基本表设计 2.1.1 表结构汇总 表 1 基本表汇总

2.1.2 T_Users表结构设计 表 2 用户表(T_Users)结构设计 2.1.3 XXX表结构设计 表 3 XXX(xxx)结构设计 2.2 视图设计 2.2.1 视图汇总 2.2.2 XXX视图设计

学生信息管理系统(完整)

学生信息管理系统(总体设计) 1、管理系统功能模块设计 本系统需要完成的功能主要有: (1)、输入学生基本信息、所在班级、所学课程和成绩等。 (2)、学生信息的查询,包括查询学生基本信息、所在班级、已学课程和成绩等。(3)、学生信息的修改。 (4)、班级信息的输入,包括输入班级设置、年级信息等。 (5)、班级信息的查询。 (6)、班级信息的修改。 (7)、班级课程信息的输入。 (8)、班级课程信息的修改。 (9)、学生课程添加和修改。 (10)、学生成绩信息的输入。 (11)、学生成绩信息的修改。 (12)、学生成绩信息的查询。 (13)、学生成绩信息的统计。 2、功能模块设计:

3、数据库设计:

学生信息管理系统(需求分析)

1.系统开发背景分析 系统的功能取决开用户的需求。随着科技进步和信息时代的到来,教育的普及程度起来起高,学校的人数也在迅速的增长,怎样的管理好成千上万的学生,已经成为一个学校的管理者必须面对的问题。编写本报告的目的就是用最少的代价,尽可能短的时间内确定问题是否能够解决,通过对学校的一些管理软件的调研分析,发现了一些不足,所以拟做此系统,使学生信息的管理更加准确,安全和快捷。 在本次试验中包括的模块有学生信息管理、课程信息管理、成绩信息管理和班级信息管理等几项,各项管理工作涉及到的内容用下面的关系模式表示。a)学生(学号,姓名,性别,年龄,班级,电话,备注,出生日期,入学时间, 班级编号,家庭地址) b)课程(课程编号,课程名称,课程类别,学分,学时) c)班级(系,班级号,指导老师) 2.系统分析 1.抽象出当前系统的逻辑模型 画出反映当前系统工作的数据流程图。数据流程图是逻辑模型的图形表示,即使不是专业的计算机技术人员也能非常容易理解,它是一种很好的系统构造的表示方法。画数据流程图是应该从已获得的人工处理流程中去掉物理因素,只保留数据、信息处理部分。 2.系统功能分析 系统主要用于学校学生信息管理,主要任务是用计算机对学生各种信息进行日常管理,如:查询、修改、增加、删除。 3.系统目标设计 根据本校的实际情况,利用校园网而设计一套针对性和功能都比较强的学生信息管理系统,对学生信息管理系统进行科学的分类、录入、查询. 4.开发设计思想 尽量采用学校现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用资源,提高系统开发的水平和应用效果的目的。系统应该符合学校学生信息管理的规定,满足学校学生日常管理的需要,达到操作过程中的直观、方便、实用、安全等要求。强调多部门合作,学生工作设计面广泛,应该考虑各部门各

基于JAVA局域网聊天程序设计与实现(附源代码)

局域网聊天课程设计 摘要 随着互联网的发展,网络聊天工具作为一种交流工具,已经受到网民的青睐。目前,出现了很多功能强大的聊天工具,其中应用比较广泛的有腾讯QQ、MSN-Messager等等。 即时通讯软件,是每一个上网用户都需要的工具,它除了能够让您迅速地在网上找到自己的朋友和伙伴之外,还可以实时交谈和传递信息,截止到目前,全球约有近3亿多人使用即时软件,正因为即时通讯软件拥有数以亿计的用户和增长的市场,所以各个公司都盯上了这个最大的市场,一时间,即时通讯市场硝烟四起。 对等网络(peer-to-peer,简称P2P),应用最初出现时和现在并不相同。事实上可以认为它是若干不同技术以及流行趋势相结合的产物。以下是导致P2P技术发展最重要的趋势:首先,一些新技术与软件工程的结合,形成了一种将工作分散的趋势。P2P计算正是这种分散工作趋势的结果。其次,在企业应用集成等因素的驱动下,过去十年渐渐形成从集中的单机系统转向分布式系统。然而随着互联网的发展,全面的分布式计算也就成为一种迫切需求。 关键词:局域网聊天 P2P java

Abstract With the development of the Internet,the chat tool as a communication tool, has been popularly accepted by netizens of all ages. At present, there are many powerful chat tools, of which Tencent QQ, MSN-Messager are much more prevalent. Instant messaging software is necessary for every one who connects to the internet, which can not only provide you a prompt way to find friends and partners online, but can provide you the convenience of internet relay chat and information delivering. Up to now, there are about 300 million people using real-time software all over the world. As more and more corporations have focused on this market with growing potential, which has hundreds of millions of uses, the competitions among these corporations are extremely fierce. The initial application of peer-to-peer network (peer-to-peer, referred to as P2P) is not the same as it is now. In fact, it can be regarded as a combination of different technologies and fashion trends. Below are the most important trends that have led the development of P2P technology: First of all, the integration of software engineering and new technologies led to a working dispersion trend. As a result, P2P computing was born. Then, in the past decade, it has turned fro m a single centralized system to distributed system due to the motivation of factors such as enterprise application integration. At last, with the development of the Internet, however, a comprehensive distributed computing has become an urgent need. Keywords:LAN chat P2P java

学生管理系统毕业设计

学生管理系统毕业设计 目录 一使用工具及技术简介 (1) 1.1 Microsoft .NET 框架简介 (1) 1.2 开发工具 (2) 1.3 Winform 简介 (3) 1.4 sql 2008 简介 (4) 二总体设计 (6) 2.1 系统设计背景 (6) 2.2 系统概述 (6) 2.3 需求分析 (6) 2.4 实现目标 (7) 2.5 系统流程图 (7) 2.6 数据库设计 (8) 三系统详细设 (10) 3.1 用户登录详细设计 (10) 3.2 学生登陆进入页面 (11) 3.3 教师登陆进入页面 (14) 四软件开发中的困难与成果 (22) 4.1 软件开发中的困难 (22) 4.2 软件开发的成果 (23) 总结 (24) 致谢 (25) 附录 (26) 软件部分代码 (26) 一登陆页面方法: (27) 二学生进入页面方法代码: (28) 三教师登陆页面方法代码 (30)

一使用工具及技术简介 1.1 Microsoft .NET 框架简介 https://www.360docs.net/doc/632621300.html,是Microsoft XML Webs 平台。XML Webs 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Webs 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。 https://www.360docs.net/doc/632621300.html,框架是Microsoft Windows操作系统家族中一名重要的新成员。它是下一代Windows应用程序的基石,下一代应用程序更容易开发、部署,以及与其它网络系统集成。 .NET框架帮助软件开发人员、系统管理人员更轻松地开发、管理,提升性能,加强安全,提高稳定性。.NET框架简化了Windows软件开发。它让开发人员用一种方法开发出两种程序:网络应用程序和桌面应用程序(这种程序有时也被称为“智能客户端程序”)。它还能帮助开发人员使用相同的工具和技能开发大至大型服务器安装,小至手持智能的形形色色的软件。 构建在.NET框架上的软件比常规的软件更容易部署,更容易管理。可以把它们开发成自动升级的模式。.NET框架还可以最大限度地减少不兼容软件之间的冲突。 .NET 框架的主要优点有: 帮助软件使用者与网络服务商部署软件。 提供更稳定、更安全、更易扩容、更高性能的软件开发环境。 让开发人员更有生产力:更易使用现有代码,使他们更轻松地集成所支持的20多种编程。 语言编写出来的组件,让他们用同样的工具和技能开发出更多样化件。

学生管理系统的设计与实现

学生管理系统的设计与实现

目录 第一章系统概述 (3) 1.1系统开发背景 (3) 1.2系统概况 (4) 第二章系统分析 (5) 2.1系统需求分析 (5) 2.2开发环境及系统的框构简介 (5) 第三章系统设计 (6) 3.1系统架构设计 (6) 3.2系统功能模块设计 (6) 3.3系统业务流程图设计 (7) 3.4数据库设计 (8) 3.4.1数据库需求分析 (8) 3.4.2 数据库概念结构设计 (8) 3.4.3 数据库逻辑结构设计 (8) 第四章系统实现 (10) 4.1主界面实现 (10) 4.2搜索功能模块实现 (12) 4.3 系统功能模块实现 (13) 第五章系统测试 (15) 5.1功能测试 (15) 5.2测试用例 (16) 第六章总结 (17)

第一章系统概述 1.1系统开发背景 随着高校规模的不断扩大,学生数量也急剧增加,有关学生的各种信息量也成倍增长,各类学生的统计分析工作也越来越困难,面对如此繁杂的工作,为了能够为高校学生信息管理提供一种更加高效实用的管理手段,为学生信息的存储、计算、统计、分析、交流提供一种更加安全快捷的信息平台,并且能够减少大量的人工操作,以及在人工操作中由于人为因素而引起的数据错误,保证学生信息数据的安全性和完整性,使学生管理人员能够轻松,正确无误地完成各项工作,为学生管理工作服务。 意义: 1、保证信息的准确性和时效性,随时通过计算机对系统进行管理,使得学生信息处于最新状态,保证统计数据和分析的准确。 2、减轻劳动强度、提高工作效率、增加学生管理的透明度。高校学生管理信息系统可以发挥计算机的强大功能,让管理人员从大量繁琐的手工劳动中解放出来,将单调枯燥的纸张涂写变成灵活的电子信息操作。并充分利用网络优势,加快学校内部学生信息和文档的发布、传送和获取,改善和优化学生工作,使各个部门之间的工作联系紧密、井然有序、清楚明晰,大大减轻工作负担,提高工作效率,增加学生管理的透明度。 3、降低管理成本,由于采用本系统的原因,使辅导员管理工作一改往日埋在各种表格中的被动局面,基本实现了无纸化办公,根除了很多日常管理中的浪费现象,体现出现代化学生管理的优势。 4、规范化管理,由于采用了计算机统计分析学生信息,一些原始信息在录入时就必须要求准确录入,这就要求管理人员在提供信息时要准确,同时要求在录入时也要十分认真,这样做是为了将错误降到最低,提高系统工作的准确率,从而实现学生管理工作规范化。

企业职工信息管理系统

企业职工信息管理系统 EWIMSystem(Enterprise Workers Information Manager System) 目录 第一章绪论 (3) 1.1 相关背景 (3) 1.2 开发目的 (3) 1.3 论文内容 (3) 1.4 意义 (3) 1.5 分工 (4) 第二章系统需求分析 (5) 2.1系统功能需求分析 (5) 2.2辅助功能需求分析 (6) 2.2.1打印报表.............................................................................. 错误!未定义书签。 2.2.2修改密码 (6) 2.3 软件的运行环境 (6) 2.3.1 硬件平台 (6) 2.3.2 软件平台 (6) 2.3.3 开发环境 (6) 第三章系统功能设计与实现 (7) 3.1 系统目标设计 (7) 3.2 数据库分析与设计 (9) 3.2.1数据库表设计 (9) 3.2.2数据库表关系图 (12) 3.3 系统功能概要设计 (13) 3.4 系统功能详细设计 (14)

企业职工信息管理系统 摘要 随着科技的不断发展,企业的不断壮大,传统的企业人事管理主要以人工为主,人工管理既费力、费时,又容易出现错误,严重制约了企业员工管理的实施,目前人工管理已不能满足市场的需要,所以建立现代化的智能化的企业职工信息管理系统势在必行。这样可以提高企业的管理效率,同时减轻了人事部门的工作量,使原本复杂和枯燥无味的工作变得简单而轻松。 企业职工信息管理系统是一个基于C/S模式的管理系统。 关键字:企业职工信息管理系统,C/S模式

java编写的简单局域网聊天室(适合初学者).

import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.Panel; import java.awt.Point; import java.awt.TextArea; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.File; import java.io.FileWriter; import java.io.IOException; import https://www.360docs.net/doc/632621300.html,.DatagramPacket; import https://www.360docs.net/doc/632621300.html,.DatagramSocket; import https://www.360docs.net/doc/632621300.html,.InetAddress; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class GUI_Chat extends Frame { private static final long serialVersionUID = 1L; private TextArea viewTextArea = new TextArea(20, 1; private TextArea sendTextArea = new TextArea(; private TextField ipTextField = new TextField(20; private Button sendButton = new Button(" 发送" ; private Button clearButton = new Button(" 清屏" ; private Button logButton = new Button(" 记录" ; private Button shakeButton = new Button(" 震动" ; private Panel panel = new Panel(; private DatagramSocket socket ;

学生成绩管理系统(毕业设计)

贵州教育学院本科毕业论文(设计) 题目:学生成绩管理系统 学生姓名 XXX 指导教师 XXX老师 专业计算机科学与技术 年级 07级计本班 摘要:学生成绩管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。经过分析,我们使用Microsoft公司的 Visual Basic开发工具,将VB技术与数据库Access2003相结合进行设计。首先,在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。系统可基本实现学生成绩和学生

信息的录入、修改、删除等功能,扩充的功能包括与成绩相关的信息处理。同时,可根据学校教学管理制度,设定或自定义审核操作的规则。系统其他方面的需求有:安全保密性、可恢复性、可扩充性、可维护性等。 关键词:数据库Visual Basic 6.0 Access 2003 Abstract:The management system of student score is a typical application of managing information system (known as MIS),which mainly includes building up database of back-end and developing the application interface of front-end. Through analyzing, we select Visual Basic software which presented by Microsoft to design this subject. In the design process,we use VB and database Access 2000 technology to exploit

学生信息管理信息系统

管理信息系统 课程设计报告 专业:电子商务 学号: 姓名: 2011年12 月 29 日

实验内容和评分项目

学生信息管理信息系统的分析与设计 一. 总体规划: 1.系统开发的背景 学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。 作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。 2.系统功能需求 学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管 理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。推行学校信息管理系统的应用是进一步推进学生管理规范化、电子化、控制辍学和提高义务教育水平的重要举措。 学生信息的内容包括: 1. 能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。 2. 能够将指定的信息从文件中删除。 3. 能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。 4. 可以统计全部学生的总成绩,及其在班上的排名。 5. 能够统计各科的平均成绩及及格率。 6. 要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。 7. 如果检索不到相应的信息应提示用户。

局域网内的多功能聊天室的设计与实现

JISHOU UNIVERSITY 专业课课程论文题目:局域网内的多功能聊天室的设计与实现 作者: 学号: 所属学院:信息科学与工程学院 专业年级: 总评分: 完成时间: 吉首大学信息科学与工程学院

局域网内的多功能聊天室的设计与实现 局域网内的多功能聊天室的设计与实现 (吉首大学信息科学与工程学院,湖南吉首 416000) 摘要 在计算机技术飞速发展的今天,随着Internet的普及和发展,人们的生活和工作也越来越离不开信息网络的支持,而聊天室是人们最常见、最直接的网上交流的方式。本论文主要研究一个以网络交友为主,为广大用户提供一个借助网络进行人际交往的信息平台。 本文所设计的局域网聊天系统是基于开放的WEB服务器应用程序开发设计的,其主要特征是能动态完成信息的传递且具有高效的交互性,有效的处理客户请求且具有更简单、更方便的数据库访问方法,易于维护和更新。这种技术程序由JAVA、HTML、数据库和脚本语言组合而成。主要功能模块包括:用户登录、注册部分;编写和显示聊天记录部分;管理员管理聊天室的管理部分。聊天系统编写和显示聊天记录部分界面友好,提供动作、表情、公聊或私聊等操作;管理部分可以删除不守规矩的注册用户、踢出在线用户以及删除某些不合时宜的聊天记录等、根据数据库需求分析,在ACCESS中定义3个表:用user表来存放注册用户信息、用activetable 表来存放当前在线用户信息以及用message表来存放聊天记录。本系统相比较其他信息交流平台具有开发方便、快捷,占用资源少,维护方便等优点。 【关键词】Java,数据库,脚本语言,聊天系

LAN of multi-function chat room design and Implementation Raotao (College of Information Science and Engineering,Jishou University,Jishou,Hunan 416000) Abstract The rapid development of computer technology today, with the popularity and development of Internet, people's work and life has become increasingly inseparable from the support of the information network, and the chat room is one of the most common, the most direct online communication mode.In this thesis, a network of friends, for the vast number of users with a network of have the aid of interpersonal information platform. The design of the LAN chat system is based on an open WEB server application development and design, its main characteristic is to complete the information transmission dynamically with high interactivity, effective customer request and has a more simple, more convenient database accessing method, easy maintenance and update.The technical program by JAVA, HTML, database and script language and combination.The main function modules include: user login, registration section; write and display chat recording part; the administrator manage the chat room management section.Chat system to prepare and display chat interface friendly, with action, expression, the public chat or operation; management can remove the unruly registered user, play online user and delete certain be inopportune or inappropriate chat records, according to the database needs analysis, defined in ACCESS 3: user table table for registered users of information, using activetable table to store the current online user information and the use of message table to store the chat record.This system is compared with other information exchange platform with the development of convenient, fast, less resource occupation, easy maintenance and other advantages. Key words:JA V A; data capture; information analysis ; Winpcap;Jpcap

学生信息管理系统毕业论文

济南铁道职业技术学院 毕业设计(论文) 题目:学生信息管理系统 系别:信息工程系 专业:计算机应用 班级:计应0233班 姓名:周广宝 教师:于静 日期:2005年4月24 前言 学生档案管理系统其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面,对于前者要求建立起数据库一致性和完整性、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 经过分析,使我们使用易于与数据库连接的Microsoft Visual Basic 6.0开发工具,利用其提供的各种面向对象的开发工具,尤其是数据库窗口这一功能强大而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原形,然后,对初始原型系统进行需求分析,不断修正和改进,直到形成用户满意的可行系统。

学生档案管理系统是每个学校教育环节不可缺少的一部分,它的内容对学校的决策者和管理者来说至关重要,所以该系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不便。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,他已进入人类社会的各个领域并发挥着越来越重要的作用。早期的校园网络、如今的web宽带网都为我们共享数据提供了前所未有的方便,由此,建立高性能的学生档案管理系统,作为计算机应用的一部分,使用计算机对学生信息管理,具有手工管理无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,这些优点能够极大的提高学生档案管理的效率,也是科学化、正规化的体现。因此,开发这样的软件系统是很必要的。 摘要 学生档案管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我们使用 MICROSOFT公司的 VISUAL BASIC6.0开发工具,以MICROSOFT SQL SERVER数据库作为系统的后台操作,利用其提供的各种面向对象的开发工具, 尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。 关键字:控件、窗体、域。 ABSTRACT The system of managing student file is a typical application of managing information system (know as MIS),which mainly includes building up data-base of back-end and developing the application interface of front-end. The former required consistency and integrality and security of data. The later should make the application powerful and easily used.

学生管理系统

2013——2014 学年第二学期 软件学院 《UML建模》综合设计实验 学生成绩管理系统的UML建模 班级 学号 姓名 任课教师 日期

目录 第1一章需求分析 (2) 1.1 系统的功能需求 (2) 1.2 用例模型 (3) 1.1.1 识别参与者 (3) 1.1.2 识别用例 (4) 1.1.3 用例的事件流描述 (4) 第2章静态结构模型 (6) 2.1 定义系统对象 (10) 2.2 定义用户界面类 (11) 2.3 建立类图 (11) 第3章动态行为模型 (13) 3.1 创建系统顺序图(协作图) (13) 3.2 创建系统的状态图 (17) 3.3 创建系统的活动图 (19) 第4章物理模型 (23) 4.1 创建系统组件图 (22) 4.2 创建系统部署图 (22) 第5章数据库模型 (22)

第1章需求分析 1.1 系统的功能需求 该学生成绩管理系统是一个面向学生,教师的用来进行对学生成绩管理的管理信息系统。 该信息系统能够为师生提供各种管理服务。 (1)学生成绩查询系统能够为一定数目的学生提供服务,每个学生都能够有唯一的账号,每一个账号包括个人的编号和个人信息,系统通过一个单独的程序为学生提供服务,不需要人员的干预,这些服务包括:查询成绩,修改自己的密码; (2)学生的成绩需要教师对其进行录入和修改,或删除,既学生不直接与系统交互,教师代其与系统进行交互,当然教师也可以进行对成绩的查询 (3)而系统管理员主要负责的是对教师或者学生的信息进行管理,并且管理员还得对本系统设置权限。或者可以通过师生的唯一账号对成绩进行查询。 对上述学生成绩管理系统的域描述进行分析,可以获得如下功能性需求: ?学生拥有唯一的个人账户及密码 ?教师对学生的成绩进行录入 ?教师查看学生的成绩 ?教学管理员可以修改教师基本信息 ?教学管理员可以修改学生基本信息 ?教学管理员可以添加教师基本信息 ?教学管理员可以添加学生基本信息 ?教学管理员可以删除教师基本信息 ?教学管理员可以删除学生基本信息 ?教学管理员对学生的成绩进行修改

相关文档
最新文档