教务管理系统学生端设计
设计任务和设计要求
学生登录学生选课系统后可进行如下操作:
(1)查看备选课程及该课程的信息。
(2)查看希望教授该课程的教师的信息。
(3)选择希望选修的课程,并从候选的教师中选择两个自己认同的教师(如只有一个候选教师则只能选择一个),相当于给教师投票,该投票结果最终决定该课程的任课教师。
(4)删除误选的课程。
选课的规则如下:
(1) 每个学生最多能选5门课,至少选2门课。
(2) 每门课选修的人数有限,如果选修的人数超过了限制的人数,先报名的学生有上课的资格。
(3) 学生选课时可以选择课程,同时选择2名候选的任课教师。
(4) 每名教师最多可以教授3门课。
内容摘要
教务管理系统是一个基于桌面的系统,供管理员、教师和学生选课使用。管理员可以管理教师和学生选课的相关信息;教师可以开设课程、管理学生的选课信息以及对学生评分;学生则可以选修课程、查看成绩等。通过查询选课信息以开设自己的课程;学生则可以在一定范围内自由选修课程,查看授课老师的相关教学信息等。其中,选课活动是推进学分制建设的重要环节,也是教务管理的难点之一。选课工作顺利与否直接关系到教学秩序的稳定。因此开发一个完整的选课管理模式是其中一个至关重要的环节
本系统是一个在Microsoft Visual Studio C#环境下通过访问ADO.NET来实现数据库的连接的,由于编者知识有限,仅运行实现了该系统的学生端设计的部分功能。具体设计如下。
第一章 设计概述……………………………………… 4
第二章 总体设计……………………………………… 5
2.1 系统功能简介………………………………… 5
2.2 需求分析……………………………………… 6
2.2.1 数据需求………………………………… 6
2.2.2 事务需求………………………………… 6
第三章 详细设计……………………………………… 7
3.1 E-R模型设计……………………………………7
3.2 数据库设计………………………………………7
3.2.1 创建数据库…………………………………8
3.2.2 创建数据表…………………………………9
3.2.3 数据连接……………………………………11
3.3 程序设计与实现…………………………………12
第四章 总结………………………………………………44
参考文献………………………………………………… 45
第一章 设计概述
教务管理系统学生端的设计目标是方便学生用户使用。通过学生端应用程序,学生可以登录进入系统并进行一系列相关操作。本设计包括系统的各模块或单元程序的设计、具体的算法、相关的程序实现图以及相关的代码。
第二章 总体设计
2.1 系统功能简介
本系统主要功能模块如下:
(1)系统管理
学生登录:学生用户通过登录窗口进入系统。
学生注销:学生用户完成操作后可以注销自己的登录行为。
退出系统:所有操作完成后直接退出系统。
(2)学籍管理
(3)课程管理
所有课程列表:显示所有教师开设的课程。
我的课程列表:显示当前用户所选的全部课程。
添加选课:选修教师开设的课程。
删除选课:删除已经选择的课程。
2.2 需求分析
2.2.1 数据需求
事务需求根据系统的需求,首先将要记录的信息分类,要记录的信息如下。
(1)学生信息:包括学生学号、姓名、性别、年龄、专业等。
(2)课程信息:包括课程编号、课程名、授课教师、开课地点、时间及学分等。
(3)学生选课:包括学生学号、课程编号、学分及选修号等。
2.2.2 事务需求
该系统采用三层结构,其中位于表现层的是Student项目;
位于数据访问层的则是DataAccess项目;位于数据存储层的则是数据库Student,如图(1)所示。
(1)学生端系统结构图
第三章 详细设计
3.1 E-R模型设计
具体实体相关属性在前面已给出,该系统的E-R图如
图(2)所示。
(2)E-R图
3.2 数据库设计
3.2.1 创建数据库
使用SQL Server 作为数据库,其中数据库
Student,该数据库中有如下数据表
student:保存学生信息。
course:保存教师开设课程信息。
stuCourse:保存学生选课信息。
建立数据库 Student及相关数据表:
CREATE DATABASE Student
GO
USE Student
GO
CREATE TABLE [dbo].[student]
( [stuID] [varchar] (50) NOT NULL
[stuPassword] [varchar](50) NOT NULL
[stuName] [varchar](50) NOT NULL
[stuMajor] [varchar](50) NOT NULL ,
[stuSex] [varchar] (2) NOT NULL ,
[stuBirthday] [datetime] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[course]
([courseID] [int] NOT NULL ,
[courseName] [varchar] (50) NOT NULL ,
[courseTime] [datetime] NOT NULL ,
[courseCredit] [int] NOT NULL ,
[courseTeacher] [varchar] (16) NULL ,
[courseAddress] [varchar] (50) NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[stuCourse]
([scID] [int] NOT NULL ,
[stuID] [varchar] (50)NOT NULL,,
[courseID] [int] NOT NULL ,
[scScore] [int] NOT NULL
) ON [PRIMARY]
3.2.2 创建数据表
student 表:
course表:
stuCouse表:
3.2.3 数据连接
本系使用ADO.NET访问数据库,因为每个数据提供程序都包含自己特有的Connection对象。
SQL Server.NET数据提供程序的SqlConnection对象是在System.Data.SqlClient命名空间中定义的,它包含在System.Data DLL程序集中。一般使用SqlConnection类的方法如下:
System.Data.Sqlclient.SqlConnection conn
= new System.Data.Sqlclient.SqlConnection( );
具体实例操作如下一节所述。
3.3 程序设计与实现
具体程序代码如下:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace SchoolMIS.UI.Student
{
static class Program
{
///
/// 应用程序的主入口点。
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForms());
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace SchoolMIS.UI.Student
{
class GlobalInfo
{
private static bool isLogin = false;
private static string stuName;
private static string stuID;
public static bool IsLogin
{
get
{
return isLogin;
}
set
{
isLogin = value;
}
}
public static string StuName
{
get
{
return stuName;
}
set
{
stuName = value;
}
}
public static string StuID
{
get
{
return stuID;
}
set
{
stuID = value;
}
}
}
}
主界面:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace SchoolMIS.UI.Student
{
public partial class MainForms : Form
{
public MainForms()
{
InitializeComponent();
}
private void mainMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void stuLogin_Click(object sender, EventArgs e)
{
LoginForm frmLogin = new LoginForm();
frmLogin.ShowDialog();
if (GlobalInfo.IsLogin)
{
this.ChangeMenuState();
}
}
private void ChangeMenuState()
{
//改变菜单的时使能状态
this.menuCourse.Enabled = !this.menuCourse.Enabled;
this.stuLogin.Enabled = !this.stuLogin.Enabled;
this.stuLogout.Enabled = !this.stuLogout.Enabled;
}
private void stuLogout_Click(object sender, EventArgs e)
{
GlobalInfo.StuID = String.Empty;
GlobalInfo.StuName = String.Empty;
GlobalInfo.IsLogin = false;
MessageBox.Show("成功退出本系统", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.ChangeMenuState();
}
private void stuExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void courseAll_Click(object sender, EventArgs e)
{
AllCourseForm allCourseForm = new AllCourseForm();
allCourseForm.MdiParent = this;
allCourseForm.Show();
}
private void courseSelected_Click(object sender, EventArgs e)
{
SelectedCourseForm selectedCourseForm = new SelectedCourseForm();
selectedCourseForm.MdiParent = this;
selectedCourseForm.Show();
}
}
}
程序实现如图:
首先进入登录界面:
登录系统:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using SchoolMIS.DataAccess.Student.SQLServer;
namespace SchoolMIS.UI.Student
{
public partial class LoginForm : Form
{
public LoginForm()
{
InitializeComponent();
}
private void btnOK_Click(object sender, EventArgs e)
{
if (this.txtStuNum.Text.Trim() == "")
{
MessageBox.Show("请输入您的学号", "错误提示:", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else if (this.txtStuPassword.Text.Trim() == "")
{
MessageBox.Show("请输入您的密码", "错误提示:", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
StudentDB stuDbAccess = new StudentDB();
string stuName = stuDbAccess.Login(txtStuNum.Text.Trim(), txtStuPassword.Text.Trim());
if (stuName != String.Empty)
{
GlobalInfo.StuName = stuName;
GlobalInfo.StuID = this.txtStuNum.Text;
GlobalInfo.IsLogin = true;
this.Dispose();
}
else
{
MessageBox.Show("用户名或者密码错误,请重新输入。", "错误提示:");
}
}
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.txtStuNum.Text = "";
this.txtStuPassword .Text ="";
}
private void LoginForm_Load(object sender, EventArgs e)
{
}
}
}
所有课程:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using SchoolMIS.DataAccess.Student.SQLServer;
namespace SchoolMIS.UI.Student
{
public partial class AllCourseForm : Form
{
BindingSource bsAllCourse;
public AllCourseForm()
{
InitializeComponent();
}
int n=0;
public int N
{
get { return n; }
set { n = value; }
}
public void InitialData()
{
CourseDB courseDB = new CourseDB();
DataSet courseDataSet = courseDB.GetAllCourse();
bsAllCourse = new BindingSource();
bsAllCourse.DataSource = courseDataSet.Tables["course"];
this.dgvAllCourse.DataSource = bsAllCourse;
this.txtCourseAddress.DataBindings.Add(new Binding("Text", bsAllCourse, "上课地点"));
this.txtCourseCredit.DataBindings.Add(new Binding("Text", bsAllCourse, "学分"));
this.txtCourseID.DataBindings.Add(new Binding("Text", bsAllCourse, "编号"));
this.txtCourseName.DataBindings.Add(new Binding("Text", bsAllCourse, "名称"));
this.txtCourseTime.DataBindings.Add(new Binding("Text", bsAllCourse, "上课时间"));
this.txtTeacherName.DataBindings.Add(new Binding("Text", bsAllCourse, "教师"));
this.ChangeButtonState();
if (this.bsAllCourse.Position == -1)
{
this.btnChoose.Enabled = false;
}
}
private void ChangeButtonState()
{
if (this.bsAllCourse.Position == this.bsAllCourse.Count - 1)
{
this.btnNext.Enabled = false;
}
else
{
this.btnNext.Enabled = true;
}
if (this.bsAllCourse.Position == 0)
{
this.btnPre.Enabled = false;
}
else
{
this.btnPre.Enabled = true;
}
}
private void AllCourseForm_Load(object sender, EventArgs e)
{
InitialData();
}
private void btnPre_Click(object sender, EventArgs e)
{
this.bsAllCourse.MovePrevious();
this.ChangeButtonState();
}
private void btnNext_Click(object sender, EventArgs e)
{
this.bsAllCourse.MoveNext();
this.ChangeButtonState();
}
private int GetCourseID(int rowIndex)
{
return (int)((DataTable)bsAllCourse.DataSource).Rows[rowIndex][0];
}
private void btnChoose_Click(object sender, EventArgs e)
{
CourseDB courseDB = new CourseDB();
bool addResult = courseDB.AddSelectedCourse(GlobalInfo.StuID, GetCourseID(bsAllCourse.Position));
if (addResult)
{
MessageBox.Show("您已经成功选择该课程,请注意学习!");
}
else
{
MessageBox.Show("操作失败,请稍后重试!");
}
}
private void refreshDataSource()
{
CourseDB courseDB = new CourseDB();
DataSet courseDataSet = courseDB.GetSelectedCourse(GlobalInfo.StuID);
bsAllCourse.DataSource = courseDataSet.Tables["course"];
}
}
}
登录过程中,会出现以下几个界面:
如图:
选修课程:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using SchoolMIS.DataAccess.Student.SQLServer;
namespace SchoolMIS.UI.Student
{
public partial class SelectedCourseForm : Form
{
BindingSource bsAllCourse;
public SelectedCourseForm()
{
InitializeComponent();
}
private void SelectedCourseForm_Load(object sender, EventArgs e)
{
InitialData();
}
private void InitialData()
{
CourseDB courseDB = new CourseDB();
DataSet courseDataSet = courseDB.GetSelectedCourse(GlobalInfo.StuID);
bsAllCourse = new BindingSource();
bsAllCourse.DataSource = courseDataSet.Tables["course"];
this.dgvAllCourse.DataSource = bsAllCourse;
}
private void ChangeButtonState()
{
if (this.bsAllCourse.Position == -1)
{
this.btnUnChoose.Enabled = false;
this.btnNext.Enabled = false;
this.btnPre.Enabled = false;
}
if (this.bsAllCourse.Position == this.bsAllCourse.Count - 1)
{
this.btnNext.Enabled = false;
}
else
{
this.btnNext.Enabled = true;
}
if (this.bsAllCourse.Position == 0)
{
this.btnPre.Enabled = false;
}
else
{
this.btnPre.Enabled = true;
}
}
private void btnPre_Click(object sender, EventArgs e)
{
this.bsAllCourse.MovePrevious();
this.ChangeButtonState();
}
private void btnNext_Click(object sender, EventArgs e)
{
this.bsAllCourse.MoveNext();
this.ChangeButtonState();
}
private void btnUnChoose_Click(object sender, EventArgs e)
{
CourseDB courseDB = new CourseDB();
bool deleteResult = courseDB.DeleteSelectedCourse(Convert.ToInt32(this.txtCourseID.Text));
if (deleteResult)
{
MessageBox.Show("您已经成功放弃了该课程!");
}
else
{
MessageBox.Show("操作失败,请稍后重试!");
}
this.ChangeButtonState();
}
private void txtCourseID_TextChanged(object sender, EventArgs e)
{
}
private void dgvAllCourse_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void txtCourseName_TextChanged(object sender, EventArgs e)
{
}
private void txtCourseTime_TextChanged(object sender, EventArgs e)
{
}
private void txtCourseAddress_TextChanged(object sender, EventArgs e)
{
}
private void txtTeacherName_TextChanged(object sender, EventArgs e)
{
}
private void txtCourseCredit_TextChanged(object sender, EventArgs e)
{
}
}
}
进入所有课程能够界面:
具体操作情况如图:
退出课程界面后:
进入选课列表:
数据库连接:
using System;
using System.Collections.Generic;
using System.Text;
namespace SchoolMIS.DataAccess.Student.SQLServer
{
class Constants
{
//数据库链接字符
public static readonly string ConnString = @"server=(local);user id=sa;password=1234;Initial Catalog=Student;";
//验证学生登录
public static readonly string StuLogin = @"select stuName from student
where stuID=@stuID and stuPassword=@stuPassword";
public static readonly string GetAllCourse = @"SELECT courseID AS 编号,
courseName AS 名称,
courseTime AS 上课时间 ,
courseAddress AS 上课地点,
courseCredit AS 学分,
courseTeacher AS 教师
FROM course";
public static readonly string AddSelectedCourse = @"INSERT INTO stuCourse(stuID,courseID) VALUES(@stuNum,@courseID)";
public static readonly string IsSelectedCourse = @"SELECT COUNT(scID) FROM stuCourse WHERE stuID=@stuNum AND courseID=@courseID";
public static readonly string GetSelectedCourse = @"SELECT stuCourse.scID AS 选课编号,
courseName AS 名称,
courseTime AS 上课时间,
courseAddress AS 上课地点,
courseCredit AS 学分,
courseTeacher AS 教师
FROM course,stuCourse
WHERE stuCourse.stuID=@stuNum AND course.courseID=stuCourse.courseID";
public static readonly string DeleteSelectedCourse = @"DELETE FROM stuCourse WHERE scID=@scID";
}
}
课程信息:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace SchoolMIS.DataAccess.Student.SQLServer
{
public class CourseDB
{
public DataSet GetAllCourse()
{ //建立数据库连接对象
SqlConnection conn = new SqlConnection(Constants.ConnString);
//建立数据库命令对象
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.GetAllCourse;
cmd.CommandType = CommandType.Text;
SqlDataAdapter dataAdapter = new SqlDataAdapter();
dataAdapter.SelectCommand = cmd;
DataSet allCourse = new DataSet();
try
{
dataAdapter.Fill(allCourse, "course");
return allCourse;
}
catch (SqlException ex)
{
return null;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
public bool AddSelectedCourse(string stuID, int courseID)
{
if (this.IsSelectedCourse(stuID, courseID))
{
return true;
}
else
{
SqlConnection conn = new SqlConnection(Constants.ConnString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.AddSelectedCourse;
cmd.CommandType = CommandType.Text;
SqlParameter paramStuNum = new SqlParameter("@stuID", stuID);
cmd.Parameters.Add(paramStuNum);
SqlParameter paramCourseID = new SqlParameter("@courseID", courseID);
cmd.Parameters.Add(paramCourseID);
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
return true;
}
catch (SqlException ex)
{
return false;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
}
public DataSet GetSelectedCourse(string stuNum)
{
SqlConnection conn = new SqlConnection(Constants .ConnString );
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.GetSelectedCourse;
cmd.CommandType = CommandType.Text;
SqlParameter paramStuNum = new SqlParameter("@stuNum", stuNum);
cmd.Parameters.Add(paramStuNum);
SqlDataAdapter dataAdapter = new SqlDataAdapter();
dataAdapter.SelectCommand = cmd;
DataSet selectedCourse = new DataSet();
try
{
dataAdapter.Fill(selectedCourse, "course");
return selectedCourse;
}
catch
{
return null;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
public bool DeleteSelectedCourse(int scID)
{
SqlConnection conn = new SqlConnection(Constants.ConnString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.DeleteSelectedCourse;
cmd.CommandType = CommandType.Text;
SqlParameter paramSCID = new SqlParameter("@scID", scID );
cmd.Parameters.Add(paramSCID);
try
{
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
return true;
}
catch (SqlException ex)
{
return false;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
public bool IsSelectedCourse(string stuNum, int courseID)
{
SqlConnection conn=new SqlConnection (Constants.ConnString );
SqlCommand cmd=new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.IsSelectedCourse;
cmd.CommandType = CommandType.Text;
SqlParameter paramStuNum = new SqlParameter("@stuNum", stuNum);
cmd.Parameters.Add(paramStuNum);
SqlParameter paramCourseID = new SqlParameter("@courseID", courseID);
cmd.Parameters.Add(paramCourseID);
try
{
conn.Open ();
int result=(int)cmd.ExecuteScalar ();
conn.Close ();
if(result ==1)
{
return true ;
}
else
{
return false ;
}
}
catch (SqlException ex)
{
return false ;
}
finally
{
if(conn.State ==ConnectionState.Open )
{
conn.Close ();
}
}
}
}
}
学生信息:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace SchoolMIS.DataAccess.Student.SQLServer
{
public class StudentDB
{
public string Login(string stuID, string stuPsw)
{
//建立数据库链接对象
SqlConnection conn = new SqlConnection(Constants.ConnString);
//建立数据库命令对象
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = Constants.StuLogin;
cmd.CommandType = CommandType.Text;
//添加参数给数据命令
SqlParameter prmStuNum = new SqlParameter("@stuID", stuID);
SqlParameter prmStuPassword = new SqlParameter("@stuPassword", stuPsw);
cmd.Parameters.Add(prmStuNum);
cmd.Parameters.Add(prmStuPassword);
try
{
conn.Open();
object stuName = cmd.ExecuteScalar();
if (stuName != null)
{
return stuName.ToString();
}
else
{
return String.Empty;
}
}
catch (SqlException ex)
{
return String.Empty;
}
finally
{
//确保数据库连接被关闭
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
}
}
}
//------------------------------------------------------------------------------
//
// 此代码由工具生成。
// 运行库版本:2.0.50727.832
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
//
//------------------------------------------------------------------------------
namespace SchoolMIS.DataAccess.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "8.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Student.mdf;Integrated " +
"Security=True;User Instance=True")]
public string StudentConnectionString {
get {
return ((string)(this["StudentConnectionString"]));
}
}
}
}
具体退出界面在上图中皆有体现。
以上即为本系统的详细设计过程。
第四章 总结
本次实习任务为利用所学的计算机知识开发出一套完整的管理系统。实习期间让我学会了很多,当然也发现了自己的许多不足。
该系统利用了C#语言的相关知识,简单的设计了一个学生选课所需的管理系统。在设计的过程中,由于编者现有知识掌握的有限以及时间的仓促,所以整个系统看上去一目了然,比较简单。但在设计的过程中也掌握了许多,特别是在探究算法时,必须具备一定的逻辑知识等。
然而与上学期课程设计比较,本次设计中,运用C#结合SQL Server 2000开发的系统,减少了代码的入录,实现了一些只用C#编写不能实现的功能。若只用C#编写程序对一些数据资料都应输入到相应的代码中,若数据资料稍一多,使代码文件看起来繁琐,某些代码重复使用,重复书写,工作量大。而通过SQL Server 2000创建数据库,建立数据资料,运用代码C#与数据库建立连接。SqlDataAdapter 作为数据适配器可以将数据从数据库中取出来,放到DataSet以供程序调用;SqlCommand 和SqlDataReader 可以执行简单的查询和读取数据。这样建立的系统资料更加完备充实。浏览也方便,修改资料也方便。
结合这次设计,我会在以后的学习过程中更加认真学好每一门计算机语言,认真钻研其中的开发理论知识,相信在不久的将来,我会将该系统完善成一个很好的应用软件!
参考文献
[1] 郭常圳. C#网络应用开发例学有实践. 清华大学出版社. 2006
[2] 邵鹏鸣. VisualC#程序设计基础教程. 清华大学出版社. 2005
[3] 王晟 邓远辉. VisualC++.NET数据开发经典案例解析. 清华大学出版社.2006
本文来源:https://www.2haoxitong.net/k/doc/23856037bed5b9f3f90f1cd3.html
文档为doc格式