当前位置:文档之家› Aganippe数据库项目报告

Aganippe数据库项目报告

同济大学

《数据库技术与应用》

项目设计报告

项目设计报告题目:

Aganippe

小组成员姓名:__ 1351503 魏琪_____________

__ 1351495 娄竞丹_____________

__ 1351497 徐嫣然_____________

_ 1351583 何依静_____________

班级:

年级:大二专业:

指导教师:袁科萍

日期:2015 年 1 月 2 日

一.课题设计目的和意义

1、项目开发背景

现在的人们总是忙于工作和学习,快节奏的生活让我们很少能有时间停下来歇一歇,喝一杯茶,看一场画展。但是艺术本是生活中不可缺少的一部分,艺术可以让生活更丰富多彩,让生活更有格调。有人认为艺术是高高在上的,是触不可及的,殊不知,欣赏地铁站上一幅漂亮的宣传画也是艺术,艺术本就和我们的生活密不可分。

画作是艺术的一种展现形式,画作是画家表达内心感情与想法的方法,欣赏画作不仅能带给人们精神上的愉快,同时也是一种思想的交流和碰撞。优秀的画作总能带给人们感动和思考。我们希望通过这个平台可以让更多的人欣赏到优秀的画作,希望更多的人开始自己的创造,希望人们的生活不再只有呆板的工作和学习,还有艺术的滋养。

2、项目设计目的和意义

项目设计的目的是希望更多的人可以用画作充实自己的精神国度,接受优秀画作带来的精神洗礼。同时让更多的人可以自己亲手创作画作,体验创作的乐趣。分享自己的画作,欣赏他人的画作,学会分享与赞扬,并且通过交流可以别人的长处并找到自己的不足,从他人得带最诚恳的评价和赞扬。向着更完美的自己更进一步。走出家门,走进艺术的殿堂,近距离感受艺术带来的震撼与感动。

二.课题主要功能描述

本课题的主要功能分为以下三点:

1、进入登录界面用户可以直接注册或用已有用户名登录,登录成功后可以欣赏世界名家的画作并可以了解作家的基本信息。用户可以根据画作的类型进行选择和查询。

2、登陆成功后可以选择进入画板界面,此界面的主要功能是用户自己进行画作的创作,并可以将自己创作好的画作进行上传使所有用户都可以看到。看其他用户上传的画作可以进行点赞和评价功能。

3、登陆成功后也可以选择进入艺术展界面,此界面的主要功能是介绍近期上海的艺术展和其基本信息及简要介绍。

三.数据库设计

1.数据需求分析

现在有很多图画的欣赏网站,也有很多图片的查询网站。比如很普遍的百度图片等。但一般的网络图片欣赏只有单独的图片查询功能,不能让用户自己作画并上传。一般的图片欣赏网站主要都包含:图片作者名,图片名称以及图片。也有专门的网站可以让用户自己作画并上传,绝大部分这样的系

统的网络服务器中还包含着与用户之间的交互,这些交互主要包括着用户对图片的评论和打分等。

随着人们物质生活水平越来越高,越来越重视精神生活,对艺术的需求也越来越大,对艺术的要求也越来越高。我们将图片欣赏与画作创作结合在一起,希望能够满足人们对艺术的需求。

2.概念模式设计(E-R图设计)

3.逻辑模式设计(转换为关系模式和规范化处理)

画家(画家ID,画家姓名,画家国籍,画家介绍)

画作(画作ID,画家ID,画作名称,画派)

用户(用户ID,用户姓名,用户密码,用户邮箱,用户人气)

作品(作品ID,用户ID,作品名称,点赞数,标签)

画展(画展ID,画展名,画展时间,画展地点,门票费,画展介绍)

4. 数据库实施

(一)创建表

(1)创建画家

create table Painter

(PID char(3)not null primary key

check (PID like'[0-9][0-9][0-9]'),

Pname varchar(20),

Pnation varchar(10)

)

(2)创建画作

create table Picture

(PicID char(4)not null primary key

check(PicID like 'p[0-9][0-9][0-9]'),

PID char(3)foreign key references Painter, Picname varchar(50),

faction varchar(20),

(3)创建用户

)

create table Users

(UsID char(4) not null primary key

check (UsID like 'U[0-9][0-9][0-9]'),

Uname varchar(10) not null,

popular smallint,

Ukey char(8) not null,

Umail varchar(20)not null check(Umail like '%@%') )

(4)创建作品

create table Works

(WID varchar (4) not null primary key check (WID LIKE 'W[0-9][0-9][0-9]' ), Wname varchar(20) not null,

UsID char(4) foreign key references Users, love smallint,

label varchar(40),

)

(5)创建展览

create table Exhibit

(EID char(4) not null primary key check(EID like 'E[0-9][0-9][0-9]'), Ename varchar(20) not null,

Etime varchar(10) not null

place varchar(40) not null,

price varchar(10) not null,

Einf text not null

)

(二)触发器

create trigger users_update

on users

for update

as

declare @_email as varchar(40)

select @_email=Uemail from inserted i

if @_email not like('%@%')

begin

print'输入的邮箱格式不正确!' rollback

end

else

begin

print'插入成功!'

End

触发器测试:

在用户注册时若输入的邮箱不含“@”则报错

四、窗体设计与功能设计程序标注

1、界面设计:

一个优秀的软件应该是在讲究功能的同时也要注重在美学上的设计,因此,我们界面主要是以温和的色调来渲染出一种优雅、闲适、小资的艺术感。

界面以绿色为主色调,起到了缓解眼部疲劳的功效,再加上白色,两种颜色的混合,带来一种清新的青春气息,倒也不觉得单调乏味

人性化的界面分类,简约的按钮设置,既起到导航的作用,又将各种功能明确地分类,而不显得杂乱。

2功能窗体简述:

(一)登陆界面

老用户登陆:在第一栏输入用户名,第二栏输入密码,点击登陆,登陆成功则显示“登陆成功,(用户名)欢迎光临”,

失败,则显示

新用户注册:进入注册页面

退出:点击右上角叉号

代码如下:

Public Class登陆

Dim mybind As BindingManagerBase

Dim myconn As New SqlConnection("Data Source=(local)\sqlexpress;Initial

Catalog=aganippe;Integrated Security=True")

Public Declare Function SendMessage Lib"user32"Alias"SendMessageA" _

(ByVal hwnd As IntPtr, _

ByVal wMsg As Integer, _

ByVal wParam As IntPtr, _

ByVal lParam As Byte()) _

As Integer

Public Const EM_SETCUEBANNER As Integer = &H1501

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim mySkin As Sunisoft.IrisSkin.SkinEngine = New Sunisoft.IrisSkin.SkinEngine mySkin.SkinFile = Application.StartupPath & "/skin/midsummer.ssk"

TxtBoxName.Clear()

TxtBoxpw.Clear()

ActiveControl = TextBox1

SendMessage(TxtBoxName.Handle, _

EM_SETCUEBANNER, _

IntPtr.Zero, _

System.Text.Encoding.Unicode.GetBytes("name"))

SendMessage(TxtBoxpw.Handle, _

EM_SETCUEBANNER, _

IntPtr.Zero, _

System.Text.Encoding.Unicode.GetBytes("password"))

End Sub

Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles

PictureBox3.Click

Me.Close()

End Sub

Private Sub LogIn_Click(sender As Object, e As EventArgs) Handles LogIn.Click Dim mysql As String

mysql = "select * from Users where Uname='" & TxtBoxName.Text & "'and Ukey='" & TxtBoxpw.Text & "'"

Dim myadapter As New SqlClient.SqlDataAdapter(mysql, myconn)

Dim mydb As New DataSet

myadapter.Fill(mydb, "1")

If mydb.Tables("1").Rows.Count = 0 Then

MsgBox("用户名或密码错误!") '非合法用户报出错误

TxtBoxName.Focus()

TxtBoxpw.Clear()

Else

'欢迎登录用户

MsgBox(TxtBoxName.Text & ",欢迎光临,", MsgBoxStyle.OkOnly, "<欢迎使用Aganippe>")

初始界面.Show()

Me.Hide()

End If

End Sub

Private Sub Register_Click(sender As Object, e As EventArgs) Handles Register.Click Dim register As New Register

register.Show(Me)

Me.Hide()

End Sub

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles

TextBox1.TextChanged

End Sub

End Class

(二)注册界面

用户名:用户自行选择,不可重复

密码:6—8位数字密码

确认密码:内容用于上栏相同

邮箱:必须含有“@”

头像:点击“浏览”本地上传头像并存于头像文件夹

确认:注册并加入数据库

重新输入:填写内容清空

代码如下:

Public Class Register

Dim mybind As BindingManagerBase

Dim myconn As New SqlConnection("Data Source=(local)\sqlexpress;Initial

Catalog=aganippe;Integrated Security=True")

Dim mystr As String

Dim mydataset As New DataSet

Public Declare Function SendMessage Lib"user32"Alias"SendMessageA" _

(ByVal hwnd As IntPtr, _

ByVal wMsg As Integer, _

ByVal wParam As IntPtr, _

ByVal lParam As Byte()) _

As Integer

Public Const EM_SETCUEBANNER As Integer = &H1501

Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles

PictureBox1.Click

If name1.Text <> ""And password.Text <> ""And repassword.Text <> ""And email.Text

<> ""Then

Dim mysql1 = "select * from users"

Dim mycom1 As New SqlCommand(mysql1, myconn)

Dim mydatadapter As New SqlDataAdapter(mysql1, myconn)

Dim mydataset As New DataSet

mydatadapter.Fill(mydataset, "users")

Dim str1 As String = mydataset.Tables("users").Rows.Count + 1

Dim mysql = "insert into users values('" + str1 + " ','" + name1.Text + " ','" + "0" + "','" + password.Text + "','" + email.Text + "')"

Dim mycom As New SqlCommand(mysql, myconn)

myconn.Open()

Try

mycom.ExecuteNonQuery()

MessageBox.Show("恭喜你注册成功!", "提示", MessageBoxButtons.OK) Catch ex As Exception

MessageBox.Show("请填写正确的邮箱!", "触发器报错", MessageBoxButtons.OK) End Try

myconn.Close()

登陆.Show()

Me.Close()

Else

MsgBox("您的信息输入不完整,不能注册")

End If

Dim frm1 As New登陆

frm1.Show()

End Sub

Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles

PictureBox2.Click

name1.Clear()

password.Clear()

repassword.Clear()

email.Clear()

End Sub

Private Sub name1_Leave(sender As Object, e As EventArgs) Handles name1.Leave Dim mysql1 As String

mysql1 = "select * from users where Uname='" & name1.Text & "'"

Dim myadapter1 As New SqlClient.SqlDataAdapter(mysql1, myconn)

Dim mydb1 As New DataSet

myadapter1.Fill(mydb1, "users")

If mydb1.Tables("users").Rows.Count = 1 Then

Label1.Text = "对不起,该用户名已存在,请重新输入!"

name1.Clear()

ElseIf name1.Text = ""Then

Label1.Text = "用户名不能为空"

Else

Label1.Text = "恭喜你!此用户名可用"

End If

End Sub

Private Sub password_Leave(sender As Object, e As EventArgs) Handles password.Leave If Len(password.Text) > 8 Or Len(password.Text) < 4 Then

Label2.Text = "密码长度超出范围,请重新输入"

password.Clear()

ElseIf password.Text = ""Then

Label2.Text = "密码不能为空"

Else

Label2.Text = "该密码可用"

End If

End Sub

Private Sub repassword_Leave(sender As Object, e As EventArgs) Handles repassword.Leave If repassword.Text = ""Then

Label3.Text = "用户名不能为空"

ElseIf password.Text <> repassword.Text Then

password.Focus()

Label3.Text = "您两次输入的密码不相同,请重新输入"

Label2.Text = "请重新输入"

repassword.Text = ""

Else

Label3.Text = "该密码可用"

End If

End Sub

Private Sub email_Leave(sender As Object, e As EventArgs) Handles email.Leave If InStr(email.Text, "@") <> 0 Then

Label4.Text = "该邮箱可用"

ElseIf email.Text = ""Then

Label4.Text = "邮箱不能为空"

Else

Label4.Text = "邮箱格式错误,请重新输入"

email.Text = ""

End If

End Sub

Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click

Me.Close()

Dim frm1 As New登陆

frm1.Show()

End Sub

Private Sub Label9_Click(sender As Object, e As EventArgs) Handles Label9.Click Dim src As String = ""

OpenFileDialog1.Filter = "|*.jpg"

If (OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK) Then

src = OpenFileDialog1.FileName.ToString()

PictureBox4.Refresh()

PictureBox4.Image = Image.FromFile(src)

End If

Dim mysql1 = "select * from users"

Dim mycom1 As New SqlCommand(mysql1, myconn)

Dim mydatadapter As New SqlDataAdapter(mysql1, myconn)

Dim mydataset As New DataSet

mydatadapter.Fill(mydataset, "users")

Dim str1 As Integer = mydataset.Tables("users").Rows.Count + 1

PictureBox4.Image.Save(Application.StartupPath + "\head\" + str1.ToString + ".jpg")

End Sub

Private Sub Register_Load(sender As Object, e As EventArgs) Handles MyBase.Load ActiveControl = TextBox1

SendMessage(name1.Handle, _

EM_SETCUEBANNER, _

IntPtr.Zero, _

System.Text.Encoding.Unicode.GetBytes("请输入名字"))

SendMessage(password.Handle, _

EM_SETCUEBANNER, _

IntPtr.Zero, _

System.Text.Encoding.Unicode.GetBytes("请输入6-8位密码"))

SendMessage(repassword.Handle, _

EM_SETCUEBANNER, _

IntPtr.Zero, _

System.Text.Encoding.Unicode.GetBytes("请再输入一次密码"))

SendMessage(email.Handle, _

EM_SETCUEBANNER, _

IntPtr.Zero, _

System.Text.Encoding.Unicode.GetBytes("请输入邮箱")) End Sub

End Class

(三)初始界面

个人信息栏:显示用户头像。

根据时间显示“上午好,XXX”或者“下午好,XXX”“晚上好,XXX”。

“个人主页”:点击进入“个人主页”窗口

“分享平台”:点击进入“分享平台”窗口

“设置”:点击进入“个人设置”窗口

“大师名作”:点击进入“大师名作”窗口

“画板”:点击进入“画板”窗口

“注销”:退出登录,显示“用户登录”窗口

画作展示(右上角):随机展示大师作品

近期展览:显示近期画展宣传图,左击进入“展览”窗口

代码如下:

Public Class初始界面

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim grzy As New Mzone

grzy.Show()

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim dsmz As New master

dsmz.Show()

End Sub

Dim myconn As New SqlConnection("Data Source=(local)\SqlExpress;Initial

Catalog=aganippe;Integrated Security=True")

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim fxpt As New分享平台

fxpt.Show()

End Sub

Private Sub初始界面_Load(sender As Object, e As EventArgs) Handles MyBase.Load

Timer1.Enabled = True

AxWindowsMediaPlayer1.URL = Application.StartupPath + "\summer.mp3"

AxWindowsMediaPlayer1.settings.setMode("loop", True)

AxWindowsMediaPlayer1.Ctlcontrols.play()

Dim hour As Integer = CType(DateTime.Now.ToString("HH"), Int32)

If hour > 5 And hour <= 11 Then

Label1.Text = "上午好,"

ElseIf hour > 11 And hour <= 14 Then

Label1.Text = "中午好,"

ElseIf hour > 14 And hour <= 19 Then

Label1.Text = "下午好,"

Else

Label1.Text = "晚上好,"

End If

Dim uid As Integer

Dim sql As String= "select * from works,USERS where Uname='"+ 登陆.TxtBoxName.Text + "' AND https://www.doczj.com/doc/b815033724.html,ID=https://www.doczj.com/doc/b815033724.html,ID"

myconn.Open()

Dim myadpter As New SqlDataAdapter(sql, myconn)

Dim mydataset As New DataSet

myadpter.Fill(mydataset, "uid")

uid = mydataset.Tables("uid").Rows(0).Item(5).ToString

Label7.Text = mydataset.Tables("uid").Rows(0).Item(6).ToString

myconn.Close()

PictureBox2.Image = Image.FromFile(Application.StartupPath & "\head\" & uid & ".jpg")

End Sub

Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click Dim sz As New settings

sz.Show()

End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click Dim paint As New FrmPaint

paint.Show()

End Sub

Dim i As Integer = 0

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

i = i + 1

If i < 9 Then

PictureBox1.Image = Image.FromFile(Application.StartupPath & "\picture\p00"& i & ".jpg")

ElseIf i > 9 And i < 92 Then

PictureBox1.Image = Image.FromFile(Application.StartupPath & "\picture\p0" & i & ".jpg")

ElseIf i > 91 Then

i = 0

End If

End Sub

Private Sub PictureBox8_Click(sender As Object, e As EventArgs) Handles

PictureBox8.Click

Label11.Text = Label3.Text

Dim ex As New exhibition

ex.Show()

End Sub

Private Sub PictureBox7_Click_1(sender As Object, e As EventArgs) Handles

PictureBox7.Click

Label11.Text = Label4.Text

Dim ex As New exhibition

ex.Show()

End Sub

Private Sub PictureBox5_Click(sender As Object, e As EventArgs) Handles

PictureBox5.Click

Label11.Text = Label5.Text

Dim ex As New exhibition

ex.Show()

End Sub

Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles

PictureBox3.Click

Label11.Text = Label6.Text

Dim ex As New exhibition

ex.Show()

End Sub

Private Sub PictureBox4_Click(sender As Object, e As EventArgs) Handles

PictureBox4.Click

Label11.Text = Label9.Text

Dim ex As New exhibition

ex.Show()

End Sub

Private Sub PictureBox6_Click(sender As Object, e As EventArgs) Handles

PictureBox6.Click

Label11.Text = Label10.Text

Dim ex As New exhibition

ex.Show()

End Sub

Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click 登陆.Show()

Me.Close()

End Sub

Private Sub PictureBox9_Click(sender As Object, e As EventArgs) Handles

PictureBox9.Click

Dim grzy As New Mzone

grzy.Show()

End Sub

Private Sub PictureBox10_Click(sender As Object, e As EventArgs) Handles PictureBox10.Click

Dim dsmz As New master

dsmz.Show()

End Sub

Private Sub PictureBox11_Click(sender As Object, e As EventArgs) Handles

PictureBox11.Click

Dim fxpt As New分享平台

fxpt.Show()

End Sub

Private Sub PictureBox12_Click(sender As Object, e As EventArgs) Handles PictureBox12.Click

Dim paint As New FrmPaint

paint.Show()

End Sub

Private Sub PictureBox13_Click(sender As Object, e As EventArgs) Handles PictureBox13.Click

Dim sz As New settings

sz.Show()

End Sub

Private Sub PictureBox15_Click(sender As Object, e As EventArgs) Handles PictureBox15.Click

登陆.Show()

Me.Close()

End Sub

Private Sub PictureBox14_Click(sender As Object, e As EventArgs) Handles PictureBox14.Click

Me.Close()

End Sub

End Class

(三)个人主页

相关主题
文本预览
相关文档 最新文档