精华内容
下载资源
问答
  • 数据库课设】图书馆借阅系统
    2021-12-09 12:45:40

    【数据库】【keshe】图书馆借阅系统 系统+报告全家桶

    可视化窗口
    代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using WpfApp1;
    
    
    namespace 数据库课设
    {
        public partial class Form1 : Form
        {
            String bookid = null;
            String userid = null;
            String iden;        //学生或者管理员
            SQL sql = new SQL();
            DataTable dt = new DataTable();//存返回结果
            String s;//sql语句
            public Form1()
            {
                InitializeComponent();
                /*
                foreach (DataRow myRow in myTable.Rows)
                {
                    foreach (DataColumn myColumn in myTable.Columns)
                    {
                       //end+=(myRow[myColumn]); //遍历表中的每个单元格
                    }
                }*/
            }
    
    
            private void bt_login_Click(object sender, EventArgs e) //登录按钮
            {
                String id = uname.Text;  //对应数据库id
                String psw = upass.Text;    //password
                if (radioButton1.Checked)
                    iden = "学生";
                else
                    iden = "管理员";
                dt=sql.ExecRt("exec login '"+id+"','"+psw+"','"+iden+"'");
                if (dt.Rows.Count == 0)
                {
                    notexist.Show();//标签提示失败
                }
                else
                {
                    p_login.Hide();//登录成功,登录界面隐藏
                    userid = id;
                    p_loginsuccess.Show();
                    //初始化界面
                    t7.Text = "";
                    t8.Text = "";
                    t9.Text = "";
                    t10.Text = "";
                    t11.Text = "";
                    textBox6.Text = "";
                    if (iden == "学生")
                    {
                        dt = sql.ExecRt("select name from Students where id='" + userid + "'");
                        p_addbook.Hide();
                        button2.Hide();
                        button4.Hide();
                        label21.Show();
                        textBox6.Show();
                        button5.Show();
                        button6.Text = "个人中心";
                    }
                    else
                    {
                        p_addbook.Show();
                        button2.Show();
                        button4.Show();
                        label21.Hide();
                        textBox6.Hide();
                        button5.Hide();
                        button6.Text = "借书情况";
                        dt = sql.ExecRt("select name from Administrators where id='" + userid + "'");
                    }
                    label6.Text = "Welcome:" + userid + ", " + dt.Rows[0][0].ToString();
                    //初始化图书列表
                    dt = sql.ExecRt("select * from books");
                    dgv1.DataSource = dt.DefaultView;
                    dgv1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
                }
            }
    

    文档:
    报告
    点击查看系统源代码

    更多相关内容
  • C#--数据库课设.rar

    2020-01-02 22:26:52
    如果你想运行起来这个程序,那么就需要自己修改conn类中的数据库连接字符串,然后根据程序中的数据集在数据库中创建相对应的表,2020-1-2修改,有些功能代码比较冗余,不喜勿喷
  • C# 人事管理系统 数据库课设 代码自己写的,写的不是很工整,带数据库,自己改改能用
  • 文章目录Hotel-Management-Database-System开发框架源码地址相关技术学习数据库规划任务目标权限数据库逻辑设计ER图索引应用程序设计功能模块管理员功能房间管理员工管理客户管理订单管理预约入住退房登记员工功能...

    Hotel-Management-Database-System

    开发框架

    语言 :C#

    工具:Visual Studio 2019, Microsoft SQL Server Management Studio 18

    数据库:SQL Server 15.0.2

    OS:Windows 10

    框架说明

    WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。

    .NET Framework 是一种技术,支持生成和运行 Windows 应用及 Web 服务。

    .NET Framework 包括公共语言运行时 (CLR) 和 .NET Framework 类库。 公共语言运行时是 .NET Framework 的基础。 可将运行时看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。 事实上,代码管理的概念是运行时的基本原则。 以运行时为目标的代码称为托管代码,而不以运行时为目标的代码称为非托管代码。 类库是一个综合性的面向对象的可重用类型集合,可使用它来开发多种应用,这些应用包括传统的命令行或图形用户界面 (GUI) 应用,还包括基于 ASP.NET 提供的最新创新的应用(如 Web Forms 和 XML Web service)。


    源码地址

    Tcoder-l3est/Hotel-Management-Database-System: 数据库课设—酒店管理系统 (github.com)

    相关技术学习

    C#教程:C#入门经典教程,值得收藏 (biancheng.net)

    NET Framework Class Library — .NET Framework 类库

    .NET Framework 类库是一个与公共语言运行时紧密集成的可重用的类型集合。 该类库是面向对象的,并提供某些类型,可供你自己的托管代码从中派生功能。 这不但使 .NET Framework 类型易于使用,而且还减少了学习 .NET Framework 的新功能所需要的时间。 此外,第三方组件与 .NET Framework 中的类无缝集成。

    例如,.NET Framework 集合类实现一组用于开发自己的集合类的接口。 你的集合类与 .NET Framework 中的类无缝地混合。

    正如你对面向对象的类库所希望的那样,.NET Framework 类型使你能够完成一系列常见编程任务,包括字符串管理、数据收集、数据库连接以及文件访问。 除这些常规任务之外,类库还包括支持多种专用开发方案的类型。 可以使用 .NET Framework 开发下列类型的应用和服务:

    Windows 窗体类是一组综合性的可重用的类型,它们大大简化了 Windows GUI 的开发。 如果要编写 ASP.NET Web 窗体应用,可使用 Web 窗体类。

    数据库规划

    任务目标

    image-20220331191200320

    image-20220331203457738

    image-20220331203516714

    权限

    **管理员(经理)权限:**具有该系统的最高权限以及所有权限,可以对系统进行管理,可对数据库进行系统所提供的所有操作,特别地,负责员工和房间管理。权限具体陈述如下:

    1、房间管理:包括房间各种属性的增加、查询、修改和删除。

    2、员工信息管理:添加、查询、修改、删除所有员工的信息。

    3、客户管理:包括客户信息的添加、查询、修改、删除等。

    4、系统数据处理:数据查询,包括查看当前在馆书籍信息、当前所有违章罚款信息、所有被预约图书信息等。

    5、预约入住操作:预约时需要输入客户身份证号和姓名以及手机号。如果该用户未预约,则选择合适房间并充值后可以预约,提示“预约成功”;如果该用户已经预约或者入住,则弹出窗口提示并禁止操作。

    6、入住登记操作:入住时需要输入客户身份证号和姓名以及手机号。如果该用户未预约,则选择合适房间并充值后可以入住,提示“入住成功”;如果该用户已经预约,则必须按预约的房间来入住,否则提示并且禁止,并且检查是否超时,决定是否退还定金;如果该用户已入住,则禁止重复入住。

    7、退房登记操作:退房时首先查看正在进行的业务订单。如果是正在入住的订单,则进行超时查询后进行下一步处理;如果未超时,则直接退房即可,相应的信息插入到历史订单并且入住订单中删除该订单;如果超时,则需要交纳额外的超时罚款之后,再退房。最后提示:“退房成功!”。

    **员工权限:**使用系统的预约-入住-退房功能以及房间查询、客户管理。(无员工管理权限)具体权限如下:

    1、房间查询:包括房间各种属性的查询。

    2、客户管理:包括客户信息的添加、查询、修改、删除等。

    3、系统数据处理:数据查询,包括查看当前在馆书籍信息、当前所有违章罚款信息、所有被预约图书信息等。

    4、预约入住操作:预约时需要输入客户身份证号和姓名以及手机号。如果该用户未预约,则选择合适房间并充值后可以预约,提示“预约成功”;如果该用户已经预约或者入住,则弹出窗口提示并禁止操作。

    5、入住登记操作:入住时需要输入客户身份证号和姓名以及手机号。如果该用户未预约,则选择合适房间并充值后可以入住,提示“入住成功”;如果该用户已经预约,则必须按预约的房间来入住,否则提示并且禁止,并且检查是否超时,决定是否退还定金;如果该用户已入住,则禁止重复入住。

    6、退房登记操作:退房时首先查看正在进行的业务订单。如果是正在入住的订单,则进行超时查询后进行下一步处理;如果未超时,则直接退房即可,相应的信息插入到历史订单并且入住订单中删除该订单;如果超时,则需要交纳额外的超时罚款之后,再退房。最后提示:“退房成功!”。

    数据库逻辑设计

    ER图

    image-20220331211657330

    索引

    image-20220331211816659

    在表“客户”中,对主键客户编号做了索引,作为该表的主索引。每次进行相应操作,都是根据客户编号来的,所以设置为主索引。并且客户编号是递增的。

    其次在房间信息表中,对主键房间做了索引,作为该表的主索引。每次进行相应操作,都是根据房间号来查询房间的各种信息,所以设置为主索引。

    应用程序设计

    功能模块

    ​ 该酒店管理系统共面对酒店内部两种角色使用:管理员(经理),员工(前台)。

    ​ 管理员系统通过CS框架实现,具有预约入住,入住登记,退房登记,房间管理,员工管理,客户管理、订单管理七大功能;

    ​ 员工系统通过CS框架实现,具有预约入住,入住登记,退房登记,房间查询,员工查询,客户管理、订单管理七大功能;

    系统通过检测输入的数据的位数、内容,检查是否符合数据库变量类型的要求,例如限制身份证号位数必须为18位,手机号必须是11位等,能够很好地保障数据库的统一。

    ​ 功能模块具体实现可见文档


    管理员功能

    房间管理

    (1)在经理主界面,点击房间管理,即可进入房间管理主界面。

    (2)点击房间查询母功能,选择查询子功能:全部房间,已入住房间,未入住房间,已预约房间,未预约房间,实现对房间状态的了解。

    (3)点击类型查询母功能,选择查询子功能:普通房间,VIP房间,VVIP房间,大床房,双人间,有窗房间,无窗房间,实现对房间类型的查询。

    (4)点击房间修改母功能,选择子功能:添加房间,修改房间,删除房间;

    (4)添加房间:输入房间号,房间类型,价格,床型,窗型,系统默认添加时预约状态以及入住状态都是‘否’,实现房间的添加。系统会自动检查输入是否规范。

    (5)修改房间:可以通过在查询时选中房间,输入更新后信息,来修改指定房间;也可以,直接输入房间号,房间类型,价格,床型,窗型,来修改房间信息。系统会自动检查输入是否规范。

    (6)删除房间:选中房间后,点击删除房间,即可实现删除功能。

    员工管理

    (1)点击员工管理功能按钮,进入员工管理界面;

    (2)员工界面自动对经理(管理员)展示所有员工的全部信息,包括:员工号,员工姓名,员工性别,员工身份证号,员工职位,员工工资,员工登录密码,员工手机号。

    (3)点击增加新员工按钮,进入添加员工界面,输入新员工全部信息,即可添加成功。如果增添的是员工职位是经理,则会自动记录在经理实体表中。系统会自动检查输入是否规范。

    (4)点击修改员工信息按钮,进入修改员工信息子界面,并且默认修改的员工为原来界面选中的员工,输入新的员工信息,即修改成功。系统会自动检查输入是否规范。

    (5)点击删除员工按钮,根据选中的员工,进行相应的删除

    客户管理

    (1) 在主页面点击客户管理功能按钮,进入客户管理功能界面。

    (2) 查看所有客户信息

    (3) 点击增加新客户,进入增加客户子界面,输入客户的姓名,身份证,手机号,余额,类别后,点击增加按钮,即可增加成功。(系统自动实现客户编号的递增生成,自动设置客户的初始状态为‘未入住’,无需手动输入)

    (4) 在客户管理界面选中某客户后,点击修改客户信息,即可进入修改客户子界面,显示当前修改的客户的编号,管理员输入对应修改的数值后,点击修改,即修改成功。(不可以从此界面修改客户状态,否则会引起数据的不一致)

    (5) 在客户管理界面选中某客户后,点击删除客户按钮,确认删除后,即可删除成功。

    (6) 客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)

    (7) 修改折扣功能:配套于客户充值,点击进入修改客户类别折扣子功能界面,输入对应客户类别的折扣,便可修改客户享受的折扣力度。

    (8) 客户管理界面,提供基于姓名、身份证号、客户的类别进行模糊查询,输相应的信息后点击对应按钮,即可查询。

    (9) 刷新功能:点击刷新即可获得当前最新信息。

    订单管理

    (1)在经理主界面点击订单管理,选择当前订单,即可进入当前订单管理界面。

    (2)当前订单管理界面,点击查看订单,可以选择查看正在预约还未入住、正在入住还未退房的订单信息。

    (3)订单修改功能:点击订单修改中的修改预约订单,即可进入订单修改界面,此界面可以修改预约的房间号、预约入住时间、以及入住天数,实现预约信息的修改。

    (4)取消预约功能:在订单管理中选中订单,然后点击取消预约订单功能,系统自动检测是否是预约订单,如果不是,则无法取消,如果是,经过再次确认后,即可取消预约订单。并且一旦取消预约订单,则定金无法退还。

    (5)刷新功能:点击刷新即可获得当前最新信息。

    (6)若在经理主界面点击订单管理,选择历史订单,即可进入历史订单管理界面。

    (7)历史订单界面,展示已经完成的订单,包括历史订单编号、客户编号、房间号、入住时间、退房时间、超时缴费、总消费,历史订单作为重要的酒店经营数据,只能查看,不能删改,也不能主动添加,只能在完成一个业务后由系统自动添加。

    预约入住

    (1) 经理(管理员)主页面选择预约入住功能,即进入预约入住登录界面

    (2) 输入客户的姓名,身份证号,手机号。系统根据身份证号检查客户是否第一次预约、入住本酒店,如果是,系统自动更新用户数据到数据库,增加新用户;然后检查是否已预约、入住,防止重复入住。并且对于可能出现变更的姓名和手机号,系统会自动更新。

    (3) 输入信息后,点击下一步,进入预约入住-选择房间界面,该界面可以按类别查询空房间,包括普通房间、VIP、VVIP房间,并且还可以查看已预约、已入住房间。

    (4) 该界面根据不同的用户信息,自动展示,当前客户编号,当前客户类别,当前客户预约状态,当前客户入住状态,以及享受的折扣。

    (5) 输入预约房间号、预约日期、入住天数后,系统首先检查房间可入住,之后需缴纳总订单金额的10%作为定金,若后续按时入住,定金将退还,否则将额外扣除这部分费用。如果余额不够,则充值后继续入住。此外,系统会检索输入的房间号是否存在等各种规范数据的操作。

    (6) 点击预约 系统更新数据库表的信息,若成功,则显示预约成功,否则预约失败。

    (7) 客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)

    退房登记

    (1)经理(管理员)主页面选择退房登记功能,即进入退房登记功能界面。

    (2)退房登记主界面展示当前处于入住或者预约状态的订单,包括:当前订单号,客户编号,房间号,入住时间,预计退房时间,订单状态

    (3)点击查看订单,还可以分类选择查看全部订单、入住订单、预约订单。

    (4)在订单表中选中订单后,点击退房,系统首先检测是否是正在入住的订单(如果是预约订单则无法退房),之后系统自动检测,预约退房时间是否早于当前退房时间,如果是,则无需超时缴费,系统更新客户、订单、房间信息后。即退房成功;否则如果超时,则需缴纳超时缴费,超时缴费是根据超时天数以及房间价格相乘得到,没有折扣,以作为罚款,只有余额充足并且缴纳罚款后方可退房!此功能,便于酒店客房的个性化管理,非常实用!

    (8) 客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)

    (9)刷新功能:点击刷新即可获得当前最新信息。


    员工功能

    房间查询

    (1)在员工主界面,点击房间查询按钮,即可进入房间查询功能主界面。

    (2)点击房间查询母功能,选择查询子功能:全部房间,已入住房间,未入住房间,已预约房间,未预约房间,实现对房间状态的了解。

    (3)点击类型查询母功能,选择查询子功能:普通房间,VIP房间,VVIP房间,大床房,双人间,有窗房间,无窗房间,实现对房间类型的查询。

    (4)员工没有对房间进行增删改的权限,只能够查询。

    入住登记

    (1)经理(管理员)主页面选择入住登记功能,即进入入住登记功能界面。

    (2)入住登记界面先要由工作人员输入客户的姓名,身份证号以及手机号,根据身份证号,检查用户是否第一次入住,如果是系统自动更新用户数据库,增加新用户;并且检查,用户是否已经提前预约,用户现在是否在入住,以保证按预约入住和禁止重复入住。对于可能出现变更的姓名和手机号,系统会自动更新

    (3)输入信息后,自动进入入住登记-选择房间界面,该界面可以按类别查询空房间,包括VIP房间,VVIP空房间,普通空房间,还可以查看已预约房间,已入住房间。

    (4)该界面根据不同用户自动展示:当前客户编号,当前客户类别,当前客户预约状态,当前客户入住状态,以及享受的折扣。

    (5)输入房间号,以及入住天数,系统自动检查用户是否按预约房间入住,如果不是,则无法入住;并且检查已入住用户,无法重复入住;此外,若是预约用户,系统自动检测,预约入住时间是否早于当前入住登记时间,如果是,则退还定金到客户余额,如果不是,则提示,预约超时不退还。

    (6)符合入住条件的客户,系统会自动计算入住所需费用,以及客户余额,如果账户余额不足,则无法入住,需要及时充值。足够,在余额中扣除对应费用后,系统自动更新数据库表的信息成功后,即入住成功!

    (7)客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)

    客户管理

    (1)在主页面点击客户管理功能按钮,进入客户管理功能界面。

    (2)查看所有客户信息

    (3)点击增加新客户,进入增加客户子界面,输入客户的姓名,身份证,手机号,余额,类别后,点击增加按钮,即可增加成功。(系统自动实现客户编号的递增生成,自动设置客户的初始状态为‘未入住’,无需手动输入)

    (4)在客户管理界面选中某客户后,点击修改客户信息,即可进入修改客户子界面,显示当前修改的客户的编号,管理员输入对应修改的数值后,点击修改,即修改成功。(不可以从此界面修改客户状态,否则会引起数据的不一致)

    (5)在客户管理界面选中某客户后,点击删除客户按钮,确认删除后,即可删除成功。

    客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)

    (6)修改折扣功能:配套于客户充值,点击进入修改客户类别折扣子功能界面,输入对应客户类别的折扣,便可修改客户享受的折扣力度。

    (7)客户管理界面,提供基于姓名、身份证号、客户的类别进行模糊查询,输相应的信息后点击对应按钮,即可查询。

    (8)刷新功能:点击刷新即可获得当前最新信息。

    订单管理

    (1)在经理主界面点击订单管理,选择当前订单,即可进入当前订单管理界面。

    (2)当前订单管理界面,点击查看订单,可以选择查看正在预约还未入住、正在入住还未退房的订单信息。

    (3)订单修改功能:点击订单修改中的修改预约订单,即可进入订单修改界面,此界面可以修改预约的房间号、预约入住时间、以及入住天数,实现预约信息的修改。

    (4)取消预约功能:在订单管理中选中订单,然后点击取消预约订单功能,系统自动检测是否是预约订单,如果不是,则无法取消,如果是,经过再次确认后,即可取消预约订单。并且一旦取消预约订单,则定金无法退还。

    (5)刷新功能:点击刷新即可获得当前最新信息。

    (6)若在经理主界面点击订单管理,选择历史订单,即可进入历史订单管理界面。

    (7)历史订单界面,展示已经完成的订单,包括历史订单编号、客户编号、房间号、入住时间、退房时间、超时缴费、总消费,历史订单作为重要的酒店经营数据,只能查看,不能删改,也不能主动添加,只能在完成一个业务后由系统自动添加。

    预约入住

    (1)经理(管理员)主页面选择预约入住功能,即进入预约入住登录界面

    (2)输入客户的姓名,身份证号,手机号。系统根据身份证号检查客户是否第一次预约、入住本酒店,如果是,系统自动更新用户数据到数据库,增加新用户;然后检查是否已预约、入住,防止重复入住。并且对于可能出现变更的姓名和手机号,系统会自动更新。

    (3)输入信息后,点击下一步,进入预约入住-选择房间界面,该界面可以按类别查询空房间,包括普通房间、VIP、VVIP房间,并且还可以查看已预约、已入住房间。

    (4)该界面根据不同的用户信息,自动展示,当前客户编号,当前客户类别,当前客户预约状态,当前客户入住状态,以及享受的折扣。

    (5)输入预约房间号、预约日期、入住天数后,系统首先检查房间可入住,之后需缴纳总订单金额的10%作为定金,若后续按时入住,定金将退还,否则将额外扣除这部分费用。如果余额不够,则充值后继续入住。此外,系统会检索输入的房间号是否存在等各种规范数据的操作。

    (6)点击预约 系统更新数据库表的信息,若成功,则显示预约成功,否则预约失败。

    (7)客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)

    入住登记

    (1)经理(管理员)主页面选择入住登记功能,即进入入住登记功能界面。

    (2)入住登记界面先要由工作人员输入客户的姓名,身份证号以及手机号,根据身份证号,检查用户是否第一次入住,如果是系统自动更新用户数据库,增加新用户;并且检查,用户是否已经提前预约,用户现在是否在入住,以保证按预约入住和禁止重复入住。对于可能出现变更的姓名和手机号,系统会自动更新

    (3)输入信息后,自动进入入住登记-选择房间界面,该界面可以按类别查询空房间,包括VIP房间,VVIP空房间,普通空房间,还可以查看已预约房间,已入住房间。

    (4)该界面根据不同用户自动展示:当前客户编号,当前客户类别,当前客户预约状态,当前客户入住状态,以及享受的折扣。

    (5)输入房间号,以及入住天数,系统自动检查用户是否按预约房间入住,如果不是,则无法入住;并且检查已入住用户,无法重复入住;此外,若是预约用户,系统自动检测,预约入住时间是否早于当前入住登记时间,如果是,则退还定金到客户余额,如果不是,则提示,预约超时不退还。

    (6)符合入住条件的客户,系统会自动计算入住所需费用,以及客户余额,如果账户余额不足,则无法入住,需要及时充值。足够,在余额中扣除对应费用后,系统自动更新数据库表的信息成功后,即入住成功!

    (7)客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)

    退房登记

    (1)经理(管理员)主页面选择退房登记功能,即进入退房登记功能界面。

    (2)退房登记主界面展示当前处于入住或者预约状态的订单,包括:当前订单号,客户编号,房间号,入住时间,预计退房时间,订单状态

    (3)点击查看订单,还可以分类选择查看全部订单、入住订单、预约订单。

    (4)在订单表中选中订单后,点击退房,系统首先检测是否是正在入住的订单(如果是预约订单则无法退房),之后系统自动检测,预约退房时间是否早于当前退房时间,如果是,则无需超时缴费,系统更新客户、订单、房间信息后。即退房成功;否则如果超时,则需缴纳超时缴费,超时缴费是根据超时天数以及房间价格相乘得到,没有折扣,以作为罚款,只有余额充足并且缴纳罚款后方可退房!此功能,便于酒店客房的个性化管理,非常实用!

    (5)客户充值功能:选中客户,点击客户充值,即可进入客户充值界面,系统自动锁定充值的客户,输入充值金额,点击充值,即可充值成功。(设置奖励机制,单次充值满一定金额可以升级客户类别,不同的客户类别享有不同的折扣,可以适应酒店的个性化营销策略)

    (6)刷新功能:点击刷新即可获得当前最新信息。


    界面设计

    欢迎界面

    image-20220331212638580

    登陆界面

    image-20220331212657585

    经理主界面

    image-20220331212717449

    员工主界面

    image-20220331212748246

    预约入住

    image-20220331212819149

    image-20220331212836665

    image-20220331212850373

    image-20220331212900210

    充值界面

    image-20220331212919934

    入住登记

    image-20220331212941301

    退房登记

    image-20220331213004850

    员工管理界面

    image-20220331213027065

    增删查改

    image-20220331213048211

    image-20220331213101850

    客户管理

    image-20220331213114878

    image-20220331213128633

    订单管理

    image-20220331213200353

    image-20220331213210722

    房间管理

    image-20220331213225087

    image-20220331213240506

    事务设计

    入住登记,输入信息后,会自动检索,之后在入住时,会同时对客户、房间、订单表做修改,需要保证ACID特性;通过采用从数据库直接读取某行数据以及从界面的表中读取数据,实现前期数据的处理;后期execute的sql必须要每一条都执行成功,写在一个sql中,从而保证了原子性多个表都修改,保证了一致性。

    参考文献

    [1] Abraham Silberschatz,Henry F.Korth,《数据库系统概念》,机械工业出版社,2008。

    [2] 王华杰,黄山 《精通C#数据库编程》,科学出版社,2003

    [3] Chirs H.Pappas,William H.Murray 《C#Windows编程》,人民邮电出版社,2002

    [4] 刘勇,周学军,《SQL Server 2000基础教程》,人民邮电出版社,2007。

    展开全文
  • 数据库课设——超市收银管理系统:实现商品信息、会员信息、促销信息、收银员信息管理 ;实现会员购买、支付 管理;实现收银员销售统计。
  • 期末老师布置的题目,简单的做了数据库设计,仅供参考!
  • C# 数据库课程设计

    万次阅读 多人点赞 2018-06-26 13:37:41
    数据库课程设计报告 题目:安徽工业大学通讯录管理系统 学号: 159074294姓名: 程效龙班级: 网152指导教师:陈业斌完成日期:2018年6月7日 目录一 引言1.1 通讯录系统设计开发的目的和意义1.2设计通讯录系统...

                            数据库课程设计报告

     

     

     

     

     

     

     

    题目:安徽工业大学通讯录管理系统

     

     

     

     

     

     

     

     

     

    学号: 1590.......

    姓名:程学长

    指导教师:陈业斌

    完成日期:2018年6月7

     

     

     

     

     

     

    目录

    引言

    1.1 通讯录系统设计开发的目的和意义

    1.2设计通讯录系统的任务及目标

    1.3通讯录系统开发及运行的软硬件环境

    通讯录系统的分析与设计

    2.1 通讯录系统需求分析

    2.1.1通讯录系统的目标任务

    2.1.2 通讯录系统的数据流图

    2.2 通讯录系统概念结构设计

    2.3 通讯录系统逻辑结构设计

    2.4 通讯录系统数据库创建

    2.5 通讯录系统总体结构设计

    三 通讯录系统的开发及实现

    3.1 通讯录系统的登录模块

    3.2 通讯录系统的主界面

    3.2.1 管理员登录界面

    3.2.2 普通用户登录界面

    3.3通信录系统的插入界面

    3.4 通讯录系统的修改界面

    3.5 通讯录系统的分组管理

    3.6 通讯录系统分组信息的插入和修改

    C#Windows窗体使用的背景图片

    五 总结

    参考文献

    附录 实验源码

     

     

    一:引言

    1.1安徽工业大学通讯录系统设计开发的目的和意义

    方便各级校友和在校人员交流

    适应快速发展的网络时代,大大方便了人们之间的交流

    1.2设计通讯录系统的任务及目标

    通讯录管理系统以方便人们的联系而创建的一个系统。在此系统中,为每个使用此系统的用户开发了用户名和密码,保证了用户的信息安全性。与此同时,此系统用于储存用户的基本信息和常用的联系方式,它方便了用户个人信息的储存和快速查阅的功能。

    1.3通讯录系统开发及运行的软硬件环境

    开发通讯录系统开发平台及运行环境如下:

    系统开发平台:Microsoft Visual Studio 2012

    系统开发语言:C#

    数据库管理软件:SQL Server 2008

    运行平台:Windows 10

    二:通讯录系统的分析与设计

    2.1 通讯录系统需求分析

    2.1.1通讯录系统的目标任务

    通讯录管理系统主要功能分为七个模块:用户登录、用户查询、添加记录、修改记录、删除记录、分组信息的查询以及分组信息的增删。

    用户登录:实现不同用户登录通讯录。

    显示全部:实现用户对所有存在于数据库中的数据的显示,方便用户了解数据存储的情况。

    查找记录:实现用户在本软件数据库中查找自己需要的数据功能。

    添加记录:实现用户添加一条完整的记录,包括姓名、生日、电话、邮箱。

    修改记录:用户对数据库中已存在的记录进行修改,然后保存已经修改过的数据。

    删除记录:用户对数据库中已经存在的记录进行行删除操作,然后保存修改过的数据。

    分组信息查询:方便用户对通讯录的管理,针对通讯录中的人进行分组。

    分组信息的增删:实现用户增加、删除、修改联系人分组。

     

     

     

     

     

    2.1.2 通讯录系统的数据流图


     

     

     

     

     

     

     

     


     

     

     

     

     

     

     


     

     

     

     

     

     


     

     

     

     

    2.2 通讯录系统概念结构设计

    由需求分析的结果可知,本系统设计的实体包括:

    1)登录基本信息:用户名,密码。

    2)联系人基本信息:姓名,性别,出生日期,email,电话号码

    3)分组人基本信息:姓名,分组名称(院校),工作地点。

    这些实体间的联系包括:

    (1) 每位用户可以有多位联系人,多位联系人也可属于多个用户

    (2) 每位联系人属于一个分组。

    由上述分析可得到系统的E—R图:


     

     

     

     

     

     

     

     

    2.3 通讯录系统逻辑结构设计

    由系统E—R图转化而得到的关系模式如下:

    1)users(用户名,密码),其用户名为主键。

    2)联系人表(姓名,性别,出生日期,email,电话号码),其姓名为主键。

    3)分组信息(姓名,分组名称,工作地点),(姓名,分组名称)为主键。

    数据库中用到的表:

    2.1 users表

    Table 2.1 users

    属性名

    字段类型

    完整性约束

    用户名

    char

    Primary key

    密码

    char

    Not Null

    2.2 联系人表

    Table 2.2 Linkman

    属性名

    字段类型

    完整性约束

    姓名

    char

    Primary key

    性别

    char

    not null

    出生日期

    datetime

    not null

    email

    char

    not null

    电话号码

    char

    not null

    2.3 分组信息表

    Table 2.3 Group

    属性名

    字段类型

    完整性约束

    姓名

    char

    Primary key

    分组名称

    char

    Primary key

    工作地点

    char

    Not null

     

    2.4 通讯录系统数据库创建

      users表

     

     

     

    联系人表

     

     

     

    分组信息表


     

     

     

     

     

     

     

    2.5通讯录系统总体结构设计

     

     

     

     

     

      

    2.5 总体结构

    Fig 2.5 Form

    通讯录系统的开发及实现

    3.1 通讯录系统的登录模块

    打开此系统,我们先看到的是欢迎界面。从欢迎界面中,我们可以选择以管理员或是普通用户的身份进入通讯录系统。


     

    若以管理员身份登录,进入login


     

     

     

    若以普通用户的身份登录,进入login1


     

    3.2 通讯录系统的主界面

    3.2.1 管理员界面

    textbox中输入用户名和密码,点击登录按钮,与数据库的users表连接,验证输入的用户名和密码是否都正确。另外,当用户名和密码输入不正确或者为空时,都会弹出提示框来提示操作错误,重新输入。如果输入正确,则可以进入通讯录系统的主界面main。

     

     

    若以普通用户的身份登录,验证方法同上,进入通讯录系统主界面main1.

     

     

     

    3.3通信录系统的插入界面

     

    进入插入界面后,按照顺序将要添加的联系人信息填写完整,如果信息输入不完整,拒绝插入,反之,可以完成插入,显示插入成功的提示。可以返回通讯录系统登录主界面刷新查看,添加完成。


     

     

     

     

     

    3.4 通讯录系统的修改界面

    进入修改界面,修改要修改的信息,要提示的是,在数据库中,姓名为主键,在此不做修改。修改完成后,点击确定,返回一个修改成功的提示。此时,回到通讯录系统的主界面刷新查询,可以看到修改完成。

     

     

    3.5 通讯录系统的分组管理

    把分组信息表中的信息读到分组管理界面的datagridview中。


     

    选中某一行,点击删除。

     

     

    若删除成功,点击刷新,可以看到:

     

     

     

     

    3.6 通讯录系统分组信息的添加和修改

    为了方便操作,让添加和修改使用同一个显示界面,在分组管理的主界面点击修改按钮时,弹出插入窗口,将此窗口的名字改为“修改”。

     

     

     

     

     

     

    Windows窗体使用的背景图片

     图片均来自网上下载,大家可以自己下载设置不同的背景

     

     


     

     

     

    五.总结

    (1)一开始做数据库课程设计时,我花了半天时间构思做什么以及如何设计,最后确定做个安徽工业大学通讯录管理系统,觉得这个挺有意思的。

     

    (2)然后开始用C#设计,Windows 窗体部分比较简单,难的是代码如何写,经过我翻阅C#书以及从网上查阅资料,最终完成了代码部分。

     

    (3)然后我开设计数据库,因为已经学过数据库了,所以这部分并不太难

     

    (4)最后连接数据库,进行测试,测试阶段花的比设计时间还长,其中有一个错误令我印象深刻,

    sql = "select  姓名,性别,出生日期,email,电话号码,分组名称,工作地点 from 联系人表,分组信息 where 分组名称 = '" + textBox1.Text.Trim() + "' and 联系人表.姓名=分组信息.姓名";

    一开始如下,运行时,一直报错。最后发现了错,少了 联系人表.姓名

    sql = "select  联系人表.姓名,性别,出生日期,email,电话号码,分组名称,工作地点 from 联系人表,分组信息 where 分组名称 = '" + textBox1.Text.Trim() + "' and 联系人表.姓名=分组信息.姓名";

     

    (5)调试好所有的错误之后,我为了使界面美观,又从网上下载了Windows 窗体背景图片,并加入进去

     

    (6)最后完成了实验报告

     

    (7)这次的数据里课程设计,说心里话,我真的收获很多,首先,我对VS 2012 C# 这门语更加熟悉了,其次,我对数据库也更加熟悉了

     

    参考文献

    [1] 王珊 萨师煊.数据库系统概论.第四版.北京.高等教育出版社.2006年

    [2] 王超,潘杨.Visual C# 通用范例开发金典.北京.电子工业出版社.2008年

    [3] 马骏.c#程序设计及应用教程.第二版.北京.人民邮电出版社.2009

    [4] 陈向群,陈鸣,戴葵等.高等院校计算机课程设计指导丛书.北京.机械工程出版社.2012

     

     

     

    附录.源代码

    1.publicclass类源程序

     

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Data;

    using System.Data.SqlClient;

    using System.Threading.Tasks;

     

    namespace Course_Design_of_Database

    {

        class publicclass

        {

            public static SqlConnection createconn()

            {

                string connStr = @"Data Source=DESKTOP-KD4V0Q1\SQLEXPRESS;Initial Catalog=DatabaseTongxunlu;Integrated Security=True";

                SqlConnection conn = new SqlConnection(connStr);

                return conn;

            }

     

            public static DataTable gettable(string sql)

            {

                SqlConnection conn = createconn();

                SqlDataAdapter da = new SqlDataAdapter(sql, conn);

                DataTable dt = new DataTable();

                da.Fill(dt);

                return dt;

            }

     

            public static bool zhixingSQl(string sql)

            {

                SqlConnection conn = createconn();

                SqlCommand cmd = new SqlCommand(sql, conn);

                if (conn.State != ConnectionState.Open)

                {

                    conn.Open();

                }

                if (cmd.ExecuteNonQuery()>0)

                {

                    return true;

                }

                else

                {

                    return false;

                }

                conn.Close();

            }

            public static bool checkUser(string userName, string passWord)

            {

                string sql = "select 密码 from users where 用户名= '" + userName + "'";

                DataTable dt = gettable(sql);

                if (passWord == dt.Rows[0]["密码"].ToString().Trim())

                {

                    return true;

                }

                else

                {

                    return false;

                }

            }

        }

    }

    2. welcome界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class welcome : Form

        {

            public welcome()

            {

                InitializeComponent();

            }

     

            private void Welcome_Load(object sender, EventArgs e)

            {

     

            }

     

            private void button1_Click(object sender, EventArgs e)

            {

                login lo = new login();

                lo.Show();

            }

     

            private void button2_Click(object sender, EventArgs e)

            {

                login1 lo1 = new login1();

                lo1.Show();

            }

        }

    }

     

    3. login 界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class login : Form

        {

            public login()

            {

                InitializeComponent();

            }

     

            private void buttonok_Click(object sender, EventArgs e)

            {

                if (textBoxname.Text.Length != 0 && textBoxpwd.Text.Length != 0)

                {

                    if (publicclass.checkUser(textBoxname.Text.Trim(), textBoxpwd.Text.Trim()))

                    {

                        main formMain = new main();

                        formMain.Show();

                    }

                    else

                    {

                        MessageBox.Show("用户名或密码不正确", "提示");

                    }

                }

                else

                {

                    MessageBox.Show("用户名或¨密码不能¨为空", "提示");

                }

            }

     

            private void buttoncancel_Click(object sender, EventArgs e)

            {

                Application.Exit();

            }

     

            private void login_Load(object sender, EventArgs e)

            {

     

            }

        }

    }

    4.login1 界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class login1 : Form

        {

            public login1()

            {

                InitializeComponent();

            }

     

            private void button1_Click(object sender, EventArgs e)

            {

                if (textBoxname.Text.Length != 0 && textBoxpwd.Text.Length != 0)

                {

                    if (publicclass.checkUser(textBoxname.Text.Trim(), textBoxpwd.Text.Trim()))

                    {

                        main1 formMain = new main1();

                        formMain.Show();

                    }

                    else

                    {

                        MessageBox.Show("用户名或密码不正确", "提示");

                    }

                }

                else

                {

                    MessageBox.Show("用户名或¨密码不能¨为空", "提示");

                }

            }

     

            private void button2_Click(object sender, EventArgs e)

            {

                Application.Exit();

            }

        }

    }

    5.main界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class main : Form

        {

            public main()

            {

                InitializeComponent();

            }

     

            private void 插入ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                insert forminsert = new insert();

                forminsert.Show();

            }

     

            private void main_Load(object sender, EventArgs e)

            {

                DataTable dt = publicclass.gettable("select * from 联系人表");

                dataGridView1.DataSource = dt;

            }

     

            private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                string name;

                int index = dataGridView1.CurrentRow.Index;

                name = dataGridView1["姓名", index].Value.ToString().Trim();

                string sql = "delete 联系人表 where 姓名='" + name + "'";

                if (MessageBox.Show("是否要删除", "提示", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)

                {

                    if (publicclass.zhixingSQl(sql))

                    {

                       

                        MessageBox.Show("删除成功|");

                        group formgroup1 = new group();

                        formgroup1.Show();

                    }

     

                    else

                    {

                        MessageBox.Show("删除失败");

                    }

                }

            }

     

            private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                string name;

                int index = dataGridView1.CurrentRow.Index;

                name = dataGridView1["姓名", index].Value.ToString().Trim();

                modify formmodify = new modify(name);

                formmodify.Show();

            }

     

            private void 添加分组ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                group formgroup = new group();

                formgroup.Show();

            }

     

            private void 查询ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                string sql;

                if (textBoxname.Text.Length != 0)

                {

                    sql = "select * from 联系人表 where 姓名= '" + textBoxname.Text.Trim() + "'";

                }

                else

                {

                    sql = "select * from 联系人表";

                }

                DataTable dt = publicclass.gettable(sql);

                dataGridView1.DataSource = dt;

            }

      private void button1_Click(object sender, EventArgs e)

            {

                Application.Exit();

            }

        }

    }

    6.main1界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    //using Excel = Microsoft.Office.Interop.Excel;

    using System.Data.OleDb;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class main1 : Form

        {

            public main1()

            {

                InitializeComponent();

            }

     

            private void 查询ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                string sql;

                if (textBox1.Text.Length != 0)

                {

                    sql = "select  联系人表.姓名,性别,出生日期,email,电话号码,分组名称,工作地点 from 联系人表,分组信息 where 分组名称 = '" + textBox1.Text.Trim() + "' and 联系人表.姓名=分组信息.姓名";

                }

                else

                {

                    sql = "select  联系人表.姓名,性别,出生日期,email,电话号码,分组名称,工作地点 from 联系人表,分组信息 where  联系人表.姓名=分组信息.姓名";

                }

                DataTable dt = publicclass.gettable(sql);

                dataGridView1.DataSource = dt;

            }

     private void button1_Click(object sender, EventArgs e)

            {

                Application.Exit();

            }

     

            

        }

    }

    7.insert界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class insert : Form

        {

            public insert()

            {

                InitializeComponent();

            }

     

            private void in_insert_Click(object sender, EventArgs e)

            {

                if (in_name.Text.Length != 0  && in_phone.Text.Length != 0 &&

                     in_email.Text.Length != 0 && in_datatime.Text.Length != 0 &&

                    comboBox1.SelectedItem != null)

                {

                     string sql = "insert into 联系人表 (姓名,性别,出生日期,email,电话号码)values('" +

                        in_name.Text.Trim() + "','" + comboBox1.SelectedItem.ToString() + "','" + in_datatime.Text.Trim() +"','" + in_email.Text.Trim() + "','" + in_phone.Text.Trim() + "')";

                    if (publicclass.zhixingSQl(sql))

                    {

                        MessageBox.Show("插入成功");

                        this.Close();

                    }

                    else

                    {

                        MessageBox.Show("插入失败");

                    }

                }

                else

                {

                    MessageBox.Show("请完整填写信息");

                }

            }

     

            private void button2_Click(object sender, EventArgs e)

            {

                this.Close();

            }

     

            private void insert_Load(object sender, EventArgs e)

            {

                try 

                {

                    comboBox1.Items.Add("man");

                    comboBox1.Items.Add("woman");

                }

                catch(Exception ex)

                    {

                        MessageBox.Show(ex.Message);

                    }

     

            }

        }

    }

    8.modify界面源程序

     

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class modify : Form

        {

            string _name;

            public modify(string name)

            {

                InitializeComponent();

                _name = name;

            }

     

            private void mo_modify_Click(object sender, EventArgs e)

            {

                if (mo_name.Text.Length != 0 && mo_phone.Text.Length != 0 &&

                     mo_email.Text.Length != 0 && mo_datetime.Text.Length != 0 &&

                    mo_sex.Text.Length != 0)

                {

                    string sql = "update 联系人表 set 性别= '" + mo_sex.Text.Trim() + "',出生日期 = '" +

                        mo_datetime.Text.Trim() + "',email='" + mo_email.Text.Trim() + "' ,电话号码='" + mo_phone.Text.Trim() + "' where 姓名= '" + _name + "'";

                    if (publicclass.zhixingSQl(sql))

                    {

                        MessageBox.Show("修改成功");

                        this.Close();

                    }

                    else

                    {

                        MessageBox.Show("修改失败");

                    }

                }

                else

                {

                    MessageBox.Show("请完整填写信息");

                }

            }

     

            private void button2_Click(object sender, EventArgs e)

            {

                this.Close();

            }

     

            private void modify_Load(object sender, EventArgs e)

            {

                DataTable dt = publicclass.gettable("select * from 联系人表 where 姓名 = '" + _name + "'");

                mo_name.Text = _name;

                mo_sex.Text = dt.Rows[0][1].ToString().Trim();

                mo_datetime.Text = dt.Rows[0][2].ToString().Trim();

                mo_email.Text = dt.Rows[0][3].ToString().Trim();

                mo_phone.Text = dt.Rows[0][4].ToString().Trim();

            }

        }

    }

    9.group界面源程序

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class group : Form

        {

            public group()

            {

                InitializeComponent();

            }

     

            private void group_Load(object sender, EventArgs e)

            {

                DataTable dt = publicclass.gettable("select * from 分组信息");

                dataGridView1.DataSource = dt;

            }

     

            private void 添加ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                group1 formgroup1 = new group1();

                formgroup1.Show();

            }

     

            private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                string name;

                int index = dataGridView1.CurrentRow.Index;

                name = dataGridView1["姓名", index].Value.ToString().Trim();

                string sql = "delete 分组信息 where 姓名='" + name + "'";

                if (MessageBox.Show("是否要删除", "提示", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)

                {

                    if (publicclass.zhixingSQl(sql))

                    {

                        MessageBox.Show("删除成功");

                    }

                    else

                    {

                        MessageBox.Show("删除失败");

                    }

                }

            }

     

            

     

            private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                group_Load(null, null);

            }

     

            private void 修改ToolStripMenuItem_Click_1(object sender, EventArgs e)

            {

                string gr_name;

                int index = dataGridView1.CurrentRow.Index;

                gr_name = dataGridView1["姓名", index].Value.ToString().Trim();

                group1 modgr = new group1(gr_name);

                modgr.Show();

            }

     private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)

            {

                this.Close();

            }

        }

    }

    10.group1界面源程序

     

    using System;

    using System.Collections.Generic;

    using System.ComponentModel;

    using System.Data;

    using System.Drawing;

    using System.Linq;

    using System.Text;

    using System.Threading.Tasks;

    using System.Windows.Forms;

     

    namespace Course_Design_of_Database

    {

        public partial class group1 : Form

        {

            public group1()

            {

                InitializeComponent();

            }

            public group1(string gr_num)

            {

                InitializeComponent();

                this.Text = "修改";

                this.gr_name1.Text = gr_num;

                this.gr_name1.Enabled = false;

                this.button1.Text = "修改";

            }

     

            private void button1_Click(object sender, EventArgs e)

            {

                if (this.Text != "修改")

                {

                    if (gr_name1.Text.Length != 0 && gr_name.Text.Length != 0 && gr_add.Text.Length != 0)

                    {

                        string sql = "insert into 分组信息(姓名,分组名称,工作地点) values('" +

                            gr_name1.Text.Trim() + "','" + gr_name.Text.Trim() + "','" + gr_add.Text.Trim() + "')";

                        if (publicclass.zhixingSQl(sql))

                        {

                            MessageBox.Show("插入成功");

                            this.Close();

                        }

                        else

                        {

                            MessageBox.Show("插入失败");

                        }

                    }

                    else

                    {

                        MessageBox.Show("请完整填写信息");

                    }

                }

                else

                {

                    if (gr_name1.Text.Length != 0 && gr_name.Text.Length != 0 && gr_add.Text.Length != 0)

                    {

                        string sql = "update 分组信息 set 工作地点='" + gr_add.Text.Trim() + "',分组名称 = '" +

                            gr_name.Text.Trim() + "' where 姓名= '" + gr_name1.Text.Trim() + "'";

                        if (publicclass.zhixingSQl(sql))

                        {

                            MessageBox.Show("修改成功");

                            this.Close();

                        }

                        else

                        {

                            MessageBox.Show("修改失败");

                        }

                    }

                    else

                    {

                        MessageBox.Show("请完整填写信息");

                    }

                }

            }

            private void button2_Click(object sender, EventArgs e)

            {

                this.Close();

           } 

     }  

     }

    展开全文
  • 一个关于图书租赁管理的数据库课程设计 内容:完整代码(含注释)+数据库备份文件 开发环境:VS2012(C#)+SQL2008
  • 数据库课程设计,略为简陋,通过C#设计一个教室管理系统
  • 数据库课设,代码部分,连接的MySQL,下载到本地后,数据库的连接在更改用户名和密码后,即可开始本地测试使用。本课设只用于学术交流,请勿用于商业用途。
  • C#编写的图书管理系统包含书录的增删改查以及排序等功能,适合数据库课设学习
  • 工资管理系统数据库课设报告(附C#代码).doc
  • 工资管理系统数据库课设报告附C#代码.doc
  • C#编写的数据库课设,简易的增删改查,采取weifengluo插件,适用于学习大学期间的数据库课设
  • 基于数据库和framework web框架,适用于大学生,qq联系3054381608,价格可以商议,细节也可交流
  • 数据库设计二、使用步骤1.引入库2.读入数据总结 前言 该课程设计使用C#+html+sql语言 一、 概述 程序名称: 学生宿舍管理系统 开发平台: Window 10 Microsoft Visual Studio 2010 Microsoft SQL Server 2008 运行...

    前言


    提示:该课程设计使用C#+sql语言,文章为原创,仅供参考


    链接: https://pan.baidu.com/s/17cD9JKikljMehg6M5sp5jQ 提取码:6wog 复制这段内容后打开百度网盘手机App,操作更方便哦

    在这里插入图片描述


    一、 概述

    (一)、程序名称: 学生宿舍管理系统

    (二)、开发平台:Window 10

    Microsoft Visual Studio 2010
    Microsoft SQL Server 2008

    (三)、运行环境: Windows NT/2000/XP/VISTA/7/8/10

    (四)、系统管理的对象:

    ◇系统用户信息:用户编号、用户名、密码、用户权限
    ◇宿舍信息:宿舍编号、宿舍号、宿舍楼、楼层、床位数、单价、人数
    ◇宿舍楼信息:楼编号、宿舍数、楼位置
    ◇学生信息:学号、姓名、性别、年龄、所在院系、年级、电话
    ◇学生进出记录: 学号、进入时间、离开时间、是否晚归、原因
    ◇调整宿舍信息:学号、调整时间、原宿舍、新宿舍、理由
    ◇学生宿舍信息:学号、宿舍编号

    (五)、开发背景:

    学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工去一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,并且具备完善的报表生成、修改功能,能够快速的查询学校所需的住宿信息。

    (六)、程序基本原理及技术需求说明:

    为了使系统使用者操作方便,提供便利的数据查询修改和删除信息,在程序上开发出了八个主面板每个面板都负责不同的功能,可以查询、添加、删除学生、宿舍、楼房等信息,便于管理、节省人力。同时,提供了人性化、美观的操作界面、尽可能的为用户的录入,查询等操作提供方便,同时,系统应具备以下功能:
    ◇用户管理:不同权限用户实现不同管理功能。超级管理员可以管理宿舍楼 信息,楼中的宿舍房等信息;普通管理员可以管理宿舍成员;普通用户可查看宿舍成员的信息。
    ◇宿舍管理:根据院系、年级分配寝室,登记住宿情况,可调整学生宿舍。
    每个同学只能在一个宿舍,不同宿舍的费用标准可以不同。不同院系、年级的同学可以住同一间宿舍。
    ◇学生管理:实现入住学生信息的登记、维护和查询功能。
    ◇信息查询:按公寓楼号、学生姓名等查询住宿信息。
    ◇出入登记:对学生进出公寓的情况进行登记、实现基本的出、入监控功能。

    二、 程序概要设计

    (一)、程序结构图

    在这里插入图片描述

    (二)、数据库设计

    1.Building

    在这里插入图片描述

    2.Dormitory

    在这里插入图片描述
    在这里插入图片描述

    3.Manager

    在这里插入图片描述

    4.Student

    在这里插入图片描述
    在这里插入图片描述

    5.StuDormitory

    在这里插入图片描述

    6.Visiter

    在这里插入图片描述

    7.Adjust

    在这里插入图片描述

    8.InOut

    在这里插入图片描述
    在这里插入图片描述

    (三)、程序的文件结构

    数据库信息保存在mdf文件中,ldf文件为数据库的日志文件。cs文件为程序类文件,存放定义的各种类以及界面信息,jpg文件为程序背景图片,用于美化界面,resx 文件为资源文件 ,是用于将逻辑层与显示层隔离。csproj文件为程序的工程文件
    关系E-R图
    在这里插入图片描述

    (四)、分配宿舍子E-R图

    在这里插入图片描述

    三、程序详细设计

    (一)、系统数据库的设计

    1.创建数据库

    CREATE DATABASE [dms] ON PRIMARY
    ( NAME = N’test’, FILENAME = N’E:\sql server 2008 r2\sql server 实例\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test.mdf’ , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
    LOG ON
    ( NAME = N’test_log’, FILENAME = N’E:\sql server 2008 r2\sql server 实例\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test_log.ldf’ , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
    GO
    CREATE DATABASE home
    ON
    (NAME = home_Data,
    FILENAME = ''E:\sql server 2008 r2\sql server 实例\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test.mdf ',
    SIZE = 3072kb
    MAXSIZE = UNLIMITED
    FILEGROWTH =1024kb
    LOG ON
    (NAME = ’ test_log ',
    FILENAME = ’ E:\sql server 2008 r2\sql server 实例\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\test_log.ldf ',
    SIZE = 1024kb,
    MAXSIZE = 2048gb,
    FILEGROWTH = 10%
    此段代码为数据库的建库代码,通过SQL语句建立了名为test的这个数据库,位置为: E:\sql server 2008 r2\sql server 实例\MSSQL10_50.MSSQLSERVER\MSSQL\DATA

    2.建表

    CREATE TABLE [dbo].[Manager](
    [mid] [int] NOT NULL,
    [pass] char NOT NULL,
    [name] varchar NOT NULL,
    [permision] char NOT NULL,
    CONSTRAINT PRIMARY KEY CLUSTERED
    ([mid] ASC)
    ) ON [PRIMARY]
    此段为数据库的建表代码,建立了名为Manager的表,以及表内的各个列名。

    CREATE TABLE Adjust(
    sid bigint NOT NULL,
    atime date NOT NULL,
    olddid int NOT NULL,
    newdid int NOT NULL,
    reason nvarchar(50) NULL,
    PRIMARY KEY (sid ,atime),
    foreign key(sid) references Student(sid)on UPDATE CASCADE ON DELETE CASCADE,
    foreign key(olddid) references Dormitory(did)on UPDATE CASCADE ON DELETE CASCADE,
    foreign key(newdid) references Dormitory(did)on UPDATE CASCADE ON DELETE CASCADE,
    )
    该段建立了名为Adgust的表,其中,主码为sid 外码为olddid和newdid ,同时设置了级联操作,在主表更新或删除记录是能够将与其相关的信息也进行更新
    后面的几个表格的建表代码都与这段大同小异,无异于数据的类型不一样,以及每一列的列名不一样,是都能被设置成空值,以及是否有主键,主键为哪一个列。

    (二)、程序主体代码

    1.连接数据库

    string constr = @“data source=.;database = dms; integrated security = true”;
    SqlConnection connection = new SqlConnection(constr);
    connection.Open();
    此段代码为在C#的窗口中连接数据库用的语句,但是这个语句在C#中调用SQL语句要添加头文件using System.Data.SqlClient;但是每次连接完数据库后都建议使用connection.Close();来关闭数据库的连接,以造成数据库的信息的泄露。

    2.获取数据库信息

    public static DataSet 获?取¨?数ºy据Y(string sqlStr)
    {
    try
    {
    try
    {
    conn.Open();
    }
    catch
    {
    }
    SqlDataAdapter myAdapter = new SqlDataAdapter(sqlStr, conn);
    DataSet myDataSet = new DataSet();
    myDataSet.Clear();
    myAdapter.Fill(myDataSet);
    conn.Close();
    if (myDataSet.Tables[0].Rows.Count != 0)
    {
    return myDataSet;
    }
    else
    {
    return null;
    }
    }
    catch
    {
    MessageBox.Show(“打䨰开a数ºy据Y库a失º¡ì败㨹”, “提¬¨¢示º?”);
    return null;
    }
    }
    为方便程序需要,直接将获取表格数据的操作分装为一个静态类,以便于其他类或方法调用

    3.登录功能

    为了区分登录账号信息,避免过多的无用访问数据库,在登录的时候检查了账号信息
    

    并通过正则表达式检查信息
    public class 正则¨
    {

        public static bool IsInt(string value)//正整数
        {
            return Regex.IsMatch(value, @"^[1-9]\d*$");
        }
    

    }

    接着通过SQL的SELECT语句来查询在manager表中的信息
    String 数据库字符串 =“select * from Manager where mid=’” + 账号Text.Trim() + “’”;
    DataSet 数据集 = new DataSet();
    数据集 = database.获取数据(数据库字符串);
    if (数据集 == null)//没有匹配账户
    {……}
    else登录成功
    {
    String 原密码 = 数据集
    Tables[0].Rows[0][“pass”].ToString();
    if (原密码Trim().Equals(密码.Text.Trim()))//匹配成功
    {……}
    else //匹配失败
    {……}
    }

    若在查询中找到一样的账号名,则使用if语句来判断输入的密码是否与数据库中的该账号所对应的密码是否一样。若一样则登录成功。否则为密码或账号错误,无法登录。登录后会跳转页面到主菜单的界面,并且关闭掉不用使用的登录窗体。

    4.查看学生同一宿舍成员信息

    DataSet ds = new DataSet();
    DataTable dt = new DataTable();
    ds = database.获取数据
    (@“select *from Student where sid in
    (select sid from StuDormitory where did in
    (select did from StuDormitory
    where StuDormitory.sid=’” + 登录d.ToString() + “’))”
    );
    改选择语句先从学生-宿舍表里选择和当前学生相同宿舍编号的学号,再在学生表里用聚合语句选出,具有所选学号的学生
    if (ds != null)
    {
    int count = ds.Tables[0].Rows.Count;
    dt.Columns.Add(“sid”, typeof(string));//添加列
    ……
    ……
    dt.Columns.Add(“phone”, typeof(string)) //添加列
    for (int i = 0; i < count; i++)
    {
    DataRow dr1 = dt.NewRow();
    dr1[“sid”] = ds.Tables[0].Rows[i][“sid”].ToString();
    ……
    ……
    Convert.ToDateTime(ds.Tables[0].Rows[i][“birth”].ToString()).Year).ToString() + “岁¨º”;
    dr1[“faculty”] = ds.Tables[0].Rows[i][“faculty”].ToString();
    dr1[“class”] = ds.Tables[0].Rows[i][“class”].ToString();
    dr1[“phone”] = ds.Tables[0].Rows[i][“phone”].ToString();
    dt.Rows.InsertAt(dr1, 0);
    }
    信息表.DataSource = dt;
    信息表.Columns[“sid”].HeaderText = “学¡ì号?”;
    ……
    ……
    信息表.Columns[“year”].HeaderText = “年¨º龄¢?”;
    信息表.Columns[“year”].DisplayIndex = 3;

            }
            else
            {
                信息表.DataSource = null;
            }
    在这里将查询到的表数据作为临时数据、再新建一个显示表,由于在基本表里存放的数据需要经过边换,
    例如学生的生日转换成年龄,再为显示表增加一列,显示年龄。
    

    5. 空余宿舍获取

    ds = database.获取数据
    ("select * from Dormitory where bed> (select COUNT (StuDormitory.did) from StuDormitory where StuDormitory.did=Dormitory.did) ")
    该语句从学生-宿舍表里列出每一个宿舍标号的记录数量,该数量就表示住宿的学生数量,该数量与Dormitory 里的床位相比,选出床位大于数量的宿舍。

    6.修改信息

    sqlStr1 = “update Building set bid=’” + 楼号文本框.Text.Trim() +
    “’,num=’” + 宿舍文本框.Text.Trim() +
    “’,local=’” + 楼位置文本框.Text.Trim() +
    “‘where bid=’” + 楼号文本框.Text.Trim() + “’”;
    database.更新(sqlStr1);
    UPDATE的命令用于修改数据库数据的语句,用于修改更信息。此处的UPDATE语句用于将程序窗体上的各个文本框分别赋值给表中的各个列。另外此处的SQL语句中有添加条件,在语句的末尾有where,这里的where用来匹配查找这次需要修改的表所在的行。bid为Bulidinng表的主键,此处的功能就是通过这个主键来判断我们要找的行从而准确的修改数据库中的信息。

    7.增加功能

    if (分配宿舍id.Text.Equals("") || 分配宿舍学号显示框.Text.Equals(""))
    {
    MessageBox.Show(“缺¨¡À少¦¨´选?中D数ºy据Y!”, “提¬¨¢示º?”);
    return;
    }

                if (!IsNotExist_OtherSex(分配宿舍id.Text.Trim(), 分配宿舍学号显示框.Text.Trim()))
                {……}
                try
                {
    

    string str2 = @" insert into StuDormitory values(’" + 分配宿舍id.Text.Trim() + “’,’” + 分配宿舍学号显示框.Text.Trim() + “’)”;
    database.更新(str2);
    ……
    ……
    }
    Catch
    {……}
    添加功能使用了INSERT的命令,进行数据库信息的添加,此处为将窗口的中的字符赋值给数据库中的表的各个列的数据。在将数据写入数据库前代码中有一个if条件语句,例如插入学生,首先要检查所插入的学生是否存在,存在后再检查宿舍里有没有其他先别性别的学生,如果有就不允许插入,没有就再检查所插入的宿舍名额满了没,或是该宿舍是否没人入住,通过以上条件后才允许入住。

    8.删除功能

    sqlStr1 = “delete from Dormitory where did=’” + 宿舍id.Text.Trim() + “’”;
    database.更新(sqlStr1);
    宿舍获取();
    删除功能也是通过让用户输入一个条件,通过这个条件,在该表中寻找到符合要求的主键所在的行,将该行从这个表中删除。这个删除功能也可以在本系统中其他板块的的删除中使用,只要在表中有可以识别的唯一标识,就可以将其设为主键,然后通过主键来删除整行的数据库的数据。

    四、 程序发布和测试

    (一)、程序测试

    1.登录

    在这里插入图片描述

    2.学生界面

    在这里插入图片描述

    3.查看宿舍人员信息

    在这里插入图片描述

    4.查看出入记录

    在这里插入图片描述

    5.管理员界面(宿舍楼管理)

    在这里插入图片描述

    6.管理员界面(宿舍管理)

    在这里插入图片描述

    7.管理员界面(宿舍报修管理)

    在这里插入图片描述
    点击标题可以排序,点序号前面可以自动选择 点击删除则直接删除报修信息

    8.管理员界面(学生信息管理)

    在这里插入图片描述
    宿舍管理员会提示权限不足
    在这里插入图片描述

    9.管理员界面(分配宿舍)

    在这里插入图片描述
    该功能会自动列出还未分配的学生以及还有空余床位的宿舍,管理员只需点击学生与宿舍,即可将学生与宿舍信息绑定到信息栏,进而分配宿舍

    10.管理员界面(调整宿舍)

    在这里插入图片描述

    11.管理员界面(记录登记)

    在这里插入图片描述

    五、 总结与分析

    (一)、程序优缺点分析

    优点:程序总体结构简单、执行高效,功能较为完善,使用简单方便易上手。
    程序的界面看上去非常的简洁所有功能都清晰可见对于数据库的操作十分的简单,就算是没有任何计算机知识的人也可以轻松上手这个程序。整个程序逻辑严谨,有明确的提示引导用户使用。
    缺点:程序的部分功能考虑得可能不够周全,容错性不够高,输入信息时有很多格式上的容错性没有做。
    SQL语句简单基础不够高级,程序对数据库的操作有待加强。

    (二)、总结与感悟

    历时两个星期,在不断地纠错和改正中终于完成了数据库大作业,通过这次的大作业,我明白到在开发这样的数据库系统的过程中要不断思考,不断创新,这需要我们付出更多的精力和时间。例如价格数据库里表格的数据进行读写,需要将其转换成程序能够兼容的数据,在设计基本表时,还要考虑表格与表格之间的关联,是否符合3nf范式或者bcnf范式以及更高。我们要不断钻研,研究,思考放开我们的思维去打代码。要不断的汲取学习心得知识,复习旧的知识,将各种知识串联起来。

    总结

    继续加油!!!!码字不易,喜欢就点个赞吧!

    展开全文
  • 本科数据库课设,毕业了,上传一下,用C# 做的,比较简单,粉丝免费下载
  • 数据库原理 课程设计方案设计 设计题目工资管理系统 专 业 班 级 学 生 学 号 指导教师 完成日期 2014/6/23-2014/6/26 2014 年 春季 学期 设计任务 3工资管理系统 建库1个----工资管理数据库 建表3个----档案表工资...
  • 数据库为SQL SEVER 2008,支持原唱/伴唱切换,自动播放下一首,SQL SEVER读写图片,VS2010导出到Excel,局域网内歌曲在线传输点播,窗体按钮美化,切换窗体特效等功能,当时所有课堂唯一一个满分课设,希望对你有所...
  • 采用asp.net 2.0 版本,运用VS 2010+SQL SERVER 2008软件开发,增,删,查,改等功能均具备。代码简洁,是仿照微软写的代码,并采用三层架构思想,扩展性很好。
  • 超级简单的大学生数据库课设
  • 综合软件课程设计,数据库课程设计,学生-课程管理系统(C#,SQLServer)
  • 随着计算机技术的飞速发展,计算机在企业管理中的应用越来 越普及,利用计算机实现企业工资的管理显得越来越重要。对于大中型企业来说,利用计算机支持企业高效率完成劳动人事管理的日常事务,是适应现代企业制度要 ...
  • 下载后,将数据库附加进程序里,要把SQL2005express配置好,如果是win7系统,直接把解压后的文件夹拉到桌面就能用,不是的话,点击左侧资源管理器里bank数据库,看右下角属性,把链接字符串复制,然后把字符串复制到...
  • 一个完整的关于图书租赁的数据库课设, 内容:代码和完整数据库备份 开发环境:C#+SQL2008.
  • 数据库(Sqlserver+C#)课程设计例子

    千次阅读 2019-01-14 10:10:19
    如果你想运行起来这个程序,那么就需要自己修改conn类中的数据库连接字符串,然后根据程序中的数据集在数据库中创建相对应的表,(2020-1-2修改),有些功能代码比较冗余,不喜勿喷 总体的架构:visual studio 2013+sql...
  • 数据库sqlserver期末简单课设

    千次阅读 2021-11-24 21:19:00
    (4)数据库实施(要求:根据上述关系模式,使用SQL命令创建数据库和数据表,设置相应的约束,并组织数据入库)。 (5)数据库运行 (要求:①SQL命令能完成案例需求中的指定系统功能;②增加新功能,如连接、子...
  • 3.2.3后台数据库支持 10 第四章系统设计 12 4.1 系统结构框架 12 4.2 系统功能模块设计 12 4.3 接口设计 12 4.3.1 外部接口 12 4.3.2 内部接口 12 4.4 运行设计 13 4.4.1 运行模块的组合 13 4.4.2 运行控制 13 4.5 ...
  • 数据库课设c#编写的社团管理系统

    热门讨论 2012-06-17 10:55:33
    这是数据库课设时做的,用的时候可能需要改一下代码中服务器的地址,管理员账户wayne 密码hannah 进去后可以查看所有会员信息,会员登陆可以查看查找社团内人的信息和修改自己的信息,等等...
  • 数据库课设之学生成绩管理系统

    千次阅读 2020-04-11 12:59:34
    功能分析 该学生成绩管理系统是用Visual Studio 2019和SQL Server2014数据库,在系统中分为两类用户,即系统管理员和辅导员。 系统管理员进入学生成绩管理系统的主要功能是:实现管理员对所有用户的增删改查等基本...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 545
精华内容 218
关键字:

c# 数据库课设

c# 订阅