C#课程设计备忘录软件设计.docx
《C#课程设计备忘录软件设计.docx》由会员分享,可在线阅读,更多相关《C#课程设计备忘录软件设计.docx(27页珍藏版)》请在冰点文库上搜索。
C#课程设计备忘录软件设计
**学院
课程设计说明书
(2012/2013学年第一学期)
课程名称:
软件程序设计
题目:
备忘录软件设计
专业班级:
学生XX:
放羊娃
学号:
指导教师:
设计周数:
2周
设计成绩:
2013年1月18日
1目的
本课程设计是电子工程专业的一门软件实践专业基础课,旨在提高学生的软件编程能力。
本设计将进一步加强学生对面向对象程序设计思想的理解,增强对C#程序语言的灵活运用。
要求学生能结合数据库知识,实现基本的应用软件,为以后从事相关行业打下软件编程基础。
2设计部分
备忘录系统所需要实现的功能是:
1、支持多用户登录,根据用户名和密码进入备忘录;
2、登录用户可完成备忘信息的添加、修改和删除功能;
3、支持登录提醒或其他提醒方式,同时使用Windows窗体和C#语言来进行实际设计;既然设计到了多用户等相关操作,就用到了SQLSERVER数据库;
4、在完成以上功能以后,添加了可以注册新用户的功能。
系统备忘录系统的功能模块
用户信息模块:
用来管理用户的登录、注册;
主界面:
用来修改用户的个人登录密码,修改、删除用户的备忘内容;
备忘信息模块:
添加用户需备忘的信息、添加到时提醒铃声;
到时提醒模块:
用来提醒用户备忘的内容,及铃声提醒。
系统流程图
上图1为用户登录流程图
数据库系统设计
用户信息表(UserInfo)
列名
数据类型
长度
是否为主键
是可否为空
注释
UserName
nvarchar
20
是
否
用户登录用户名
UserPwd
nvarchar
20
否
否
用户登录密码
备忘录信息表(MemoReminder)
列名
数据类型
长度
是否为主键
是可否为空
注释
Number
int
是
否
自动编号
UserName
nvarchar
20
否
否
用户名
Memo
nvarchar
MAX
否
是
备忘内容
ReminderTime
datetime
否
是
提醒时间
ReminderMusic
nvarchar
MAX
否
是
提醒铃声
3系统功能图
图2备忘录系统的总体结构
4设计步骤
建立数据库
1.1建立表添加用户信息表(UserInfo)、备忘录信息表(MemoReminder)。
4.2登录界面设计(frmLogin)
当用户输入用户名和密码,点击登录按钮后,从数据库检索此想登录的用户的信息,如果登录名和密码与数据库里的一致,那么登录进去,进入主界面,若其中一个错误或用户名不存在,那么提示:
用户名或密码错误;可以点击一旁的“注册用户”按钮;注册一个新用户,登录进去;还有一个重置按钮,就是当用户名或密码输入错误后,可以点击“重置”按钮,清空两个框里面的值。
4.3主界面设计(frmMain)
主菜单栏
子菜单栏
在备忘录下拉的编辑备忘中,包括修改和删除备忘。
在主界面添加背景图片
在用户操作下拉菜单中的“修改密码”,可以修改当前用户的密码。
设置添加备忘窗口
按钮:
添加、取消。
数据库连接
当按“添加”按钮,备忘内容录入数据库;
包括修改和删除功能;
到设置的时间后,会弹出此窗口
按钮:
“延时”按钮、“知道了”按钮
有一个控件(bobox),当只有选择需延时的时间后,点击延时才生效,否那么会提示:
请选择需要延时的时间;当点击“知道了”按钮后,会弹出:
是否要保留此条备忘内容,若单击:
Yes,那么在数据库中保留此条备忘内容,然后关闭此提醒窗口;若单击No,那么数据库中会删除此条记录,然后关闭此提醒窗口。
有三项内容:
按钮:
“提交”按钮、“取消”按钮
点击登录界面的“注册”按钮,会进入此注册界面。
5程序设计
5.1创建一个类,OperateDB。
publicsealedclassOperateDB
{
///
///获取连接数据库的字符串
///
publicstaticstringConnString
{
get
{
using(StreamReadersr=File.OpenText("Conn2DB.txt"))
{
returnsr.ReadLine();
}
}
}
publicstaticvoidPreparemand(Sqlmandcmd,SqlConnectionconn,stringcmdText)
{
if(conn.State!
=ConnectionState.Open)
{
conn.Open();
}
cmd.Connection=conn;
cmdmandType=mandType.Text;
cmdmandText=cmdText;
}
///
///执行数据读取操作
///
///SQL语句?
///如果获取到值,返回true,否组是false
publicstaticboolExecuteReader(stringcmdText)
{
using(SqlConnectionconn=newSqlConnection(ConnString))
{
Sqlmandcmd=newSqlmand();
Preparemand(cmd,conn,cmdText);
SqlDataReaderdr=cmd.ExecuteReader();
returndr.Read();
}
}
///
///执行数据增加删除或修改操作
///
///SQL语句
///返回操作影响的行数
publicstaticintExecuteQuery(stringcmdText)
{
using(SqlConnectionconn=newSqlConnection(ConnString))
{
Sqlmandcmd=newSqlmand();
Preparemand(cmd,conn,cmdText);
returncmd.ExecuteNonQuery();
}
}
}
privatevoidbtnLogin_Click(objectsender,EventArgse)
{
:
用类封装来操作数据库
stringsql="select*fromUserInfowhereUserName='"+txtUsername.Text.Trim().ToLower()+"'andUserPwd='"+txtPassword.Text.Trim()+"'";
if(OperateDB.ExecuteReader(sql))
{
username=txtUsername.Text.Trim().ToLower();
frmMainfrm=newfrmMain();
frm.Show();
//frm.WindowState=FormWindowState.Minimized;
this.Hide();
}
else
{
MessageBox.Show("用户名或密码错误!
","出错了",
MessageBoxButtons.OK,MessageBoxIcon.Error);
}
}
if(txtNewPwd.Text.Trim()==txtNewPwdAgain.Text.Trim())
{
//使用类封装
stringsqlCheckPwd="select*fromUserInfowhereUserName='"+frmLogin.username+"'andUserPwd='"+txtOldPwd.Text.Trim()+"'";
if(OperateDB.ExecuteReader(sqlCheckPwd))
{
stringsql="updateUserInfosetUserPwd='"+txtNewPwd.Text.Trim()+"'whereUserName='"+frmLogin.username+"'";
if(OperateDB.ExecuteQuery(sql)==1)
{
MessageBox.Show("密码修改成功|!
");
this.Close();
}
else
{
MessageBox.Show("密码修改失败!
");
}
}
else
{
MessageBox.Show("旧密码输入不正确!
");
}
}
else
{
MessageBox.Show("两次输入的新密码不一致!
");
}
}
privatevoidfrmEdit_Load(objectsender,EventArgse)
{
BindData();
}
SqlDataAdapterda=newSqlDataAdapter();
DataSetds=newDataSet();
///
///数据绑定
///
voidBindData()
{
stringsql="selectNumberas自动编号,Memoas备忘内容,ReminderTimeas提醒时间,ReminderMusicas提醒铃声fromMemoReminderwhereUserName='"+frmLogin.username+"'";
SqlConnectionconn=newSqlConnection(OperateDB.ConnString);
conn.Open();
Sqlmandcmd=newSqlmand(sql,conn);
da.Selectmand=cmd;
da.Fill(ds);
dataGridView1.DataSource=ds.Tables[0];
conn.Close();
}
privatevoidbtnEdit_Click(objectsender,EventArgse)
{
SqlmandBuildercb=newSqlmandBuilder(da);
da.Update(ds);
MessageBox.Show("修改成功|!
");
}
privatevoidbtnDelete_Click(objectsender,EventArgse)
{
DialogResultdlResult=MessageBox.Show(this,"要删¦除这些内容吗?
","请确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(dlResult==DialogResult.Yes)
{
intj=dataGridView1.SelectedRows.Count;
int[]l=newint[j];
inti;
for(i=0;i{
l[i]=dataGridView1.SelectedRows[i].Index;
}
intk=0;
while(k{
ds.Tables[0].Rows[l[k]].Delete();
k++;
}
SqlmandBuildercb=newSqlmandBuilder(da);
da.Update(ds);
}
}
5.5用户添加备忘内容,及设定铃声
privatevoidbtnAdd_Click(objectsender,EventArgse)
{
stringsql="insertintoMemoReminder(UserName,Memo,ReminderTime,ReminderMusic)Values('"+frmLogin.username+"','"+txtMemo1.Text+"','"+dateTimePicker1.Value+"','"+txtMusic.Text+"')";
if(OperateDB.ExecuteQuery(sql)==1)
{
MessageBox.Show("备忘添加成功|!
");
DialogResultdlResult=MessageBox.Show(this,"还要继续添加备忘吗?
","请确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(dlResult==DialogResult.Yes)
{
txtMemo1.Text="";
txtMemo1.Focus();
}
else
{
this.Close();
}
}
else
{
MessageBox.Show("备忘添加失败!
?
");
}
}
privatevoidbtnSelectMusic_Click(objectsender,EventArgse)
{
OpenFileDialogofd=newOpenFileDialog();
ofd.Filter="MP3文件(*.mp3)|*.mp3|所有文件t(*.*)|*.*";
if(ofd.ShowDialog()==DialogResult.OK)
{
txtMusic.Text=ofd.FileName;
}
}
privatevoidtimer1_Tick(objectsender,EventArgse)
{
this.label5.Text=DateTime.Now.ToString("yyyy/MM/ddHH:
mm:
ss");
}
privatevoidbtnExit_Click(objectsender,EventArgse)
{
this.Close();
}
privatevoidtxtMusic_DoubleClick(objectsender,EventArgse)
{
OpenFileDialogofd=newOpenFileDialog();
ofd.Filter="MP3文件(*.mp3)|*.mp3|所有文件(*.*)|*.*";
if(ofd.ShowDialog()==DialogResult.OK)
{
txtMusic.Text=ofd.FileName;
}
}
voidBindData()
{
stringsql="select*fromMemoReminderwhereNumber='"+this.label4Number.Text+"'";
SqlConnectionconn=newSqlConnection(OperateDB.ConnString);
conn.Open();
Sqlmandcmd=newSqlmand(sql,conn);
da.Selectmand=cmd;
da.Fill(ds);
label4Number.Text=ds.Tables[0].Rows[0].ToString();
conn.Close();
}
privatevoidtimer1_Tick(objectsender,EventArgse)
{
this.labelShowNowTime.Text=DateTime.Now.ToString("yyyy/MM/ddHH:
mm:
ss");//在label控件上显示当前时间
//this.txtNowTime.Text=DateTime.Now.ToString("yyyy/MM/ddHH:
mm:
ss");//在txtNowTime上显示当前时间
}
privatevoidfrmRemind_Load(objectsender,EventArgse)
{
txtRemind.Text=frmMain.remind;//显示提醒内容
this.axWindowsMediaPlayer1.URL=frmMain.song;
this.label4Number.Text=frmMain.number;
}
privatevoidbtnClose_Click(objectsender,EventArgse)
{
DialogResultdlResult=MessageBox.Show(this,"还要保留此条备忘内容吗?
","请确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if(dlResult==DialogResult.Yes)
{
this.Close();
this.Close();
}
elseif(dlResult==DialogResult.No)
{
using(SqlConnectionconn=newSqlConnection(OperateDB.ConnString))
{
stringsql="deletefromMemoReminderwhereNumber='"+this.label4Number.Text+"'";conn.Open();
Sqlmandcmd=newSqlmand(sql,conn);
inti=cmd.ExecuteNonQuery();
if(i>0)
{
MessageBox.Show("取消成功!
","消息提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
conn.Close();
this.Close();
}
}
}
privatevoidbtnDelay_Click(objectsender,EventArgse)
{
if(boBox1.Text=="")
{
MessageBox.Show("请选择需要延时的时间!
");
}
else
{
TimeSpant=newTimeSpan(0,0,Convert.ToInt32(boBox1.SelectedItem.ToString()));
DateTimenow=DateTime.Now.Add(t);//获取延时后的时间
stringconnString=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\sjk.mdf;IntegratedSecurity=True;ConnectTimeout=30;UserInstance=True";
SqlConnectionconn=newSqlConnection(connString);
conn.Open();
stringsql="updateMemoRemindersetReminderTime='"+now+"'whereNumber='"+label4Number.Text+"'";
Sqlmandcmd=newSqlmand(sql,conn);
cmdmandText=sql;
if(cmd.ExecuteNonQuery()==1)
{
MessageBox.Show("OK!
");
this.Close();
}
conn.Close();
}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(textBox1.Text.Trim()==""||textBox2.Text.Trim()==""||textBox3.Text.Trim()=="")
MessageBox.Show("请填写完整信息","提示");
else
{
if(textBox2.Text.Trim()!
=textBox3.Text.Trim())
MessageBox.Show("两次输入密码不一致!
请重新输入!
");
else
{
stringconnString=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\sjk.mdf;IntegratedSecurity=True;ConnectTimeout=30;UserInstance=True";
SqlConnectionconn=newSqlConnection(connString);
conn.Open();
Sqlmandcmd=newSqlmand("",conn);
cmdmandText="select*fromUserInfowhereUserName='"+textBox1.Text.Trim()+"'";
if(null==cmd.ExecuteScalar())
{
stringsql="insertintoUserInfo(UserName,UserPwd)values('"+textBox1.Text.Trim()+"','"+
textBox2.Text.Trim()+"')";
cmdmandText=sql;
cmd.ExecuteNonQuery();
MessageBox.Show("恭喜您注册成功!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
this.Close();
}
else
{
MessageBox.Show("已有"+textBox1.Text.Trim()+"用户存在,请选择其他名称","提示",MessageBoxButtons.OK,MessageBoxIcon.Hand);
}
}
}
}
6设计总结与结论
通过本次课程设计的亲身经历与实践,使我认识到C#和数据库学习的重要性和严谨性,需要投入极大的认真和专注。
我们所做的备忘录系统较大程度用到了数据库,因此也是一次更加深度的了解学习。
同时需要培养一种初步的工程理念和好的团队合作精神,在这些方面我不得不说有很大的差距,虽然我参与了绝大部分的实践活动,但由于平