C#课程设计—备忘录软件设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

**学院
课程设计说明书(2012/2013学年第一学期)
课程名称:软件程序设计
题目:备忘录软件设计
专业班级:
学生姓名:放羊娃
学号:
指导教师:吴开兴、马小进、崔冬
设计周数: 2周
设计成绩:
2013年1月18日
1.课程设计目的
本课程设计是通信工程专业的一门软件实践专业基础课,旨在提高学生的软件编程能力。

本设计将进一步加强学生对面向对象程序设计思想的理解,增强对C#程序语言的灵活运用。

要求学生能结合数据库知识,网络通信技术,实现基本的应用软件,为以后从事相关行业打下软件编程基础。

2. 课程设计正文
2.1软件分析
2.1.1软件标识
备忘录
2.1.2软件概述
该软件用于人们日常生活中的各种事件的备忘和提醒。

该软件对个人每日事件进行备忘,可记录要备忘的事件的具体内容以及具体时间;对事件设定的具体时间进行闹钟提醒,可更换闹钟铃声。

具体界面还可以根据个人喜好更该主界面时间和日期两状态栏的颜色,以及软件窗口的透明度等功能。

本产品可用于个人电脑里,建议客户端运行于windows95及以上版本。

2.1.3系统功能
2.2模块设计
2.2.1登陆模块
登录模块主要是为用户做了一个登陆界面,其中可以输入用户的用户名和密码,当用户的账号或密码没有输入,将会弹出对话框进行提示“用户名或密码为空”。

下面是两个button,一个是登陆,另外一个是重置。

当你输入正确的用户名和密码,点击登陆按钮,既可登陆备忘录管理系统,当你发现输入的用户名或密码有误时,可以点击重置按钮,重新输入用户信息。

2.2.2主窗口模块和添加备忘模块
当我们登陆成功之后,进入的就是备忘录主窗口。

主窗口界面由一个日历,方便用户进入系统后明确自己备忘时间。

每个用户登陆后可以在菜单中根据个人需求选择添加备忘,其次,在添加备忘右侧的组合框中,每个用户可以根据个人喜好设置提醒功能的铃声,还可以根据个人需求更改界面的颜色和透明度,还有延时提醒时间。

主菜单中还有关于选项,用户查看作者嘱托和作者信息。

2.3系统总体设计
2.3.1功能和模块的划分
2.3.2登陆模块
登录模块主要是为用户做的一个登陆界面,其中可以输入用户名和密码,当用户的用户名或密码没有输入时,将会弹出对话框进行提示“用户名或密码为空”,当用户的用户名或密码错误时,将会弹出对话框提示“用户名或密码错误。

”下面是两个button,一个是登陆,另外一个是重置。

当你输入正确的用户名和密码后,点击登陆按钮,这时会出现提示“登陆成功”。

2.3.3添加备忘模块
当用户正确登录备忘录系统时,就可以根据个人需求添加备忘;添加备忘是菜单的子菜单,呼出添加备忘窗口后,点击添加按钮添加备忘,删除按钮用以删除备忘,清空用以清空所有较多的备忘。

2.3.4 高级选项及提醒模块
这个模块主要是针对软件外观设置以及备忘提醒闹钟的设置,更改外观用以改变软件的界面颜色,界面透明度。

闹钟提醒设置用以更改提醒铃声,延时提醒时间的设置。

提醒窗口有两个按钮,“延时提醒”实现延时功能,“我知道了”关闭提醒窗口。

2.4系统详细设计
2.4.1数据库设计
数据建模
用户信息表
2.4.2登陆模块
登陆界面
登录界面
用户名密码验证
登用户登陆信息验证
登陆成功界面
功能描述
用户名密码验证:判断用户名或密码输入框的内容是否为空,为空就弹出上述提示,否则程序继续向下执行。

用户登陆信息验证:判断用户密码输入框的内容是否正确,错误就弹出上述提示,否则程序继续向下执行。

登陆成功界面:到数据库中去查询用户信息,该用户存在,程序就向下执行,弹出上述提示。

源代码
private void button1_Click(object sender, EventArgs e)
{
if (txtName.Text.Trim() != "" && txtPwd.Text.Trim() != "")
{
//连接数据库
string connString = @"Data Source=.\SQLEXPRESS;AttachDbFile name=|DataDirectory|\sjk.mdf;Integrated Security=True;Connect Timeout=30;User I nstance=True";
SqlConnection conn = new SqlConnection(connString);
conn.Open();
//操作数据库
string sql = "select * from UserInfo where Name = '" + txtN ame.Text.Trim().ToLower() + "' and Pwd = '" + txtPwd.Text.Trim() + "'";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
//判断成功
if (dr.Read())
{
MessageBox.Show("登录成功!");
f1 f = new f1();
f.Show();
this.Hide();
}
else
{
MessageBox.Show("用户名或密码错误!");
button2_Click(sender, e);
}
conn.Close();
}
else
{
MessageBox.Show("用户名或密码为空!");
}
}
private void button2_Click(object sender, EventArgs e)
{
txtName.Clear();
txtPwd.Clear();
txtName.Focus();
}
}
}
2.4.2添加备忘模块
添加备忘界面
任务备忘
添加计划任务
错误任务提示窗口
成功任务提示窗口
功能实现描述
任务备忘:在该用户登录进客户端后,选择添加被往后,出现以实现用户添计划任务。

添加计划任务:实现用户的计划任务的添加,可以记录具体事件,以及具体时间日期。

错误提示窗口:如果计划任务记录时间在目前时间的过去,提示添加失败。

成功提示窗口:如果计划任务记录时间在目前时间的将来,提示添加成功。

源代码
private void FrmSet_Load(object sender, EventArgs e)
{
label1.Text = DateTime.Now.ToString() + " " + DateTime.Now.DayO fWeek.ToString();
dateTimePicker1.Value = DateTime.Now;
dateTimePicker1.MinDate = DateTime.Now;
}
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = DateTime.Now.ToString() + " " + DateTime.Now.DayO fWeek.ToString();
}
private void btnEnter_Click(object sender, EventArgs e)
{
Save();
}
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}
//保存
private void Save()
{
long longNowTime = long.Parse(DateTime.Now.ToString("yyyyMMddHH mmss"));
string dt = dateTimePicker1.Value.ToString("yyyy/MM/dd") + " " + dateTimePicker2.Value.ToString("HH:mm:ss");
long longSaveTime = long.Parse(dt.Substring(0, 4) + dt.Substrin g(5, 2) + dt.Substring(8, 2) +
dt.Substring(11, 2) + dt.Substring(14, 2) + dt.Substring(17, 2));
if (longSaveTime > longNowTime)
{
string cont = textBox1.Text;
StreamWriter sw = new StreamWriter(Application.StartupPath + "\\cont.dat", true, Encoding.Default);
sw.WriteLine(dt + " " + cont);
sw.Close();
if (MessageBox.Show("成功保存!\r\n点击“是”退出,点击“否”继续添加...", "提醒",
MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == Dialog Result.Yes)
{
this.Close();
}
list.Items.Clear();
frmOption = new f2();
frmOption.GetProject(list);
}
else
{
MessageBox.Show("输入时间已过时,请重新输入!", "提示", Mes sageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
{
}
}
}
2.4.3高级选项模块
高级选项界面
高级选项窗口
更改背景或者字体颜色界面
功能实现描述
左右拖动滑扭:用于实现透明度的更改,向左拖动透明度增加,向右拖动透明度减少。

背景\字体按钮:点击按钮,弹出颜色选择窗口,用于实现主界面背景\字体颜色的更改。

试听\停止按钮:点击试听,播放音乐。

点击停止,音乐停止。

蓝色选中条停在的铃声为当前设置的铃声。

延时提醒用来设置延时提醒功能,我知道了用来关闭通知窗口。

源代码
try
{
string[] strMusic = Directory.GetFiles(strPath + "\\铃声", "*.wav");
foreach (string s in strMusic)
{
listBoxMusic.Items.Add(Path.GetFileNameWithoutExtension(s));
}
}
catch (Exception) { }
//是否获取铃声
string music = "1";
string boot = "1";
try
{
GetPrivateProfileString("option", "MusicIsChecked", "", temp, 255, strPath + "\\ini.ini");
music = temp.ToString();
GetPrivateProfileString("option", "Boot", "", temp, 255, strPath + "\\ini.ini");
boot = temp.ToString();
}
catch (Exception) { }
if (music.Equals("1"))
cBoxBackgroundMusic.Checked = true;
else
cBoxBackgroundMusic.Checked = false;
//if (boot.Equals("1"))
// cBoxBoot.Checked = true;
//else
// cBoxBoot.Checked = false;
//选中的铃声
string selectMusic = "The Dawn";
try
{
GetPrivateProfileString("option", "MusicName", "", temp, 255, strPath + "\\ini.ini");
selectMusic = temp.ToString();
}
catch (Exception) { }
listBoxMusic.SelectedItem = selectMusic;
}
//设置透明度
private void trackBar1_Scroll(object sender, EventArgs e)
{
frmTime.Opacity = trackBar1.Value * 0.01;
labOpacity.Text = trackBar1.Value.ToString() + "%";
WritePrivateProfileString("option", "Opacity", trackBar1.Value.ToString(), strPath + "\\ini.ini");
}
//设置背景颜色
private void btnBackgorundColor_Click(object sender, EventArgs e)
{
if (this.colorDialog1.ShowDialog() == DialogResult.OK)
{
labDate.BackColor = colorDialog1.Color;
labTime.BackColor = colorDialog1.Color;
WritePrivateProfileString("color", "b_R", colorDialog1.Color.R.ToString(), strPath + "\\ini.ini");
WritePrivateProfileString("color", "b_G", colorDialog1.Color.G.ToString(), strPath + "\\ini.ini");
WritePrivateProfileString("color", "b_B",
}
}
//设置字体颜色
private void btnFontColor_Click(object sender, EventArgs e)
{
if (this.colorDialog1.ShowDialog() == DialogResult.OK)
{
labDate.ForeColor = colorDialog1.Color;
labTime.ForeColor = colorDialog1.Color;
WritePrivateProfileString("color", "f_R", colorDialog1.Color.R.ToString(), strPath + "\\ini.ini");
WritePrivateProfileString("color", "f_G", colorDialog1.Color.G.ToString(), strPath + "\\ini.ini");
WritePrivateProfileString("color", "f_B", colorDialog1.Color.B.ToString(), strPath + "\\ini.ini");
}
}
//试听铃声
private void btnTry_Click(object sender, EventArgs e)
{
try
{
string strName = listBoxMusic.SelectedItem.ToString();
sp = new SoundPlayer(strPath + "\\铃声\\" + strName + ".wav"); sp.PlayLooping();
}
catch (Exception) { }
//停止试听铃声
private void btnStop_Click(object sender, EventArgs e)
{
try
{
sp.Stop();
}
catch (Exception) { }
}
private void FrmOption_FormClosing(object sender, FormClosingEventArgs e) {
try
{
sp.Stop();
}
catch (Exception) { }
}
private void cBoxBackgroundMusic_CheckedChanged(object sender, EventArgs e)
{
if (cBoxBackgroundMusic.Checked == true)
{
WritePrivateProfileString("option", "MusicIsChecked", "1", strPath + "\\ini.ini");
}
else
WritePrivateProfileString("option", "MusicIsChecked", "0", strPath + "\\ini.ini");
}
}
private void listBoxMusic_SelectedIndexChanged(object sender, EventArgs e)
{
string str = listBoxMusic.SelectedItem.ToString();
WritePrivateProfileString("option", "MusicName", str, strPath + "\\ini.ini");
}
private void btnAdd_Click(object sender, EventArgs e)
{
f3 frmSet = new f3(this.listBoxProject);
frmSet.ShowDialog();
}
private void listBoxProject_SelectedIndexChanged(object sender, EventArgs e)
{
textBoxProject.Text = listBoxProject.SelectedItem.ToString().Insert(19,"\r\n");
}
2.4.4程序主要代码
namespace 备忘录
public partial class f1 : Form
{
private f2 frmOption;
private f4 frmShow;
private string strPath = Application.StartupPath.ToString(); //应用程序路径
private string strCont;
public static bool isShow = false; //是否打开了其他窗体
public f1()
{
InitializeComponent();
}
[DllImport("kernel32")]
private static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
private static extern long GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
private void FrmTime_Load(object sender, EventArgs e)
{
GetLocation();
showDateTime();
GetOption();
}
//初始化设置
private void GetOption()
{
//获取透明度↓
StringBuilder temp = new StringBuilder(255);
int op = 90;
try
{
GetPrivateProfileString("option", "Opacity", "", temp, 255, strPath + "\\ini.ini");
op = int.Parse(temp.ToString());
}
catch (Exception) { }
this.Opacity = op * 0.01;
//获取背景颜色
int b_R = 255;
int b_G = 128;
int b_B = 255;
try
{
GetPrivateProfileString("color", "b_R", "", temp, 255, strPath + "\\ini.ini");
b_R = int.Parse(temp.ToString());
GetPrivateProfileString("color", "b_G", "", temp, 255, strPath + "\\ini.ini");
b_G = int.Parse(temp.ToString());
GetPrivateProfileString("color", "b_B", "", temp, 255, strPath + "\\ini.ini");
}
catch (Exception) { }
labDate.BackColor = System.Drawing.Color.FromArgb(b_R, b_G, b_B); labTime.BackColor = System.Drawing.Color.FromArgb(b_R, b_G, b_B);
//获取字体颜色
int f_R = 255;
int f_G = 255;
int f_B = 255;
try
{
GetPrivateProfileString("color", "f_R", "", temp, 255, strPath + "\\ini.ini");
f_R = int.Parse(temp.ToString());
GetPrivateProfileString("color", "f_G", "", temp, 255, strPath + "\\ini.ini");
f_G = int.Parse(temp.ToString());
GetPrivateProfileString("color", "f_B", "", temp, 255, strPath + "\\ini.ini");
f_B = int.Parse(temp.ToString());
}
catch (Exception) { }
labDate.ForeColor = System.Drawing.Color.FromArgb(f_R, f_G, f_B); labTime.ForeColor = System.Drawing.Color.FromArgb(f_R, f_G, f_B); }
//获取设置程序的位置方法
private void GetLocation()
{
StringBuilder temp = new StringBuilder(255);
int _x = 0;
int _y = 0;
try
{
GetPrivateProfileString("option", "X", "", temp, 255, strPath + "\\ini.ini");
_x = int.Parse(temp.ToString());
GetPrivateProfileString("option", "Y", "", temp, 255, strPath + "\\ini.ini");
_y = int.Parse(temp.ToString());
}
catch (Exception) { }
this.Location = new Point(_x, _y);
}
private void timer1_Tick(object sender, EventArgs e)
{
showDateTime();
alarm();
}
//闹铃时间到了
private void alarm()
{
string NowTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
string time = "";
try
{
StreamReader sr = new StreamReader(strPath + "\\cont.dat", Encoding.Default);
while (sr.Peek() != -1)
{
strCont = sr.ReadLine();
time = strCont.Substring(0, 19);
if (NowTime.Equals(time) && !isShow)
{
sr.Close();
frmShow = new f4(strCont);
frmShow.ShowDialog();
break;
}
}
sr.Close();
}
catch (Exception) { }
}
//在窗体标签显示日期和时间
private void showDateTime()
{
labDate.Text = DateTime.Now.Date.ToString("yyyy年MM月dd日"); labTime.Text = DateTime.Now.ToString("HH:mm:ss");
}
private void 选项ToolStripMenuItem1_Click(object sender, EventArgs e) {
frmOption = new f2(this, labDate, labTime);
frmOption.ShowDialog();
}
private void 关于ToolStripMenuItem1_Click(object sender, EventArgs e)
{
MessageBox.Show("软件制作人:Ann\r\nEmail:电子信息@河北工程.com", "关于", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
private void 退出ToolStripMenuItem1_Click(object sender, EventArgs e) {
Application.Exit();
}
private void labDate_Click(object sender, EventArgs e)
{
}
}
}
3.经验总结
本软件开发过程中,实践了C#软件的操作和理解,开发的项目虽然开发时间比计划开发时间超出1天,但是整体来说,还是比较成功的。

这次开发中,小组成员之间积极配合,队员之间进行良好的沟通和帮助。

这次的课程设计不仅考验到自己对所学知识掌握的程度,也考研了人与人之间的关系,队友之间应该互相沟通和帮助。

不过在建立数据库和程序之间实现互相应用互相链接上,还是掌握的不太好,多用户登录,多数据存储还实现的不是很好。

总体来说,在两个星期的时间里学到了很多东西,这也是每个同学应该做好的。

我们应该对我们所做的事负责,更应该对自己负责。

4.参考文献
[1] 邱锦伦、曹旻编著. Visual C#.NET程序设计教程.清华大学出版社,2006
[2] 程云志等编著.数据库原理与SQL Server 2005应用教程.机械工业出版社,2006
[3] MSDN Library for Visual Studio 2005
[4] 马骏.C#网络应用高级编程.人民邮电出版社,2006
软件使用说明书
1. 登录:用户一,用户名密码均为admin。

用户二,用户名密码均为admin1
用户三,用户名密码均为admin2
2. 主界面:含有菜单按钮,菜单按钮里边有三个子选项。

3. 添加备忘:次窗口包含三个按钮,删除、添加、清空。

删除是选择制定的备忘,添加是添加备忘,清空是清空所有备忘。

添加计划任务:
根据个人需求,按时间日期添加备忘。

4. 高级选项:次窗口里包含背景、字体颜色的设置,提醒铃声的选,有无铃声,延时提醒
时间设置,透明度的选择。

相关文档
最新文档