课程设计报告完整版

更新时间:2024-05-11 17:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《C#程序设计》

课程设计报告

目 录

摘要 .................................................................... 1 课程设计说明书 .......................................................... 1 第1章 系统功能简介 .................................................... 2

1.1课题研究现状分析 ............................................2

1.1.1 本领域内已开展的研究工作 ........................................................................ 3 1.1.2 已经取得的研究成果 .................................................................................... 3 1.2选题的目的及意义 ............................................3 第2章 系统需求分析 .................................................... 4

2.1 问题的提出 .................................................4 2.2 系统的设计目标 .............................................4 2.3功能模块划分分析 ............................................4

一、系统登录 .................................................................................................. 5 二、学生成绩管理系统的维护 ...................................................................... 6

第3章 系统总体设计 .................................................... 7

3.1系统层次模块图..............................................7 3.2数据库的设计 ...............................................7 3.3库中各个表的设计 ............................................7 第4章 系统实现 ........................................................ 9

4.2系统登录 ...................................................9 4.2系统功能的实现............................................. 12 第5章 系统使用说明 ................................................... 36 第6章 课程设计总结 ................................................... 37

6.1 主要问题及解决办法......................................... 37 6.2 课程设计体会 .............................................. 38 6.3 自我评定 ................................................. 38 参考文献 ............................................................... 40

摘要

个人信息管理系统是一个企事业单位不可缺少的部分,它的内容对于企事业单位的决策者和管理者来说都至关重要,所以个人信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对个人信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高个人管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套管理软件成为很有必要的事情,在下面的各章中我们将以开发一套个人信息管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。

关键词: 类 窗体 控件 数据库

第1章 系统功能简介

随着信息产业的飞速发展,信息化管理已经引入并应用到各行业管理领域,各种形式的百货商场、大型仓储超市、便利店、连锁超市和专卖店等形式的零售业鳞次栉比,不断改变、影响着人们的价值观念和生活方式。因此,要提高个人信息管理系统的效率,就要大力推进企业信息化建设,利用先进的办公自动化系统来实现企业内部信息管理、共享及交流,以便使人们从繁杂的事务中解放出来,从而提高了工作效率。

个人信息管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我们使用 MICROSOFT公司的 VISUAL BASIC开发工具,利用其提供的各种面向对象的开发工具,尤其是数据窗口这一能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发。论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。重点的说明了系统设计的重点、设计思想、难点技术和解决方案。

1.1课题研究现状分析

随着办公自动化水平的不断提高,个人信息管理从手工转到计算机自动化信息处理阶段。设计一个功能完整、操作简便、界面友好的个人信息管理系统已经是势在必行的了。提高个人信息管理工作的效率,保证信息的准确和规范,减少相关人员的工作量,使个人管理工作真正做到科学、合理的规划,系统、高效的实施。

本次课题为:个人信息管理系统,它主要包括登录通过身份验证可以进行登录,并可对密码进行修改。个人备忘录可以实现备忘录的增、删、改、查询以及信息的显示。个人通讯录可以实现对通讯录的增、删、改、查询、信息的显示。个人理财可以实现对收入与支出的记录,包括的功能有对理财信息的增、删、改、查询、信息的显示以及按时间对其收入、支出进行统计。个人风采的展示显示照片,并能实现照片的上传。

1.1.1 本领域内已开展的研究工作 1. 理论研究基础

(1) 后台以SQL数据库支持。

(2) 前台以 Microsoft Visual Studio 2005为开发环境,实现对各种信息增、删、查、改、显示操作。

2. 技术层面的支持

(1)系统的设计与实现应采用通过数据源连接数据库。

(2)系统界面采用MDI方式,即用户登录后进入主窗体,主窗体通过菜单进入子窗体。

1.1.2 已经取得的研究成果

本次课设对实现了课程设计的全部要求并对其进行了一定的扩展。 1.2选题的目的及意义

目的:提高学生成绩管理的工作效率,方便快捷。 意义:切合实际,亲身体会。

第2章 系统需求分析

个人信息管理系统的建立,需要对课程设计要求进行透彻的分析并结合实际,以确定系统的目标,提出解决问题的详细方案,这是系统建设的重要环节。同时可以提高个人信息管理工作的效率,保证信息的准确和规范,减少相关人员的工作量,使个人管理工作真正做到科学、合理的规划,系统、高效的实施。

2.1 问题的提出

随着办公自动化水平的不断提高,个人信息管理从手工转到计算机自动化信息处理阶段。设计一个功能完整、操作简便、界面友好的个人信息管理系统已经是势在必行的了。

2.2 系统的设计目标

提高个人信息管理工作的效率,保证信息的准确和规范,减少相关人员的工作量,使个人管理工作真正做到科学、合理的规划,系统、高效的实施。

2.3功能模块划分分析

本系统主要分为五个模块分别是用户登录模块、个人备忘录模块、个人通讯录模块、个人理财模块以及个人风采的展示。它们都可以实现信息的增、删、改及其信息的查询。具体结构如图2-1所示:

图2-1 系统结构图

各功能模块分析:

? 登录模块:用于验证用户的密码和登录。

? 个人备忘录模块: 完成对个人备忘录的增加、查询及其修改。 ? 个人通讯录模块:完成课程信息的增加、查询及其显示。

? 个人理财模块:完成教师信息的增加、查训、修改、显示及其总计。 ? 个人风采模块:完成照片的显示和实现照片的上传。 ? 修改密码模块:对登录用户的密码进行修改。 ? 修改备忘录模块:对备忘录的修改和删除。

? 查询个人理财模块:实现个人理财信息的查询。

? 修改个人理财模块:完成个人理财信息的修改和删除。 ? 理财总计模块:按照日期实现对收入与支出的统计。

? 查询个人通讯录模块:完成对通讯录的查询、修改和删除。

系统结构及其主要功能如下所示:

一、系统登录

登录为用户使用系统的起始点,用户必须先通过身份验证,方可对个人信息进行相关操作,登录流程如下图2-2所示:

简要说明及功能描述:

图2-2登录流程图

登陆界面主要功能是提高了信息的保密性,中有在用户名和密码正确的前提下才能登陆系统主界面。如输入错误则不能登入。

二、学生成绩管理系统的维护 简要说明:

本用例的功能主要是对各种基本信息增加、删除、查询、修改,以及对个人理财的统计。包括各模块简要说明及描述:

1.个人备忘录模块: 完成对个人备忘录的增加、查询及其修改。 2.个人通讯录模块:完成课程信息的增加、查询及其显示。

3.个人理财模块:完成教师信息的增加、查训、修改、显示及其总计。 4.个人风采模块:完成照片的显示和实现照片的上传。 5.修改密码模块:对登录用户的密码进行修改。 6.修改备忘录模块:对备忘录的修改和删除。

7.查询个人理财模块:实现个人理财信息的查询。

8.修改个人理财模块:完成个人理财信息的修改和删除。 9.理财总计模块:按照日期实现对收入与支出的统计。

10.查询个人通讯录模块:完成对通讯录的查询、修改和删除。

第3章 系统总体设计

3.1系统层次模块图

系统的总体结构图如图3-1所示。 查询验证 登录 失败 处理 错误提示 注销 成功 个人备忘录 操作 操作 操作 操作

退出 个人理财 个人通讯录 个人风采 图3-1 系统总结构图

3.2数据库的设计

数据库的设计如下表3-1所示:

表3-1 数据库中的表

表名 登录 备忘录 个人理财 个人通讯录 3.3库中各个表的设计

登录表用于储存用户的用户名和密码,主键为username。表中各字段功能定义如表3-2所示。

作用 用于存储用户名和密码 用于存储备忘录的信息 用于存储个人理财的信息 用于存储个人通讯录信息

表3-2 登录表

字段名 username Usrpwd 类型 nchar nchar 宽度 10 10 是否可为空 No N0 字段意义 用户名 密 码 备忘录信息表用于显示备忘录的基本情况,主键为备忘标题。表中各字段功能定义如表3-3所示。

表3-3 备忘录表

字段名 备忘标题 备忘内容 创建时间 提醒时间 备忘类别 类型 varchar varchar datetime datetime nchar 宽度 50 200 10 是否为空 No Yes Yes Yes Yes 字段意义 备忘录的简称 存储具体的内容 存储创建时间 存储提醒时间 备忘录的类别 个人理财表用于显示与个人理财的基本情况,主键为费用名称。表中各字段功能定义如表3-4所示。

表3-4 个人理财表

字段名 费用名称 费用 费用类型 时间 备注 类型 varchar int nchar datetime varchar 宽度 20 10 50 是否为空 No Yes Yes Yes Yes 字段意义 所花钱的简称 所花的费用 收入或支出 费用的使用时间 补充的信息 个人通讯录表用于显示与通讯录的基本情况,主键为姓名。表中各字段功能定义如表3-5所示。

表3-5 个人通讯录表 字段名 姓名 电话 住址 类型 类型 nchar nchar nchar nchar 宽度 10 20 50 10 是否为空 No Yes Yes Yes 字段意义 联系人姓名 联系电话 联系人家庭住址 家人、朋友或同事

第4章 系统实现

4.2系统登录

本系统的登录界面如图4-1所示:

图4-1 登陆界面的实现

(1)登陆的代码的实现:

private void btlogin_Click(object sender, EventArgs e)

{ string username = null; string password = null ; if (tbusername.Text == \)

{ MessageBox.Show(\你没有输入用户名!\,\错

误提示\); return; }

if (tbmima.Text == \)

{ MessageBox.Show(\你没有输入密码!\,\错误提示\); return; }

DataSet dst = new DataSet();

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\;

SqlConnection con = new SqlConnection(connstr); con.Open();

string str = \登录\;

SqlDataAdapter sda = new SqlDataAdapter(str, con);

SqlCommandBuilder scd = new SqlCommand Builder(sda);

sda.Fill(dst, \);

dataGridView1.DataSource = dst.Tables [\].DefaultView;

username = dataGridView1.Rows[0].Cells[0]. Value.ToString().Trim();

password = dataGridView1.Rows[0].Cells[1]. Value.ToString().Trim();

if (tbusername.Text.Equals(username) &&

tbmima.Text.Equals(password)) { Form2 f2 = new Form2(); f2.Visible = true; this.Visible = false; } else

{ MessageBox.Show(\你输入的用户名或密码错误\,\错误提示\); tbusername.Clear(); tbmima.Clear(); }

con.Close(); }

(2)取消按钮的代码实现:

private void btcancel_Click(object sender, EventArgs e)

{ if (MessageBox.Show(\你是否真的想退出系统?\, \提示\, MessageBoxButtons.YesNo) != DialogResult.No) { this.Close(); } }

(3)修改密码按钮的实现:

private void button1_Click(object sender, EventArgs e)

{ string username = null; string password = null; if (tbusername.Text == \)

{ MessageBox.Show(\你没有输入用户名!\, \错误提示\); return; }

if (tbmima.Text == \)

{ MessageBox.Show(\你没有输入密码!\, \错误提示\); return; }

DataSet dst = new DataSet();

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr);

con.Open();

string str = \登录\;

SqlDataAdapter sda = new SqlDataAdapter(str, con);

SqlCommandBuilder scd = new SqlCommand Builder(sda);

sda.Fill(dst, \);

dataGridView1.DataSource = dst.Tables [\].DefaultView;

username = dataGridView1.Rows[0].Cells[0]. Value.ToString().Trim();

password = dataGridView1.Rows[0].Cells[1]. Value.ToString().Trim();

if (tbusername.Text.Equals(username) && tbmima.Text.Equals(password))

{ if (MessageBox.Show(\你确定要修改密码吗?\, \提示\, MessageBoxButtons.YesNo) == DialogResult.Yes)

{ 修改密码 mima = new 修改密码(); mima.Visible = true;

} } else

{ MessageBox.Show(\你输入的用户名或密码错误\, \错误提示\);

tbusername.Clear(); tbmima.Clear(); }

con.Close(); }

实现密码的修改的界面如图4-2所示:

图4-2 修改密码界面的实现

(1)确定按钮的代码实现:

private void button1_Click(object sender, EventArgs e)

{ string username = null; string password = null; if (textBox1.Text == \)

{ MessageBox.Show(\你没有输入密码!\, \错误提示\); return; }

if (textBox2.Text == \)

{ MessageBox.Show(\你没有输入更改密码!\, \错误提示\); return; }

if (textBox3.Text == \)

{ MessageBox.Show(\你没有再次输入更改密码!\, \错误提示\); return; }

string b = textBox2.Text.ToString().Trim(); string a = textBox3.Text.ToString().Trim(); if (b.Equals(a)==false)

{ MessageBox.Show(\你两次输入的密码不一样!\,\错误

}

DataSet dst = new DataSet();

string connstr = \Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); con.Open();

string str = \登录\;

SqlDataAdapter sda = new SqlDataAdapter(str, con); SqlCommandBuilder scd = new SqlCommand Builder(sda);

sda.Fill(dst, \);

dataGridView1.DataSource = dst.Tables [\].DefaultView;

username = dataGridView1.Rows[0].Cells[0]. Value.ToString().Trim();

password = dataGridView1.Rows[0].Cells[1]. Value.ToString().Trim();

if (textBox1.Text.Equals(password)) 提示\); return;

{ String sql = \登录 set mima='\+textBox2.Text.Trim()+%username='\+username+\; Try

{ SqlCommand comm = new SqlCommand(sql, con); comm.ExecuteNonQuery(); }

catch(Exception es)

{MessageBox.Show(\修改密码失败!\,\提示\); return; } } else

{ MessageBox.Show(\你输入的密码错误\, \错误提示\); textBox1.Clear(); return; }

MessageBox.Show(\密码更改成功!\); textBox1.Clear(); textBox2.Clear(); textBox3.Clear(); con.Close(); }

(2)取消按钮的代码的实现:

private void button2_Click(object sender, EventArgs e) { this.Close(); }

4.2系统功能的实现

个人备忘录界面如下图4-3所示:

图4-3个人备忘录界面的实现

(1)实现备忘录的查询代码的实现: private void button6_Click(object sender, EventArgs e)

{ string str = null; if (textBox6.Text != \)

{ str = \备忘录 where 备忘标

题='\ + textBox6.Text + \; textBox6.Clear(); } else

if (comboBox1.Text != \) { string lei = comboBox1.Text;

if (lei.Equals(\日程表\) == false &&

lei.Equals(\纪念日\) == false && lei.Equals(\记事本\) == false && lei.Equals(\节日\) == false && lei.Equals(\备忘录\) == false)

{ MessageBox.Show(\你输入的类别不正确,请

重新输入!\, \错误提示\); return; } else

{ str = \备忘录 where 备忘类

别='\ + comboBox1.Text + \; comboBox1.Text = null; } else

if (textBox7.Text != \) { DateTime time=DateTime.Now; try

{ time = DateTime.Parse(textBox7.Text);} catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正

确\,\错误提示\); return; }

str = \备忘录 where YEAR(创建时间)=YEAR('\ + time + \创建时间)=MONTH('\ + time + \创建时间)=DAY('\ + time + \; textBox7.Clear(); }

else

{ MessageBox.Show(\你没有输入要查询的条件\, \错误提示\); return;

} DataSet ds = new DataSet();

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con=new SqlConnection (connstr);;

con.Open();

SqlDataAdapter sda = new SqlDataAdapter(str, con);

SqlCommandBuilder scd = new SqlCommandBuilder (sda);

sda.Fill(ds, \);

dataGridView1.DataSource = ds.Tables

[\].DefaultView; dataGridView1.Rows[0].Selected = true; try

{ textBox1.Text = dataGridView1.Rows[0]. Cells[0].Value.ToString().Trim(); textBox2.Text = dataGridView1.Rows[0]. Cells[1].Value.ToString().Trim(); textBox3.Text = dataGridView1.Rows[0]. Cells[2].Value.ToString().Trim(); textBox4.Text = dataGridView1.Rows[0]. Cells[3].Value.ToString().Trim(); textBox5.Text = dataGridView1.Rows[0]. Cells[4].Value.ToString().Trim(); DateTime shenqing = DateTime.Parse (textBox3.Text);

DateTime tiqing = DateTime.Parse (textBox4.Text);

if (DateTime.Compare(shenqing, tiqing) > 0) rbyes1.Checked = true; else

rbno1.Checked = true; }

catch (Exception ex) { MessageBox.Show(\没有 if(DateTime.Compare(shenqing, tiqing) > 0) rbyes1.Checked = true; else rbno1.Checked = true; } else

{ dataGridView1.Rows[i + 1].Selected = true; 你要查询的信息!\, \查询提示\); } con.Close(); } int row;

(2) 备忘录下一条的按钮代码的实现: private void button3_Click(object sender, EventArgs e)

{ row = dataGridView1.RowCount; for (int i = 0; i < row - 1; i++)

{ if (dataGridView1.Rows[i].Selected == true) { this.dataGridView1.Rows[i].Selected =

false;

if (i == row - 2)

{dataGridView1.Rows[0].Selected = true; textBox1.Text = dataGridView1.Rows[0]. Cells[0].Value.ToString().Trim(); textBox2.Text = dataGridView1.Rows[0]. Cells[1].Value.ToString().Trim(); textBox3.Text = dataGridView1.Rows[0]. Cells[2].Value.ToString().Trim(); textBox4.Text = dataGridView1.Rows[0]. Cells[3].Value.ToString().Trim(); textBox5.Text = datalls[4].Value. ToString().Trim();

DateTime shenqing = DateTime.Parse (textBox3.Text);

DateTime tiqing = DateTime.Parse (textBox4.Text);

textBox1.Text = dataGridView1.Rows[i + 1].Cells[0].Value.ToString().Trim(); textBox2.Text = dataGridView1.Rows[i + 1].Cells[1].Value.ToString().Trim(); textBox3.Text = dataGridView1.Rows[i + 1].Cells[2].Value.ToString().Trim(); textBox4.Text = dataGridView1.Rows[i + 1].Cells[3].Value.ToString().Trim(); textBox5.Text = dataGridView1.Rows[i +

1].Cells[4].Value.ToString().Trim(); DateTime shenqing = DateTime.Parse (textBox3.Text);

DateTime tiqing = DateTime.Parse (textBox4.Text);

if (DateTime.Compare(shenqing, tiqing) > 0) rbyes1.Checked = true; else

rbno1.Checked = true;

} break; }

(3)备忘录上一条按钮代码的实现: private void button2_Click(object sender, EventArgs e)

{ row = dataGridView1.RowCount; for (int i = 0; i < row - 1; i++)

{if (dataGridView1.Rows[i].Selected == true) { this.dataGridView1.Rows[i].Selected =

false; if (i == 0)

{ dataGridView1.Rows[row-2].Selected = true; DateTime shenqing = DateTime.Parse (textBox3.Text);

DateTime tiqing = DateTime.Parse textBox1.Text = dataGridView1.Rows[row -

2].Cells[0].Value.ToString().Trim(); textBox2.Text = dataGridView1.Rows[row -

2].Cells[1].Value.ToString().Trim(); textBox3.Text = dataGridView1.Rows[row -

2].Cells[2].Value.ToString().Trim(); textBox4.Text = dataGridView1.Rows[row -

2].Cells[3].Value.ToString().Trim(); textBox5.Text = dataGridView1.Rows[row -

2].Cells[4].Value.ToString().Trim(); DateTime shenqing = DateTime.Parse (textBox3.Text);

DateTime tiqing = DateTime.Parse (textBox4.Text);

if (DateTime.Compare(shenqing, tiqing) > 0) rbyes1.Checked = true; else

rbno1.Checked = true; } else

{dataGridView1.Rows[i -1].Selected = true; textBox1.Text = dataGridView1.Rows[i - 1].Cells[0].Value.ToString().Trim(); textBox2.Text = dataGridView1.Rows[i -1].Cells[1].Value.ToString().Trim(); textBox3.Text = dataGridView1.Rows[i - 1].Cells[2].Value.ToString().Trim(); textBox4.Text = dataGridView1.Rows[i - 1].Cells[3].Value.ToString().Trim(); textBox5.Text = dataGridView1.Rows[i - 1].Cells[4].Value.ToString().Trim();

(textBox4.Text);

if (DateTime.Compare(shenqing, tiqing) > 0) rbyes1.Checked = true; else

rbno1.Checked = true;

} break; }

(4)备忘录的增加按钮的代码的实现: priva te void button7_Click(object sender, EventArgs e) {string title=null; string neirong = null;

DateTime chuang = DateTime.Now; DateTime tixing = DateTime.Now; string lei = null; if (textBox8.Text == \)

{ MessageBox.Show(\你没有输入备忘录的标题\,\错误提示\); return;

} else

if (textBox9.Text == \)

{ MessageBox.Show(\你没有输入备忘录的内容\, \错误提示\); return; } else

if (textBox10.Text == \)

{ MessageBox.Show(\你没有输入备忘录的提示时 间\, \错误提示\);

return; } else

if (comboBox2.Text == \)

{ MessageBox.Show(\你没有选择备忘录的类别\, SqlCommandBuilder scd = new SqlCommandBuilder (sda);

DataSet ds = new DataSet(); sda.Fill(ds,\);

DataRow newdr = ds.Tables[\]. \错误提示\); return; }

title = textBox8.Text; neirong = textBox9.Text; try

{ tixing = DateTime.Parse(textBox10.Text);} catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正确\, \错误提示\); return; }

lei = comboBox2.Text;

if (lei.Equals(\日程表\) == false && lei.Equals(\纪念日\) == false && lei.Equals(\记事本\) == false && lei.Equals(\节日\) == false && lei.Equals(\备忘录\) == false) { MessageBox.Show(\你输入的类别不正确,请重新输入!\, \错误提示\); return; }

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); ; con.Open();

string str = \备忘录\; SqlDataAdapter sda = new SqlDataAdapter (str,con);

NewRow();

newdr[0] = title; newdr[1] = neirong; newdr[2] = chuang; newdr[3] = tixing; newdr[4] = lei;

ds.Tables[\].Rows.Add(newdr); try

{ sda.Update(ds.Tables[\]); } catch (Exception en)

{ MessageBox.Show(\备忘录已存在\);return;} MessageBox.Show(\增加用户成功!\,\提示\); textBox8.Clear(); textBox9.Clear(); textBox10.Clear(); comboBox2.Text = \; con.Close(); }

(5)备忘录的修改按钮代码的实现: private void button4_Click(object sender, EventArgs e)

{ 修改备忘录 xiu = new 修改备忘录(); xiu.Visible = true;

}

(6)实现时时提醒功能代码的实现: private void 时时提醒_Tick(object sender, EventArgs e) {

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection

(connstr); con.Open();

SqlCommand comm = new SqlCommand(); string str; string s; string time =

System.DateTime.Now.Year.ToString() + \ + System.DateTime.Now.Month.ToString() + \ + System.DateTime.Now.Day.ToString() + \ + System.DateTime.Now.ToLongTimeString(); str=\备忘录 where 提醒时间

='\+time+\;

comm.CommandText = str; comm.Connection = con;

SqlDataReader dr = comm.ExecuteReader(); if (dr.Read())

{ s = dr.GetValue(1).ToString().Trim(); MessageBox.Show(s,\温馨提示\); }

dr.Close(); con.Close() }

修改密码的界面的实现,如下图4-4所示:

图4-4修改密码界面的实现

(1)实现备忘录的删除按钮的代码的实现: private void button2_Click(object sender, EventArgs e)

{ string str = null;

if (textBox1.Text != \ && textBox2.Text == \ && comboBox2.Text == \)

{ str = \备忘录 where 备忘标题='\+textBox1.Text+\; textBox1.Clear(); } else

if (textBox1.Text == \ && textBox2.Text != \ && comboBox2.Text == \)

{ DateTime time = DateTime.Now; try

{time = DateTime.Parse(textBox2.Text);} catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正确\, \错误提示\); return; }

str = \from 备忘录 where 提醒时间='\ + textBox2.Text + \; textBox2.Clear(); } else

if (textBox1.Text == \ && textBox2.Text == \ else

&& comboBox2.Text!= \) { string lei = comboBox2.Text;

if (lei.Equals(\日程表\) == false &&

lei.Equals(\纪念日\) == false && lei.Equals(\记事本\) == false && lei.Equals(\节日\) == false && lei.Equals(\备忘录\) == false) { MessageBox.Show(\你输入的类别不正确,请重新输入!\, \错误提示\); return; } else

{ str = \from 备忘录 where 备忘类别='\+ comboBox2.Text + \; comboBox2.Text = null; } else

if (textBox1.Text != \ && textBox2.Text != \&& comboBox2.Text == \) { DateTime time = DateTime.Now; try

{time = DateTime.Parse(textBox2.Text);} catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正确\, \错误提示\); return; }

str = \from 备忘录 where 提醒时间='\ + textBox2.Text + \备忘标题='\ + textBox1.Text + \; textBox1.Clear(); textBox2.Clear(); }

if (textBox1.Text != \ && textBox2.Text == \ && comboBox2.Text != \) { string lei = comboBox2.Text;

if (lei.Equals(\日程表\) == false &&

lei.Equals(\纪念日\) == false && lei.Equals(\记事本\) == false && lei.Equals(\节日\) == false && lei.Equals(\备忘录\) == false)

{ MessageBox.Show(\你输入的类别不正确,请重 新输入!\, \错误提示\);return; } else

{ str = \from 备忘录 where 备忘类别='\ + comboBox2.Text + \备忘标题='\ + textBox1.Text + \; comboBox2.Text = null; textBox1.Clear(); } else

if (textBox1.Text == \ && textBox2.Text != \ && comboBox2.Text != \) { string lei = comboBox2.Text;

if (lei.Equals(\日程表\) == false && lei.Equals(\纪念日\) == false && lei.Equals(\记事本\) == false &&

lei.Equals(\节日\) == false && lei.Equals(\备忘录\) == false)

{MessageBox.Show(\你输入的类别不正确,请重新输入!\, \错误提示\); return; } else

{ DateTime time = DateTime.Now;

try

str = \from 备忘录 where 备忘类别='\ +

{time = DateTime.Parse(textBox2.Text);} comboBox2.Text + \提醒时间='\ + catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正\,

\错误提示\); return; textBox2.Text + \备忘标题='\ +

textBox1.Text + \;

comboBox2.Text = null; }

str = \from 备忘录 where 备忘类别='\ + comboBox2.Text + \提醒时间='\ + textBox2.Text + \;

comboBox2.Text = null; textBox2.Clear(); } else

if (textBox1.Text != \ && textBox2.Text != \ && comboBox2.Text != \) { string lei = comboBox2.Text;

if (lei.Equals(\日程表\) == false && lei.Equals(\纪念日\) == false && lei.Equals(\记事本\) == false &&

lei.Equals(\节日\) == false && lei.Equals(\备忘录\) == false)

{ MessageBox.Show(\你输入的类别不正确,请重新输入!\, \错误提示\);

return; } else

{ DateTime time = DateTime.Now; try

{ time = DateTime.Parse(textBox2.Text); } catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正确\,

\错误提示\); return;

}

textBox2.Clear(); textBox1.Clear(); } else

{ MessageBox.Show(\你没有输入要删除的条件\,\错误提示\); return;

}

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); con.Open(); try

{ SqlCommand comm = new SqlCommand(str, con); comm.ExecuteNonQuery(); }

catch (Exception ex) { MessageBox.Show(\没有找到你要删除的信息\, \错误提示\); return; } MessageBox.Show(\信息删除成功!\,\提示\); con.Close(); } (2)备忘录的修改按钮的代码实现: private void button1_Click(object sender,

EventArgs e) { string str = null;

string title=textBox3.Text;

if (textBox3.Text == \) { MessageBox.Show(\你没有输入要修改的标题

\,\错误提示\); return;

} else

if (textBox4.Text != \ && textBox5.Text == \ } 重新输入!\, \错误提示\); return;

&& comboBox1.Text == \)

{ str = \备忘录 set 备忘内容='\+textBox4.Text+\备忘标题='\+title+\; textBox4.Clear(); } else

if (textBox4.Text == \ && textBox5.Text != \&& comboBox1.Text == \) { DateTime time = DateTime.Now; try

{ time = DateTime.Parse(textBox5.Text);} catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正确\, \错误提示\); return; }

str = \备忘录 set 提醒时间='\ + textBox5.Text + \where 备忘标题='\ + title textBox5.Clear(); } else

if (textBox4.Text == \ && textBox5.Text == \&& comboBox1.Text != \) { string lei = comboBox1.Text;

if (lei.Equals(\日程表\) == false &&

lei.Equals(\纪念日\) == false && lei.Equals(\记事本\) == false && lei.Equals(\节日\) == false && lei.Equals(\备忘录\) == false) MessageBox.Show(\你输入的类别不正确,请

else

{ str = \备忘录 set 备忘类别='\ + comboBox1.Text + \备忘标题='\ + title + \;

comboBox1.Text = null; } else

if (textBox4.Text != \\ { DateTime time = DateTime.Now; try

{ time = DateTime.Parse(textBox5.Text);} catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正确\错误提示\ return; }

str = \备忘录 set 备忘内容='\textBox4.Text + \提醒时间='\

textBox5.Text + \备忘标题='\+ title ;

textBox4.Clear(); textBox5.Clear(); } else

if (textBox4.Text != \

\ { string lei = comboBox1.Text; if (lei.Equals(\日程表\

lei.Equals(\纪念日\lei.Equals(\记事本\lei.Equals(\节日\

lei.Equals(\备忘录\ { MessageBox.Show(\你输入的类别不正确,

comboBox1.Text + \备忘标题='\ +

title + \;

请重新输入!\错误提示\comboBox1.Text = null; textBox5.Clear();

} else

{ str = \备忘录 set 备忘内容='\textBox4.Text + \备忘类别='\

comboBox1.Text + \备忘标题='\title + \

comboBox1.Text = null; textBox4.Clear(); } else

if (textBox4.Text == \\{ string lei = comboBox1.Text; if (lei.Equals(\日程表\lei.Equals(\纪念日\lei.Equals(\记事本\lei.Equals(\节日\lei.Equals(\备忘录\

{ MessageBox.Show(\你输入的类别不正确,请

重新输入!\错误提示\ } else

{ DateTime time = DateTime.Now; try

{ time = DateTime.Parse(textBox5.Text);} catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正确\, \错误提示\); return;

} str = \备忘录 set 提醒时间='\ + textBox5.Text + \备忘类别='\ +

} else

if (textBox4.Text != \ && textBox5.Text != \ && comboBox1.Text != \)

{ string lei = comboBox1.Text; if (lei.Equals(\日程表\) == false

&&lei.Equals(\纪念日\) == false && lei.Equals(\记事本\) == false &&

lei.Equals(\节日\) == false && lei.Equals(\备忘录\) == false)

{ MessageBox.Show(\你输入的类别不正确,请重

新输入!\, \错误提示\); return; } else { DateTime time = DateTime.Now; try

{ time = DateTime.Parse(textBox5.Text);} catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正确\,

\错误提示\); return; }

str = \备忘录 set 备忘内容='\ +

textBox4.Text + \提醒时间='\ +

textBox5.Text + \备忘类别='\ +

comboBox1.Text + \备忘标题='\ + title + \; comboBox1.Text = null; textBox4.Clear(); textBox5.Clear(); }

string connstr = \Source=(local);Initial

Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection(connstr); con.Open(); try

{ SqlCommand comm = new SqlCommand(str, con); comm.ExecuteNonQuery();

}

catch (Exception ex)

{ MessageBox.Show(\没有找到你要修改的信息\, \错误提示\); return; }

MessageBox.Show(\信息修改成功!\, \提示\); con.Close(); }

个人理财界面的实现如下图4-5所示:

图4-5 个人理财界面的实现

(1)显示全部费用按钮的代码的实现: private void button15_Click(object sender, EventArgs e)

{ DataSet dst = new DataSet();

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); con.Open();

string str = \个人理财\; SqlDataAdapter sda = new SqlDataAdapter(str,

con);

SqlCommandBuilder scd = new SqlCommand Builder(sda); sda.Fill(dst, \); dataGridView2.DataSource = dst.Tables [\].DefaultView; con.Close(); }

(2)实现查询费用下一条按钮的实现代码: private void button9_Click(object sender, EventArgs e)

{row = dataGridView2.RowCount;

for (int i = 0; i < row - 1; i++)

{ if (dataGridView2.Rows[i].Selected == true) { dataGridView2.Rows[i].Selected = false; if (i == row - 2)

{ dataGridView2.Rows[0].Selected = true;} else

dataGridView2.Rows[i + 1].Selected = true; else

if (textBox12.Text == \)

{ MessageBox.Show(\你没有输入费用\,\错误提示\); return; } else

if (textBox14.Text == \)

}

(3)实现费用查询的上一条按钮代码的实现: private void button8_Click(object sender, EventArgs e)

{ row = this.dataGridView2.RowCount; for (int i = 0; i < row - 1; i++)

{if (dataGridView2.Rows[i].Selected == true) {dataGridView2.Rows[i].Selected = false; if (i == 0)

dataGridView2.Rows[row - 2].Selected = true; else

dataGridView2.Rows[i - 1].Selected = true;break; }

(4)费用的删除按钮的代码实现:

private void button10_Click(object sender, EventArgs e)

{ 查询个人理财 chaxun = new 查询个人理财(); chaxun.Visible = true; }

(5)添加个人费用按钮代码的实现:

private void button13_Click(object sender, EventArgs e)

{ if (textBox11.Text == \)

{ MessageBox.Show(\你没有输入费用名称!\,\

错误提示\); return; }

{ MessageBox.Show(\你没有输入备忘录的提示时 间\, \错误提示\); return; }

DateTime time = DateTime.Now; Try

{ time = DateTime.Parse(textBox14.Text);} catch (Exception s)

{ MessageBox.Show(\你输入的日期格式不正确\, \错误提示\); return; }

DataSet dst = new DataSet();

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); ; con.Open();

string name = null; int danjia = 0; string beizhu = null;

DateTime date = DateTime.Now;

string leixing = \支出\;name = textBox11.Text; try

{ danjia = int.Parse(textBox12.Text.Trim());}catch(Exception d){MessageBox.Show(\你输入的单价信息错误!\,\提示\);} beizhu = textBox13.Text.Trim();

date = Convert.ToDateTime(textBox14.Text. Trim());

if (rbshouru.Checked == true) leixing = \收入\;

if(MessageBox.Show(\你确定要添加此信息吗\,\提示\,MessageBoxButtons.YesNo)== DialogResult.Yes) { try

{ string insert = \个人理财 values('\ + name + \ + danjia + \ + leixing + \ + date.ToShortDateString() + \ + beizhu + \;

SqlCommand comm = new SqlCommand(insert, con); comm.ExecuteNonQuery(); }

catch (Exception ex)

{ MessageBox.Show(ex.Message + \添加用户失败\, \错误提示\); return; } }

MessageBox.Show(\添加信息成功\,\提示\);

}

button15_Click(sender, e); con.Close(); }

(6)修改个人理财信息按钮代码的实现: private void button11_Click(object sender, EventArgs e)

{修改个人理财信息 licai = new 修改个人理财信息(); licai.Visible=true; }

(7)退出此界面按钮代码的实现:

private void button14_Click(object sender, EventArgs e) { this.Close(); } (8)总计的实现按钮代码的实现:

private void button12_Click(object sender, EventArgs e)

{ 理财总计 zongji = new 理财总计(); zongji.Visible = true;

查询个人理财界面的实现,如图4-6所示:

图4-6查询个人理财界面的实现

(1)查询个人理财信息按钮代码的实现: private void button1_Click(object sender, EventArgs e) { string str = null; if (textBox1.Text != \)

{ str = \个人理财 where 费用名

称='\ + textBox1.Text + \; textBox1.Clear(); } else

if (textBox2.Text != \ && textBox3.Text != \) { int a = int.Parse(textBox2.Text.Trim()); int b = int.Parse(textBox3.Text.Trim()); if (a < b)

str = \个人理财 where 费用 between \+a+\+b+\; else

str = \个人理财 where 费用 between \ + b+ \ + a + \; textBox2.Clear(); textBox3.Clear(); } else

if (rbshou.Checked == true || rbzhi.Checked== true)

{string lei = null;

DataSet dst = new DataSet();

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); ; con.Open();

SqlDataAdapter sda = new SqlDataAdapter(str, con);

sda.Fill(dst, \);

if (rbshou.Checked == true) lei = \收入\; else lei = \支出\;

str = \个人理财 where 费用类型='\ +lei+ \; } else

if (textBox4.Text != \) { DateTime time = DateTime.Now; try

time = DateTime.Parse(textBox4.Text);} catch (Exception s

MessageBox.Show(\你输入的日期格式不正确\, \错误提示\); return; }

str = \备忘录 where YEAR(时间)=YEAR('\ + time + \时

间)=MONTH('\ + time + \时间)=DAY('\ + time + \; textBox4.Clear(); } else

{ MessageBox.Show(\你没有输入要查询的条件\, \错误提示\); return; }

dataGridView1.DataSource =dst.Tables[\]. DefaultView; con.Close(); }

(2)退出此界面按钮代码的实现:

private void button2_Click(object sender, EventArgs e) { this.Close(); }

修改个人理财信息界面的实现,如下图4-7所示:

图4-7修改个人理财信息界面的实现

(1)修改个人理财按钮的实现代码: private void button1_Click(object sender, EventArgs e)

{string str = null; string leibie = null; String fname = textBox1.Text.Trim(); if (rbnshouru.Checked == true) leibie = \收入\; else

if (rbnzhichu.Checked== true) leibie = \支出\; if (textBox1.Text == \)

{ MessageBox.Show(\你没有输入要修改的标题\, \错误提示\); return; } else

if (textBox2.Text != \ && leibie == null && textBox3.Text == \ && textBox4.Text == \) {int feiyong = 0;

feiyong = int.Parse(textBox2.Text.Trim()); str = \个人理财 set 费用=\ + feiyong + \费用名称='\ + fname + \; textBox2.Clear(); } else

if (textBox2.Text == \ && leibie != null && textBox3.Text == \ && textBox4.Text == \) {str = \个人理财 set 费用类型='\ + leibie+ \费用名称='\ + fname + \; rbnshouru.Checked = false; rbnzhichu.Checked = false; } else

if (textBox2.Text == \ && leibie == null && textBox3.Text != \ && textBox4.Text == \) { DateTime time=DateTime.Parse (textBox3.Text.Trim());

str = \个人理财 set 时间=\ + time+ \

}

where 费用名称='\ + fname + \; (2)删除个人理财按钮代码的实现: textBox3.Clear(); } else

if (textBox2.Text == \ && leibie == null && textBox3.Text == \ && textBox4.Text != \) private void button4_Click(object sender, EventArgs e)

{ string str=null; int a = 0; int b = 0; string lei = null;

if (rbnshou.Checked == true) lei = \收入\; { str = \个人理财 set 备注='\ +

textBox4.Text.Trim() + \费用名

称='\ + fname + \; textBox4.Clear(); } else

{ MessageBox.Show(\你没有输入要修改的内容

\,\错误提示\); return; }

string connstr = \Source=(local);Initial Catalog=Message;Integrated

Security=True\;SqlConnection con = new SqlConnection(connstr); con.Open();

if(MessageBox.Show(\你确定要修改此信息吗?\,\提示\,MessageBoxButtons.YesNo)== DialogResult.Yes) { try

{ SqlCommand comm = new SqlCommand(str, con); comm.ExecuteNonQuery(); }

catch (Exception ex)

{ MessageBox.Show(\没有找到你要修改的信息\, \错误提示\); return; }

MessageBox.Show(\信息修改成功!\, \提示\); }

con.Close();

else

if (rbnzhi.Checked == true) lei = \支出\;

DateTime time = DateTime.Now; if (textBox5.Text != \&&textBox6.Text== \&&textBox8.Text==\&&lei==null)

{ str = \个人理财 where 费用名称='\ + textBox5.Text.Trim() + \; textBox5.Clear();

} Else

if (textBox5.Text == \ && lei==null&& textBox6.Text != \ && textBox7.Text != \ && textBox8.Text == \)

{ a = int.Parse(textBox6.Text.Trim()); b = int.Parse(textBox7.Text.Trim()); if(a

str = \from 个人理财 where用 between \+a+\+b+\; else

str = \个人理财 where 费用 between \+b+\+a+\;

textBox6.Clear(); textBox7.Clear(); } else

if (textBox5.Text == \ && textBox6.Text == \ && textBox8.Text == \ && lei != null) { str = \个人理财 where 费用类型

='\+lei+\;

rbnzhi.Checked = false; } else

if (textBox5.Text == \ && textBox6.Text == \ && textBox8.Text != \ && lei == null) {time = DateTime.Parse(textBox8 .Text.Trim());

str = \个人理财 where 时间=\ + textBox8.Text + \; textBox8.Clear(); } else

{ MessageBox.Show(\你没有输入要删除的条件!\,\错误提示\); return; }

DataSet dst = new DataSet();

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\;

}

catch (Exception ea)

{ MessageBox.Show(ea.Message); return; } }

MessageBox.Show(\删除成功\,\提示\); con.Close(); }

SqlConnection con = new SqlConnection (connstr); ; con.Open();

if(MessageBox.Show(\你确定要删除此信息吗?\,\提示\,MessageBoxButtons.YesNo)== DialogResult.Yes) { try

{ SqlCommand comm = new SqlCommand(str, con); comm.ExecuteNonQuery(); rbnshou.Checked =false

理财总计界面的实现如下图4-8所示:

图4-8 理财总计界面的实现

(1)退出此界面

private void button4_Click(object sender, EventArgs e) { this.Close(); }

(2)收入总计按钮代码的实现:

private void button1_Click(object sender, EventArgs e)

{ if (tbtime1.Text == \ || tbtime2.Text == \) { MessageBox.Show(\你没有输入要查询的日期范 围!\,\错误提示\); return;

}

DateTime time1 = DateTime.Parse(tbtime1. Text.Trim());

DateTime time2 = DateTime.Parse(tbtime2. Text.Trim());

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); con.Open();

string str = \费用) from 个人理财 where 费用类型='收入'and 时间 between '\ + time1 + \ + time2 + \;

SqlDataAdapter sdat = new SqlDataAdapter (str,con);

SqlCommandBuilder scd = new SqlCommandBuilder (sdat);

DataSet ds = new DataSet(); sdat.Fill(ds,\);

textBox1.Text = ds.Tables[\].Rows[0] [0].ToString().Trim();

SqlConnection con = new SqlConnection (connstr); con.Open();

string str = \费用) from 个人理财 where 费用类型='支出'and 时间 between '\ + time1 + \ + time2 + \;

SqlDataAdapter sdat = new SqlDataAdapter(str, con);

SqlCommandBuilder scd = new SqlCommandBuilder (sdat);

DataSet ds = new DataSet();

sdat.Fill(ds, \);

textBox2.Text = ds.Tables[\].Rows

if (textBox1.Text == \)

{ MessageBox.Show(\没有你要统计的信息\,\提示 return;

}

textBox2.Clear(); textBox3.Clear(); con.Close(); }

(3)支出总计按钮代码的实现:

private void button2_Click(object sender, EventArgs e)

{ if (tbtime1.Text == \ || tbtime2.Text == \) { MessageBox.Show(\你没有输入要查询的日期范围!\, \错误提示\); return; }

DateTime time1 = DateTime.Parse(tbtime1. Text.Trim());

DateTime time2 = DateTime.Parse(tbtime2. Text.Trim());

string connstr = \Initial Catalog=Message;Integrated Security=True\;

[0][0].ToString().Trim(); if (textBox2.Text == \)

{ MessageBox.Show(\没有你要统计的信息\, \提示\); return; }

textBox1.Clear(); textBox3.Clear(); con.Close(); }

(4)总计按钮代码的实现:

private void button3_Click(object sender, EventArgs e)

{ if (tbtime1.Text == \ || tbtime2.Text == \) { MessageBox.Show(\你没有输入要查询的日期范

围!\, \错误提示\); return; }

DateTime time1 = DateTime.Parse(tbtime1. Text.Trim());

DateTime time2 = DateTime.Parse(tbtime2. Text.Trim());

string connstr = \Source=(local);Initial (connstr); con.Open();

string str1 = \费用) from 个人理 财 where 费用类型='收入'and 时间 between '\ + time1 + \ + time2 + \; string str2 = \费用) from 个人 财 where 费用类型='支出'and 时间 between '\ Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (str1, con);

SqlDataAdapter sdat2 = new SqlDataAdapter (str2, con);

SqlCommandBuilder scd1 = new SqlCommand Builder(sdat1);

SqlCommandBuilder scd2 = new SqlCommand Builder(sdat2);

DataSet ds1 = new DataSet(); DataSet ds2 = new DataSet(); sdat1.Fill(ds1, \); sdat2.Fill(ds2, \); int shouru = 0; int zhichu = 0; if (textBox1.Text != \) shouru = int.Parse(ds1.Tables[\].

+ time1 + \ + time2 + \; SqlDataAdapter sdat1 = new SqlDataAdapter Rows[0][0].ToString().Trim()); if(textBox2.Text!=\)

zhichu = int.Parse(ds2.Tables[\]. Rows[0][0].ToString().Trim()); int zongji = shouru - zhichu; textBox3.Text = zongji.ToString(); if (textBox3.Text == \)

{ MessageBox.Show(\没有你要统计的信息\, \提示\); return;

}

textBox1.Clear(); textBox2.Clear(); con.Close(); }

个人通讯录界面的实现如图4-9所示:

图4-9 个人通讯录界面的实现

(1)显示全部个人通讯录按钮代码的实现: private void button16_Click(object sender, EventArgs e)

{ DataSet dst = new DataSet();

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); con.Open();

string str = \个人通讯录\; SqlDataAdapter sda = new SqlDataAdapter(str, con);

SqlCommandBuilder scd = new SqlCommand Builder(sda);

sda.Fill(dst, \);

dataGridView3.DataSource = dst.Tables [\].DefaultView;

con.Close(); }

(2)实现个人通讯录的上一条按钮代码的实现: private void button17_Click(object sender, EventArgs e)

{ row = dataGridView3.RowCount; for (int i = 0; i < row - 1; i++)

{if (dataGridView3.Rows[i].Selected == true) { dataGridView3.Rows[i].Selected = false; if (i == 0)

dataGridView3.Rows[row - 2].Selected = true; else

dataGridView3.Rows[i - 1].Selected = true; break; }

(3)实现个人通讯录下一条按钮代码的实现: private void button18_Click(object sender,

EventArgs e)

{ row = dataGridView3.RowCount; for (int i = 0; i < row - 1; i++)

{if (dataGridView3.Rows[i].Selected == true) {dataGridView3.Rows[i].Selected = false; if (i == row - 2)

{ dataGridView3.Rows[0].Selected = true;} else

dataGridView3.Rows[i + 1].Selected = true; break; }

(4)添加个人通讯录按钮代码的实现: private void button22_Click(object sender, EventArgs e)

{ if (textBox15.Text == \)

{ MessageBox.Show(\你没有输入要添加的通讯录的名字\,\错误提示\); return; }

if (textBox16.Text == \)

{ MessageBox.Show(\你没有输入要添加的通讯录 的电话\, \错误提示\); return; }

if (textBox17.Text == \)

{ MessageBox.Show(\你没有输入要添加的通讯录的住址\, \错误提示\); return; }

if (rbjia.Checked == false && rbpeng.Checked == false && rbtong.Checked == false) { MessageBox.Show(\你没有选择要添加的通讯录的类型\, \错误提示\); return; }

string leixing=null;

if (rbjia.Checked == true) leixing = \家人\; else

if (rbpeng.Checked == true)leixing = \朋友\; else

if (rbtong.Checked == true)leixing = \同事\; string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); con.Open();

if(MessageBox.Show(\你确定要添加此信息吗?\,\提示\,MessageBoxButtons.YesNo)==、DialogResult.Yes) { try

{ string sql = \个人通讯录values('\+textBox15.Text+\+textBox16.Text+\+textBox17.Text+\+leixing+\”; SqlCommand comm = new SqlCommand(sql,con); comm.ExecuteNonQuery(); } catch(Exception ea)

{ MessageBox.Show(\添加用户失败\,\错误提示\); return;

}

MessageBox.Show(\添加通讯录成功!\,\提示\); textBox15.Clear(); textBox16.Clear(); textBox17.Clear(); rbjia.Checked = false; rbpeng.Checked = false; rbtong.Checked = false; button16_Click(sender, e); con.Close(); }

(5)查询个人通讯录按钮代码的实现: private void button20_Click(object sender, EventArgs e)

{询个人通讯录 chaxun = new 查询个人通讯录(); chaxun.Visible = true;}

查询个人通讯录界面的实现,如下图4-10所示:

图4-10 查询个人通讯录界面的实现

(1)查询个人通讯录按钮代码的实现: private void button2_Click(object sender, EventArgs e)

{string str = null; string lei = null; if (rbjia.Checked == true) lei = \家人\; if (rbpeng.Checked == true) lei = \朋友\; if (rbtong.Checked == true) lei = \同事\; if (textBox1.Text != \ && textBox2.Text == \ && lei == null)

{ str = \个人通讯录 where 姓名='\+textBox1.Text.Trim()+\; } else

if (textBox1.Text == \ && textBox2.Text != \ && lei == null)

{ str = \个人通讯录 where 住址='\ + textBox2.Text.Trim() + \; textBox2.Clear();

} else

if (textBox1.Text== \ && textBox2.Text == \ && lei != null)

{str = \个人通讯录 where 类型 ='\ + lei+ \;

rbjia.Checked = false;rbpeng.Checked = false; rbtong.Checked = false; }

DataSet dst = new DataSet();

SqlDataAdapter sda = new SqlDataAdapter(str, con);

SqlCommandBuilder scd = new SqlCommand Builder(sda);

sda.Fill(dst, \);

dataGridView1.DataSource = dst.Tables [\].DefaultView; con.Close();

}

(2)退回此界面按钮代码的实现:

private void button1_Click(object sender, EventArgs e) { this.Close(); } (3)删除通讯录按钮代码的实现:

private void button4_Cl ick(object sender, EventArgs e)

{string name = dataGridView1.SelectedCells[0] .Value.ToString();

string phone = dataGridView1.SelectedCells [1].Value.ToString();

string zhuzhi = dataGridView1.SelectedCells [2].Value.ToString();

string leixing = dataGridView1.SelectedCells [3].Value.ToString();

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); con.Open();

string str = \from 个人通讯录 where 姓名='\+name+\电话='\+phone+\住址='\+zhuzhi+\类型='\+leixing+\; if(MessageBox.Show(\你确定要删除此信息吗?\,\提示\,MessageBoxButtons.YesNo)==、DialogResult.Yes)

{SqlCommand comm = new SqlCommand(str,con); comm.ExecuteNonQuery(); }

MessageBox.Show(\删除通讯录成功\,\提示\); foreach (DataGridViewRow r in dataGridView1. SelectedRows) { if (!r.IsNewRow)

{dataGridView1.Rows.Remove(r);} } con.Close();

}

(4)修改个人通讯录按钮的代码实现: private void button3_Click(object sender, EventArgs e)

{string name = dataGridView1.SelectedCells、[0].Value.ToString();

string phone = dataGridView1.SelectedCells [1].Value.ToString();

string zhuzhi = dataGridView1.SelectedCells [2].Value.ToString();

string leixing = dataGridView1.SelectedCells [3].Value.ToString();

string connstr = \Source=(local);Initial Catalog=Message;Integrated Security=True\; SqlConnection con = new SqlConnection (connstr); con.Open(); SqlDataAdapter sda1, sda2;

string str1 = \个人通讯录\; string str2 = \个人通讯录 set 姓名='\ + name + \电话='\ + phone + \住址='\ + zhuzhi + \类型='\ + leixing + \姓名='\ +name+ \;

sda1 = new SqlDataAdapter(str1, con); sda2 = new SqlDataAdapter(str2, con); SqlCommandBuilder scd1 = newSqlCommandBuilder (sda1);

SqlCommandBuilder scd2 = newSqlCommandBuilder (sda2);

DataSet ds1 = new DataSet(); sda1.Fill(ds1, \); DataSet ds2 = new DataSet(); sda2.Fill(ds2, \);

if (MessageBox.Show(\你确定要修改此信息吗\, \提示\, MessageBoxButtons.YesNo) ==

DialogResult.Yes)

{sda2.Update(ds1.Tables[\]);} else return;

MessageBox.Show(\删除成功!\,\提示\); con.Close(); }

个人风采界面的实现如下图4-11所示:

图4-11 个人风采界面实现

(1)显示个人风采按钮代码的实现:

private void button24_Click(object sender, EventArgs e)

{ timer2.Enabled = true; } (2)实现照片的更换代码实现:

private void timer2_Tick(object sender, EventArgs e)

{ count = fengcai.Images.Count;

pbzhaopian.Image = fengcai.Images[i]; i++;

if (i == count) i = 0; }

(3)实现文件的上传按钮代码的实现: private void button25_Click(object sender,

EventArgs e)

{count=fengcai.Images.Count;

OpenFileDialog of = new OpenFileDialog(); of.Filter = \;

if (DialogResult.OK == of.ShowDialog()) { string name = of.FileName; try

{ pbzhaopian.Image = Image.FromFile(@name); fengcai.Images.Add(Image.FromFile(@name)); }

catch (Exception ed)

{ MessageBox.Show(ed.Message); return; } MessageBox.Show(\照片添加成功\); }

第5章 系统使用说明

1.系统名称:个人信息管理系统 2.系统拥有的界面如下所示: (1) 登录系统 (2) 个人备忘录 (3) 个人理财 (4) 个人通讯录 (5) 个人风采 (6) 修改密码 (7) 修改备忘录 (8) 查询个人理财 (9) 修改个人理财 (10)理财总计模块 (11)查询个人通讯录 3.界面实现说明:

(1)登陆界面的实现:用户在使用此系统时必须输入正确的用户名和密码,如果输入出现错误就会有提示。同时也可以在对用户名和密码输入正确的前提下对密码进行修改。 (2)个人备忘录界面的实现:它包括对备忘录的添加,在添加时创建时间不用输入,系统会提取当前时间把它存入数据库。提醒时间格式必须正确,如输入错误,就会有提示。同时本系统可以按查询条件对备忘录的查询。除此之外,还可以实现对备忘录的修改,它包括对备忘录进行修改和删除。

(3) 个人理财界面的实现:基本功能同个人备忘录界面界面的实现,同时他可以实现碎总计,转到理财总计界面。

(4) 个人通讯录界面的实现:功能同个人备忘录。

(5) 个人风采界面的实现:可以实现照片的显示,照片的更换时间为1.5秒。同时他可以实现对照片的上传。

(6) 修改密码界面的实现:在原密码输入正确的前提下,输入要更改的密码两次,若两次输入的密码相同,则对密码进行修改。

(10) 修改备忘录界面的实现:可以按照备忘录的标题实现对备忘录的多项目的修改。除

此之外还可以实现按照输入的多个条件对备忘录的进行删除

(11) 查询个人理财界面的实现:按所输入的条件对个人理财信息的查询。 (12) 修改个人理财界面的实现:同修改备忘录界面的实现。

(10)理财总计模块模块的实现:可以按照输入的时间范围对理财进行统计,包括收入总计、支出总计和合计。

(11)查询个人通讯录界面的实现:可以按照输入的条件实现对通讯录的查询。同时也可以在查询出来的表上进行修改和删除。

36

第6章 课程设计总结

6.1 主要问题及解决办法

在上机测试之前我们对所编的程序作了纸面上的检查,先消灭一些低级错误,所谓的低级错误是指由于人为的输入不仔细等造成的,如{ }没有搭配完整,漏写 ,拼写错误等,这些都是我们通过认真的态度在运行之前可以解决、避免的。而且还可以减少机器时间。往往一连串的错误是由于漏写或写错一个字符引起的。

经过仔细检查之后进行上机调试。进行编译,如果在编译和连接过程中发现错误,屏幕上显示了出错信息,根据提示找到出错的位置,加以改正,再进行编译??如此反复,直到顺利通过编译和连接为止。在本次实习过程中碰到的编译、连接的错误主要有: 1、 缺少变量定义,定义位置不正确;

由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到。不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。为减少这样的错误我们后来还是用不同的变量名来表示,结果引起的那些错误解决了。 2、 语法错误;

大多的语法错误在通过书本参考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用是有一定的范围限定;过分重视分号的重要性而在for、if、while语句中画蛇添足加分号;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造成不匹配;还有漏掉形参的定义是值不能传递等等。这些语法错误有信息框的提示一般是能够排除的。

3、 在本次调试过程中我们还碰到了一些以前上机过程中从未碰到过的错误。

用“\\\\”才能最后输出一个引号; 还有是在注释的时候不能同我们平常做笔记一样随心所欲,爱写哪就写哪,这造成我们最后本来已经编译成功的程序一下子又多了很多错误。注释的时候,注释文字应写在一起中间不能有中断包含了c#语言的语句,不然又引起错误格式不正确或是多了字符等。这又让我们学到了一点知识。

编译、连接的成功并不意味着程序的最终成功。逻辑上的错误机器不易检查出来,这时需要对数据结果进行分析。这种错误的查找是最难的,需要编程序的人有相当的耐心和

37

细心去把问题找出来。这也是本次程序编辑过程中碰到的最大的难题。往往运行之后得不到另人满意的结果,此时解决的方法一则用“分段检查”的方法,在程序的不同位置设几个writeline语句,输出有关变量的值,逐段往下检查,对检查出的错误进行修改,当调试完毕将设置的writeline都删去。若在程序中找不到问题,则再来考虑算法是否逻辑严谨,再进行修改。如此循环往复,直到最后程序运行成功。在本次程序编辑过程中,我们就是常遇到编译能通过,能够运行程序,但是总在输入、删除等操作完之后再想去看数据文件中存在的数据记录的时候,却一条记录也显示不出来,我怀疑是哪个对方对n变量的定义或使用出错了,于是在每个主要函数的操作过程中添加了writeline语句用来显示n的变化,例如在执行某个函数前添加插入语句显示n的起始值,在执行完该个函数后再添加插入语句显示此时n的结果值,观察n的变化是否正确,如果错误了,也就说明该函数编写过程有错。诸如这样的调试方法,不断缩小检查范围,最后将错误找到,进行修改。所以到最后我们找到了错误,及时改正,终于把程序完成了,一切功能显示正常。 6.2 课程设计体会

编程看起来似乎是一件很枯燥、乏味的事情,但是经历了这次大程序的编辑之后,发现其实里面还是充满乐趣的,一旦真的钻研下去什么事情都可以放下,来认真研究。本来大家都认为花两周的时间来编一个大作业未免太浪费时间了,但是事实证明两周的时间只有真正利用起来才能做出优秀的作业。

虽然本程序运用的函数不多,再编写过程中也出现这样那样的错误,但是最终我们还是说服了自己坚持了下来,看到自己最后的作业,虽然不是很优秀,但是还是很自豪。

总之,编程尤其是调试是一项细致深入的工作,需要下工夫、动脑子、善于积累经验,这往往能反映出一个人的水平、经验和科学态度。

在编写程序的过程中,我们得到了老师的精心指导以及孜孜不倦的教诲,在老师的指导下,我们的能力得到了提高,同时养成了科学、严谨的作风和习惯,在此,我们对老师的精心栽培表示衷心的感谢!` 6.3 自我评定

课程设计完成之际,我由衷地感谢指导老师的大力帮助和支持,感谢我的同学与朋友,在我遇到各种各样复杂问题的时候,给与我鼓励和帮助,使我的分析问题和解决问题能力有了很大的提高。

本文来源:https://www.bwwdw.com/article/9x7g.html

Top