版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C#程序设计》大作业
题目:设备管理系统________________
专业:计算机科学与技术S___________
学号:_________________
姓名:_________________
完成日期:2012/11/6
目录
1前言......................................................2
2需求分析..................................................2
2.1要求..................................................2
2.2任务..................................................2
2.3运行环境..............................................2
2.4开发工具.............................................2
3概要设计与详细设计........................................3
3.1系统流程图............................................3
3.2数据库设计...........................................4
3.2.1建立数据字典.......................................4
3.2.2数据库详细设计.....................................4
4编码与实现................................................5
4.1分析..................................................5
4.2具体代码实现..........................................7
4.3界面实现.............................................16
5课程设计总结.............................................24
参考文献...................................................25
评语及成绩..................................................0
1前言
设计一个设备管理系统,该系统主要针对设备管理员。系统首先要求用户登录,
用户必须输入正确的用户名和密码;系统主界面包括设备查询功能及数据维护功
能,设备查询功能是按一定的条件查询所需要的设备信息,数据维护主要是通过增
加或删除来修改数据。
2需求分析
2.1要求
(1)用Csharp语言实现程序设计;
(2)采用.NET开发工具来设计主窗体和子窗体等;
(3)画出系统模块的流程图;
(4)完成数据库的设计;
(5)界面友好(良好的人机互交),程序要有注释。
2.2任务
(1)设计一个登陆窗体和主窗体,7个子窗体来显示相关信息;
(2)管理员必须输入正确的用户名和密码,才能进入主窗体进行相关操作;
(3)画出所有模块的流程图;
(4)完成数据库的设计;
(5)编写代码;
(6)程序分析与调试。
2.3运行环境
(1)WINDOWS2000/XP系统
(2)VisualStudio2005编译环境
2.4开发工具
C#:C#(CSharp)是微软为NETFramework量身订做的程序语言,C#拥有
C/C++的强大功能以及VisualBasic简易使用的特性,是第一个组件导向
(Component-oriented)的程序语言,和C++与Java——样亦为对象导向(object-oriented)
程序语言。
3概要设计与详细设计
3.1系统流程图
首先要有一个登录模块对登录用户进行验证,如果验证成功则进入系统的主窗
体,登录主窗体之后管理员以操作所有的功能:查询、修改、增加设备信息、辅助
图3.1系统流程图
3.2数据库设计
3.2.1建立数据字典
在开发设备管理系统之前,分析了改系统的数据量。选择MicrosoftSQL
Server2005数据库存储这些信息,数据库命名为MyDevice,在数据库中创建了2个
数据表用于不同的信息。
L设备管理员数据字典
名字:设备管理员表(User)
描述:记录管理员的具体详细信息
定义:设备管理员表=用户编号+用户名+密码
位置:设备管理数据库
2.设备数据字典
名字:设备信息表(equipment)
描述:记录设备的具体详细信息
定义:设备信息表=设备编号+设备名称+设备数量+设备价格
位置:设备管理数据库
3.2.2数据库详细设计
表1User表结构
列名数据类型说明
useridint用户编号,主键,标识列,表示增量1,标识种子1
UserNamenvarchar(50)用户名,非空
passwordnvarchar(50)密码,非空
表2equipment表结构
列名数据类型说明
idint设备编号,主键,标识列,表示增量1,标识种子1
namenvarchar(50)设备名称,非空
pricemoney设备名称,非空
countint设备数量,非空
4编码与实现
4.1分析
(1)登陆界面的设计—打开VisualStudio2005,新建一个名为DeviceSystem
项目,然后打开一个窗体并命名为userlogin.cs。在此窗体中添加2个标签(用户名
和密码)、2个按钮(确定和取消)和2个textBox等,如图所示
图4.1登陆窗体
(2)系统主窗体的设计—添加窗体并命名为frmMain.cs,在此窗体添加一
个MenuStrip控件,一个ToolStrip控件及3个按钮,一个Time控件,toolStripStatus
控件并分别设置各属性,如图所示
图4.2系统主窗体
(3)子窗体的设计----添加4个窗体并依此命名为frmselecName.cs、
frmselecPrice.cs、frmDataMaint.cs、frmDeletedevice.cs并分别添加工具控件及设置各
属性,如图所示
图4.3按名称查询窗
图4.4按价格查询窗体
图4.5数据维护窗体
4.2具体代码实现
1.登录窗体一frmlogin.cs
usingSystem;
usingSystem.Configuration;
namespaceDeviceSystem
privatevoidbtnYes_Click(objectsender,EventArgse)
(-
stringuserName=txtName.Text;
stringpassword=txtPwd.Text;
stringcons二
ConfigurationManager.ConnectionStrings["DeviceSystem.Properties.Settings.MyDevice
ConnectionString'*].Connectionstring;
SqlConnectionconnection=newSqlConnection(cons);
〃获取用户名和密码匹配的行的数量的SQL语句stringsql=String.Format("select
count(*)from[User]whereusername='{0}'andpassword=*{1}H,,userName,password);
try{
connection.Open();〃打开数据库连接
SqlCommandcommand=newSqlCommand(sql,connection);
〃创建Command对象
intnum=(int)command.ExecuteScalar();
〃执行查询语句,返回匹配的行数
if(num>0)
{//如果有匹配的行,则表明用户名和密码正确
MessageBox.Show("欢迎进入设备管理系统!”,“登录成功”,
MessageBoxButtons.OK,MessageBoxlcon.lnformation);
frmMainmainForm=newfrmMain。;〃仓U建主窗体对象
mainForm.Show();〃显示窗体
this.Visible二false;〃登陆窗体隐藏
)
else{
MessageBox.Show("您输入的用户名或密码错误!「登录失败”,
MessageBoxButtons.AbortRetrylgnore,MessageBoxIcon.Exclamation);
}//MessageBoxicon.Exclamation是由三角符号组成的警惕图
1.
catch(Exceptionex){
MessageBox.Show(ex.MessageJ操作数据库出错啦!
”,Messag「eBoxB}uttons.OK,Messag「eBoxicon.Exclamation);
finally{
connection.Close。;〃关闭数据库连接
)
privatevoidbtnCancel_Click(objectsender,EventArgse)
(-
txtName.Text=nn;
txtPwd.Text="”;
txtNam已Focus();〃将光标指定在txtName上
)
)
)
2.主窗体frmMain.es
usingSystem;
usingSystem.Windows.Forms;
namespaceDeviceSystem
privatevoidtimer1_Tick(objectsender,EventArgse)
(J
DateTimedt=DateTime.Now;〃获取当前时间
tssData.Text二dt.ToLongDateString();
)「」
privatevoidtsmExit_Click(objectsender,EventArgse)
{Application.Exit();
)
privatevoidtsmSelecName_Click(objectsender,EventArgse)
(「
frmselecNameselectname=newfrmselecName();〃仓U建子窗体对象
selectname.MdiParent=this;〃指定当前窗体为MDI父窗体
selectname.Show();〃打开子窗体
tssStatus.Text二”按名称查询”;〃在状态栏中显示操作内容
)
privatevoidtsmSelecPrice_Click(objectsender,EventArgse)
{]
frmselecPriceselectprice=newfrmselecPrice();〃创建子窗体对象
selectprice.MdiParent=this;〃指定当前窗体为MDI父窗体
selectprice.Show();〃打开子窗体
tssStatus.Text二”按单价查询”;//在状态栏中显示操作内容
)
privatevoidtsmUpdate_Click(objectsender,EventArgse)
(
frmDataMaintdatamaint=newfrmDataMaint();〃创建子窗体对象
datamaint.MdiParent=this;〃指定当前窗体为MDI父窗体
datamaint.Show();〃打开子窗体
tssStatus.Text="修改数据”;〃在状态栏中显示操作内容
)
privatevoidtsmabout_Click(objectsender,EventArgse)
(1
frmAboutabout=newfrmAbout();〃创建子窗体对象
about.MdiParent=this;//指定当前窗体为MDI父窗体
about.Show();〃打开子窗体
tssStatus.Text二"关于我们”;//在状态栏中显示操作内容
)
privatevoidtsmjsq_Click(objectsender,EventArgse)
(I
frmjsqjsq=newfrmjsqO;//创建子窗体对象
jsq.MdiParent=this;〃指定当前窗体为MDI父窗体
jsq.Show();//打开子窗体
tssStatus.Text二"计算器”;〃在状态栏中显示操作内容
)
privatevoidtsmdate_Click(objectsender,EventArgse)
1]
frmTimetime=newfrmTime();〃创建子窗体对象
time.MdiParent=this;〃指定当前窗体为MDI父窗体
time.Show();//打开子窗体
tssStatus.Text二"万年历”;〃在状态栏中显示操作内容
)
privatevoidtsmdel_Click(objectsender,EventArgse)
(J
frmDeletedevicedelete=newfrmDeletedevice();〃创建子窗体对象
delete.MdiParent=this;〃指定当前窗体为MDI父窗体
delete.Show();〃打开子窗体
tssStatus.Text="设备数据维护”;〃在状态栏中显示操作内容
)
)
)
3.子窗体frmMain.cs
usingSystem;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
usingSystem.Configuration;
namespaceDeviceSystem
publicfrmselecName()
(
InitializeComponent();
stringcons=
ConfigurationManager.ConnectionStrings["DeviceSystem.Properties.Settings.MyDeviceC
onnectionString"].Connectionstring
connection=newSqlConnection(cons);
)
privatevoidfrmselecName_Load(objectsender,EventArgse)
(
//TODO:这行代码将数据加载到表“myDeviceDataSet.equipment”中。您
可以根据需要移动或移除它。
this.equipmentTableAdapter.Fill(this.myDeviceDataSet.equipment);
)
privatevoidbtnSelectName_Click(objectsender,EventArgse)
(-
stringname=textBoxl.Text;
〃按名称查询设备
stringsql=String.Format("select*fromequipmentwherenamelike
,%{0}%H\name);
try
(
SqlDataAdapterdataAdapter=newSqlDataAdapter(sql,connection);
DataSetdatSet=newDataSet("equipment");
dataAdapter.Fill(datSet);
〃设置各列的显示数据字段
dataGridView1.Columns[0].DataPropertyName="id";
dataGridView1.Columns[1].DataPropertyName="name";
dataGridView1.Columns[2].DataPropertyName="price";
dataGridView1.Columns[3].DataPropertyName="count";
dataGridView1.DataSource=datSet.Tables[O];
)
catch(Exceptionex)
(
MessageBox.Show(ex.Message,”操作数据库出错啦!”,
MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
)
)
privatevoidbutton1_Click(objectsender,EventArgse)
(
this.Close();
)
)
)
4.子窗体frmselecPrice.es
usingSystem;
usingSystem.Drawing;
usingSystem.Data.SqlClient;
usingSystem.Configuration;
namespaceDeviceSystem
publicfrmselecPrice()
(
InitializeComponent();
stringcons=
ConfigurationManager.ConnectionStrings[nDeviceSystem.Properties.Settings.MyDeviceC
onnectionString"].Connectionstring;
connection=newSqlConnection(cons);
)
privatevoidbtnselectPrice_Click(objectsender,EventArgse)
(-
//decimal表示十进制数
decimalprice1,price2;
try
(
price1=Convert.ToDecimal(textBoxl.Text);
price2=Convert.ToDecimal(textBox2.Text);
)
catch
(
price1=0;
price2=1000000M;//默认为最大值
)
if(pricel>price2)
{〃如果pricel>price2,交换两者
decimaltemp二price1;
pricel=price2;
price2=temp;
)
〃按价格查询设备
stringsql=String.Format("select*fromequipmentwherepricebetween{0}
and{l}n,pricel,price2);
try
(
SqlDataAdapterdataAdapter=newSqlDataAdapter(sql,connection);
DataSetdatSet=newDataSet("equipment");
dataAdapter.Fill(datSet);
〃设置各列的显示数据字段
dataGridView1.Columns[0].DataPropertyName="id";
dataGridView1.Columns[1].DataPropertyName="name";
dataGridView1.Columns[2].DataPropertyName="price";
dataGridView1.Columns[3].DataPropertyName="count";
dataGridView1.DataSource=datSet.Tables[O];
)
catch(Exceptionex)
(
MessageBox.Show(ex.Message,”操作数据库出错啦!",
MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
「}「
)
privatevoidfrmselecPrice_Load(objectsender,EventArgse)
(-
//TODO:这行代码将数据加载到表“myDeviceDataSet.equipment”中。您
可以根据需要移动或移除它。
this.equipmentTableAdapter.Fill(this.myDeviceDataSet.equipment);
)
privatevoidbutton1_Click(objectsender,EventArgse)
(J
this.Close();
)
)
5.子窗体frmDataMaint.es
usingSystem;
usingSystem.Data.SqlClient;
namespaceDeviceSystem
privatevoidfrmDataMaint_Load(objectsender,EventArgse)
(J
//TODO:这行代码将数据加载到表“myDeviceDataSet.equipment”中。您
可以根据需要移动或移除它。
this.equipmentTableAdapter.Fill(this.myDeviceDataSet.equipment);
)
privatevoidbtnsave_Click(objectsender,EventArgse)
(J
equipmentTableAdapter.Update(myDeviceDataSet.equipment);
)
privatevoidbtnguanbi_Click(objectsender,EventArgse)
{this.Close();
)
privatevoidbtnrefresh_Click(objectsender,EventArgse)
equipmentTableAdapter.Fill(myDeviceDataSet.equipment);
)
)
6.子窗体frmDeletedevice.cs
usingSystem;
usingSystem.Data.SqlClient;
usingSystem.Configuration;
namespaceDeviceSystem
publicpartialclassfrmDeletedevice:Form
(
SqlConnectioncon;
SqlDataAdapterda;
DataSetds;
SqlCommandcom;
publicfrmDeletedevice()
(
InitializeComponent();
)
privatevoidfrmDeletedevice_Load(objectsender,EventArgse)
(
BKYO;
stringcons=
ConfigurationManager.ConnectionStrings[uDeviceSystem.Properties.Settings.MyDeviceC
onnectionString"].Connectionstring;
con=newSqlConnection(cons);
/〃/绑定cbosm
da=newSqlDataAdapter("selectnamefromequipmentn,con);
ds=newDataSet();
da.Fill(ds,"equipment");
cbosm.DataSource=ds.Tables["equipment"];
cbosm.DisplayMember="name";
FillDgvshebei();
)一
privatevoidFillDgvshebei()
(
//绑定dgvshebei
da=newSqlDataAdapter("select*fromequipment",con);
ds=newDataSet();
da.Fill(ds,"equipment");
dgvshebei.DataSource=ds.Tables[O];
1.
privatevoiddgvshebei_CellClick(objectsender,DataGridViewCellEventArgse)
(
txthao.Text=Convert.ToString(dgvshebei[Hidu,
dgvshebei.CurrentCell.RowIndex].Value);
txtname.Text=Convert.ToString(dgvshebei["namen,
dgvshebei.CurrentCell.RowIndex].Value);
txtC.Text=Convert.ToStringCdgvshebeit'^rice",
dgvshebei.CurrentCell.RowIndex].Value);
txtD.Text=Convert.ToStringCdgvshebeiE^count",
dgvshebei.CurrentCell.RowIndex].Value);
)
privatevoidtsbdel_Click(objectsender,EventArgse)
(-
com=newSqlCommand(*1deletefromequipmentwhereid="'+txthao.Text
+"[con);
if(con.State==ConnectionState.Closed)
(
con.Open();
)
inti=(int)com.ExecuteNonQuery();
con.Close();
if(i>0)
(
FillDgvshebei();
MessageBox.ShowC删除成功!”);
)
)
privateboolbselect()
(
com=newSqlCommand("selectcount(*)fromequipmentwhereid=+
txthao.Text+andname=+txtname.Text+con);
if(con.State==ConnectionState.Closed)
(
con.Open();
)
inti=(int)com.ExecuteScalar();
con.Close();
if(i>0)
(
MessageBox.Show("已有这条记录!”);
Clear();
returntrue;
)
else
returnfalse;
)
)
privatevoidClearQ
(
txthao.Text=,,n;
txtname.Clear();
)
privatevoidtslbaocun_Click(objectsender,EventArgse)
(
if(txtname.Text==""||txtC.Text==*,n||txtD.Text==nn)
(
MessageBox.Show("填写不完整!");
}else
(
if(bselect()==false)
(
com=newSqlCommand("insertinto
equipment(name,price,count)values(,n+txtname.Text++txtC.Text++txtD.Text
+m)n,con);
if(con.State==ConnectionState.Closed)
(
con.Open();
)
intj=(int)com.ExecuteNonQuery();
con.CloseQ;
if(j>0)
(
FillDgvshebei();
MessageBox.Show(“增力口成功!");
)
)
)
)
privatevoidtsbquxiao_Click(objectsender,EventArgse)
(-
Clear();
BKY();
)
privatevoidBKY()
(
txthao.Enabled=false;
txtname.Enabled=false;
tslbaocun.Enabled=false;
tsbquxiao.Enabled=false;
)
privatevoidKYQ
txthao.Enabled=true;
txtname.Enabled=true;
tslbaocun.Enabled=true;
tsbquxiao.Enabled=true;
)
privatevoidtsmjia_Click(objectsender,EventArgse)
(J
KY();
)
privatevoidbtntui_Click(objectsender,EventArgse)
(-
this.Close();
)
)
)
4.3界面实现
首先用户进入登录界面,必须输入正确的用户名和密码,否则会提示用户名或
密码错误,请重新输入:
图4.6
输入正确后,点击确定按钮后则进入系统的主界面,进行相关操作:
图4.7
点击“按名称查询”,进入查询界面,输入“笔记本”,点击查询,则可显示有关数
据:
图4.8
点击关闭,退出按名称查询窗体,然后点击“按价格查询”,输入价格,点击查询:
宙设备管理系统13叵区
文件电)设备查询⑤)数据维护(D)关于我们他)帮助国)
口,—之X
按单价查询2012年11月6日星期二
图4.9
点击“关闭”按钮,退出该界面,点击数据维护下的“修改数据”,将电视机数量改
为10,点击保存修改后,点击刷新:
图4.10
届设备管理系统目回冈
文件也)设备查询G)数据维护8)关于我们④)帮助也)
」金嗖鼻X
庖设备维护13间冈
修改数据2012年H月6日星期二
图4.11
点击“关闭”按钮,退出后点击“删除数据”,开始进入时,“保存”和“取消”按
钮是灰色的即不可用;只有点击“添加”按钮之后,“保存”和“取消”才可用
图4.11
点击“添加”按钮后,然后点击手机,手机的相关信息会显示在文本框中:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度商务代理与销售渠道拓展合同
- 剧院舞台设备租赁合同三篇
- 2024水电劳务清包工合同模板
- 2024版二手房按揭还款保证保险合同
- 审核销售合同的要点包括
- 2024年度宁夏房屋租赁合同空白
- 施工总承包合同或专业承包合同所需资料
- 2024版临时车库租赁合同
- 2024年度墙纸墙布电子商务运营合同2篇
- 二零二四年度智能客服系统研发与运营服务合同2篇
- 胃肠动力治疗仪使用
- 西安交通大学《法理学》2023-2024学年期末试卷
- 2024年国网公司企业文化与职业道德试考试题库(含答案)
- 食品生产设备安装应急响应预案
- 2024年度亚马逊FBA货物海运合同
- 建筑装饰的室内装修工艺与施工技术考核试卷
- 网络攻击应急预案演练总结报告
- 综合测试06散文阅读(多文本)-备战2025年高考语文一轮复习考点帮(新高考)(教师版)
- 【初中数学】认识方程课件++2024-2025学年北师大版七年级数学上册
- 交通运输行业火灾安全预案
- 风湿免疫性疾病-2
评论
0/150
提交评论