目录
2一、系统简介
3二、操作注意事项
7三、系统功能描述
8四、数据库设计
15五、公共模块设计
22六、主窗体设计
25七、登录模块设计
32八、学生信息管理模块设计
35九、教师信息管理模块实现
42十一、学生成绩录入功能模块实现
46十二、权限模块实现
49十三、数据维护模块功能实现
54十四、打印管理模块实现
58十五、开发项目分析
兰州商学院信息
管理系统
工资管理系统慧云智能化管理系统免费考勤管理系统员工工资计算excel病人信息管理系统
(C# 4.0+Microsoft Office Access 2003实现)
一、系统简介
该系统是由本人全权实践开发,时间跨度达8周左右,开发工具为Microsoft Visual Studio 2010,使得开发高效使用。由于考虑到开发方面的技术和时间成本等因素(该系统由于信息量较大,用Oracle或SQL Server2008,SQL Server2000等大型数据库较好),本系统采用Microsoft Office Access 2003数据库。数据库名称“教学.mdb”。
“兰州商学院信息管理系统”属于综合性系统,用户类型有学生,教师,管理人员等其他人员。不同的身份有不同的权限,如学生有查看自己的个人信息,成绩信息,打印成绩等操作。其他如教师信息,成绩录入等都没有权限,教师有查看学生成绩和包括教师的所有权限,但是不能执行管理人员的操作。而管理人员有管理学生,教师等人的所有操作,除了学生,教师和其他人员的个人应用功能外。
本系统属于综合信息管理系统,可以有效地对不同的用户进行管理,本系统应达到以下目标:
· 系统采用人机交互的方式,界面美观友好,信息查询灵活、方便,数据存储安全可靠。
· 实现学生,教职工,操作员,录入员,等信息查询,学生成绩查询,教职工业绩考核等操作。
· 对用户输入的数据,进行严格的数据检验,尽可能的避免人为错误。
· 实现对数据表中的数据在删除,更新,新增是的级联删除,级联更新,级联新增等操作。
· 实现对学生信息,教职工信息,权限等的进行查询,支持模糊查询。
· 系统应最大限度地实现易维护性和易操作性。
权限的分配,在登录系统是系统会自动会从数据库中检索用户的权限和口令,在用户登录系统是各个功能模块会判断用户的权限,是否有执行权限,新增,编辑,删除,打印等操作。从而实现了不同的用户去操作不同的操作。
由于对学院的业务流程,和管理模式不是很了解,在数据库设计方面可能与现实中的应用不同,还有,没有考虑到的数据表等等。该系统包括的数据表有操作员表(Operator),模块权限表(ModuleRight),权限表(Right),学院表(College),专业表(Specialty),班级表(Grades),学生表(Student),课程表(Course),分数表(Score),工资表(Salary),员工表(Staff),教研室表(OfficeOfDean),授课安排表(CoursePlan),考勤表(Attendance),等级考试表(RankOfExam),违规处理表(BreakOfRule),录入员信息表(Enter),年度考核表(Estimate)等。具体设计和表间关系将在数据库设计部分会详细介绍。
开发“兰州商学院信息管理系统”,可以提高学校的管理水平,优化资源,尽可能地降低学校的管理成本,该系统从实际管理的现状出发,根据学生,教职工管理的新要求进行开发设计的,它解决了大学管理中数据信息量大,修改不方便,对一系列数据统计与分析花费时间长等问题。帮助学校管理人员有效管理学生,教职工等的信息。
二、操作注意事项
(1) 本系统管理员用户名为: 常顺民,密码为:1111。
学生用户名为:个人姓名,密码:1。
录入人员用户名:个人姓名,密码:11。
管理人员用户名:个人姓名,密码:111。
其他人员:个人姓名,密码:0
(注:用户名,密码为用户在注册时登记的,以上密码为初始值,用户可以在登录系统后自己设置。)
(2)实例执行文件位置F:\C#课件\C#作业\MessageManagement\ MessageManagement.sln.
(3)本系统共分为10种操作权限功能,分别为:是否有新建、新增、编辑、删除、打印、执行、数据导出\导入、打开、复制。
不同的用户,对各级的功能模块有不同的执行权限。
· 管理员权限
输入账号、密码后登录界面如图
进入管理员管理界面如图所示。
(1)单击“学生信息管理”/“学生基本信息”菜单项,对学生信息进行查询、修改及删除操作。
(2)单击“学生信息管理”/“添加学生信息”菜单项,对学生信息进行添加操作。
(3)单击“教师信息管理”/“教师基本信息”菜单项,对教师信息进行查询、修改及删除操作。
(4)单击“教师信息管理”/“添加教师信息”菜单项,对教师信息进行添加操作。
注意:每个教师只能负责自己的课程,其它课程只能有其他课程教师管理。
(5)单击“试题信息管理”/“试题基本信息”菜单项,对试题信息进行查询、修改及删除操作。
(6)单击“试题信息管理”/“添加试题信息”菜单项,对试题信息进行添加操作。
(7)单击“科目信息管理”/“考试科目设置”菜单项,对考试科目信息进行添加操作,
注意:其他模块操作员都有执行权限。在这就不一一介绍,
如图所示。
(8)单击“考试结果管理”/“考试结果”菜单项,对考试结果进行查询及删除操作,如图所示。
(9)单击“管理员信息维护”/“修改密码”菜单项,对管理员操作密码进行修改操作。
· 学生权限
(1)学生登录如图所示。
(2)学生用户只有对学生模块、课程安排等的查看、打印操作
本系统也实现了对学生个人应用的操作如同学录,如图所示
· 教师权限
登陆界面:
教师登录后,可对学生基本信息进行添加、修改、查询及删除操作。同时对学生考试成绩进行查询及删除操作。如果教师对现有的密码不满意,还以修改自己的密码,如图所示。
教师登录系统对学生的操作主要是学生成绩的录入,功能如图:
当以学年:“2009”、学期:“第一学期”、专业:“金融学”、班级:“金融一班”、课程名称:“会计学原理”检索并录入成绩,结果如图所示:
教师可以对个人信息进行查询等操作,其他添加、编辑、删除都没有权限。
其他模块无非就这些功能,由于篇幅有限介绍该系统就以这几个常用模块作介绍。
三、系统功能描述
为了更好地是学习交流,下面将对“兰州商学院信息管理系统”的功能结构进行简单的描述。
“兰州商学院信息管理系统”功能模块主要包括6大模块。有基础信息管理、查询管理、系统操作、数据维护模块和系统帮助。在系统帮助模块中,有系统帮助,操作说明,关于系统。
对于基础信息的管理不同的用户有不同的权限,具体操作关系如图所示:
四、数据库设计
在该系统中,数据库使用Microsoft Office Access 2003数据库。数据库名称“教学.mdb”。在数据库中创建18张表用于存储各种不同的信息。
数据库概念设计
根据前面介绍的需求分析和系统设计规划出本系统中使用的数据库实体对象分为管理员实体、教职工实体、学生信息实体、录入员实体、成绩登记、课程信息、学院、专业等等。
· 下面将给出几个关键实体的E-R图。
学生信息实体
教职工信息实体
成绩信息实体
录入员实体
课程信息实体
班级实体
操作员实体
模块权限实体
权限实体
授课信息实体
· 系统中所涉及到所有数据表如图所示
· 下面给出该系统数据中主要的表结构。
(1) Operator(操作员信息表)——用于保存操作员的信息。
(2) ModuleRight(模块权限表)——用于存储各个功能模块具体的操作权限。
(3) Right(权限表)——用于存储操作员编码,模块编码以及对应条件下的各个操作权限。
(4) College(学院表)——用于存储各个学院的基本信息。
(5) Specialty(专业信息表)——用于存储所有的专业信息。
(6) Grades(班级信息表)——用于存储所有的班级信息。
(7) Student(学生信息表)——用于存储所有的学生信息。
(8) CoursePlan(课程安排表)——用于存储各个学院教务处在每学期授课的信息。
(9) Score(成绩表)——用于存储每一个学生的所有课程的分数以及考试时间和类别。
(10) Staff(员工表)——用于存储所有的教职工的信息。
· 以上各个数据表间的关系如图所示
五、公共模块设计
本系统将公共类放到一个项目中(CommonClass项目),如公用接口,通用函数,用户信息以及通用窗体等,这样接口可以在各个子类中去实现,通用函数也一样,在公共类中记住用户信息可使得用户身份从开始一直追从到退出系统。
在子类中添加的窗体可以继承于公共类中的窗体,这样可以简化代码,实现比较方便高效。若要改动系统的功能则只要改动父类的窗体即可。
在CommonClass公共类项目中,创建接口类:IRight.cs,IEdit.cs。创建公共函数类:UniversallyFunction.cs.用户信息类:UserInfor.cs。用于在子类中继承的窗体类有:FormBrowse.cs、FormEdit.cs。
在IRight.cs类中定义的公共接口有以下几种:
public interface IRight \\用于判断用户有没有对各个子功能的操作
{
bool CanNew();
bool CanAddNew();
bool CanEdit();
bool CanDelete();
// bool CanSave();
bool CanCopy();
bool CanExport();
bool CanPrint();
bool CanPaste();
bool CanOpen();
bool CanExecute();
}
在IEdit.cs中定义的公共接口有以下几种:
public interface IEdit \\将来在子类中要实现的功能操作
{
void New();
void AddNew();
void Edit();
void Delete();
bool Save();
void Copy();
void Paste();
void Export();
void Print();
void Open();
void Execute();
}
在公共函数类:UniversallyFunction.cs中,编写了在整个系统中通用的函数代码,具体如下面代码:
public static class UniversallyFunction
{
public static void ShowError(String message)
{
MessageBox.Show(message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
public static void ShowInFor(String message)
{
MessageBox.Show(message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
public static void ShowSelect(String message)
{
MessageBox.Show(message,"信息提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1);
}
public static void ShowMessage(Exception ex)
{
MessageBox.Show(ex.Message,"信息提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
public static void ShowInFor(String message,int timer)
{
MessageBox.Show("message,timer" ,"信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
public static DialogResult ShowQuestion(string message)
{
return MessageBox.Show(message,"信息提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1);
}
public static DialogResult ShowQuestion(string message, MessageBoxDefaultButton defaulbutton)
{
return MessageBox.Show(message ,"信息提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question,defaulbutton);
}
}
///
/// 字符串转化为Decimal类型
///
///
///
public static decimal StrToDecimal(string strValue)
{
if (strValue == "")
{
return 0;
}
else
{
try
{
decimal tmpValue = decimal.Parse(strValue);
return tmpValue;
}
catch
{
return 0;
}
}
}
///
/// 判读字符串是否为数字
///
///
///
public static bool IsDecimal(string strValue)
{
try
{
decimal tmpValue = decimal.Parse(strValue);
return true;
}
catch
{
return false;
}
}
///
/// 判断给定字符串是否为日期格式
///
///
///
public static bool IsDateTime(string strDate)
{
try
{
DateTime.Parse(strDate);
return true;
}
catch
{
return false;
}
}
public static bool QueryExit()
{
if (CommHelper.ShowQuestion("您确信要退出吗?", MessageBoxDefaultButton.Button1) == DialogResult.Yes)
return true;
else
return false;
}
public static void CopyDataFromDataGridView(DataGridView dataGridView)
{
string s = "";
int iStartCol = -1;
int iEndCol = -1;
int iStartRow = -1;
int iEndRow = -1;
#region Remark
/*
for (int i = 0; i < dataGridView.SelectedCells.Count; i++)
{
if (dataGridView.SelectedCells[i].RowIndex < iStartRow)
iStartRow = dataGridView.SelectedCells[i].RowIndex;
else
if (iStartRow == -1)
iStartRow = dataGridView.SelectedCells[i].RowIndex;
if (dataGridView.SelectedCells[i].RowIndex > iEndRow)
iEndRow = dataGridView.SelectedCells[i].RowIndex;
if (dataGridView.SelectedCells[i].ColumnIndex < iStartCol)
iStartCol = dataGridView.SelectedCells[i].ColumnIndex;
else
if (iStartCol == -1)
iStartCol = dataGridView.SelectedCells[i].ColumnIndex;
if (dataGridView.SelectedCells[i].ColumnIndex > iEndCol)
iEndCol = dataGridView.SelectedCells[i].ColumnIndex;
}*/
#endregion 毕业设计代做 QQ9361235 19957666博士硕士学生研究生留学生论文代写 程序代做 软件制作 网站开发
if (dataGridView.SelectedCells.Count > 0)
{
DataGridViewCell cellStart = dataGridView.SelectedCells[0];
DataGridViewCell cellEnd = dataGridView.SelectedCells[dataGridView.SelectedCells.Count - 1];
iStartCol = cellStart.ColumnIndex < cellEnd.ColumnIndex ? cellStart.ColumnIndex : cellEnd.ColumnIndex;
iEndCol = cellStart.ColumnIndex > cellEnd.ColumnIndex ? cellStart.ColumnIndex : cellEnd.ColumnIndex;
iStartRow = cellStart.RowIndex < cellEnd.RowIndex ? cellStart.RowIndex : cellEnd.RowIndex;
iEndRow = cellStart.RowIndex > cellEnd.RowIndex ? cellStart.RowIndex : cellEnd.RowIndex;
}
if (CommHelper.ShowQuestion("是否复制标题行?", MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
for (int i = iStartCol; i <= iEndCol; i++)
if (dataGridView.Columns[i].Visible)
s += dataGridView.Columns[i].HeaderText + (i == iEndCol ? "" : "\t");
s += "\n";
}
for (int j = iStartRow; j <= iEndRow; j++)
{
for (int i = iStartCol; i <= iEndCol; i++)
if (dataGridView.Columns[i].Visible)
if (dataGridView[i, j].EditType.Name == "DataGridViewComboBoxEditingControl")
s += dataGridView[i, j].FormattedValue.ToString() + (i == iEndCol ? "" : "\t");
else
if (dataGridView[i, j].Value != null)
s += dataGridView[i, j].Value.ToString() + (i == iEndCol ? "" : "\t");
else
s += "" + (i == iEndCol ? "" : "\t");
//s += dataGridView[i, j].FormattedValue.ToString() + (i == iEndCol ? "" : "\t");
s += "\n";
}
try
{
Clipboard.Clear();
Clipboard.SetData(DataFormats.Text, s);
}
catch (Exception ex)
{
CommHelper.ShowError(ex.Message);
}
}
public static string[,] PasteDataToDataGridView()
{
if (!Clipboard.ContainsData(DataFormats.Text))
{
CommHelper.ShowError("没有要粘贴的数据!");
return null;
}
string s = Clipboard.GetData(DataFormats.Text).ToString();
if (s.EndsWith("\r\n"))
s = s.Substring(0, s.Length - 2);
string[] sRows = s.Split(new string[] { "\r\n", "\n\r", "\n", "\r" }, StringSplitOptions.None);
string[,] Values = null;
for (int i = 0; i < sRows.Length; i++)
{
string[] sValues = sRows[i].Replace("\n", "").Replace("\r", "").Split(new char[] { '\t' });
if (Values == null)
Values = new string[sRows.Length, sValues.Length];
try
{
for (int j = 0; j < sValues.Length; j++)
Values[i, j] = sValues[j];
}
catch (Exception)
{
MessageBox.Show("你粘贴的数据格式不正确!");
break;
}
}
return Values;
}
项目截图如下:
用于集成的两个窗体如图:
· 浏览窗体如下:
· 编辑窗体如下:
六、主窗体设计
该系统主窗体有菜单栏、工具栏、导航栏、任务栏等组成。主窗体效果图如图所示:
主窗体设计的部分代码如下:
partial class FormMain
{
///
/// 必需的设计器变量。
///
private System.ComponentModel.IContainer components = null;
///
/// 清理所有正在使用的资源。
///
///
如果应释放托管资源为true;否则为false。¡ê
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.文件FToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.新建ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.打开ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.基础资料ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.添加ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.关闭ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.编辑EToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.浏览ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.添加ToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .
//
// 编辑EToolStripMenuItem
//
this.编辑EToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.浏览ToolStripMenuItem,
this.添加ToolStripMenuItem1,
this.删除ToolStripMenuItem,
this.编辑ToolStripMenuItem});
this.编辑EToolStripMenuItem.Name = "编辑-EToolStripMenuItem";
this.编辑EToolStripMenuItem.Size = new System.Drawing.Size(57, 20);
this.编辑EToolStripMenuItem.Text = "编辑";
//
// 浏览ToolStripMenuItem
//
this.浏览ToolStripMenuItem.Name = "浏览ToolStripMenuItem";
this.浏览ToolStripMenuItem.Size = new System.Drawing.Size(98, 22);
this.浏览ToolStripMenuItem.Text = "浏览”;
this.浏览ToolStripMenuItem.Click += new System.EventHandler(this.浏览ToolStripMenuItem_Click);
//
// 添加ToolStripMenuItem1
//
this.添加ToolStripMenuItem1.Name = "添加ToolStripMenuItem1";
this.添¬¨ª加¨®ToolStripMenuItem1.Size = new System.Drawing.Size(98, 22);
this.添加ToolStripMenuItem1.Text = "添加";
//
// 删除ToolStripMenuItem
//
this.删除ToolStripMenuItem.Name = "删除ToolStripMenuItem";
this.删除ToolStripMenuItem.Size = new System.Drawing.Size(98, 22);
this.删除yToolStripMenuItem.Text = "删除";
. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .
//
// toolStripButtonNavegator
//
this.toolStripButtonNavegator.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButtonNavegator.Image")));
this.toolStripButtonNavegator.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButtonNavegator.Name = "toolStripButtonNavegator";
this.toolStripButtonNavegator.Size = new System.Drawing.Size(75, 22);
this.toolStripButtonNavegator.Text = "功能导航";
this.toolStripButtonNavegator.Click += new System.EventHandler(this.toolStripButtonNavegator_Click);
//
// toolStripButton1
//
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
this.toolStripButton1.Name = "toolStripButton1";
this.toolStripButton1.Size = new System.Drawing.Size(75, 22);
this.toolStripButton1.Text = "权限分配";
this.toolStripButton1.Click += new System.EventHandler(this.toolStripButton1_Click);
private System.Windows.Forms.ToolStripMenuItem 退出XToolStripMenuItem;
. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . .
private System.Windows.Forms.ToolStripButton toolStripButton1;
private System.Windows.Forms.ToolStripButton toolStripButton2;
private System.Windows.Forms.ToolStripButton toolStripButton3;
private System.Windows.Forms.ToolStripButton toolStripButton5;
private System.Windows.Forms.ToolStripButton toolStripButton6;
private System.Windows.Forms.ToolStripButton toolStripButton7;
private System.Windows.Forms.ToolStripButton toolStripButton9;
private System.Windows.Forms.ToolStripButton toolStripButton10;
private System.Windows.Forms.ToolStripButton toolStripButton8;
private System.Windows.Forms.ToolStripButton toolStripButton11;
private System.Windows.Forms.ToolStripButton toolStripButton4;
private System.Windows.Forms.ToolStripButton toolStripButton12;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel8;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel9;
}
七、登录模块设计
为了防止非法用户进入系统,程序中设计了一个系统登录窗口。在程序启动时,首先显示登录窗口进行用户身份验证,并且根据用户的岗位获取用户的操作权限,如果用户名、岗位和密码输入错误,将禁止进入系统,系统登录运行效果如图所示:
由于用户已经注册过,可以直接在下拉框中选择用户岗位和用户名。
若登录密码错则弹出警告信息用户名或密码错误,而且显示警告信息。若登录次数达到3次以上系统将自动退出。运行效果图如图所示:
该模块实现的核心代码如下: using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CommonClass;
using DataAccess;
namespace MessageManagement.ComImple
{
public partial class FormLogin : Form
{
public FormLogin()
{
InitializeComponent();
}
int times = 0;
int step = 4;
private void buttonOK_Click(object sender, EventArgs e)
{
if (ValidateData())
{
DialogResult = DialogResult.OK;
}
else
{
times++;
if (times < 4)
{
step--;
if (step > 1)
label4.Text = string.Format("你还有{0}次机会登录", step);
else
{
label4.Text = string.Format("尊敬的用户您只有{0}次", step);
label5.Text = "登录机会系统将要退出。";