沈阳航空航天大学课程设计任务书学院:航宇专业:飞行器制造班级:94030101学号:2009040301004题目:简单的汽车站售票系统一、课程设计时间2011年3月7日~11日(第1周),共计1周。
二、课程设计内容假设每天“沈阳→植物园”有4个班次的汽车,具体的数据如下:班次发车时间载客量已售票数106:40500209:30400313:00400416:00400数据保存在文本文件或Access数据库中,请你为售票员开发一个程序,实现每天的“沈阳→植物园”的售票、退票等业务。
要求:售票时按旅客要求选择班次,如果某个班次已过了发车时间,则该班次今天不再售票,如果某个班次的票已售完,则也不能再售票。
用户界面中的菜单至少应包括“售票”、“退票”、“显示当前售票情况”、“退出”4项三、课程设计要求程序质量:✧贯彻事件驱动的程序设计思想。
✧用户界面友好,功能明确操作方便;可以加以其它功能或修饰。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:✧课设结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字指导教师:________学生签名:________五、成绩六、教师评语目录一、需求分析 (4)二、设计分析 (5)三、关键技术 (6)四、总结 (11)五、完整的源程序 (12)六、参考文献 (16)一、需求分析简单的汽车售票系统,主要指“售票”和“退票”这两种业务。
由于每班车都有规定的发车时间及最大载客量,所以系统必须能够判断是否已过发车时间,累计每个班次的售票量。
应旅客要求实现“售票”和“退票”业务,并显示当前每班车次的售票情况。
要求:(1)在文本文件中创建myfile.txt文件并保存数据,以“已售票数”、“已退票数”和“实售票数”3方面信息。
此文本应包括以下内容的数据:班次、发车时间、载客量、已售票数、已退票数、实售票数。
(2)能够在售票时按旅客要求选择班次。
(3)能够判断是否已过发车时间,实现相应售退票业务。
(4)能够判断每个班次的票是否售完,实现相应售退票业务。
(5)能够保存售退票数,显示当前各个班次的售退票情况。
二、设计分析(1)基本原理:建立程序设计与文本文件的联系,用Write#语句把数据写入文件,并通过使用Input#语句,从文件中按原来的数据类型读出数据并分别赋予指定变量。
(2)总体设计:Input#语句读取并赋值文本文件中的数据Write#语句输入图1总体设计(3)详细设计:开始判断是否过发车时间选择可选班次保存显示当前情况实现售退票业务保存当前的数据显示当前的售退票情况图2详细设计(4)文本设计:文本设计是总体设计阶段的一个环节。
本程序的文本文件包括6个内容,即班次、发车时间、载客量、已售票数、已退票数、实售票数。
1)汽车各班次具体情况(myfile.txt)汽车各班次具体情况(myfile.txt)用于记录“班次、发车时间、载客量、已售票数、已退票数、实售票数”这些信息,其结构如文本1所示。
文本1汽车各班次具体情况班次发车时间载客量已售票数已退票数实售票数16:4050c1b1a129:3040c2b2a2313:0040c3b3a3416:0040c4b4a4三、关键技术(1)建立文本文件并输入已知数据的代码如下。
Private Sub bc_Click()Open"myfile.txt"For Output As#1Write#1,"当前售票情况:"Write#1,"班次发车时间载客量已售票数已退票数实际售票"Write#1,"106:4050"&Space(5)&c1&Space(12)&b1&Space(8) &a1Write#1,"209:3040"&Space(5)&c2&Space(12)&b2&Space(8) &a2Write#1,"313:0040"&Space(5)&c3&Space(12)&b3&Space(8) &a3Write#1,"416:0040"&Space(5)&c4&Space(12)&b4&Space(8) &a4Close#1End Sub图3窗体-售退票系统判断是否已过发车时间(2)判断是否已过发车时间。
程序段如下:Private Sub Form_Load()Form1.AutoRedraw=TruePrint TimeIf Time>=#6:40:00AM#ThenOption1.Enabled=FalseEnd IfIf Time>=#9:30:00AM#ThenOption2.Enabled=FalseEnd IfIf Time>=#1:00:00PM#ThenOption3.Enabled=FalseEnd IfIf Time>=#4:00:00PM#ThenOption4.Enabled=FalseEnd IfEnd Sub(3)按旅客选择实现相应班次的售票业务。
程序段如下:Private Sub sell_Click()Text1.Text=a1Text2.Text=a2Text3.Text=a3Text4.Text=a4If Option1Thena1=a1+1c1=a1+b1If a1>50Thena1=50c1=a1+b1End IfElseIf Option2Thena2=a2+1c2=a2+b2If a2>40Thena2=40c2=a2+b2End IfElseIf Option3Thena3=a3+1c3=a3+b3If a3>40Thena3=40c3=a3+b3End IfElseIf Option4Thena4=a4+1c4=a4+b4If a4>40Thena4=40c4=a4+b4End IfEnd IfText1.Text=a1Text2.Text=a2Text3.Text=a3Text4.Text=a4End Sub(4)按旅客选择实现相应班次的退票业务。
程序段如下:Private Sub refund_Click()Text1.Text=a1Text2.Text=a2Text3.Text=a3Text4.Text=a4If Option1Thena1=a1-1b1=c1-a1If a1<=0Thena1=0b1=c1End IfElseIf Option2Thena2=a2-1b2=c2-a2If a2<=0Thena2=0b2=c2End IfElseIf Option3Thena3=a3-1b3=c3-a3If a3<=0Thena3=0b3=c3End IfElseIf Option4Thena4=a4-1b4=c4-a4If a4<=0Thena4=0b4=c4End IfEnd IfText1.Text=a1Text2.Text=a2Text3.Text=a3Text4.Text=a4End Sub图4-窗体售退票系统(5)保存售退票数,并显示当先的售票情况。
程序段如下:Private Sub Form_Load()Dim abc As StringText1.Text=""Open"myfile.txt"For Input As#1'打开文件myfile.txt用于读出数据,文件号为1Do While Not EOF(1)'判断文件是否结束Line Input#1,cba'读一行数据送入变量abcText1.Text=Text1.Text+cba+vbCrLf'将读出的数据添加到文本框末尾LoopClose#1'关闭文件End Sub图5窗体-显示当前的售退票情况四、总结本次课设,我的题目是“简单的汽车售票系统”,课设让我进一步了解了VB与文本文件之间的联系,学会了如何用Write#语句把数据写入文件,并通过使用Input#语句,从文件中按原来的数据类型读出数据并分别赋予指定变量。
在这次为期一周的课设过程中,我遇到了很多难题,认识到了自己在对VB的掌握程度上还有很多不足之处。
例如:如何判断是否已经达到最大售票量,如何建立VB与已保存在文本文件中的数据的联系,并在此基础上添加变量显示当前的售票情况。
通过对老师的请教,跟同学的探讨以及查看参考相关资料,我最终解决了程序设计中的困难,实现了题目中的各个要求。
通过课设中对VB的进一步了解和学习,我认识到了VB在当今的现实生活中有着广泛的应用,VB对于解决实际问题有着重要意义。
学好VB基础,并能熟练掌握知识点解决实际问题是当代大学生的重要任务。
五、完整的源程序Option ExplicitDim a1%,a2%,a3%,a4%,b1%,b2%,b3%,b4%,c1%,c2%,c3%,c4%Private Sub bc_Click()Open"myfile.txt"For Output As#1Write#1,"当前售票情况:"Write#1,"班次发车时间载客量已售票数已退票数实际售票"Write#1,"106:4050"&Space(5)&c1&Space(12)&b1&Space(8)& a1Write#1,"209:3040"&Space(5)&c2&Space(12)&b2&Space(8)& a2Write#1,"313:0040"&Space(5)&c3&Space(12)&b3&Space(8)& a3Write#1,"416:0040"&Space(5)&c4&Space(12)&b4&Space(8)& a4Close#1End SubPrivate Sub exit_Click()EndEnd SubPrivate Sub Form_Load() Form1.AutoRedraw=True Print TimeIf Time>=#6:40:00AM#ThenOption1.Enabled=False End IfIf Time>=#9:30:00AM#ThenOption2.Enabled=FalseEnd IfIf Time>=#1:00:00PM#ThenOption3.Enabled=FalseEnd IfIf Time>=#4:00:00PM#ThenOption4.Enabled=FalseEnd IfEnd SubPrivate Sub refund_Click() Text1.Text=a1Text2.Text=a2Text3.Text=a3Text4.Text=a4If Option1Thena1=a1-1b1=c1-a1If a1<=0Thena1=0b1=c1End IfElseIf Option2Thena2=a2-1b2=c2-a2If a2<=0Thena2=0b2=c2End IfElseIf Option3Thena3=a3-1b3=c3-a3If a3<=0Thena3=0b3=c3End IfElseIf Option4Thena4=a4-1b4=c4-a4If a4<=0Thena4=0b4=c4End IfEnd IfText1.Text=a1 Text2.Text=a2 Text3.Text=a3 Text4.Text=a4End SubPrivate Sub sell_Click() Text1.Text=a1 Text2.Text=a2 Text3.Text=a3 Text4.Text=a4If Option1Thena1=a1+1c1=a1+b1If a1>50Thena1=50c1=a1+b1End IfElseIf Option2Thena2=a2+1c2=a2+b2If a2>40Thena2=40c2=a2+b2End IfElseIf Option3Thena3=a3+1c3=a3+b3If a3>40Thena3=40c3=a3+b3End IfElseIf Option4Thena4=a4+1c4=a4+b4If a4>40Thena4=40c4=a4+b4End IfEnd IfText1.Text=a1Text2.Text=a2Text3.Text=a3Text4.Text=a4End SubPrivate Sub show_Click()Form2.showEnd SubPrivate Sub Command1_Click()Form2.HideEnd SubPrivate Sub Form_Load()Dim abc As StringText1.Text=""Open"myfile.txt"For Input As#1'打开文件myfile.txt用于读出数据,文件号为1Do While Not EOF(1)'判断文件是否结束Line Input#1,cba'读一行数据送入变量abcText1.Text=Text1.Text+cba+vbCrLf'将读出的数据添加到文本框末尾LoopClose#1'关闭文件End Sub六、参考文献[1]求是科技著《visual basic6.0信息管理系统开发实例导航》人民邮电出版社2005年4月[2]韩亚萍等《visual basic6.0基础培训百例》机械工业出版社2006年7月[3]郑海春谢维成主编《visual basic6.0编程及实例分析教程》清华大学出版社2007年4月。