Fork me on GitHub
用户权限管理软件开源

为什么要开源?

有句:“赠人玫瑰,手有余香。”,在园子里学习有些一时间了,得到了很多人的帮助,我自已练习做了一套基于Winform的管理类小软件《小菜用户权限管理软件》,只当学习用,今天汇总一下开源分享给大家。

我这个框架集成了好几个有用的框架:WeifenLuo.WinFormsUI.Docking.dll布局组件,分页组件,皮肤套件等,我在整体色调等方面做了些优化,让整个系统看起来比较协调。

当然,还有很多不足的,毕竟这是练习嘛~~如投入商业使用还是有很多限制的。

现在开始描述一下这个系统的具体情况,给有兴趣的朋友研究带来便利。

软件整体架构

软件分为四个模块:用户管理,部门管理,角色管理,功能管理。平台主要是基于Winform,.Net FrameWork 4.0,支持SQL Server,Oracle,MySql,只要在配置文件中切换就可以。

操作数据层集成了NHibernate框架组件:XiaoCai.ORM.dll,软件框架集成多功能组件XiaoCai.WinformUI.dll:涉及的有用功能有分页控件,多文档界面布局(像Visual Studio一样的布局效果喔),仿Outlook的OutLookBar导航,界面启动时的闪屏效果增强用户体验,系统托盘效果。

整体架构,如下图:

image

 

项目结构

  • 引入类库

image

  • 代码结构

  • image

软件模块介绍

用户登录模块:

image

用户登录成功后闪屏效果:

image

主界面整体效果:

image

用户管理模块界面:

image

 

程序配置文件

复制代码
<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="FMS.Web.Services.INIService" value="http://localhost/OAServices/INIService.asmx"/>
    <!-- Database with WebService -->
    <add key="FMS.Remote" value="N"/>
    <add key="FMS.GlobalSessionFactory" value="XiaoCai.Auth.DAL.Global.SQLServerSessionFactory,XiaoCai.Auth.DAL.Global"/>
    <!--<add key="FMS.GlobalSessionFactory" value="XiaoCai.Auth.DAL.Global.MySQLSessionFactory,XiaoCai.Auth.DAL.Global" />-->
    <!--<add key="FMS.GlobalSessionFactory" value="XiaoCai.Auth.DAL.Global.OracleSessionFactory,XiaoCai.Auth.DAL.Global" />-->
    <!-- Database without WebService -->
    <add key="FMS.Database.MySQLConn" value="server=localhost;user id=root;password=12345;database=SecurityDB;character set=utf8"/>
    <add key="FMS.Database.SqlServerConn" value="Data Source=localhost,1433;Network Library=DBMSSOCN;Initial Catalog=SecurityDB;User ID=root;Password=12345;"/>
    <add key="FMS.Database.OracleServerConn" value="User Id=AGANQIN;Password=12345;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SID=SecurityDB)(SERVER=DEDICATED)));"/>
  </appSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
复制代码

 

程序源码运行注意

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace XiaoCai.SecurityManager
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Auth.App.Core.AppCore.Startup();//程序序动时,加这么一句
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new LoginForm());
        }
    }
}
复制代码

数据库文件

  • 关于SQL Server,MySql,Oracle数据库文件生成脚本,我放在XiaoCai.Database.rar
  • 导入注意事项:数据库命名为SecurityDB
  • SQL Server:

image

复制代码
USE [SecurityDB]
GO

/****** Object:  Table [dbo].[T_AUTH_DEPT]    Script Date: 2013/10/21 10:51:55 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T_AUTH_DEPT](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [NAME] [nvarchar](50) NOT NULL,
    [NOTE] [nvarchar](500) NULL,
    [CREATETIME] [datetime] NOT NULL,
 CONSTRAINT [PK_T_AUTH_DEPT] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


USE [SecurityDB]
GO

/****** Object:  Table [dbo].[T_AUTH_DEPT_ROLE]    Script Date: 2013/10/21 11:08:00 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T_AUTH_DEPT_ROLE](
    [DEPT_ID] [int] NOT NULL,
    [ROLE_ID] [int] NOT NULL,
 CONSTRAINT [PK_T_AUTH_DEPT_ROLE] PRIMARY KEY CLUSTERED 
(
    [DEPT_ID] ASC,
    [ROLE_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

USE [SecurityDB]
GO

/****** Object:  Table [dbo].[T_AUTH_DEPT_USER]    Script Date: 2013/10/21 11:08:12 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T_AUTH_DEPT_USER](
    [DEPT_ID] [int] NOT NULL,
    [USER_ID] [int] NOT NULL,
 CONSTRAINT [PK_T_AUTH_DEPT_USER] PRIMARY KEY CLUSTERED 
(
    [DEPT_ID] ASC,
    [USER_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


USE [SecurityDB]
GO

/****** Object:  Table [dbo].[T_AUTH_FUNCTION]    Script Date: 2013/10/21 11:08:23 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T_AUTH_FUNCTION](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [NAME] [nvarchar](50) NULL,
    [DESCRIPTION] [nvarchar](500) NULL,
    [PARENTFUNC_ID] [int] NULL,
    [CONTROL_ID] [nvarchar](255) NULL,
    [VERSION] [nvarchar](20) NULL,
    [ISEXPIRE] [int] NULL,
    [DIRECTORYNAME] [nvarchar](200) NULL,
    [SYSTEM_TYPE_ID] [nvarchar](255) NULL,
    [CREATETIME] [datetime] NOT NULL,
 CONSTRAINT [PK_T_AUTH_FUNCTION] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

USE [SecurityDB]
GO

/****** Object:  Table [dbo].[T_AUTH_FUNCTION_ROLE]    Script Date: 2013/10/21 11:08:40 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T_AUTH_FUNCTION_ROLE](
    [FUNCTION_ID] [int] NOT NULL,
    [ROLE_ID] [int] NOT NULL,
 CONSTRAINT [PK_T_AUTH_FUNCTION_ROLE] PRIMARY KEY CLUSTERED 
(
    [FUNCTION_ID] ASC,
    [ROLE_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


USE [SecurityDB]
GO

/****** Object:  Table [dbo].[T_AUTH_FUNCTION_USER]    Script Date: 2013/10/21 11:08:53 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T_AUTH_FUNCTION_USER](
    [FUNCTION_ID] [int] NOT NULL,
    [USER_ID] [int] NOT NULL,
 CONSTRAINT [PK_T_AUTH_FUNCTION_USER] PRIMARY KEY CLUSTERED 
(
    [FUNCTION_ID] ASC,
    [USER_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

USE [SecurityDB]
GO

/****** Object:  Table [dbo].[T_AUTH_ROLE]    Script Date: 2013/10/21 11:09:06 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T_AUTH_ROLE](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [NAME] [nvarchar](200) NOT NULL,
    [NOTE] [nvarchar](500) NULL,
    [CREATETIME] [datetime] NOT NULL,
 CONSTRAINT [PK_T_AUTH_ROLE] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

USE [SecurityDB]
GO

/****** Object:  Table [dbo].[T_AUTH_USER]    Script Date: 2013/10/21 11:09:17 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T_AUTH_USER](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [USERID] [nvarchar](255) NOT NULL,
    [PASSWORD] [nvarchar](255) NOT NULL,
    [NAME] [nvarchar](255) NOT NULL,
    [IDENTITYCARD] [nvarchar](255) NULL,
    [OFFICEPTELHONE] [nvarchar](255) NULL,
    [MOBILEPHONE] [nvarchar](255) NULL,
    [EMAIL] [nvarchar](255) NULL,
    [ADDRESS] [nvarchar](255) NULL,
    [POSITION] [nvarchar](255) NULL,
    [ISEXPIRE] [int] NULL,
    [CREATETIME] [datetime] NOT NULL,
 CONSTRAINT [PK_T_AUTH_USER] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

USE [SecurityDB]
GO

/****** Object:  Table [dbo].[T_AUTH_USER_ROLE]    Script Date: 2013/10/21 11:09:29 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[T_AUTH_USER_ROLE](
    [USER_ID] [int] NOT NULL,
    [ROLE_ID] [int] NOT NULL,
 CONSTRAINT [PK_T_AUTH_USER_ROLE] PRIMARY KEY CLUSTERED 
(
    [USER_ID] ASC,
    [ROLE_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
复制代码

源码

 

  尽管有很多不如意,但在开源分享过程中能学到一点东西,希望也对你有所帮助,谢谢!

致歉

可能我导出数据脚本有问题,造成很多想研究的朋友数据库不成功,浪费大家时间,对IT人来说,浪费时间等于浪费金钱,生命啊,在此抱歉。

现在添加上生成表的数据库脚本。

posted on 2013-10-21 11:21  HackerVirus  阅读(1244)  评论(0编辑  收藏  举报