燕大数据库课设Word文档格式.docx
《燕大数据库课设Word文档格式.docx》由会员分享,可在线阅读,更多相关《燕大数据库课设Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
4.开发环境使用Windowxp/Window7
工
作
计
划
1.15~16号确定主题和初步框架及相关数据库
2.17~20完成用户登录,增添修改等功能
3.21~22链接数据库及代码优化
4.23~24完成该系统的设计报告
参
考
资
料
1.施伯乐,丁宝康,汪卫.数据库系统教程(第3版).北京:
高等教育出版社,2008.
2.
3.
4.
第1章需求分析
1.1功能需求
1.1.1用户管理登录模块
本模块就是管理用户的登录,实现出错提示和验证码登录。
用户登录后进行修改密码,保护个人数据。
新用户可注册登录。
1.1.2更新列车信息模块
可以增加,删除,修改车次信息,根据实际信息,进行相应操作。
1.1.3列车查询模块
此模块包含了站站查询、车次查询两种功能。
可模糊查询例如实现Z1124
的查询,输入Z即可查询到Z相关的所有车次。
1.1.4退出系统
用户使用完毕可退出系统。
1.2数据需求
1.2.1.
站点信息
收集站点信息,站点名,所在城市,所经过车次等信息。
1.2.2列车信息
收集列车信息,如车次,列车类型,始发站,终点站,发车时间,到达时间,总时间,里程等信息
1.2.3路线信息
收集列车的运行区间,记录车次,里程,车站名,到站时间,出站时间,以及不同类型的票价
1.3开发工具简介
本系统采用C#语言实现,开发平台使用VisualStudio2008,数据库使用SQLServer2005ExpressEdition。
C#是一种先进,面向对象的语言,通过C#可以让开发人员快速的建立大范围的基于MS网络平台的应用,并且提供大量的开发工具和服务帮助开发人员开发基于计算和通信的各种应用。
VisualStudio2008是面向WindowsVista、Office2007、Web2.0的开发工具,在其中引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。
使用VisualStudio2008可以高效开发Windows应用。
设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。
同时VisualStudio2008支持项目模板、调试器和部署程序。
VisualStudio2008可以高效开发Web应用,集成了ASP.NET、AJAX1.0,包含ASP.NET、AJAX项目模板,它还可以高效开发Office应用和Mobile应用。
SQLServer2005ExpressEdition可以简化基本的数据库操作,通过与VisualStudio项目的集成,数据库应用程序的设计和开发也变得更加简单。
此外,服务和修补也得到了简化和自动化。
第2章总体设计
2.1功能模块设计
2.1.1用户管理登录模块
管理登录模块是要求在管理员通过相应的管理员ID和密码进入该系统后,才能够对各种交通信息以及管理员信息进行相应的增删改操作。
为实现该模块的功能设计了管理员表,用来存放管理员的相关信息。
在登录的时候为防止用户恶意登录,则额外设置了验证码来预防此类事件的发生;
当管理员输入的验证码错误时会出现提示框,提示验证码错误,要求重新操作;
当管理员输入空的管理员ID、密码;
或者输入不正确的管理员ID和密码时,系统会提示操作错误,要求重新输入;
只有输入正确的管理员ID、密码以及验证码时,才能进入用户管理系统。
登录系统后,能随时进行修改信息,及对本系统的数据库中的各种列车信息进行管理维护。
同时,用户登录后可进行修改密码的功能。
新用户亦可进行注册功能。
2.1.2列车查询模块
本模块主要是为了从数据库中,根据所要求的列车查询条件以及查询方法,在数据库中进行列车信息的查询和筛选,并以表格的方式表现出来。
设计的总体思路为:
为实现该模块的功能设计了五张表,用来存放列车相关信息。
其中站点表用来存放所有火车站点的编号、站名和哪些列车途经该站;
车票价表中则包括了各种列车类型的不同座位类型票价,用户查询区间时亦可知票价;
由于一个列车班次包含多条信息,如果要在每条路线信息中都输入该车次的基本信息,则显得比较重复,而且会使数据库录入时的工作量变得繁重,为了解决这一麻烦,设计了一个列车表用来专门存放列车班次的一些基本信息。
列车路线表则是在站点表和列车表的基础上设计出来,包括了各个列车班次、线路的具体信息的表,同时由于每个列车线路具有方向性,所以在列车路线表中特别设定了关键字,用来存放列车站点信息的到达顺序,并且在每次站站查询的时候都加入了查询条件,这样就能保证每条查询出的列车路线都具有正确的方向性,以及避免了列车路线重复的情况。
列车站站查询的总体思路是把火车站点作为结点,列车路线信息作为通路来构成连通的有向图,然后用广度优先的方法进行遍历为基础,通过查找其交叉结点或通路,就可以得到所需要的查询结果。
2.1.3增删改模块
本模块主要是为了往数据库中管理列车信息记录,以及添加新的列车信息记录、修改需要变更的信息、删除已经停行的列车记录等。
根据列车以及车站的最新动态信息,对现有的系统进行管理操作,使得该查询系统能够显示准确无误的最新列车信息记录,以保证旅客能正常的查询和选择。
图2-1系统功能模块图
2.2数据库设计
2.2.1ER图
图2—2
列车信息(列车编号,车次,列车类型,始发站,终点站,发车时间,到达时间,总时间,里程)
列车运行区间(列车编号,站点编号,里程,车站名,到站时间,出站时间,票价)
车站信息(站点编号,车站名,所在城市)
票价(车次,列车类型,座位类型,车票价格)
2.2.2表结构
用户管理员表User.dbf。
建立登录信息。
表2-1User表
列名
说明
数据类型
可否为空
userID
管理员ID
Varchar(20)
否
userPwd
密码
varchar(20)
userName
名称
是
站点信息表Station.dbf。
表2-2Station表
stationID
站点编号
int(20)
stationName
站点名
trainID
经过列车车次
int(10)
stationCity
所在城市
列车信息表Train.dbf。
表2-3Train表
车次
varchar(10)
trainType
列车类型
beginStation
始发站
varchar(40)
endStation
终点站
beginTime
发车时间
varchar(5)
endTime
到达时间
times
总程时间
distance
里程
int
(2)
stationNum
所经过站点数
路线表Runlist.dbf。
表2-4Runlist表
ID
编号
stationName
列车票价Ticket.dbf。
表2-5Ticket表
int(4)
trainTpye
varchar(6)
seatTpye
座位类型
varchar(15)
ticketPice
车票价格
numeric(10)
第3章详细设计
3.1界面及代码说明
3.1.1用户登录
用户输入用户名,密码,验证码后,系统调用数据,如果与数据匹配则能够登陆,否则显示错误
登陆代码:
privatevoidbutton_Log_Click(objectsender,EventArgse)//登陆按钮
{
Useruser=newUser(boBox_UserName.Text,this.textBox_Psw.Text);
boolok=false;
foreach(UseruinUserManager.UserList)
if(u.UserName.Equals(user.UserName)&
&
u.PassWord.Equals(user.PassWord))//判断用户名和密码是否匹配
ok=true;
break;
}
if(ok)
FormMainformMain=newFormMain();
formMain.currentUser=user;
user.AccountMagr.LoadDataFromFile(Application.StartupPath+user.PathOfDataFile_Account_Relative);
this.Hide();
formMain.Show();
else
this.label_Info.ForeColor=Color.Red;
this.label_Info.Text="
用户名或密码错误"
;
this.textBox_Psw.Clear();
如图3—1为登陆界面的设计图
图3—1登陆界面
3.1.2注册新用户
用户输入注册的基本信息后,系统将信息存入
privatevoidlinkLabel_Regist_LinkClicked(objectsender,LinkLabelLinkClickedEventArgse)
FormRegistNewUserform=newFormRegistNewUser();
if(form.ShowDialog()==DialogResult.OK)
stringuserName=form.textBox_UserName.Text;
stringpsw=form.textBox_Psw.Text;
UsernewUser=newUser(userName,psw);
//注册新的用户名和密码
UserManager.UserList.Add(newUser);
UserManager.SaveUserListToFile();
//将信息存入xml中
boBox_UserName.Items.Add(newUser.UserName);
如图3—2为注册新用户的设计图
图3—2注册新用户
3.1.3密码修改
首先判断输入的密码与原密码是否匹配,如果匹配则将原密码改为输入的新密码
privatevoidbutton_OK_Click(objectsender,EventArgse)
if(!
this.textBox_OldPsw.Text.Equals(this.oldPsw))
原密码错误!
"
return;
}//用户名与密码是否匹配
else
this.textBox_NewPsw.Text.Equals(this.textBox_NewPsw2.Text))
两次输入的密码不一致!
//两次输入的密码是否相同
this.DialogResult=DialogResult.OK;
this.newPsw=this.textBox_NewPsw2.Text;
//将原密码改为新密码
如图3—3为密码修改的设计界面
图3—3密码修改
3.1.4主界面
登陆成功后,进入主界面
图3—4主界面
3.1.5添加车次
点击添加按钮,进入添加车次的界面,确定后将信息存入,同时主界面显示添加的车次
privatevoidtoolStripSplitButton_Add_Click(objectsender,EventArgse)
FormAddAccountfaa=newFormAddAccount();
Accountacc=newAccount();
if(faa.ShowDialog(this)==DialogResult.OK)
acc.IniBlance=double.Parse(faa.textBox_IniBalance.Text);
acc.MoneyType=faa.textBox_MoneyType.Text;
acc.OwnerName=faa.textBox_UserName.Text;
acc.RemainBlance=double.Parse(faa.textBox_RemainBalance.Text);
acc.Remark=faa.textBox_Reamrk.Text;
acc.StartDate=faa.dateTimePicker_StartDate.Value;
acc.AccountType=faa.textBox_AccountType.Text;
acc.BankbookNum=faa.textBox_BankbookNum.Text;
acc.BankName=faa.textBox_BankName.Text;
acc.CardNum=faa.textBox_cardNum.Text;
this.accountManager.AccoutList.Add(acc);
string[]items=newstring[]{
(this.listView1.Items.Count+1).ToString(),
acc.OwnerName.ToString(),
acc.BankbookNum.ToString(),
acc.CardNum.ToString(),
acc.StartDate.ToString(),
acc.BankName.ToString(),
acc.MoneyType.ToString(),
acc.AccountType.ToString(),
acc.IniBlance.ToString(),
acc.RemainBlance.ToString(),
acc.Remark.ToString()};
ListViewItemlvi=newListViewItem(items);
this.listView1.Items.Add(lvi);
this.SaveListViewToFile();
如图3—5为添加车次的设计界面
图3—5车次详细信息
3.1.6添加区间
点击添加按钮,进入添加区间的界面,确定后将信息存入xml中,同时车次信息界面显示添加的区间
privatevoidbutton1_Click(objectsender,EventArgse)
qujianfaa=newqujian();
acc.MoneyType=faa.textBox_UserName.Text;
acc.OwnerName=faa.textBox_BankbookNum.Text;
acc.AccountType=faa.textBox_cardNum.Text;
acc.BankbookNum=faa.textBox_BankName.Text;
acc.BankName=faa.textBox_MoneyType.Text;
acc.CardNum=faa.textBox_AccountType.Text;
this.addAccount1.AccoutList.Add(acc);
acc.CardNum.ToString()};
this.SaveListView1ToFile();
如图3—6为添加区间的设计界面
图3—6添加区间
3.1.7删除车次信息
删除车次信息后,将车次信息删除,同时主界面将不再显示该车次
privatevoidtoolStripButton_Del_Click(objectsender,EventArgse)
stringnames=string.Empty;
foreach(ListViewItemiteminthis.listView1.SelectedItems)
names+=item.SubItems[1].Text+"
\n"
String.IsNullOrEmpty(names))
DialogResultdr=MessageBox.Show("
确实要删除"
+names+"
的车次信息吗?
"
删除车次"
MessageBoxButtons.YesNo,MessageBoxIcon.Warning,MessageBoxDefaultButton.Button2);
if(dr==DialogResult.Yes)
for(inti=0;
i<
this.listView1.SelectedItems.Count;
i++)
this.listView1.Items.Remove(this.listView1.SelectedItems[i]);
i--;
3.1.8修改车次信息
修改车次信息后,更新车次信息,同时主界面将显示修改后的车次
privatevoidtoolStripButton_Modify_Click(objectsender,EventArgse)
if(this.listView1.SelectedItems.Count==0)
ListViewItemitem=this.listView1.SelectedItems[0];
faa.textBox_UserName.Text=item.SubItems[1].Text;
faa.textBox_BankbookNum.Text=item.SubItems[2].Text;
faa.textBox_cardNum.Text=item.SubItems[3].Text;
faa.dateTimePicker_StartDate.Text=item.SubItems[4].Text;
faa.textBox_BankName.Text=item.SubItems[5].Text;
faa.textBox_MoneyType.Text=item.SubItems[6].Text;
faa.textBox_AccountType.Text=item.SubItems[7].Text;
faa.textBox_IniBalance.Text=item.SubItems[8].Text;
faa.textBox_RemainBalance.Text=item.SubItems[9].Text;
faa.textBox_Reamrk.Text=item.SubItems[10].Text;
if(faa.ShowDialog()==DialogResult.OK)
acc.AccountTyp