超市进销存管理系统.docx
《超市进销存管理系统.docx》由会员分享,可在线阅读,更多相关《超市进销存管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
超市进销存管理系统
西安翻译学院
课程设计报告
院系:
工程技术学院
课程名称:
面向对象程序设计(C#)
设计题目:
超市进销存管理系统的设计与实现
专业:
班级:
学号:
姓名:
指导教师:
设计时间:
2014.11.20-2014.12.31
课程设计任务书
设计题目
超市进销存管理系统的设计与实现
学生姓名
专业
班级
设计要求:
《面向对象程序设计C#》课程设计作为《面向对象程序设计C#》课程的实践环节,为培养学生具备应用系统开发与高级程序设计的必要环节,它在学生已具备一定的计算机知识和应用能力的基础上,以C#语言作为开发工具设计不同的Windows窗体应用程序或控制台应用程序,增强学生对面向对象编程技术的理解与掌握。
设计内容具体要求:
(1)界面友好,操作简单;
(2)程序设计过程中注意系统设计的稳定性,健壮性和正确性。
、
(3)报告编写语句通顺,排版整齐。
学生应完成的工作:
(1)设计一个单机版的超市进销存管理信息系统;
(2)包含登录与注册,商品的录入,修改,删除,查询等模块;
(3)不同角色的用户,进入系统完成不同的功能;
(4)编写课程设计报告。
参考文献阅读:
[1]侯春英、任华、林中会.《C#项目教程程序设计》[M],北京:
航空工业出版社,2012.9
[2]王小科、梁冰、吕双.《C#开发典型模块大全》[M],北京:
人民邮电出版社,2009.
工作计划:
1.2014.11.20—2014.11.24进行系统功能分析,划分用户角色。
2.2014.11.24—2014.12.20系统设计。
3.2014.12.20—2014.12.28系统测试。
4.2014.12.28—2014.12.30完成设计报告。
任务下达日期:
2014年11月20日
任务完成日期:
2014年12月31日
指导教师(签名):
学生(签名):
1.课程设计目的
1.1设计需求
该课程设计主要实现的是超市进销存管理系统应用程序,在设计过程中,应尽可能的方便用户操作。
在实现上应该具有如下基本功能:
(1)能够分别使用客户与管理员两种方式登录;
(2)能够查询超市各个商品的销售,库存情况;
(3)能够添加商品,价格。
(4)能够查看各个商品的利润。
1.2设计目的
通过本次课程设计,加深学生对面向对象程序设计技术的理解,提高对知识的综合运用能力,通过对系统的功能分析,综合运用所学知识,设计出一个简单的超市进销存窗体应用程序,培养了个人在设计过程中分析问题、解决问题的能力以及相互协作能力,较系统地掌握Windows窗体应用程序的设计流程和设计方法,以及掌握了Windows窗体应用程序与SQL数据库的连接。
2.课程设计题目描述和要求
2.1设计题目描述
经过与同小组的同学讨论,决定设计超市进销存管理系统的窗体应用。
如今小型便利店、超市等都会使用不同的进销存系统,如果能够设计出更加简洁的界面,方便的操作方法,应当会更多的被普及使用。
此窗体应用界面较为简单,操作界面一目了然,能够直观的让客户或者管理员方便的使用该应用。
管理员可以快捷的查询、添加、删除货物,便于修改进货价格,销售价格。
而用户则可以方便的查询到自己想要的货物。
2.2设计要求
本次课程设计我们选的是超市进销存管理系统的设计与实现,这是一个比较普及的窗体应用,具有一定的实用性,与我们的生活息息相关。
在这个应用的设计过程中,需要知道超市管理方面的实际需求,编写出合理有效的源代码以实现超市进销存管理系统的常用功能。
最后在进行测试,不断完善优化,使用户能够直观的使用本应用,管理员能够简单明了的操作。
2.3设计分工
本课程设计小组由3人组成,在超市进销存管理系统中,我主要负责编写选择用户界面代码、商品录入界面代码、用户查询界面代码。
3.进销存管理系统结构
超市进销存管理系统流程图如下:
4.编写程序代码
4.1登陆界面代码
登陆界面主要是用来区分管理员和普通用户之间的入口,通过登陆界面与数据库进行连接。
运行界面如图:
源代码如下:
namespace超市管理系统
{
publicpartialclass登录:
Form
{
public登录()
{
InitializeComponent();
}
privatevoidlblLogin_Click(objectsender,EventArgse)
{
注册login=new注册();
login.Show();
}
privatevoidbtnEnter_Click(objectsender,EventArgse)
{
DataTabletable=NewSqlHelper.ExecuteDataTable("select*fromT_loadwhereusername=@n",
newSqlParameter("@n",txtUserName.Text));
DataRowrow=table.Rows[0];
stringa=(string)row["username"];
stringb=(string)row["password"];
if(a==txtUserName.Text&&b==txtPassWord.Text)
{
MessageBox.Show("登陆成功!
");
mainma=newmain();
ma.Show();
}
else
MessageBox.Show("密码错误!
");
}
privatevoidtxtUserName_Leave(objectsender,EventArgse)
{
DataTabletable=NewSqlHelper.ExecuteDataTable("select*fromT_loadwhereusername=@n",
newSqlParameter("@n",txtUserName.Text));
if(table.Rows.Count<=0)
{
label5.Text="×";
label5.ForeColor=Color.Red;
txtPassWord.Enabled=false;
btnEnter.Enabled=false;
}
else
{
label5.Text="√";
label5.ForeColor=Color.Blue;
}
}
privatevoidtxtUserName_TextChanged(objectsender,EventArgse)
{
txtPassWord.Enabled=true;
btnEnter.Enabled=true;
}
}
}
4.2注册界面代码
对于新的用户,我们通过注册按钮在数据库的用户表中插入账号和密码来实现新用户的注册。
代码如下:
namespace超市管理系统
{
publicpartialclass首页:
Form
{
public首页()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(radioButton1.Checked)
{
Class1.a=0;
MessageBox.Show("选择成功!
");
}
elseif(radioButton2.Checked)
{
Class1.a=1;
MessageBox.Show("选择成功!
");
}
elseif(Class1.a==9)
MessageBox.Show("请选择用户类型!
");
}
}
}
4.3选择用户界面代码
登陆成功后,可以选择管理员和用户两种身份,普通的用户身份,普通的用户只能进行查询,管理员不仅可以查询,还能添加货物的信息。
代码如下:
namespace超市管理系统
{
publicpartialclass首页:
Form
{
public首页()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(radioButton1.Checked)
{
Class1.a=0;
MessageBox.Show("选择成功!
");
}
elseif(radioButton2.Checked)
{
Class1.a=1;
MessageBox.Show("选择成功!
");
}
elseif(Class1.a==9)
MessageBox.Show("请选择用户类型!
");
}
}
}
4.4查询界面代码
查询界面主要分为回到选择身份界面的首页,和商品录入,查询功能,管理员可以进行商品录入和查询,普通用户只能进行查询功能。
源代码如下:
namespace超市管理系统
{
publicpartialclassmain:
Form
{
publicmain()
{
InitializeComponent();
}
privatevoid首页?
ToolStripMenuItem_Click(objectsender,EventArgse)
{
if(this.MdiChildren.Length>0)
{
this.MdiChildren[0].Close();
首页f2=new首页();
f2.MdiParent=this;
panel1.Controls.Clear();
panel1.Controls.Add(f2);
f2.Show();
}
else
{
首页f2=new首页();
f2.MdiParent=this;
panel1.Controls.Clear();
panel1.Controls.Add(f2);
f2.Show();
}
}
privatevoidmain_Load(objectsender,EventArgse)
{
首页f2=new首页();
f2.MdiParent=this;
panel1.Controls.Clear();
panel1.Controls.Add(f2);
f2.Show();
}
privatevoid商品录入ToolStripMenuItem_Click(objectsender,EventArgse)
{
if(this.MdiChildren.Length>0)
{
this.MdiChildren[0].Close();
商品录入f2=new商品录入();
f2.MdiParent=this;
panel1.Controls.Clear();
panel1.Controls.Add(f2);
f2.Show();
}
else
{
商品录入f2=new商品录入();
f2.MdiParent=this;
panel1.Controls.Clear();
panel1.Controls.Add(f2);
f2.Show();
}
}
privatevoid查询ToolStripMenuItem_Click(objectsender,EventArgse)
{
if(this.MdiChildren.Length>0)
{
this.MdiChildren[0].Close();
查询f2=new查询();
f2.MdiParent=this;
panel1.Controls.Clear();
panel1.Controls.Add(f2);
f2.Show();
}
else
{
查询f2=new查询();
f2.MdiParent=this;
panel1.Controls.Clear();
panel1.Controls.Add(f2);
f2.Show();
}
}
}
}
4.5商品录入界面代码
商品录入可以让管理员添加商品名称、商品类型、数量、批发价、销售价以及利润到数据库的T_超市表中。
源代码如下:
namespace超市管理系统
{
publicpartialclass商品录入:
Form
{
public商品录入()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
if(txtnum.Text!
=""&&txtpifa.Text!
=""&&txtxiaoshou.Text!
=""&&txtname.Text!
=""&&txtlirun.Text!
=""&&txttype.Text!
="")
{
NewSqlHelper.ExecuteNonQuery("insertintoT_超市(商品名称,商品类型,数量,批发价,销售价,利润values(@nam,@typ,@num,@pifa,@xiaoshou,@lirun)",newSqlParameter("@nam",txtname.Text),
newSqlParameter("@num",txtnum.Text),newSqlParameter("@lirun",txtlirun.Text),newSqlParameter("@typ",txttype.Text),newSqlParameter("@xiaoshou",txtxiaoshou.Text),newSqlParameter("@pifa",txtpifa.Text));
MessageBox.Show("添加成功!
");
}
else
MessageBox.Show("请完善信息!
");
}
privatevoid商品录入_Load(objectsender,EventArgse)
{
if(Class1.a==0)
{
button1.Enabled=false;
MessageBox.Show("您没有权限添加商品信息!
");
}
}
}
}
4.6用户查询界面代码
如果是普通用户登陆,就可以方便的查询超市货物的详细信息。
源代码如下:
namespace超市管理系统
{
publicpartialclass查询:
Form
{
privateSqlDataAdapteradapter;
privateDataSetdataset;
public查询()
{
InitializeComponent();
}
privatevoid查询_Load(objectsender,EventArgse)
{
}
privatevoidbtnname_Click(objectsender,EventArgse)
{
if(txtname.Text=="")
{
MessageBox.Show("请输入商品名称!
");
}
else
{
using(SqlConnectionconn=newSqlConnection("Database=客户;SERVER=DMT48;UID=aa;PWD=bird0099.."))
{
conn.Open();
using(SqlCommandcmd=conn.CreateCommand())
{
cmd.CommandText="select*fromT_超市where商品名称=@name";
cmd.Parameters.Add(newSqlParameter("@name",txtname.Text));
adapter=newSqlDataAdapter(cmd);
dataset=newDataSet();
adapter.Fill(dataset);
DataTabletable=dataset.Tables[0];
if(table.Rows.Count<=0)
{
MessageBox.Show("没有该商品信息!
");
}
else
{
dataGridView1.DataSource=table;
}
}
}
}
}
privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse)
{
if(e.ColumnIndex==6)
{
if(MessageBox.Show("你确定要删除吗?
","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information)==DialogResult.OK)
{
stringnum=dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString();
NewSqlHelper.ExecuteNonQuery("deletefromT_超市where商品名称=@num",newSqlParameter("@num",num));
MessageBox.Show("删除成功!
");
}
}
if(e.ColumnIndex==7)
{
if(Class1.a==0)
{
MessageBox.Show("您无权修改!
");
}
else
{
panel1.Visible=true;
intro=e.RowIndex;
stringname=(string)dataGridView1.Rows[ro].Cells[0].Value.ToString();
stringtype=(string)dataGridView1.Rows[ro].Cells[1].Value.ToString().Trim();
stringnum=dataGridView1.Rows[ro].Cells[2].Value.ToString().Trim();
stringpifa=(string)dataGridView1.Rows[ro].Cells[3].Value.ToString().Trim();
stringxiaoshou=(string)dataGridView1.Rows[ro].Cells[4].Value.ToString().Trim();
stringlirun=(string)dataGridView1.Rows[ro].Cells[5].Value.ToString().Trim();
txtxiaoshou.Text=xiaoshou;
txtnum.Text=num;
txtnam.Text=name;
txtlirun.Text=lirun;
txtpifa.Text=pifa;
txttype.Text=type;
}
}
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
NewSqlHelper.ExecuteNonQuery("updateT_超市set商品名称=@name,商品类型=@type,批发价=@pifa,销售价=@xiaoshou,数量=@num,利润=@lirunwhere商品名称=@n",newSqlParameter("@name",txtname.Text),
newSqlParameter("@type",txttype.Text),newSqlParameter("@pifa",txtpifa.Text),newSqlParameter("@xiaoshou",txtxiaoshou.Text),newSqlParameter("@lirun",txtlirun.Text),
newSqlParameter("@num",txtnum.Text),newSqlParameter("@n",txtname.Text));
MessageBox.Show("修改成功!
");
panel1.Visible=false;
}
}
}
5.总结
在做本次实训的时候因为在编译窗体时,代码多处有错,导致窗体与数据库连接有误,控制窗体时,数据库没有响应或是无法连接,一度导致课程设计进展受阻。
在老师的悉心指导和帮助下,经过长时间的努力,我们组的课程设计已经设计完毕。
在本次的设计过程中,我们意识到代码编译对于整个设计而言就如同一座大楼的地基一般,至关重要,一旦代码有误,就如同地基不稳,很容易导致设计受阻,连接失败。
因为代码错误这样的根基问题,导致本来很快就可以设计好的课程设计作业一度出现瓶颈,整个进度也停滞不前。
这样的小插曲也让我们对C#设计有了更深刻的认识。
效率的出发点就在于根基的稳固,以正确的代码编译窗体以实现整个应用的合理运行,才可以以最快的效率完成课程设计。
最后,我要衷心感谢老师在我的课程设计中给予我们的指导,使我们能够及时、顺利的完成此次课程设计。
6.参考文献
[1]侯春英、任华、林中会.《C#项目教程程序设计》[M],北京:
航空工业出版社,2012.9
[2]王小科、梁冰、吕双.《C#开发典型模块大全》[M],北京:
人民邮电出版社,2009.
指导教师评语
成绩:
指导教师签字:
年月日
院系意见:
负责人签字:
年月日