湖南财政经济学院课程设计课程面向对象程序设计和数据库开发技术题目同学录管理系统专业电子商务班级2010级电子商务一班姓名彭娟指导教师龚春红2012 年 1 月 6 日一、 课程设计目的1.登录信息管理:对于普通用户,只有通过用户注册,注册成功后才可以登录本系统;用户还可以通过修改个人信息功能对自己的信息加以修改。
而管理员通过登录,实现对网站更好的服务和管理。
2.留言信息管理:通过添、删、改等基本操作用户可以留言;或发表留言,对其留言进行回复,当然还可以进行编辑、删除留言与回复。
3.管理员的功能:通过此功能实现对注册用户和用户进行管理。
二、系统需求分析(简要描述系统业务和功能,开发环境)。
2.1业务流分析业务流程图, 就是用一些规定的符号及连接来表示某个具体的业务处理过程[3]。
在对系统的组织结构和功能进行分析时,需从一个实际业务流程的角度将系统调查中有关该业务流程的资料都串起来作进一步的分析。
业务流程分析可以帮助我们了解该业务的具体处理过程,发现和处理系统的调查工作中的错误和疏漏,修改和删除原系统的不合理部分,在新系统基础上优化业务处理流程。
同学录系统的业务流程:首先由用户注册,登陆系统就可以进行发表留言等操作,用户还可以删除自己的留言、修改个人资料、修改个人密码,系统管理员初了拥有一般用户的权限以外还可以进行用户管理,留言管理等操作。
所有用户都可以查询同学,查看留言。
本系统的业务流程如下图2.1所示:登陆系统注册未注册用户 已注册用户系统管理员查询 发表 修改 上传删除各种信息所有用户写入图2.1 系统业务流程图后台数据库2.2 数据流分析数据流程分析主要包括对信息的流动、传递、处理、存储等的分析。
数据流程分析的目的就是要发现和解决数据流通中的问题。
现有的数据流程分析多是通过分层的数据流程图来实现的。
其具体的做法是:按业务流程图理出的业务流程顺序,将相应调查过程中所掌握的数据处理过程,绘制成一套完整的数据流程图。
同学录系统的数据流程:由用户注册,登陆系统然后就可以进行发表留言等操作,用户还可以修改密码,修改个人资料并且删除自己的留言和照片,系统管理员除了拥有一般用户的权限以外还可以进行用户管理,留言管理等操作。
所有用户都可以查询同学和查看留言。
通过对本系统的需求分析,系统的基本功能已经大体确定。
数据流图如2.2-2.6所示:同学录系统未注册用户注册用户数据库查询同学查看留言和照片查询同学查看留言修改个人信息 发表或删除留言发表或删除照片 图2.2 同学录系统数据流图注册用户系统管理员登陆系统用户登陆页面管理员登陆页面用户管理页面管理员管理页面用户名、密码用户名、密用户信息表用户信息表管理员信用户信息图2.3 用户登陆数据流图非法的留言返回显示留言内容进入留言模块留言内容提交退出留言板块错误提示图2.4 留言模块数据流图有效的用户名和密码用户名和密码无效的用户名和密码用户信息表登陆验证错误提示三、系统总体设计1、系统功能模块图通过对同学录系统的需求分析并结合实际情况分析,本系统的功能结构图如图3.1所示:同学录系统用户界面用户注册和登陆查看留言退出查看和发表留言修改密码管理个人留言退出管理员界面查看留言修改密码同学管理留言管理添加用户退出图3.1 同学录系统功能结构图2、系统功能描述(1)用户登录模块:分为用户和管理员两种身份登录,登录后分别进入两种主界面。
用户进入用户主界面,管理员进入管理员主界面。
(2)用户管理模块:这个模块是用户可以修改自己的资料及修改密码,查询等(3)留言模块:这个部分主要是用户可以发表留言,修改留言,查看留言等;管理员可以对用户的留言进行查看和删除,但不能修改。
四、数据库设计1、概念设计(ER图)(1)admin实体E-R图如图3.3所示:(2)用户实体E-R图:(3)留言实体E-R图如图所示:管理员密码用户名权限admin实体E-R图用户QQ 姓名性别住址电话密码用户编号出生日期图3.2 用户实体E-R图[6]2、逻辑设计管理员(用户名,密码,权限)用户(用户编号,姓名,密码,性别,出生日期,住址,电话,QQ ) 留言信息(留言编号,姓名,内容,时间,给某人留言编号) 3、表的设计,包括表的结构、约束等表3.1用户信息表(user )字段名 字段类型 字段大小 useid varchar 20 usename varchar 20 usepsw varchar 20 sex bit1 birth smalldatetime 4 address varchar 100 telephone varchar 20 QQvarchar20表3.2留言信息表(message )字段名 字段类型字段大小messageid varchar 20 messagename varchar 20 messagetexttext100messagetimesmalldatetime4留言留言内容留言姓名给某人留言编号留言时间留言编号图3.5 留言实体E-R 图messagebhao varchar 203.3 admin 表字段名字段类型字段大小adminid varchar 20adminpsw varchar 20quanxian varchar 20五、系统功能模块实现1.登录模块登录模块分为两种身份,一种是普通用户,一种是管理员。
通过这个模块进入不同的主界面,实现不同身份的功能。
首先调用数据库连接的,然后读取数据库,判断是管理员还是普通用户,如果是管理员就进入管理员界面,是普通用户就进入用户主界面。
同时记录普通用户开始进入的时间和分钟数、小时数,为计时做准备。
界面设计如图3所示用户登录界面using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace tongxulu{public partial class Frmdenglu : Form{public Frmdenglu(){InitializeComponent();}string adminid;public Frmdenglu(string admin_id){InitializeComponent( );this.adminid = admin_id;textBox1. Text = admin_id;}private void Frmdenglu_Load(object sender, EventArgs e){ }public static string user;public static int type;private void btnLogin_Click(object sender, EventArgs e){string sql;if (comboBox1.SelectedIndex == 0)sql = string.Format("select count(*) from admin where adminid='{0}' andadminpsw='{1}'",textBox1.Text,textBox2.Text);else if (comboBox1.SelectedIndex == 1)sql = string.Format("select count(*) from [user] where useid='{0}' and usepsw='{1}'", textBox1.Text, textBox2.Text);elsereturn;SqlCommand cmd = new SqlCommand(sql, datebase.con);try{datebase.con.Open();int cnt = (int)cmd.ExecuteScalar();if (cnt == 1){MessageBox.Show("欢迎登录", "系统登录");user = textBox1.Text;type = comboBox1.SelectedIndex;this.Hide();Frmmain frmm = new Frmmain();frmm.Show();}elseMessageBox.Show("用户名和密码输入错误", "登录错误");}catch (Exception ex){MessageBox.Show(ex.Message, "错误");}finally{datebase.con.Close();}}private void btnCancle_Click(object sender, EventArgs e){Application.Exit();}private void button1_Click(object sender, EventArgs e){}private void button1_Click_1(object sender, EventArgs e){string sql = string.Format("insert into admin (adminid,adminpsw) values('{0}','{1}')", textBox1.Text, textBox2.Text);SqlCommand cmd = new SqlCommand(sql, datebase.con);datebase.con.Open();int i = cmd.ExecuteNonQuery();datebase.con.Close();if (i > 0)MessageBox.Show("添加成功");else{MessageBox.Show("添加失败");return;}}}}using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace tongxulu{public partial class Frmmain : Form{public Frmmain(){InitializeComponent();}private void添加同学ToolStripMenuItem_Click(object sender, EventArgs e){ //Frmtianjia frmu = new Frmtianjia();//frmu.Show(); } private void删除同学ToolStripMenuItem_Click(object sender, EventArgs e){Frmdate frmd = new Frmdate();frmd.Show();}private void退出ToolStripMenuItem1_Click(object sender, EventArgs e){this.Close();}private void toolStripMenuItem2_Click(object sender, EventArgs e){Frmdate frmu = new Frmdate();frmu.Show();}private void修改个人资料ToolStripMenuItem_Click(object sender, EventArgs e) { }private void toolStripMenuItem1_Click(object sender, EventArgs e){Frmdate frmu = new Frmdate();frmu.Show();}private void退出ToolStripMenuItem_Click(object sender, EventArgs e){this.Close();}private void toolStripMenuItem3_Click(object sender, EventArgs e){Frmxiugaimima frmu = new Frmxiugaimima();frmu.Show();}private void Frmmain_Load(object sender, EventArgs e){if (Frmdenglu.type == 1){管理员管理ToolStripMenuItem.Visible = false;管理员管理ToolStripMenuItem1.Visible = false;}}private void查询留言ToolStripMenuItem_Click(object sender, EventArgs e){Frmmessage frmu = new Frmmessage();frmu.Show();}private void留言ToolStripMenuItem_Click(object sender, EventArgs e){Frmuseliuyan frmu = new Frmuseliuyan();frmu.Show();}private void退出ToolStripMenuItem2_Click(object sender, EventArgs e){this.Close();}private void管理员管理ToolStripMenuItem1_Click(object sender, EventArgs e) { }private void添加用户ToolStripMenuItem_Click(object sender, EventArgs e){Frmuser frmu = new Frmuser();frmu.Show();}private void退出ToolStripMenuItem3_Click(object sender, EventArgs e){this.Close();}private void toolStripMenuItem2_Click_1(object sender, EventArgs e){Frmxiugaimima frmu = new Frmxiugaimima();frmu.Show();}private void管理员管理ToolStripMenuItem_Click(object sender, EventArgs e) { }private void关闭系统ToolStripMenuItem_Click(object sender, EventArgs e) {Application.Exit();}}}using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace tongxulu{public partial class Frmmessage : Form{public Frmmessage(){InitializeComponent();}DataSet ds = new DataSet();SqlDataAdapter ada;BindingSource bs = new BindingSource();//private void button1_Click(object sender, EventArgs e)//{// //string sql = string.Format("select * from message where messageid='{0}')", textBox1.Text);// //ada = new SqlDataAdapter(sql, datebase.con); //实例化适配器// //if (ds.Tables.Count > 1)// // ds.Tables["message"].Clear();//清空数据集// //ada.Fill(ds,"message");//填充数据集// //bs.DataSource = ds.Tables["message"];//设定绑定的数据源// //dataGridView1.DataSource = bs;//}private void Frmmessage_Load(object sender, EventArgs e){string sql = "select * from message";ada = new SqlDataAdapter(sql, datebase.con);ds.Clear();ada.Fill(ds, "message");sql = string.Format("select * from message where messageid='{0}')", textBox1.Text);ada = new SqlDataAdapter(sql, datebase.con);if (ds.Tables.Count > 1)ds.Tables["message"].Clear();//ada.Fill(ds, "[user]");bs.DataSource = ds.Tables["message"];dataGridView1.DataSource = bs;textBox1.DataBindings.Add("Text", bs, "messageid");textBox2.DataBindings.Add("Text", bs, "messagename");textBox3.DataBindings.Add("Text", bs, "messagetext");dateTimePicker1.DataBindings.Add("Value", bs, "messagetime", true);textBox4.DataBindings.Add("Text", bs, "messagebhao");}private void button15_Click(object sender, EventArgs e){bs.MoveFirst();}private void button14_Click(object sender, EventArgs e){bs.MovePrevious();}private void button13_Click(object sender, EventArgs e){bs.MoveNext();}private void button12_Click(object sender, EventArgs e){bs.MoveLast();}private void button10_Click(object sender, EventArgs e){bs.RemoveCurrent();}private void button16_Click(object sender, EventArgs e){ds.Tables["message"].RejectChanges() }private void button17_Click(object sender, EventArgs e){bs.EndEdit();SqlCommandBuilder cmdb = new SqlCommandBuilder(ada);ada.Update(ds, "message");}private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { }private void button2_Click(object sender, EventArgs e){bs.EndEdit();SqlCommandBuilder cmdb = new SqlCommandBuilder(ada);ada.Update(ds, "message");}}}using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace tongxulu{public partial class Frmdate : Form{public Frmdate(){InitializeComponent();}DataSet ds = new DataSet();SqlDataAdapter ada;BindingSource bs = new BindingSource();private void Frmdate_Load(object sender, EventArgs e) {string sql = "select * from [user]";ada = new SqlDataAdapter(sql, datebase.con);ds.Clear();ada.Fill(ds, "[user]");sql = string.Format ("select * from [user] where useid='{0}')", textBox1.Text);ada = new SqlDataAdapter(sql, datebase.con);if (ds.Tables.Count > 1)ds.Tables["[user]"].Clear();//ada.Fill(ds, "[user]");bs.DataSource = ds.Tables["[user]"];dataGridView1.DataSource = bs;textBox5. DataBindings.Add("Text", bs, "useid");textBox7. DataBindings.Add("Text", bs, "usename");textBox6. DataBindings.Add("Text", bs, "usepsw");radioButton2. DataBindings.Add("Checked", bs, "sex", true);textBox2. DataBindings.Add("Text", bs, "address");dateTimePicker1.DataBindings.Add("Value", bs, "birth", true);textBox3. DataBindings.Add("Text", bs, "telephone");textBox4.DataBindings.Add("Text", bs, "qq");}private void button1_Click(object sender, EventArgs e){string sql = string.Format("select * from [user] where useid='{0}')", textBox1.Text);ada = new SqlDataAdapter(sql, datebase.con);if (ds.Tables.Count > 1)ds.Tables["[user]"].Clear();//ada.Fill(ds, "[user]");bs.DataSource = ds.Tables["[user]"];dataGridView1.DataSource = bs;}private void button15_Click(object sender, EventArgs e){bs.MoveFirst();}private void button14_Click(object sender, EventArgs e){bs.MovePrevious();}private void button11_Click(object sender, EventArgs e){bs.AddNew();}private void button10_Click(object sender, EventArgs e){bs.RemoveCurrent();}private void button17_Click(object sender, EventArgs e){bs.EndEdit();SqlCommandBuilder cmdb = new SqlCommandBuilder(ada);ada.Update(ds, "[user]");}private void button16_Click(object sender, EventArgs e){ds.Tables["[user]"].RejectChanges();}private void button13_Click(object sender, EventArgs e){bs.MoveNext();}private void button12_Click(object sender, EventArgs e){bs.MoveLast();}private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) {}}}using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace tongxulu{public partial class Frmxiugaimima : Form{public Frmxiugaimima(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){string sql = string.Format(@"update admin set adminpsw='{0}'where adminid='{1}'and adminpsw='{2}'",textBox1.Text.Trim(),textBox3.Text.Trim(), textBox2.Text.Trim());SqlCommand cmd = new SqlCommand(sql, datebase.con);if (MessageBox.Show("你确定要修改吗?", "提示",System.Windows.Forms.MessageBoxButtons.YesNo,System.Windows.Forms.MessageBoxIcon.Question) ==System.Windows.Forms.DialogResult.Yes){datebase.con.Open();int i = cmd.ExecuteNonQuery();datebase.con.Close();if (i > 0)MessageBox.Show("修改学生失败");elseMessageBox.Show("修改学生成功");}}private void button2_Click(object sender, EventArgs e){Application.Exit();}}}using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace tongxulu{public partial class Frmuseliuyan : Form{public Frmuseliuyan(){InitializeComponent();}DataSet ds = new DataSet();SqlDataAdapter ada;BindingSource bs = new BindingSource();private void Frmuseliuyan_Load(object sender, EventArgs e) {string sql = "select * from message";ada = new SqlDataAdapter(sql, datebase.con);ds.Clear();ada.Fill(ds, "message");sql = string.Format("select * from message where messagename='{0}')", textBox1.Text);ada = new SqlDataAdapter(sql, datebase.con);if (ds.Tables.Count > 1)ds.Tables["message"].Clear();//ada.Fill(ds, "[user]");/bs.DataSource = ds.Tables["message"];dataGridView1.DataSource = bs;textBox5.DataBindings.Add("Text", bs, "messageid");textBox2.DataBindings.Add("Text", bs, "messagename");textBox3.DataBindings.Add("Text", bs, "messagetext");dateTimePicker1.DataBindings.Add("Value", bs, "messagetime", true);textBox4.DataBindings.Add("Text", bs, "messagebhao");}//private void button1_Click(object sender, EventArgs e)//{// string sql = string.Format("select * from message where messagename='{0}')", textBox1.Text);// ada = new SqlDataAdapter(sql, datebase.con); //实例化适配器// if (ds.Tables.Count > 1)// ds.Tables["message"].Clear();//清空数据集// ada.Fill(ds, "message");//填充数据集// bs.DataSource = ds.Tables["message"];//设定绑定的数据源// dataGridView1.DataSource = bs;//}private void button15_Click(object sender, EventArgs e){bs.MoveFirst();}private void button14_Click(object sender, EventArgs e){bs.MovePrevious();}private void button13_Click(object sender, EventArgs e){bs.MoveNext();}private void button12_Click(object sender, EventArgs e){bs.MoveLast();}private void button2_Click(object sender, EventArgs e){bs.AddNew();}private void button3_Click(object sender, EventArgs e){bs.EndEdit();SqlCommandBuilder cmdb = new SqlCommandBuilder(ada);ada.Update(ds, "message");}private void button4_Click(object sender, EventArgs e){bs.RemoveCurrent();}private void button16_Click(object sender, EventArgs e){ds.Tables["message"].RejectChanges();}private void button3_Click_1(object sender, EventArgs e){bs.EndEdit();SqlCommandBuilder cmdb = new SqlCommandBuilder(ada);ada.Update(ds, "message");}private void button1_Click(object sender, EventArgs e){//string sql = string.Format("select * from message where messagename='{0}')",textBox1.Text);//ada = new SqlDataAdapter(sql, datebase.con); //实例化适配器//if (ds.Tables.Count > 1)// ds.Tables["message"].Clear();//清空数据集//ada.Fill(ds, "message");//填充数据集//bs.DataSource = ds.Tables["message"];//设定绑定的数据源//dataGridView1.DataSource = bs; }}}六、总结本系统完成了前台提供用户使用同学录管理的各种功能,后台提供管理员对数据库进行维护的功能。