文档库 最新最全的文档下载
当前位置:文档库 › 源程序清单

源程序清单

源程序清单
源程序清单

目录

1引言 (1)

1.1标题 (1)

1.2模块开发情况表 (1)

2模块1(标识符) (3)

2.1功能说明 (3)

2.2原代码清单(标识符) (3)

2.2.1子模块(Server) (3)

2.2.2子模块(Login) (11)

2.2.3子模块(MainWindow ) (14)

3.模块2(标识符) (23)

3.1功能说明 (23)

3.2原代码清单 (23)

3.2.1子模块1(TransInforR) (23)

3.2.2子模块2(SelectFriends) (28)

3.2.3子模块3(AddFriends) (31)

4模块3(标识符) (35)

4.1功能说明 (35)

4.2原代码清单(标识符) (35)

4.2.1子模块1(ChangeInfo) (35)

4.2.2子模块2(ChangePwd) (40)

4.2.3子模块3(Enrol) (43)

4.2.4子模块4(AddUserid) (47)

5号宋体(西文times new roman)1.5倍行距

1引言

1.1标题

软件系统名称和标识符

模块名称和标识符(如果本卷宗包含多于一个的模块,则用这组模块的功能标识代替模块名)

1.2模块开发情况表

扼要说明本模块(或本组模块)的功能,主要是输入、要求的处理、输出。可以从系统设计说明书中摘录。

(自制表格,说明模块名称和标识符、程序编制员签名、修改完成日期)

注意所有新章换页。图的要求如下:

图1-1 ××××××××

图名居中,位于图下方,两级标号:章节号-序列号。每章序号升序排列。

表的要求如下:

表1-1 ××××××××

表名居中,位于表上方,两级标号:章节号-序列号。每章序号升序排列。非异性表格的一律使用三线表。如表格换页请拆分表格后加续表表头。

全文关于图表的要求同上。

2模块1(标识符)

2.1功能说明

用与本手册2条相类似的方式介绍下一个模块的有关信息。

2.2原代码清单(标识符)

2.2.1子模块(Server)

public class Server {

public static void main(String[] args) {

ServerSocket ss = null;

Socket socket = null;

Hashtable useronlineHashtable = new Hashtable();

try {

ss = new ServerSocket(6888);

while (true) {

socket = ss.accept();

ServerThread sThread = new ServerThread(socket,

useronlineHashtable);

sThread.start();

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

ss.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

class ServerThread extends Thread {

Hashtable useronlineHashtable;

Socket socket;

String state;

String uid;

String uname;

int tcpPort, udpPort;

InputStream in = null;

OutputStream out = null;

PrintWriter outpw = null;

BufferedReader inbr = null;

Connection conn = null;

private static final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";

private static final String URL = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=E:\\im.mdb";

PreparedStatement sqlps;

ResultSet rs = null;

public ServerThread(Socket socket, Hashtable us) {

this.socket = socket;

https://www.wendangku.net/doc/8818518837.html,eronlineHashtable = us;

}

public void getConnect() {

try {

Class.forName(DRIVER);

conn = DriverManager.getConnection(URL);

} catch (SQLException e) {

e.printStackTrace();

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

public void run() {

try {

in = socket.getInputStream();

out = socket.getOutputStream();

outpw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(

out)));

inbr = new BufferedReader(new InputStreamReader(in));

userForm();

} catch (IOException e) {

e.printStackTrace();

}

}

public void userForm() {

try {

while (!socket.isClosed()) {

String t = "";

t = inbr.readLine();

if (!t.equals("")) {

if (t.equals("STA TE-CHANGE")) {// 状态改变

String msg = inbr.readLine();

state = msg;

tofriends(2);

} else if (t.equals("UNAME-CHANGE")) {// 昵称改变

String msg = inbr.readLine();

uname = msg;

tofriends(2);

} else if (t.equals("USERCLOSE")) {// 退出

useronlineHashtable.remove(uid);

state = "离线";

tofriends(2);

} else if (t.equals("ENROL")) {// 注册

enrol();

}else if (t.equals("CHANGEINFO")) {// 修改个人信息

changInfo();

} else if (t.equals("CHANGEPWD")) {// 修改密码

changPwd();

} else if (t.equals("ADDFRIENDS")) {// 添加好友

addFriends();

} else if (t.equals("SELECTFRIENDS")) {// 查询好友信息

selectFriends();

} else if (t.equals("SELECTINFO")) {// 查询个人信息

uid=inbr.readLine();

selectInfo(uid);

}

else if (t.equals("LOGIN")) {// 登录

boolean tr = login();

if (!tr) {

return;

}

tcpPort = Integer.parseInt(inbr.readLine());

udpPort = Integer.parseInt(inbr.readLine());

getfriends();

tofriends(1);

}

}

}

} catch (Exception e) {

}

}

void changInfo() throws Exception{

String newname=inbr.readLine();

String newtruename=inbr.readLine();

String newsex=inbr.readLine();

int newage=Integer.parseInt(inbr.readLine());

String newbirthday=inbr.readLine();

String newcity=inbr.readLine();

sqlps=conn.prepareStatement("update users set uname=?,urealname=?,usex=?,uage=?,ubirthday=?,ucity=? where uid=?");//获取PreparedStatement 对象

sqlps.setString(1,newname);

sqlps.setString(2,newtruename);

sqlps.setString(3,newsex);

sqlps.setInt(4,newage);

sqlps.setString(5,newbirthday);

sqlps.setString(6,newcity);

sqlps.setString(7,uid);

int i=sqlps.executeUpdate();

if (i>0) {

outpw.println("YES");

}else {

outpw.println("NO");

}

outpw.flush();

}

void selectInfo(String uid) throws SQLException{

getConnect();

sqlps = conn

.prepareStatement("select uname,urealname,usex,uage,ubirthday,ucity from users where uid = ?");

sqlps.setString(1, uid);

rs = sqlps.executeQuery();

if (rs.next()) {

String uname=rs.getString("uname");

String urelname=rs.getString("urealname");

String usex=rs.getString("usex");

String uage=rs.getString("uage");

String ubrithday=rs.getString("ubirthday");

String ucity= rs.getString("ucity");

if (uage==null) {

uage="0";

}

if (uname==null) {

uname="";

}

if (urelname==null) {

urelname="";

}

if (usex==null) {

usex="";

}

if (ubrithday==null) {

ubrithday="";

}

if (ucity==null) {

ucity="";

}

outpw.println(uname);

outpw.println(urelname);

outpw.println(usex);

outpw.println(uage);

outpw.println(ubrithday);

outpw.println(ucity);

outpw.flush();

}

}

void changPwd(){

}

void selectFriends(){

}

void addFriends(){

}

void enrol() throws Exception {

String id = null;

getConnect();

sqlps = conn.prepareStatement("select uid from users where uuser=0");

rs = sqlps.executeQuery();

while (rs.next()) {

id = rs.getString(1);

if (!id.equals("")) {

break;

}

}

if (id == null || id.equals("")) {

outpw.println("NOUIDREMAIN");//可加通知管理员添加账号

outpw.flush();

return;

}

outpw.println(id);

outpw.flush();

String name = inbr.readLine();

String truename = inbr.readLine();

String sex = inbr.readLine();

int age = Integer.parseInt(inbr.readLine());

String birthday = inbr.readLine();

String city = inbr.readLine();

sqlps = conn

.prepareStatement("update users set uname=?,urealname=?,usex=?,uage=?,ubirthday=?,ucity=?,uuser=?,password=?,umanage=? where uid=?");// 获取PreparedStatement对象

sqlps.setString(1, name);

sqlps.setString(2, truename);

sqlps.setString(3, sex);

sqlps.setInt(4, age);

sqlps.setString(5, birthday);

sqlps.setString(6, city);

sqlps.setInt(7, 1);

sqlps.setString(8, "123456");

sqlps.setInt(9, 0);

sqlps.setString(10, id);

int i = sqlps.executeUpdate();

if (i > 0)

outpw.println(id);

else

outpw.println("UPDA TEFAIL");

outpw.flush();

}

private void getfriends() throws SQLException {

sqlps = conn

.prepareStatement("select count(*) from friends where uid = ? ");

sqlps.setString(1, uid);

rs = sqlps.executeQuery();

int friendNum = 0;

String fid;

if (rs.next()) {

friendNum = rs.getInt(1);

outpw.println(friendNum);

outpw.flush();

}

if (friendNum > 0) {

sqlps = conn

.prepareStatement("select fid,uname from users,friends where friends.uid = ? and users.uid=friends.fid");

sqlps.setString(1, uid);

rs = sqlps.executeQuery();

while (rs.next()) {

fid = rs.getString(1);

outpw.println(fid);

outpw.println(rs.getString(2));

if (useronlineHashtable.containsKey(fid)) {

ServerThread sThread = (ServerThread) useronlineHashtable

.get(fid);

outpw.println(sThread.state);

outpw.println(sThread.tcpPort);

outpw.println(sThread.udpPort);

outpw.println(sThread.socket.getInetAddress()

.getHostAddress());

outpw.flush();

} else {

outpw.println("离线");

outpw.println(0);

outpw.println(0);

outpw.println("0");

outpw.flush();

}

}

}

}

private void tofriends(int i) {

try {

sqlps = conn

.prepareStatement("select uid from friends where fid = ? ");

sqlps.setString(1, uid);

rs = sqlps.executeQuery();

while (rs.next()) {

String fid = rs.getString(1);

if (useronlineHashtable.containsKey(fid)) {

ServerThread sThread = (ServerThread) useronlineHashtable

.get(fid);

if (i == 1) {

sThread.a(uid, uname, state, tcpPort, udpPort, socket

.getInetAddress().getHostAddress().toString());

} else {

sThread.b(uid, uname, state);

}

}

}

} catch (SQLException e) {

}

}

public void b(String uid, String uname, String state) {

outpw.println("ONLINESTA TE-CHANGE");

outpw.flush();

outpw.println(uid);

outpw.println(uname);

outpw.println(state);

outpw.flush();

}

public void a(String uid, String uname, String state, int t, int u,

String ip) {

outpw.println("USERONLINE");

outpw.flush();

outpw.println(uid);

outpw.println(uname);

outpw.println(state);

outpw.println(t);

outpw.println(u);

outpw.println(ip);

outpw.flush();

}

private boolean login() throws Exception {

boolean t = false;

uid = inbr.readLine().toString();

String password = inbr.readLine();

state = inbr.readLine();

getConnect();

sqlps = conn

.prepareStatement("select count(*) from users where uid = ? and password = ?");

sqlps.setString(1, uid);

sqlps.setString(2, password);

rs = sqlps.executeQuery();

if (rs.next()) {

if (rs.getInt(1) == 1) {

if (useronlineHashtable.containsKey(uid)) {

outpw.println("2");

outpw.flush();

} else {

useronlineHashtable.put(uid, this);

outpw.println("1");

outpw.flush();

t = true;

sqlps = conn

.prepareStatement("select uname ,umanage from users where uid = ? and password = ?");

sqlps.setString(1, uid);

sqlps.setString(2, password);

rs = sqlps.executeQuery();

if (rs.next()) {

uname = rs.getString(1);

int umanage=rs.getInt(2);

outpw.println(uname);

outpw.println(umanage);

outpw.flush();

}

}

} else {

outpw.println("0");

outpw.flush();

}

}

return t;

}

}

2.2.2子模块(Login)

public class Login extends JFrame implements ActionListener {

// 定义北部需要的组件

JLabel label1;

// 定义中部需要的组件

JPanel centerPanel;

JLabel label2, label3, msg;

JTextField uidTextField;

JPasswordField passwordTextField;

JComboBox stateComboBox;

// 定义南部需要的组件

JPanel southPanel;

JButton enrolButton, loginButton;

String serverIP;

int serverPort;

public void initComponent() {

// 添加北部组件

label1 = new JLabel("欢迎使用00聊天", JLabel.CENTER);

label1.setFont(new Font("黑体", Font.BOLD, 30));

this.add(label1, BorderLayout.NORTH);

// 添加中部组件

msg = new JLabel();

centerPanel = new JPanel(new GridLayout(2, 3));

label2 = new JLabel("账号:", JLabel.CENTER);

label3 = new JLabel("密码:", JLabel.CENTER);

uidTextField = new JTextField();

passwordTextField = new JPasswordField();

Object elements[] = { (Object) "在线", (Object) "隐身", (Object) "离开", (Object) "忙碌" };

stateComboBox = new JComboBox(elements);

centerPanel.add(label2);

centerPanel.add(uidTextField);

centerPanel.add(msg);

centerPanel.add(label3);

centerPanel.add(passwordTextField);

centerPanel.add(stateComboBox);

this.add(centerPanel);

// 添加南部组件

southPanel = new JPanel();

enrolButton = new JButton("注册");

enrolButton.addActionListener(this);

loginButton = new JButton("登录");

loginButton.addActionListener(this);

southPanel.add(enrolButton);

southPanel.add(loginButton);

this.add(southPanel, BorderLayout.SOUTH);

this.setV isible(true);

this.setSize(350, 175);

this.setLocation(500, 300);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public Login() {

serverIP =Client.serverIP;

serverPort =Client.serverPort;

initComponent();

}

public Login(String serverIP, int serverPort) {

this.serverIP = serverIP;

this.serverPort = serverPort;

initComponent();

}

@Override

public void actionPerformed(ActionEvent e) {

Socket socket;

try {

socket = new Socket(serverIP, serverPort);

if (e.getSource() == enrolButton) {

Enrol enrol = new Enrol(socket);

this.dispose();

} else if (e.getSource() == loginButton) {

String uid = uidTextField.getText().toString();

String password = new String(passwordTextField.getPassword());

String state = stateComboBox.getSelectedItem().toString();

if (uid.equals("") || password.equals("")) {

msg.setText("账号或密码为空!");

} else {

InputStream in = socket.getInputStream();

OutputStream out = socket.getOutputStream();

PrintWriter outpw = new PrintWriter(new BufferedWriter(

new OutputStreamWriter(out)));

BufferedReader inbr = new BufferedReader(

new InputStreamReader(in));

outpw.println("LOGIN");

out.flush();

outpw.println(uid);

outpw.println(password);

outpw.println(state);

outpw.flush();

String reback = inbr.readLine();

if (reback.equals("0")) {

msg.setText("账号或密码错误!");

return;

} else if (reback.equals("1")) {

int index = stateComboBox.getSelectedIndex();

new MainWindow(uid, index, socket);

this.dispose();

} else if (reback.equals("2")) {

msg.setText("您已经登录了!");

return;

}

}

}

} catch (IOException e1) {

e1.printStackTrace();

}

}

}

2.2.3子模块(MainWindow)

c lass Friends {

String fid;

String uname;

String msg;

int tcpPort;

int udpPort;

String ip;

Friends(String fid, String uname, String msg, int TcpPort, int UdpPort,

String ip) {

this.fid = fid;

this.uname = uname;

this.msg = msg;

this.tcpPort = TcpPort;

this.udpPort = UdpPort;

this.ip = ip;

}

}

public class MainWindow extends JFrame implements ItemListener, WindowListener, MouseListener, ActionListener {

private static final long serialV ersionUID = 1L;

JPanel centerPanel, southPanel, northPanel;

Box northBox, box1, box2, box3, box4;

JList friendsList;

JButton reBtn, seBtn, maBtn,myBtn;

JScrollPane scrollPane_table;

JTextField uidField = new JTextField(12);

JTextField unameField = new JTextField(12);

JComboBox stateComboBox = new JComboBox();

DefaultListModel model = new DefaultListModel();

Socket socket;

PrintWriter outpw = null;

BufferedReader inbr = null;

InputStream in = null;

OutputStream out = null;

String uid;

int tcpPort, udpPort;

ServerSocket ss = null;

DatagramSocket ds = null;

Hashtable friendsHashtable = new Hashtable();

Udpreceive udpreceive;

ReceiveAll tcpreceive;

void setPort() {

for (tcpPort = 8001; tcpPort < 65535; tcpPort++) {

try {

ss = new ServerSocket(tcpPort);

break;

} catch (Exception e) {

}

}

for (udpPort = 8001; udpPort < 65535; udpPort++) {

try {

ds = new DatagramSocket(udpPort);

break;

} catch (SocketException e) {

}

}

}

public MainWindow(String uid, int index, Socket s) {

initComponent();

this.socket = s;

this.uid=uid;

this.addWindowListener(this);

try {

in = socket.getInputStream();

out = socket.getOutputStream();

outpw = new PrintWriter(new BufferedWriter(new OutputStreamWriter( out)));

inbr = new BufferedReader(new InputStreamReader(in));

uidField.setText(uid);

stateComboBox.setSelectedIndex(index);

unameField.setText(inbr.readLine());

String umanage=inbr.readLine();

if (!umanage.equals("1")) {

maBtn.setVisible(false);

}

setPort();

if (ss == null) {

tcpPort = 7888;

ss = new ServerSocket(tcpPort);

}

if (ds == null) {

udpPort = 5888;

ds = new DatagramSocket(udpPort);

}

outpw.println(tcpPort);

outpw.println(udpPort);

outpw.flush();

setfriends();

new useThread().start();

udpreceive = new Udpreceive(ds, this);

udpreceive.start();

tcpreceive=new ReceiveAll(ss, this);

tcpreceive.start();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public MainWindow() {

}

public void setfriends() throws IOException {

int friendNum = Integer.parseInt(inbr.readLine());

if (friendNum > 0) {

for (int i = 0; i < friendNum; i++) {

String fidString = inbr.readLine();

String unameString = inbr.readLine();

String stateString = inbr.readLine();

int tcpPort = Integer.parseInt(inbr.readLine());

int udpPort = Integer.parseInt(inbr.readLine());

String ip = inbr.readLine();

if (stateString.equals("隐身")) {

stateString = "离线";

}

String msg = unameString + " (" + fidString + ") 状态:"

+ stateString;

model.addElement(msg);

Friends friends = new Friends(fidString, unameString, msg,

tcpPort, udpPort, ip);

friendsHashtable.put(fidString, friends);

}

}

}

void initComponent() {

this.setTitle("OO");

// north

box1 = Box.createV erticalBox();// 垂直支撑

box1.add(new JLabel("昵称:"));

box1.add(Box.createV erticalStrut(14));

box1.add(new JLabel("号码:"));

box2 = Box.createV erticalBox();

unameField.setEditable(false);

box2.add(unameField);

box2.add(Box.createV erticalStrut(8));

uidField.setEditable(false);

box2.add(uidField);

box3 = Box.createV erticalBox();

box3.add(Box.createV erticalStrut(8));

box3.add(new JLabel(" 个人状态:"));

box3.add(Box.createV erticalStrut(11));

myBtn=new JButton("个人信息");

box3.add(myBtn);

myBtn.addActionListener(this);

box4 = Box.createV erticalBox();

Object elements[] = { (Object) "在线", (Object) "隐身", (Object) "离开", (Object) "忙碌" };

stateComboBox = new JComboBox(elements);

stateComboBox.addItemListener(this);

box4.add(stateComboBox);

box4.add(Box.createV erticalStrut(8));

box4.add(new JLabel(" "));

northBox = Box.createHorizontalBox();// 水平支撑

northBox.add(box1);

northBox.add(Box.createHorizontalStrut(10));

northBox.add(box2);

northBox.add(Box.createHorizontalStrut(10));

northBox.add(box3);

northBox.add(Box.createHorizontalStrut(10));

northBox.add(box4);

northPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 28, 8)); northPanel.add(northBox);

add(northPanel, BorderLayout.NORTH);

setBounds(450, 50, 430, 580);

setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

friendsList = new JList(model);

friendsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); friendsList.addMouseListener(this);

scrollPane_table = new JScrollPane(friendsList,

ScrollPaneConstants.VERTICAL_SCROLLBAR_ALW AYS,

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); centerPanel = new JPanel(new BorderLayout(80, 80));

centerPanel.add(scrollPane_table);

add(centerPanel);

southPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 28, 8));

reBtn = new JButton("添加好友");

maBtn = new JButton("管理信息");

seBtn = new JButton("查看好友信息");

reBtn.addActionListener(this);

maBtn.addActionListener(this);

seBtn.addActionListener(this);

southPanel.add(reBtn);

southPanel.add(maBtn);

southPanel.add(seBtn);

add(southPanel, BorderLayout.SOUTH);

add(new Label(), BorderLayout.EAST);

add(new Label(), BorderLayout.WEST);

}

@Override

public void itemStateChanged(ItemEvent e) {

if (e.getStateChange() == ItemEvent.SELECTED) {

outpw.println("STA TE-CHANGE");

outpw.flush();

outpw.println(stateComboBox.getSelectedItem().toString());

outpw.flush();

}

}

void changeUname(){

outpw.println("UNAME-CHANGE");

outpw.flush();

outpw.println(unameField.getText());

outpw.flush();

}

class useThread extends Thread {

public void run() {

while (!socket.isClosed()) {

try {

String t = inbr.readLine();

if (!t.equals("")) {

if (t.equals("USERONLINE")) {

synchronized (this) {

String fidString = inbr.readLine();

String unameString = inbr.readLine();

String stateString = inbr.readLine();

int tcpPort = Integer.parseInt(inbr.readLine());

int udpPort = Integer.parseInt(inbr.readLine());

String ip = inbr.readLine();

if (stateString.equals("隐身")) {

stateString = "离线";

}

String msg = unameString + " (" + fidString

+ ") 状态:" + stateString;

String msg0 = unameString + " (" + fidString

+ ") 状态:" + "离线";

Friends friends = new Friends(fidString,

unameString, msg, tcpPort, udpPort, ip);

friendsHashtable.put(fidString, friends);

if (model.contains(msg0)) {

int index = model.indexOf(msg0);

model.set(index, msg);

}

}

}

else if (t.equals("ONLINESTA TE-CHANGE")) {

synchronized (this) {

String fidString = inbr.readLine();

String unameString = inbr.readLine();

String stateString = inbr.readLine();

String state = stateString;

if (stateString.equals("隐身")) {

state = "离线";

}

String msg = unameString + " (" + fidString

+ ") 状态:" + state;

Friends friends = (Friends) friendsHashtable

.get(fidString);

if (stateString.equals("离线")) {

friends.tcpPort = 0;

friends.udpPort = 0;

friends.ip = "0";

}

if (model.contains(friends.msg)) {

int index = model.indexOf(friends.msg);

friends.msg = msg;

friends.uname = unameString;

model.set(index, msg);

}

friendsHashtable.put(fidString, friends);

}

}

}

} catch (Exception ex) {

}

系统执行软件源程序代码

系统执行软件源程序代 码 Company Document number:WUUT-WUUY-WBBGB-BWYTT-1982GT

附录一系统执行软件源程序代码一、系统多机通信从机源程序代码 ** *Lu Bo* ------------------------------------------------------------------------------------------------------------------------------------- ORG 0000H SJMP MAIN ORG 0023H ;串行口中断入口 SJMP SJCS ------------------主程序---------------------------------------------------------------------------------------------------------- MAIN: SLAVE EQU 12 DK EQU MOV SCON,#0B0H MOV TMOD,#20H MOV TL1,#0FDH MOV TH1,#0FDH MOV IE,#90H SETB TR1 LCALL WDCJ SETB RS1 CLR RS0 LCALL BCDZH LCALL DISPLAY CLR RS1 CLR RS0 SJMP MAIN ------------------串行口中断服务子程序---------------------------------------------------------------------------------- SJCS: CLR RI PUSH A PUSH PSW MOV A,SBUF XRL A,#SLAVE JZ SJCS0 SJCS1: SETB SM2 POP PSW POP A RETI

项目立项报告模板—新版

项目开发立项报告

目录 1.项目分析 (3) 1.1项目内容 (3) 1.1.1客户需求概述 (3) 1.1.2参考文献 (3) 1.1.3术语 (3) 1.1.4项目工作内容概述 (3) 1.2合同分析 (3) 2.项目组构成 (3) 2.1我方人员 (3) 2.2客户方人员 (4) 2.3委托开发方人员 (4) 3.项目验收交付 (4) 3.1验收交付内容 (4) 3.2项目积累 (4) 4.项目实施计划 (4) 5.预算 (5) 6.项目管理制度 (5) 6.1项目组内外部沟通制度 (5) 6.2系统安全管理制度 (5) 7.参考资料 (5)

1.项目分析 1.1项目内容 1.1.1客户需求概述 (客户需求概述介绍客户的背景、对系统的定位、客户的关注点和期望;介绍客户目前得系统状况。) 1.1.2参考文献 (如有参考文献,列出用参考资料,如:合同、标书、参考资料。) 1.1.3术语 (如有列出本文件中用到的专门术语的定义和外文的首字母组词的原词组。) 1.1.4项目工作内容概述 (简要地说明在本项目的开发中须进行的各项主要工作[重点描述]。) 1.2合同分析 (介绍公司对项目的期望,项目经理对合同的理解[包括合同的总金额,回款点,合同采购等]以及项目的实施策略、风险分析及相应对策。) 2.项目组构成 2.1我方人员 (扼要说明参加本项目开发的主要人员的情况,包括他们的技术水平。)

2.2客户方人员 2.3委托开发方人员 3.项目验收交付 3.1验收交付内容 (包括给客户的程序、文件和需要向客户提供的服务。 列出须移交给用户的程序的名称、所用地编程语言及存储程序的媒体形式,并通过引用相关文件,逐项说明其功能和能力。 列出须移交用户的每种文件的名称及内容要点。) 3.2项目积累 (说明在项目开发中可供产品积累所开发的模块或功能的名称和简述。) 4.项目实施计划 (以excel文件或project文件做好的计划表粘贴此处即可。此实施计划要求包括: 对于项目开发中需要完成的各项工作,从项目启动、需求分析、设计、实现、测试、验收直到维护,按层次进行分解,指明每项任务的负责人和参加人员。对每项工作任务给出明确的计划开始日期、完成日期及工作地点,规定各项工作任务完成的先后顺序以及表征每项工作任务完成的标志性事件(即所谓“里程碑)及相关的文档(可参考后面《项目过程文档清单》)。 要求“任务的里程碑”应包含合同的回款点,并加以注明合同的每个阶段点的回款金额。)

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

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

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

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

软件著作权-源代码范本

软件著作权-源代码范本 注意事项:常见的源代码包含:C语言,VB,C++,JAVA,.NET等。 提交的代码必须是源代码的开头载入程序,第30页必须断开,第60页是软 件的程序结尾,代码中不得出现与申请表内容不符合的日期,著作权人,软件名 字等,不能出现开源代码,不能出现任何版权纠纷。 格式要求:一、源代码应提交前、后各连续30页,不足60页的,应当全部提交。 、源代码页眉应标注软件的名称和版本号,应当与申请表中名称完全一致,页 眉右上应标注页码,源代码每页不少于50行。 范例如下: #i nclude #in elude #i nclude #in elude

#in elude #i nclude #i nclude #i nclude #i nclude #in clude #in clude #in clude #in clude #in clude #in clude #in clude #in clude #in clude #in clude #defi ne NS_MAIN 1 #i nclude #en dif #ifdef DLZ #in clude #en dif static tybs_boolean_t wan t_stats = TYBS_FALSE; static char static char static char static char static un sig ned program_ name[TYBS_DIR_NAMEMAX] = "n amed"; absolute_co nffile[TYBS_DIR_PATHMAX]; saved_comma nd_li ne[512]; versio n[512]; maxsocks = 0; n s_ma in _earlywar nin g(c onst char *format, ...) { va_list args; va_start(args, format); if (ns_g」ctx != NULL) { tybs_log_vwrite( ns_g」ctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN, TYBS_LOG_W ARNING, format, args); } else { fprin tf(stderr, "%s: ", program_ name); vfprin tf(stderr, format, args); fprin tf(stderr, "\n"); fflush(stderr); } va_e nd(args); } Void n s_ma in _earlyfatal(c onst char *format, ...) { va_list args; va_start(args, format); if (ns_g」ctx != NULL) { tybs_log_vwrite( ns_g」ctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL, format, args); tybs_log_write( ns_g」ctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_MAIN, TYBS_LOG_CRITICAL, "exit ing (due to early fatal error)"); } else { fprin tf(stderr, "%s: ", program, name); vfprin tf(stderr, format, args); fprin tf(stderr, "\n"); fflush(stderr); } va_e nd(args); exit(1); } static void assert ion _failed(c onst char *file, in t li ne, tybs_assert ion type_t type, const char *cond)

c语言课程设计报告及其源代码

西安郵電學院 C语言课程设计报告书 系部名称通信工程系 学生姓名王子源 专业名称通信工程专业 班级通工0901班 学号03091001 指导教师衡霞 2010年06月07日至 时间 2010年06月18日

实验题目学生宿舍管理系统 一、实验目的 通过进行计算机实践,更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧。利用系统提供的标准函数和自定义函数进行程序设计,培养利用C语言设计综合程序的能力。 二、实验内容 在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。进一步掌握各种函数的应用。 三、需求分析 本学生信息管理系统包含输入记录,显示记录,按房间号排序并显示,按学号排序并显示,插入一条记录按学号排序并显示,按姓名查找,删除一条记录,查找并显示一个记录,查找并修改一个记录,从文件中读入数据,循环写入数据等功能. 需求分析: 输入记录(Input) 显示记录(Display) 按房间号排序并显示(Sort_by_roomnum) 按学号排序并显示(Sort_by_num) 插入一条记录按学号排序并显示(Insert_a_record) 按姓名查找,删除一条记录(Delete_a_record) 查找并显示一个记录(Query_a_record) 查找并修改一个记录(Change_a_record) 从文件中读入数据(AddfromText) 循环写入数据(WritetoText)

单片机程序源代码

第二章 任务一:闪烁广告灯的设计 利用89C51单片机的端口控制两个LED ( DO和D1 ),编写程序,实现两个LED互闪。 #include #define uint unsigned int #define uChar unsigned Char sbit LED仁POP; sbit LED2=P0A1; void delayms(uint ms) { uint i; while(ms--) { for(i=O;i<12O;i++); } } void main() { while(1) { LED1=O; LED2=1; delayms(5OO); LED1=1; LED2=O; delayms(5OO); } } 任务二:流水广告灯的设计 利用89c51单片机的端口控制8个LED( D0~D7 )循环点亮,刚开始时DO点亮,延时片刻后,接着D1 点亮,然后依次点亮D2->D3->D4->D5 ->D6->D7 ,然后再点亮D7->D6->D5->D4 ->D3->D2->D1->DO ,重复循环。 #include #include #define uint unsigned int #define uchar unsigned char uint i; uchar temp; uint a[8]={Oxfe,Oxfd,Oxfb,Oxf7,Oxef,Oxdf,Oxbf,Ox7f}; void delayms(uint ms) { while(ms--) { uint j; for(j=0;j<120;j++); } }

图书馆管理系统源代码

源程序清单 1、文件名 login(login.frm) 功能说明:整个系统的登陆界面,需要输入用户名和登陆密码才能进入到系统中,进行借阅等操作。 源代码: Option Explicit Dim cnt As Integer Private Sub Command1_Click() Dim sql As String Dim rs_login As New ADODB.Recordset If Trim(Combo1.Text) = "" Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else sql = "select * from 系统管理 where 用户名='" & Combo1.Text & "'" rs_login.Open sql, conn, adOpenKeyset, adLockPessimistic If rs_login.EOF = True Then MsgBox "没有这个用户", vbOKOnly + vbExclamation, "" Combo1.SetFocus Else If Trim(rs_login.Fields(1)) = Trim(txtpwd.Text) Then userID = Combo1.Text rs_login.Close Unload Me form1.Show Else MsgBox "密码不正确", vbOKOnly + vbExclamation, "" txtpwd.SetFocus End If

End If cnt = cnt + 1 If cnt = 3 Then Unload Me End If Exit Sub End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Form_Load() Dim connectionstring As String connectionstring = "provider=Microsoft.Jet.oledb.4.0;" & _ "data source=book.mdb" conn.Open connectionstring cnt = 0 End Sub Private Sub txtuser_Change() End Sub 2、文件名 form1(form1.frm) 功能说明:整个系统的主界面,其中包括图书管理、读者管理、图书借阅管理、系统管理、关于,以及在这下面的子菜单。 源代码: Private Sub add_admin_Click() frmadduser.Show End Sub Private Sub add_back_book_Click() frmbackbookinfo.Show

源代码安全管理制度

源代码安全管理制度-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

源代码安全管理制度 1 总则 1.1.为有效控制管理源代码的完整性,确保其不被非授权获取、复制、传播和更改,明确源代 码控制管理流程,特制定此管理制度(以下简称制度)。 1.2.本办法所指源代码包括开发人员自行编写实现功能的程序代码,相应的开发设计文档及相 关资料,属于明确注明的商业秘密,须纳入源代码管理体系。 1.3.本制度适用于所有涉及接触源代码的各岗位,所涉及人员都必须严格执行本管理办法。1.4.所有人员入职均需签订保密协议,明确保密义务,了解包含此制度在内的各项保密规定并 严格执行。 1.5.重点保护的关键模块包括:敏感信息的模块,如加解密算法等。基本逻辑模块,如如数 据库操作基本类库。对关键模块,采取程序集强命名、混淆、加密、权限控制等各种有效方法进行保护。 2 源代码完整性保障 2.1.所有软件的源代码文件及相应的开发设计文档均必须及时加入到指定的源代码服务器中的 指定SVN库中。 2.2.我们研发的产品软件运行所必须的第三方软件、控件和其它支撑库等文件也必须及时加入 源代码服务器中指定的SVN库中。 2.3.软件开始编写或者调整代码之前,其相应的设计文档必须签入SVN库。软件编码或功能调 整结束提交技术支撑部测试验证之前,相应的源代码必须签入SVN库。 2.4.第八条技术支撑部门对代码的测试时必须从源代码服务器上的SVN库中获取代码,包括 必须的第三方软件、控件和其它支撑库等文件,然后进行集成编译测试。 3 源代码的授权访问 3.1.源代码服务器对于共享的SVN库的访问建立操作系统级的,基于身份和口令的访问授权。 3.2.在SVN库中设置用户,并为不同用户分配不同的,适合工作的最小访问权限。 3.3.要求连接SVN库时必须校验SVN中用户身份及其口令。在SVN库中要求区别对待不同用户 的可访问权、可创建权、可编辑权、可删除权、可销毁权。严格控制用户的读写权限,应以最低权限为原则分配权限;开发人员不再需要对相关信息系统源代码做更新时,须及时删除账号 3.4.工作任务变化后要实时回收用户的相关权限,对SVN库的管理要求建立专人管理制度专人 专管。每个普通用户切实保证自己的用户身份和口令不泄露。用户要经常更换自己在VSS 库中账号的口令。 3.5.涉及、接触源代码的计算机必须建立专人专用制度,任何其他人不得在未获得研发部经理 授权的情况下操作和使用此计算机。此计算机的专用人也不得私自同意或者漠视他人非获得授权使用本计算机。对涉及、触及源代码计算机的使用授权仅由研发部经理发出,其他人都无权执行此授权。 3.6.曾经涉及、触及源代码的计算机在转作它用,或者离开研发部门之前必须由网络管理人员 全面清除计算机硬盘中存储的源代码。如果不能确定,必须对计算机中所有硬盘进行全面格式化后方可以转做它用或离开研发部门。

软件开发资料文档材料模板

软件开发文档模板库 最近设计开发文档的编写,网上查找的时候感觉很不便捷,现整摘要出软件开发过程中的一些文档模板,希望能给朋友们提供便捷的查找,方便大家的使用。 1可行性研究报告 可行性研究报告的编写目的是:说明该软件开发项目的实现在技术、经济和社会条件方面的可行性;评述为了合理地达到开发目标而可能先择的各种方案;说明论证所选定的方案。 可行性研究报告的编写内容要求如下: 1.1引言 1.1.1编写目的 1.1.2背景 1.1.3定义 1.1.4参考资料 1.2可行性研究的前提 1.2.1要求 1.2.2目标 1.2.3条件、假定和限制 1.2.4进行可行性研究的方法 1.2.5评价尺度 1.3对现有系统的分析 1.3.1数据流程和处理流程 1.3.2工作负荷 1.3.3费用开支 1.3.4人员 1.3.5设备 1.3.6局限性 1.4所建议的系统 1.4.1对所建议系统的说明 1.4.2数据流程各处理流程 1.4.3改进之处 1.4.4影响 1.4.4.1对象设备的影响 1.4.4.2对软件的影响 1.4.4.3对用户单位机构的影响 1.4.4.4对系统动行的影响 1.4.4.5对开发的影响 1.4.4.6对地点和设施的影响 1.4.4.7对经费开支的影响

1.4.5局限性 1.4.6技术条件方面的可行性 1.5可选择其他系统方案 1.5.1可选择的系统方案1 1.5.2可选择的系统方案2 …… 1.6投资及收益分析 1.6.1支出 1.6.1.1基本建设投资 1.6.1.2其他一次性支出 1.6.1.3非一次性支出 1.6.2收益 1.6. 2.1一次性收益 1.6. 2.2非一次性收益 1.6. 2.3不可定量的收益 1.6.3收益/投资比 1.6.4投资回收周期 1.6.5敏感性分析 1.7社会条件方面的可行性 1.7.1法律方面的可行性 1.7.2使用方面的可行性 1.8结论 2项目开发计划 编制项目开发计划的目的是用文件的形式,把对于在开发过程中各项工作的负责人员、开发进度所需经费预算、所需软、硬件条件等问题作出安排记载下来,以便根据本计划开展和检查本项目的开发工作。编制内容要求如下: 2.1引言 2.1.1编写目的 2.1.2背景 2.1.3定义 2.1.4参考资料 2.2项目概述 2.2.1工作内容 2.2.2主要参加人员 2.2.3产品及成果 2.2. 3.1程序

Matlab源程序代码

正弦波的源程序: (一),用到的函数 1,f2t函数 function x=f2t(X) global dt df t f T N %x=f2t(X) %x为时域的取样值矢量 %X为x的傅氏变换 %X与x长度相同并为2的整幂 %本函数需要一个全局变量dt(时域取样间隔) X=[X(N/2+1:N),X(1:N/2)]; x=ifft(X)/dt; end 2,t2f函数。 function X=t2f(x) global dt df N t f T %X=t2f(x) %x为时域的取样值矢量 %X为x的傅氏变换 %X与x长度相同,并为2的整幂。 %本函数需要一个全局变量dt(时域取样间隔) H=fft(x); X=[H(N/2+1:N),H(1:N/2)]*dt; end (二),主程序。 1,%(1)绘出正弦信号波形及频谱 global dt df t f N close all k=input('取样点数=2^k, k取10左右'); if isempty(k), k=10; end f0=input('f0=取1(kz)左右'); if isempty(f0), f0=1; end N=2^k; dt=0.01; %ms df=1/(N*dt); %KHz T=N*dt; %截短时间

Bs=N*df/2; %系统带宽 f=[-Bs+df/2:df:Bs]; %频域横坐标 t=[-T/2+dt/2:dt:T/2]; %时域横坐标 s=sin(2*pi*f0*t); %输入的正弦信号 S=t2f(s); %S是s的傅氏变换 a=f2t(S); %a是S的傅氏反变换 a=real(a); as=abs(S); subplot(2,1,1) %输出的频谱 plot(f,as,'b'); grid axis([-2*f0,+2*f0,min(as),max(as)]) xlabel('f (KHz)') ylabel('|S(f)| (V/KHz)') %figure(2) subplot(2,1,2) plot(t,a,'black') %输出信号波形画图grid axis([-2/f0,+2/f0,-1.5,1.5]) xlabel('t(ms)') ylabel('a(t)(V)') gtext('频谱图') 最佳基带系统的源程序: (一),用到的函数 f2t函数和t2f函数。代码>> (二),主程序 globaldt t f df N T close all clear Eb_N0 Pe k=input('取样点数=2^k, k取13左右'); if isempty(k), k=13; end z=input('每个信号取样点数=2^z, z

查字典项目的源代码

#include <> #include <> #include <> #define BUF_SIZE 4096 typedef struct { char *key; int num; char **trans; }word_t; void sys_err(const char *msg) { perror(msg); exit(1); } int word_num(const char *filename) { FILE *fp; char buf[BUF_SIZE]; int total = 0; fp = fopen(filename, "r"); if(fp == NULL) sys_err("open file\n"); while((fgets(buf, BUF_SIZE, fp)) != NULL) { if(buf[0] == '#') total++; } fclose(fp); return total; } int nword(const char *filename) { FILE *fp; char buf[BUF_SIZE]; int total = 0; fp = fopen(filename, "r+"); if(fp == NULL) sys_err("open file\n"); while((fgets(buf, BUF_SIZE, fp)) != NULL) { if(buf[0] == '#') total++; }

fclose(fp); return total; } word_t *init_word(int total, const char *filename)ey, str) == 0) { print(dict+i); break; } } if(i == n_word) { char ch[32]; printf("This is a new word. can't find in %s.\nDo you want to save it in your word-library ? ( y or n)", filename); fgets(ch, 32, stdin); ch[strlen(ch)-1] = '\0'; while(1) { if(strcmp(ch, "y") == 0) { insert_new_word(filename); break; } else if(strcmp(ch, "n") == 0) break; else printf("Undefind command : \"%s\".\nPlease input your choice again :(y or n) ", ch); } } } void print_sys(void) { printf("---------------------------------\n"); printf("* *\n"); printf("* *\n"); printf("* *\n"); printf("* *\n"); printf("* *\n"); printf("* 欢迎使用电子辞典 *\n"); printf("* *\n"); printf("* *\n"); printf("* *\n"); printf("* *\n");

源程序清单流程图(1)

1、程序说明 输入两个8位数据A和B,求|A-B|,结果放在内存中,并输出结果。 2、调试说明 ①在进行循环程序设计时,要注意循环初始化、内外层循环的控制、循环结束条件等的设置对整个程序的执行逻辑要非常清楚。这样可以避免死循环等意外情况的出现。 ②分支程序的控制很重要,编写代码时,要注意注释重要的分支控制部分。这样思路才不会乱。同时要对照流程图,随时观察代码的逻辑思路是否正确。 3、源程序清单和流程图,附执行结果截图。 源程序清单 DA TA SEGMENT DB 'X:$','H',0AH,0DH,'Y:$','H',0AH,0DH,'|X-Y|:$' X DB 0 Y DB 0 Z DB 0 DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START: MOV AX,DA TA MOV DS,AX MOV DX,0 MOV AH,09H INT 21H CALL INPUT MOV X,BL ADD DX,3 MOV AH,09H INT 21H CALL INPUT MOV Y,BL MOV AL,X MOV BL,Y SUB AL,BL MOV Z,AL JC _OUT JMP NEXT _OUT: SUB BL,X MOV Z,BL NEXT: ADD DX,6 MOV AH,09H INT 21H MOV CH,02H LOP: MOV BL,Z CMP CH,02H JB LOP1 ACII码转化为数据 ACII码转化为数据 X-Y>0? Z=Y-X Z=X-Y 数据转化为ACII码 输出Z 结束 存入Y 存入X 开始 否 是 调用子程序 调用子程序 返回 返回 主程序流程图

Java课程设计报告记事本源代码有流程图

Java课程设计报告 题目:简单记事本程序的设计年级专业:计算机科学与技术 学号: 学生姓名: 指导老师: 完成时间:2010年 6月 8 日

目录 摘要 (1) 前言 (2) 1需求分析 (2) 1.1需求分析 (2) 1.2功能设计 (3) 2.概要设计 (3) 2.1程序设计思路 (3) 2.2程序运行界面 (3) 2.3模块说明图 (4) 2.4程序流程图 (5) 2.5程序相关说明 (6) 3.程序详细设计与分析 (6) 3.1.初始化组件 (6) 3.2.构建菜单栏及其下拉菜单 (6) 3.3.“文件”菜单的事件监听 (7) 3.4.“编辑”菜单的事件监听 (8) 3.5.异常处理 (9) 4.测试分析 (10) 5.源程序清单.............................................................................................. 错误!未定义书签。6.课程设计总结.. (17) 参考文献 (17)

简单记事本程序的设计 前言 Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。 1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。 在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的JCreator开发工具。 2.3模块说明图 在图1中,首先创建一个名为mynotepad的类并继承JFrame类作为最底层的容器。

软件源代码转让合同

软件源代码转让合同 转让人(甲方): 法定住址: 法定代表人: 受让人(乙方): 法定住址: 法定代表人: 甲、乙双方本着平等自愿、真诚合作的原则,经双方友好协商,依据《中华人民共和国知识产权法》和《计算机软件保护条例》以及其他有关法律、法规的规定,就甲方向乙方转让_______________软件及源代码事宜达成如下协议,一起共同遵守。 第一条产品的名称 甲方将其享有知识产权的软件及源代码之全部知识产权利永久转让给乙方。转让软件及附属物品内容包括: 。 第二条转让权利种类 1.甲方向乙方转让全部地域范围内的全部知识产权; 第三条转让价金、交付转让日期 1.甲方无偿将软件知识产权转让乙方。 2.转让日期:合同签订5个工作日内。 第四条甲方权利与义务 1. 甲方应按本合同约定向乙方转让_______________软件产品、软件开发平台及全部的 源代码,并保证代码的完整性,可直接编译为应用程序正常使用。 2. 自本合同签订之日起,自乙方交接完毕之日起,乙方享有该转让软件及源代码的一 切知识产权。 3. 甲方向乙方提供《软件系统设计及使用说明书》,及全部的相关文档。 第五条乙方权利与义务 1. 自签订本协议之日起,乙方拥有该软件的著作权; 2. 乙方有权对此软件或源代码做出任意修改,并有权自由处置该软件或源代码。 第六条违约责任 1.如任何一方违反本合同约定给对方造成损失,守约方均可以要求对方承担违约责任; 2.如甲方侵害他人知识产权或违背现行各项法律或国家政策时,由甲方自行承担赔偿责任,与乙方无关;转让软件或源代码因此被有关机关扣留、没收,或禁止发行、使用的,甲方应赔偿乙方遭受的全部损失。 第七条保证条款 1.甲方保证拥有本产品的知识产权。并且此转让行为不侵犯任何第三方的合法权益。若甲方违反本条内容,则甲方构成违约,乙方有权解除合同,并有权要求甲方赔偿损失。 2.甲方保证所转让的软件产品符合中华人民共和国有关法律、法规规定及所附文档的功能说明。

大学C++课程设计报告--学生成绩管理系统(附源代码)

广东海洋大学课程设计报告 课程名称:C/C++语言程序设计 课程编号:@@ 学生姓名:陈@@ 学生班级:信管1071 学号: 实习地点:科技楼 起止时间:2008.12.29-2009.01.02 指导教师:@@

一、目的与要求 通过本课程设计的实践,全面总结C++课程学习中的的数据类型、程序结构、数组、函数、指针、结构体、链表等基本概念,掌握其使用方法。掌握面向对象程序设计中有关类、对象、继承、重载、多态性、输入输出流类体系、文件操作的基本概念,初步学会用类与对象这种面向对象的程序设计方法编写应用程序。培养使用面向对象的程序设计方法编写计算机程序的能力。 通过设计一个《学生成绩统计管理》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。程序设计是一门实践性很强的课程,必须十分重视实践环节。许多实际的知识不是靠听课和看书学到的,而是通过长时间的实践积累的。 二、设计内容 学生成绩管理系统 1.基本功能: a)成绩的输入(学号、姓名、英语、数学、C++语言…); b)成绩统计(各科平均成绩、各科成绩“优秀”、“良好”、“中等”、“及 格”、“不及格”的人数及其所占比例); c)总成绩统计(学生的总成绩、平均成绩及成绩排名) d)成绩的统计结果显示。 2.扩展功能: a)学生数据的添加、修改、与删除 b)学生数据的读取与存储 3.设计要求

a)采用面向对象的思想和方法完成设计,最好能够基于windows图形界面。 b)至少设计四个类;学生类(描述学生基本信息);成绩类:班级类;课程类(描述课程信息:课程编号,科目名称(如高等数学,大学英语等);学生成绩及课程信息用文件保存,每个类一个文件,程序执行时从文件读入。 三、过程与结果 主要内容如下: 1.关键类的设计,继承层次关系,代码: 首先,创建了一个student类.在student类的共有部分声明程序所需函数;然后就是student类的函数实现部分,其中定义student类的带参数及不带参数构造函数;再是常用函数的调用,并定义系统菜单函数及其界面;最后就是主函数文件。 Student类的声明如下: 主要功能函数的设计: 1.关于计算总成绩和平均成绩以及评定成绩等级的函数,而用于成绩统计中优秀、良好、中等、及格、不及格的计算,不过为便于表达,此程序采用字母A,B,C,D,E来分别表达上述

全球10大开放源代码项目

全球10大开放源代码项目 下面是https://www.wendangku.net/doc/8818518837.html, 评选出的10大开放源代码项目。我打赌你们当中的绝大多数人对这些软件都并不陌生,也许曾经使用过,也许现在正在使用。噢,老天!请不要告诉我你从来都没有听说过这些软件,如果是这样的话,我强烈建议你马上下载其中的一些自己感兴趣的软件,感受一下开放源代码软件所具有的巨大魅力。感谢所有在这些开放源代码项目幕后默默奉献的人们。 不过在正式开始之前,让我们先了解一下有关与开放源代码运动的一些背景知识。 目录 ??背景知识 ??第10名:eMule ??第9名:Audacity ??第8名:知识共享协议 ??第7名:Ogg ??第6名:PHP ??第5名:Wiki ??第4名:Azureus ??第3名:https://www.wendangku.net/doc/8818518837.html, ??第2名:Linux ??第1名:Firefox ??后记:一些没有上榜,但依然值得一提的开源项目! 背景知识 一、什么是开放源代码(open source)? 开放源代码标识 开放源码软件(open source)是现在IT世界中最热门的词语之一。开放源代码促进会(Open Source Initiative,OSI)将其定义为“自身源代码可以被公众使用的软件;并且此软件的使用,修改和分发也不受许可证的限制”。 值得注意的是,开放源码软件通常是有版权(copyright)的。开放源码软件的许可证可能包含这样一些限制: 必须保护软件的开放源码状态;标明软件制作者的身份;或者对有关的开发行为进行限制。 开放源码软件主要被散布在全世界的数目庞大的软件开发者队伍所开发和维护,但是同时一些大学,政府机构承包商,协会和商业公司也开发它。开放源码软件在历史上曾经与UNIX,Internet联系的非常紧密。在这些系统中许多不同的硬件需要支持,而且源代码的分发是实现交叉平台可移植性的唯一实际可行的办法。 开放源代码(open source)不仅仅指开放源代码软件,它同时也是一种软件开放模式的名称。开放源代码开放模式的名字及其特点最早是由美国著名电脑黑客“埃里克·雷蒙(Eric Raymond)”在他的著作《大教堂与市集(The Cathedral and the Bazaar)》等一系列论文集中提

测试计划清单实用模板(完整版)

实用标准文案 XXXX测试计划 XXXX年XX月XX日

目录 第一章总论 (1) 1.1项目背景 (1) 1.2文档目的 (1) 1.3测试环境 (2) 第二章测试策略 (4) 2.1整体策略 (4) 2.2测试范围 (7) 2.3风险分析 (9) 第三章测试方法 (10) 3.1里程碑技术 (10) 3.2测试用例设计 (10) 3.3测试实施过程 (11) 3.4测试方法综述 (11) 3.5测试团队结构 (11) 3.6功能划分 (12) 第四章资源需求 (13) 4.1培训需求 (13) 4.2硬件需求 (13) 4.3软件需求 (13) 4.4相关信息保存的位置 (14) 第五章时间进度安排 (15) 第六章测试过程管理 (16) 6.1缺陷处理过程 (16) 6.2测试报告 (17)

第一章总论 1.1 项目背景 本平台主要是面向有数据分析需求的业务人员,帮助他们进行自主数据分析工作,从而摆脱之前传统的提数据需求到科技部门,科技部门手工取数后再返回给业务人员的模式,极大提高了业务人员数据获取的时效性,也避免了业务需求在流转时的业务含义偏差。而且Tableau通过简单的拖拽操作、主流的数据分析算法和常用的挖掘算法、丰富的可视化展现效果,能够直观、迅速的帮助业务人员进行数据展现及其后续数据分析。 本项目分为统一数据门户建设、数据集市建设、历史交易数据查询、ALM项目报表开发四部分任务。按测试任务分为数据集市测试、数据展现测试、统一数据门户平台测试三部分。 1.2 文档目的 本测试计划主要有两类受众:测试管理人员(项目经理、客户指派人员)和测试人员。 ◆项目经理根据该测试计划制定进一步的计划、安排(工作任务分配、时 间进度安排)和控制测试过程; ◆客户指派人员通过该测试计划了解测试过程和相关信息。 ◆测试人员根据该测试计划中制定的范围、方法确定测试需求、设计测试 用例、执行和记录测试过程并记录和报告缺陷。 本文档主要阐述XXXX系统测试过程中的一些细节,为XXXX系统的测试工作提供一个框架和规范: ●确定项目测试的策略、范围和方法; ●使项目测试工作的所有参与人员(客户方参与人员、测试管理者、测试 人员)对本项目测试的目标、范围、策略、方法、组织、资源等有一个

相关文档