课设任务书.docx
- 文档编号:9905656
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:27
- 大小:99.03KB
课设任务书.docx
《课设任务书.docx》由会员分享,可在线阅读,更多相关《课设任务书.docx(27页珍藏版)》请在冰点文库上搜索。
课设任务书
课程设计(论文)任务书
软件学 院 14软件+电气专 业2班
一、课程设计(论文)题目 火车售票系统
二、课程设计(论文)工作自2016年1月4日起至2016年1月10日止。
三、课程设计(论文)地点:
创新大楼303
四、课程设计(论文)内容要求:
1.课程设计的目的
《数据结构》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完
《数据结构》课程后进行的一次全面的综合练习。
目的是要达到理论与实际应用相结
合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际
问题在计算机内部表示出来,并培养良好的程序设计技能。
要求能从实际应用问题出发,合理地选择数据结构,设计相应的数据处理算法,
并对算法进行必要的分析;合理选择编程工具,实现数据的物理结构和相应的数据处
理算法;对算法进行调试和测试,并对调试及测试结果进行分析;针对数据结构及算
法的设计、调试及测试过程认真写出设计分析报告。
2.课程设计的任务及要求
1)基本要求
(1)要充分认识课程设计的重要性,认真做好上机前的各项准备工作;
(2)独立按时完成规定的工作任务,不得弄虚作假、抄袭他人内容;
(3)课设过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、
按质、按量完成课程设计;
(4)按规范撰写课程设计报告,对设计进行总结和讨论。
2)课程设计论文编写要求
(1)要按照书稿的规格撰写打印课程设计论文;
(2)论文包括任务书、目录、绪论、正文、总结、参考文献、附录等;
(3)正文中要有问题描述与分析、算法的设计、算法的实现、调试分析与结果;
(4)课程设计论文装订按学校的统一要求完成
3)课设考核
(1)考勤和态度;
(2)任务的难易程度及设计思路;
(3)动手调试能力;
(4)论文撰写的水平、格式的规范性。
4)课程设计进度安排
内容天数 地点
构思及收集资料1 创新大楼
程序设计与调试1 创新大楼
撰写论文1 创新大楼
5)具体任务及要求
⑴在售票、退票、查询剩余票等环节中,都必须显示出车票的信息,即车次、车厢、座位情况。
⑵为简单起见,在此假设所有出售的车票均为同一车次的车票。
⑶购票时,可以显示余票信息,并可以选择买哪张票。
⑷退票时,必须是车站售出的车票才能退,否则视为无效票,不能退票,而且退票可以再次销售。
⑸演示程序以用户和计算机的对话方式进行。
学生签名:
2016年1月4日
课程设计(论文)评审意见
(1)考勤和态度:
优( )、良( )、中( )、一般( )、差( )
(2)任务难易及设计思路 :
优( )、良( )、中( )、一般( )、差( )
(3)动手调试能力评价 :
优( )、良( )、中( )、一般( )、差( )
(4)论文撰写水平及规范性评价:
优( )、良( )、中( )、一般( )、差( )
评阅人:
职称:
讲师
年月日
目 录
1绪论4
1.1课设的目的4
1.1.1预期的结果4
2需求分析4
3概要设计4
4详细设计5
5编码实现6
6调试分析与结果7
7课设总结.............................................9
参考文献10
附录11
1绪论
1.1课设的目的
编出一个程序,实现用户可以从网上购买火车票,可以从网上查询还有没有火车票,还有多少票。
也可以从网上退掉一些不需要的票。
1.1.1预期的结果
通过我的努力,我对程序有了一个大致的框架构思,我觉得我能设计出能实现以上功能的程序,并且能够实现上述操作,能够进行网上查票,订票与退票。
但是程序还不够严谨,我会努力查阅书籍,尽力完善程序。
2需求分析
现在越来越多的人依赖手机,人们用手机上网。
如果可以在网上购买火车票,可以省去许多不必要的麻烦,也可以让火车站免于因人们排队购买火车票而造成拥挤。
3概要设计
我用的是c++来书写这个程序,我是根据程序的需求过程来书写程序的顺序。
在编写这个程序的时候,我翻阅了相关的书籍,然后上网参考了别人写的程序结构,了解了程序的书写方法,然后写完了程序。
在程序中我用顺序表来存储,用dowhile来循环订票,判断是否输入错误。
以上就是我的设计思路
4详细设计
4.1流程图
火车票网上售票系统
4.2算法设计
5编码实现
数据体结构声明:
#include
#include
usingnamespacestd;
构造与初始化单链表:
voidInitList_L(LinkList&L)
{
L=newLNode;
L->next=NULL;
}
typedefstrucy
{
structTickets*elem;
intlength;
intlistsize;
}SqList;
用swichcase算法来开始输入:
switch(n)
{
case1:
ChaXun(L);break;
case2:
DingPiao(L);break;
case3:
TuiPiao(L);break;
case4:
TuiChu();break;
}
6调试分析与结果
进入程序根据提示输入数字如图1;然后进入查票界面后输入终点站如图2.
图1
图2
返回主界面后输入2进入订票界面后输入相关信息后如图3所示
图3
返回主界面后进入退票系统后根据提示输入信息后如图4所示
图4
退完票后返回主界面后进入退出系统如图5所示
图5
7课设总结
这个程序虽然不是很复杂,但是我努力后的作品,在编写的过程中虽然很多不懂得地方,但是我通过查阅书籍和别人沟通交流,最终克服了那些问题。
但是在编程的过程中,由于练得少,所以比较生疏,总是忘记加一些字符,但我以后会努力练习,争取彻底弄懂。
通过这次的课程设计,我收获颇丰。
这次的实习让我明白了编写一个程序系统的过程是多么的辛苦,哪怕是一个简单的程序也需要花费很大的心思来思考,需要考虑到很多方面的问题。
编程的过程虽然是枯燥乏味的,但当我们的努力得到回报之后,那时我们就会觉得吃再多的苦也是值得的。
通过这次课设我学到了更多知识,因为经过了自己认真翻书查阅,记得更加清楚。
参考文献
[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:
清华大学出版社,2007.
[2]软件开发技术联盟.C语言自学视频教程.北京;清华大学出版社;2010
[3]杨开城.C语言程序设计教程,实验与练习.北京:
人民邮电出版社,2005
[4]杨彩霞.C语言程序设计实验指导与习题解答.北京;中国铁道出版社,2006
[5]王贺艳.C语言程序设计综合实训.北京:
科学出版社,2005
附录
源代码
#include
#include
usingnamespacestd;
typedefstructLNode
{
structLNode*next;
char*name;
intdingnum;
char*zhengjian;
intchexiang;
intzhuoweihao[300];
intzhekou;
floatfufei;
}LNode,*LinkList;
typedefstructTickets
{
char*endstop;
char*checi;
floatpiaojia;
floatdiscut;
intday;
inttotalnum;
intlastnum;
inttuipiao[300];
inttuipiaoshu;
intmaipiao;
LinkListla;
}Tickets;
voidInitList_L(LinkList&L)//初始化单链表
{
L=newLNode;
L->next=NULL;
}
typedefstruct//构造顺序表
{
structTickets*elem;
intlistsize;
intlength;
}SqList;
SqListCreate_Sq(SqList&L)//初始化并创建顺序表
{
L.length=7;
L.elem=newTickets[7];
if(!
L.elem)cout<<"存储失败!
"< for(intj=0;j { L.elem[j].tuipiaoshu=0; L.elem[j].maipiao;//座位号从1开始 } for(inti=0;i { InitList_L(L.elem[i].la);//创建顺序表 L.elem[0].endstop="九江"; L.elem[0].checi="T001"; L.elem[0].day=18; L.elem[0].piaojia=30; L.elem[0].discut=0.5; L.elem[0].totalnum=L.elem[0].lastnum=100; L.elem[1].endstop="吉安"; L.elem[1].checi="T002"; L.elem[1].day=18; L.elem[1].piaojia=37.5; L.elem[1].discut=0.5; L.elem[1].totalnum=L.elem[1].lastnum=100; L.elem[2].endstop="婺源"; L.elem[2].checi="T003"; L.elem[2].day=18; L.elem[2].piaojia=35; L.elem[2].discut=0.5; L.elem[2].totalnum=L.elem[2].lastnum=100; L.elem[3].endstop="赣州"; L.elem[3].checi="T004"; L.elem[3].day=18; L.elem[3].piaojia=40; L.elem[3].discut=0.5; L.elem[3].totalnum=L.elem[1].lastnum=100; L.elem[4].endstop="安福"; L.elem[4].checi="T005"; L.elem[4].day=18; L.elem[4].piaojia=50; L.elem[4].discut=0.5; L.elem[4].totalnum=L.elem[4].lastnum=100; L.elem[5].endstop="井冈山"; L.elem[5].checi="T006"; L.elem[5].day=18; L.elem[5].piaojia=60; L.elem[5].discut=0.5; L.elem[5].totalnum=L.elem[5].lastnum=100; L.elem[6].endstop="峡江"; L.elem[6].checi="T007"; L.elem[6].day=18; L.elem[6].piaojia=20; L.elem[6].discut=0.5; L.elem[6].totalnum=L.elem[6].lastnum=100; returnL; } } voidChaXun(SqList&L) { intn1; do{ char*endstop=newchar[100]; cout<<"*******查票窗口********"< cout<<"请输入终点站名: "; cin>>endstop; for(inti=0;i { if(strcmp(L.elem[i].endstop,endstop)==0) { cout< "< cout<<"日期: "<<"1月"< cout<<"车次: "< cout<<"车厢号: "<<"1"< cout<<"票价: "< cout<<"(学生5折): "< cout<<"余票量: "< cout<<"总票量: "< break; } if(i==L.length-1)cout< "< } cout<<"1.返回主菜单;2.继续"< cin>>n1; }while(n1==2); } voidDingPiao(SqList&L) { intn2=2,zhekou; intnum; floatmoney; char*endstop=newchar[100]; char*name=newchar[100]; char*zhengjian=newchar[100]; do { cout< cout< "; cin>>endstop; cout<<"订票数: "; cin>>num; for(inti=0;i { if(strcmp(L.elem[i].endstop,endstop)==0)//有票 { if(L.elem[i].lastnum==0) { cout< "< cout< cin>>n2; } elseif(num>L.elem[i].lastnum) { cout< "< cout< cin>>n2; } else { cout< "< cout<<"姓名: "< cin>>name; cout<<"能不能打折(1: 能,2: 不能)"< cin>>zhekou; while(zhekou! =1&&zhekou! =2) { cout<<"输入错误"< cin>>zhekou; } if(zhekou==1) { cout<<"学生证号码: "< cin>>zhengjian; } else { cout<<"身份证号码: "< cin>>zhengjian; } cout< "< cout<<"南昌--"< "< cout<<"日期: "<<"1月"< cout<<"车次: "< cout<<"车厢号: "<<"1"< cout<<"姓名: "< cout<<"证件号码: "< if(zhekou==1) { cout<<"(学生5折): "< money=L.elem[i].piaojia*L.elem[i].discut*num; } else { cout<<"票价: "< money=L.elem[i].piaojia*num; } cout<<"订票数: "< cout<<"座位号: "; //有退票优先卖退票 intk=0;//k为买到的票是退票的数目 for(intj=L.elem[i].tuipiaoshu-1;j>=0;j--) { cout<<""< k++; if(k>=num)break; } if(k { for(intj=0;j cout<<""< } cout< "< cout<<"1.确认;2.取消;3.返回主菜单"< cin>>n2; if(n2==1) { cout<<"订票成功! "< L.elem[i].lastnum-=num; LinkListp,s;//用座位号记录购票人信息 p=L.elem[i].la; s=newLNode; if(! s) { cout<<"内存分配失败! "< } else { s->next=p->next; p->next=s; s->dingnum=num; s->fufei=money; s->zhekou=zhekou; s->name=newchar[100]; s->zhengjian=newchar[100]; strcpy(s->name,name); strcpy(s->zhengjian,zhengjian); intindex=0;//座位号 while(L.elem[i].tuipiao>0)//买到的票是退票 { intj=L.elem[i].tuipiaoshu-1; s->zhuoweihao[index++]=L.elem[i].tuipiao[j]; L.elem[i].tuipiaoshu--; if(index>=num)break; } while(index { s->zhuoweihao[index++]=L.elem[i].maipiao++; } } } } break; } } } while(n2==2); } voidTuiPiao(SqList&L) { intn3=2,k; LinkListp; char*name=newchar[100]; char*zhengjian=newchar[100]; char*endstop=newchar[100]; do { cout< cout<<"证件号: "< cin>>zhengjian; for(inti=0;i { if(! (strcmp(L.elem[i].endstop,endstop)==0)) { p=L.elem[i].la; if(! p->next)cout<<"没有该购票者"< else { p=p->next; while(! (strcmp(p->zhengjian,zhengjian)==0)&&p->next)p=p->next; if(strcmp(p->zhengjian,zhengjian)==0) { cout< "< cout<<"南昌-->"< cout<<"日期: "<<"1月"< cout<<"车次: "< cout<<"车厢号: "<<"1"< cout<<"姓名: "< cout<<"证件号码: "< if(p->zhekou==1) { cout<<"票价: "< } else { cout<<"票价: "< } cout<<"订票数: "< cout<<"座位号: "; for(intj=0;j { cout<<""< } cout< "< cout<<"退几张? "< cin>>k; if(k>p->dingnum) { cout<<"你只有"< "< cout<<"1.重新确定;2.返回主菜单"< cin>>n3; } else { cout<<"1.确认;2取消;3.返回主菜单"< cin>>n3; if(n3==1) { cout<<"退票成功! "< for(inti1=L.elem[i].tuipiaoshu,i2=p->dingnum-1;i1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 任务书