数据库课程设计实践之美容院管理系统

这个课程设计可以说做完满满的成就感吧,虽然不算特别炫酷的系统,但是记录一下或许会对看到这篇的人有所帮助。

一、系统概况

1.1 系统简介

通过数据库实训进一步掌握数据库系统的理论和方法,培养和锻炼开发管理信息系统的能力,为今后信息系统开发打下良好的基础。数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。本次课程环节旨在培养学生在本课程范围内初步掌握解决实际应用问题时所应具备的查阅资料、综合运用所学知识的能力为毕业设计及今后从事专业工作打下基础。本次课程实践主要包括需求分析、数据分析、系统逻辑模型设计方法功能设计、物理模型设计方法系统的实现等方法,然后设计一个美容院管理系统能够按照一定条件查询、记录预约信息可以模拟完成管理员对用户的增删查改、用户的预约项目等业务。

1.2 系统使用说明

1.2.1数据库的建立

创建beauty数据库,并创建相关的基本表。

1.2.2 应用程序使用

运行美容院信息管理系统,用户登陆进行相关的账户操作,如修改信息、密码修改、查询功能、预约操作等。管理员登陆相应的账号,进行会员信息管理、美容师信息管理、美容项目信息管理、预约操作等。

1.2.3 开发环境简介

操作系统:Windows 10
DBMS:MySQL
应用程序开发环境:Visual Studio 2019
开发语言:C#
数据源:DBMS

二、技术简介

2.1 MySQL简介

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。

2.2 C#简介

C#是微软公司发布的一种面向对象的、运行于.NET Framework和.NET Core之上的高级程序设计语言。C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。

三、分析与设计

3.1 需求分析

美容院管理系统向用户提供一个方便、简单、及时、自由预约的互联的现代计算机化的网络系统,可以大大减少工作人员,节约人力资源的开销,同时由于手续程序减少也可以减轻业务员的工作负担,有效地提高了整体的工作效率和精确度,更重要的是减少了用户预约业务的等待时间,方便用户对个人信息的自由管理。
通过一些了解,要求我们的系统有如下功能:
1)全面管理美容院里美容师的信息
在美容院里,美容师是必不可少的。那么相应的就要有美容师的信息,随着美容师的加入以及离开,有关美容师的信息也应该需要做出相应的更新,而且美容师自身的一些信息有时候也需要做出一些相应的更改,因此要做美容师的管理。
2)全面管理会员的信息
会员在注册账号的时候,是需要填写一些信息的,这些信息在会员登陆以后都会呈现在会员面前,如果有一些信息不符合,后期是可以进行修改的。而且会员也要进行项目预约操作。通过这样的一个对会员的管理,可以清晰的看到会员的一些信息,对于预约信息也更加清楚,使工作的效率提高。
3)全面管理项目的信息
美容院里总干事少不了各式各样的美容项目,对这些项目做一个全面的管理,可以提高对于客户的服务水平。
4)管理员对于会员信息,美容师信息,项目信息,会员的预约记录的管理,提高效率。

3.2 系统功能说明

数据库课程设计实践之美容院管理系统_第1张图片
A.美容师模块
(1)信息管理:修改一些基本信息,修改密码等。
(2)预约查询:对于所服务项目的相关预约记录查看。
B.管理员模块
(3)美容师信息管理:对美容师信息进行添加、修改、删除等。
(4)会员信息管理:对会员信息进行添加、修改、删除等。
(5)美容服务项目管理:对美容服务项目信息进行添加、修改、删除等。
(6)预约查询:对会员的预约情况进行查看,操作。
C.会员模块
(7)信息管理:修改一些基本信息,修改密码等。
(8)预约操作:预约服务项目,进行预约签到,取消预约等。

3.3 可行性分析

  1. 经济可行性
    美容院是为人们提供美容护理、皮肤保健、水疗等内容的美容服务场所。一般有美容院、女子会所几大类,提供的服务主要有,皮肤护理、按摩、卵巢保养、香薰耳烛等,美容院是销售专业化妆品的终端机构。
    随着人们生活水平的提高,大容美发行业在人自生活中占有越来越重要的地位。要想在当前娱乐行业日趋激烈的竞争中脱颖而出,已成为每位娱乐行业经营者所追求的目标,而最行之有效的工具就是采用专业化电脑管理,采用专业管理软件将使您的管理事半功倍。
  2. 技术可行性
    软件运用计算机及网络等现代工具手段。主要计对美容院的商品、职员、顾客等方面在实际工作中管理的难点,为管理者提供真实准确的现场数据。管理顾客信息,计算顾客美容费用,安排美容技术人员的工作时间,美容预约,提供商品信息等。

四、概念结构设计

4.1 E-R图

数据库课程设计实践之美容院管理系统_第2张图片

4.2 关系模式

会员信息表(会员ID,姓名,电话号码,皮肤类型,睡眠状态,余额)
美容师信息表(美容师ID,姓名,电话号码,年龄,服务项目ID)
美容服务项目表(项目ID,项目名称,类别,价格,所用物品)
预约表(会员ID,项目ID,预约时间)
登录表(账号,密码)

4.3 基本表

4.3.1 基本表信息

1.会员信息表

字段名称 数据类型 长度 说明
UserId char 20 用户编号
Uname char 20 姓名
Utel char 50 联系电话
type char 20 皮肤类型
sleepStatus char 10 睡眠状况
extra Int 20 余额

2.美容服务项目信息表

字段名称 数据类型 长度 说明
ItemId char 20 项目编号
Iname char 20 姓名
classfied char 50 类别
expenses Int 20 价格
items used char 50 所用物品

3.美容师信息表

字段名称 数据类型 长度 说明
BeauId char 20 美容师编号
Beauname char 20 姓名
age Int 20 年龄
BeauTel char 30 联系电话
ItemId char 20 项目编号

4.预约表

字段名称 数据类型 长度 说明
UserId char 20 会员编号
ItemId char 20 姓名编号
Date char 30 预约日期

5.登录表

字段名称 数据类型 长度 说明
admin char 20 账号
passwd char 20 密码

4.3.2 基本表创建

<------会员信息表------>
DROP TABLE IF EXISTS 会员信息表;
CREATE TABLE 会员信息表 (
UserId char(20) NOT NULL,
Uname char(20) NOT NULL,
Utel char(50) DEFAULT NULL,
type char(20) DEFAULT NULL,
sleep condition char(10) DEFAULT NULL,
extra int(20) DEFAULT NULL,
PRIMARY KEY (UserId),
KEY Uname (Uname)
) ;

<------美容服务项目信息表------>
DROP TABLE IF EXISTS 美容服务项目表;
CREATE TABLE 美容服务项目表 (
ItemId char(20) NOT NULL,
Iname char(20) NOT NULL,
classfied char(50) DEFAULT NULL,
expenses int(20) DEFAULT NULL,
items used char(50) DEFAULT NULL,
PRIMARY KEY (ItemId),
KEY expenses (expenses)
) ;

<------美容师信息表------>
DROP TABLE IF EXISTS 美容师信息表;
CREATE TABLE 美容师信息表 (
BeauId char(20) NOT NULL,
Beauname char(20) NOT NULL,
age int(20) DEFAULT NULL,
BeauTel char(30) DEFAULT NULL,
ItemId char(20) DEFAULT NULL,
PRIMARY KEY (BeauId),
KEY ItemId (ItemId),
CONSTRAINT ItemId FOREIGN KEY (ItemId) REFERENCES 美容服务项目表 (ItemId) ON DELETE RESTRICT ON UPDATE RESTRICT
) ;

<------预约信息表------>
DROP TABLE IF EXISTS 预约表;
CREATE TABLE 预约表 (
UserId char(20) NOT NULL,
ItemId char(20) NOT NULL,
Date char(30) DEFAULT NULL,
PRIMARY KEY (UserId,ItemId),
KEY UserId (UserId),
KEY ItemId2 (ItemId),
CONSTRAINT ItemId2 FOREIGN KEY (ItemId) REFERENCES 美容服务项目表 (ItemId) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT UserId FOREIGN KEY (UserId) REFERENCES 会员信息表 (UserId) ON DELETE RESTRICT ON UPDATE RESTRICT
);

<------登录表------>
DROP TABLE IF EXISTS 登录表;
CREATE TABLE 登录表 (
admin char(20) NOT NULL,
passwd char(20) NOT NULL
);

4.3.3 触发器创建

<------会员表部分------>
数据库课程设计实践之美容院管理系统_第3张图片
触发器说明:当在表中插入会员时,登录表也插入相应的账号和默认密码。当在表中删除会员时,登录表也删除相应的账号和密码。

<------美容师信息表部分------>
数据库课程设计实践之美容院管理系统_第4张图片
触发器说明:当在表中插入美容师时,登录表也插入相应的账号和默认密码。当在表中删除会员时,登录表也删除相应的账号和密码。

<------美容服务项目表部分------>
数据库课程设计实践之美容院管理系统_第5张图片
触发器说明:当某项美容服务项目被删除时,负责该服务项目的美容师的ItemID部分要置为NULL。

4.3.4 存储过程创建

<------美容师信息表部分------>
CREATE DEFINER = root@localhost PROCEDURE showBeautyInfo()
BEGIN
select * from 美容师信息表;
END;

<------美容服务项目表部分------>
CREATE DEFINER = root@localhost PROCEDURE showItemInfo()
BEGIN
select * from 美容服务项目表;
END;

<------会员表部分------>
CREATE DEFINER = root@localhost PROCEDURE showUserInfo()
BEGIN
select * from 会员信息表;
END;

<------预约表部分------>
CREATE DEFINER = root@localhost PROCEDURE showReservation()
BEGIN
SELECT * FROM 预约表;
END;

五、系统详细设计说明书

5.1 功能实现(关键性代码)

5.1.1 用户登录

String s = "server=localhost;port=3306;database=beauty;user=root;password=123456;";
MySqlConnection con = new MySqlConnection(s);
String userid = this.textBox1.Text;//用户输入的账号
String passwd = this.textBox2.Text;//用户输入的密码
String sql = "select * from 登录表 where admin = @user";//会员ID传值
MySqlCommand cmd = new MySqlCommand(sql, con);
cmd.Parameters.AddWithValue("user", userid);//将用户输入的userid赋值给“user”
MySqlDataReader reader = null;
String pwd = "";//从数据库读取的密码
try
{
      if (con.State == ConnectionState.Closed)
          con.Open();//打开连接通道
      reader = cmd.ExecuteReader();
      if (reader.HasRows)//是否检索出信息
      {
        while (reader.Read())
        {
          pwd = reader.GetString(1);
            if (pwd.Equals(passwd))
            {
                 this.Hide();
                 if (radioButton1.Checked && (userid[0] == '1'))//会员
                 {
                     Form2 f2 = new Form2(textBox1.Text);
                                f2.ShowDialog();
                            } 
                            else if (radioButton2.Checked && (userid[0] == 'a'))//管理员
                                new Form3().ShowDialog();
                            else if (radioButton3.Checked && (userid[0] == '2'))//美容师
                            {
                                Form4 f4 = new Form4(textBox1.Text);
                                f4.ShowDialog();}
                            else{
                                MessageBox.Show("该类型用户不存在!");
                                new Form1().ShowDialog();}
                        }
                        else {
                            MessageBox.Show("输入密码错误!");}
                    }
                }
                else{//用户没有相关的登录信息
                    MessageBox.Show("用户名不存在!"); }
            }
            catch (Exception ex){
                MessageBox.Show(ex.Message); }

5.1.2 会员预约签到

MySqlConnection con = Connect();
            String userid = this.textBox1.Text;
            String itemid = this.textBox7.Text;
            String str;
            int exp,money;
          String sql = "update 会员信息表 set extra=extra-@expenses where UserId in (select UserId from 预约表 where UserId =@userid and ItemId =@itemid )";//更新相应会员的余额
            String sql0 = "select * from 预约表 where UserId =@userid and ItemId =@itemid";//为了检索是否有预约记录
            String sqlsel = "select expenses from 美容服务项目表 where ItemId =@itemid";//检索该项目的价格
            String sqldel = "delete from 预约表 where UserId =@userid and ItemId =@itemid";
            String sqlmoney = "select extra from 会员信息表 where UserId =@userid";//检索会员的余额
            MySqlCommand cmd = new MySqlCommand(sql, con);
            MySqlCommand cmd0 = new MySqlCommand(sql0, con);
            MySqlCommand cmd1 = new MySqlCommand(sqlsel, con);
            MySqlCommand cmd2 = new MySqlCommand(sqldel, con);
            MySqlCommand cmd3 = new MySqlCommand(sqlmoney, con);
            cmd.Parameters.AddWithValue("userid", userid);
            cmd.Parameters.AddWithValue("itemid", itemid);
            cmd0.Parameters.AddWithValue("userid", userid);
            cmd0.Parameters.AddWithValue("itemid", itemid);
            cmd1.Parameters.AddWithValue("itemid", itemid);
            cmd2.Parameters.AddWithValue("userid", userid);
            cmd2.Parameters.AddWithValue("itemid", itemid);
            cmd3.Parameters.AddWithValue("userid", userid);
            MySqlDataReader reader = null;
            try{
                if (con.State == ConnectionState.Closed)
                    con.Open();
                reader = cmd0.ExecuteReader();//查询是否有预约记录
                if (reader.HasRows){
                    reader.Close();
                    object o = cmd1.ExecuteScalar();
                    str = o.ToString();
                    exp = int.Parse(str);
                    cmd.Parameters.AddWithValue("expenses", exp);
                    object obj = cmd3.ExecuteScalar();//检查余额
                    str = obj.ToString();
                    money = int.Parse(str);
                    if (money > exp) { //账户余额与服务项目进行对比
                        cmd.ExecuteNonQuery();//将检索出来的服务项目价钱在会员的余额中扣除
                        MessageBox.Show("签到成功!");
                        cmd2.ExecuteNonQuery();//删除在预约表里面的记录
                        MessageBox.Show("扣款成功!");
                    }
                    else{//余额不足
                        MessageBox.Show("亲!您余额不足哦,请充值完毕再进行签到!");}
                }
                else{//没有预约记录
                    reader.Close();//一个 SqlConnection 只允许打开一个 DataReader,在开启另一个 DataReader 时,必须将前面一个先 Close 掉。
                    MessageBox.Show("亲!您没有预约过此项目哦!");}
            }
            catch (Exception ex){
                MessageBox.Show(ex.Message);}
            con.Close();

5.1.3 管理员管理信息

(1)信息表查询

MySqlConnection con = Connect();
            MySqlCommand cmd = new MySqlCommand("call showUserInfo()", con);//使用存储过程,检索出所有会员信息,此处查询美容师也同理使用了存储过程
            MySqlDataAdapter sda = new MySqlDataAdapter(cmd);//建立DataAdapter对象,数据适配器,用于从数据库读取数据
            DataSet ds = new DataSet();//建立DataSet对象(相当于建立前台的虚拟数据库)
            DataTable userInfo=new DataTable(); //建立DataTable对象(相当于建立前台的虚拟数据库中的数据表)
            try
            {
                if (con.State == ConnectionState.Closed)
                    con.Open();
                sda.Fill(ds, "userInfo");
                dataGridView1.DataSource = ds.Tables["userInfo"];
            }
            catch (Exception ex){
                MessageBox.Show(ex.Message);}
            con.Close();

(2)信息修改

private void button4_Click(object sender, EventArgs e)
        {
            if (dbUpdate()){
                MessageBox.Show("修改成功!");}
            else{
                MessageBox.Show("ID不能修改哦!");}
        }
        private Boolean dbUpdate()
        {
            MySqlConnection con = Connect();
            MySqlCommand cmd = new MySqlCommand("call showUserInfo()", con);//调用存储过程            MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
            DataTable dtUpdate = new DataTable();//更新
            dtUpdate.Rows.Clear();//清空数据表
            DataTable dtShow = new DataTable();//展示
            dtShow = (DataTable)dataGridView1.DataSource;//从数据库中把数据读出来放到一个数据集中,然后绑定数据源
            for (int i = 0; i < dtShow.Rows.Count; i++)
            {
                dtUpdate.ImportRow(dtShow.Rows[i]);//从元数据源复制每一行数据到dtUpdate
            }
            try
            {
                con.Open();
                sda = new MySqlDataAdapter("call showUserInfo()", con);//建立DataAdapter对象,用于从数据库读取会员信息表数据
                DataTable ds = new DataTable();
                MySqlCommandBuilder CommandBuilder = new MySqlCommandBuilder(sda);//为了能够自动生成命令
                sda.UpdateCommand = CommandBuilder.GetUpdateCommand();//获取在数据源中执行更新操作所需的自动生成的 DbCommand 对象
                ds = (DataTable)dataGridView1.DataSource;
                sda.Update(ds);
                dtUpdate.AcceptChanges();//提交自加载此dtUpdate或上次调用AcceptChanges以来对其进行的所有更改。
                con.Close();
            }
            catch{
                return false; }
            dtUpdate.AcceptChanges();
            return true;
        }

(3)删除信息

MySqlConnection con = Connect();
            String userid = this.textBox7.Text;
            string sql = "select UserId from 会员信息表 where UserId = @id";
            string sqlDle = "delete from 会员信息表 where UserId = @id";
            string sql2 = "select UserId from 预约表 where UserId = @id";
            string sqlDle2 = "delete from 预约表 where UserId = @id";
            MySqlCommand cmd1 = new MySqlCommand(sql, con);
            MySqlCommand cmd = new MySqlCommand(sqlDle, con);//删除会员
            MySqlCommand cmd2 = new MySqlCommand(sql2, con);
            MySqlCommand cmd3 = new MySqlCommand(sqlDle2, con);//删除预约表里面包含该会员的记录
            cmd1.Parameters.AddWithValue("id", userid);
            cmd.Parameters.AddWithValue("id", userid);
            cmd2.Parameters.AddWithValue("id", userid);
            cmd3.Parameters.AddWithValue("id", userid);
            MySqlDataReader reader = null;
            MySqlDataReader reader2 = null;
            try
            {
                if (con.State == ConnectionState.Closed)
                    con.Open();
                reader2 = cmd2.ExecuteReader();
                if (reader2.HasRows)//先删除预约表里的记录
                {
                    reader2.Close();
                    cmd3.ExecuteNonQuery();
                    MessageBox.Show("该会员在预约表里有记录,从预约表删除成功!");
                }
                else { reader2.Close(); }
                reader = cmd1.ExecuteReader();
                if (reader.HasRows){
                    reader.Close();
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("从会员信息表删除成功!");
                }
                else{
                    MessageBox.Show("删除无效,无此ID!");}
            }
            catch (Exception ex){
                MessageBox.Show(ex.Message);}
            con.Close();

(4)删除项目

MySqlConnection con = Connect();
            String itemid = this.textBox6.Text;
            string sql = "select ItemId from 美容服务项目表 where ItemId = @id";
            string sqlDle = "delete from 美容服务项目表 where ItemId = @id";
            string sql1 = "select ItemId from 预约表 where ItemId = @id";
            string sqlsel = "select * from 美容师信息表 where ItemId = @id";
            MySqlCommand cmd1 = new MySqlCommand(sql, con);
            MySqlCommand cmd = new MySqlCommand(sqlDle, con);//删除项目表里的
            MySqlCommand cmd2= new MySqlCommand(sql1, con);//查询该项目是否在预约表里面有记录
            MySqlCommand cmd3 = new MySqlCommand(sqlsel, con);//检索出服务此项目的美容师
            cmd1.Parameters.AddWithValue("id", itemid);
            cmd.Parameters.AddWithValue("id", itemid);
            cmd2.Parameters.AddWithValue("id", itemid);
            cmd3.Parameters.AddWithValue("id", itemid);
            MySqlDataReader reader = null;
            MySqlDataReader reader2 = null;
            try
            {
                if (con.State == ConnectionState.Closed)
                    con.Open();
                reader2 = cmd2.ExecuteReader();
                if (reader2.HasRows)//先删除预约表里的记录
                {
                    reader2.Close();
                    Form9 f9 = new Form9(textBox6.Text);
                    f9.ShowDialog();
                }
                else { reader2.Close(); }
                reader = cmd1.ExecuteReader();//检索项目表
                if (reader.HasRows){
                    reader.Close();
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("从美容服务项目表删除成功!");
                }
                else{
                    MessageBox.Show("删除无效,无此服务项目!");
                }
            }
            catch (Exception ex){
                MessageBox.Show(ex.Message);}
            con.Close();

(5)检索有预约已被删除的项目的会员联系方式并通知他们

MySqlConnection con = Connect();
            String id = this.textBox1.Text;
            string sql = "select UserId,Uname,Utel from 会员信息表 where UserId in (select UserId from 预约表 where ItemId=@id)";//检索出有预约被删除项目的会员的电话号码,以便即使通知
            MySqlCommand cmd = new MySqlCommand(sql, con);
            cmd.Parameters.AddWithValue("id", id);
            MySqlDataAdapter sda = new MySqlDataAdapter(cmd);//建立DataAdapter对象,数据适配器,用于从数据库读取数据
            DataSet ds = new DataSet();//建立DataSet对象(相当于建立前台的虚拟数据库)
            DataTable userInfo = new DataTable(); //建立DataTable对象(相当于建立前台的虚拟数据库中的数据表)
            try
            {
                if (con.State == ConnectionState.Closed)
                    con.Open();
                sda.Fill(ds, "userInfo");
                dataGridView1.DataSource = ds.Tables["userInfo"];
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            con.Close();

六、用户使用手册

6.1 用户登录界面

数据库课程设计实践之美容院管理系统_第6张图片

6.2 管理员界面

6.2.1 功能菜单

数据库课程设计实践之美容院管理系统_第7张图片

6.2.2 美容服务项目管理界面

会员管理与美容师管理界面均类似。
值得注意的是,在删除项目时,要及时通知有预约该项目的会员,且修改美容师信息表服务该项目的美容师的ItemID要置为NULL(此处用触发器实现)。
删除会员信息时,要先将该会员的预约记录从预约表删除后再从会员信息表删除。
例如:要删除项目号为3008的服务项目,以下是服务该项目的美容师。
在这里插入图片描述
删除后弹出以下的界面,通知完会员后,成功删除。
数据库课程设计实践之美容院管理系统_第8张图片
服务该项目的美容师的ItemID也成功置为NULL。
在这里插入图片描述

6.3 会员模块

6.3.1 查看个人信息

数据库课程设计实践之美容院管理系统_第9张图片

6.3.2 预约操作

会员进行预约签到时,会在会员的余额里面扣款(相应的美容项目的价格)。原本1001的余额为470,签到完扣款成功后为350。编号为3011的项目价格为120元。
数据库课程设计实践之美容院管理系统_第10张图片

6.3.3 会员卡余额充值

数据库课程设计实践之美容院管理系统_第11张图片
充值成功。

6.4美容师界面

美容师界面与会员界面类似的。
数据库课程设计实践之美容院管理系统_第12张图片

七、开发总结报告

7.1 系统需要改善之处

(1)由于是比较简单的系统,所以不适合大型美容院的使用;
(2)功能是有待加强的,功能也不够全面;
(3)数据库管理还有待完善;
(4)界面也没有做得很新颖漂亮;
(5)美容师模块的功能比较欠缺。

7.2 开发总结

数据库实践活动结束了,站在实践阶段的末端,回顾实践过程的点点滴滴,虽说不上千辛万苦,但是毕竟我们为此付出了诸多的心血。经过这段时间的学习和努力,我们完成了美容院系统的数据库实践。系统的详细设计根据系统分析阶段的结论将系统具体化,并完成了各个模块的功能,直到最后形成一个完整的可行性的管理系统。从开始考虑实践题目到系统的实现再到实践报告的完成,每走一步对我们来说都是新的尝试与挑战。
第一个阶段为需求分析期,首先我们就实践要用到的知识各自进行相应的学习,学习期间保持良好的互动,之后一起讨论本程序的项目界面设计,功能设计和数据库设计。第二个阶段为编程期,这期间我们进行分工,在这期间,大家都保持了良好的互动与合作。第三个阶段为完善期,在这个阶段我们就完成的程序进行测试,对程序的漏洞进行修补改进,尽量将程序做到尽善尽美。团队的学习和试验,让每个成员头脑模糊的概念逐渐清晰,使我们作品一步步完善起来,每一次改进都是学习的收获,每一次调试的成功都是对我们的鼓励。
虽然这个美容院管理系统还不是很成熟,还有很多不足之处,如数据存入效率较低等,在整个系统的开发设计过程,我们从中学到了许多东西。在开发过程中要不断的调整自己的思维,要善于变通,不能钻牛角尖,否则将陷入死胡同。遇到问题,及时地查阅资料,如上网到专门的技术论坛询问等,在这次开发过程中,我们从网上获得了极大的帮助,几个技术难点都是通过上网查资料解决的。
系统开发的过程是一个团队合作、沟通、互相协助的过程,团队合作、默契沟通以及相互协助是开发成功的保证。在本次开发过程中,本组成员之间的配合比较默契。
总之,实践才能出真知,只有多动手,才能掌握得更多,以后我们将会花更多的时间和精力在这方面,相信我们一定可以做一个优秀的软件开发者!

你可能感兴趣的:(数据库)