课设--任务书

更新时间:2024-05-02 21:51:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程设计(论文)任务书

软件 学 院 14软件+电气 专 业 2 班

一、课程设计(论文)题目 火车售票系统 二、课程设计(论文)工作自2016 年 1 月 4 日起至 2016 年1 月 10 日止。

三、课程设计(论文) 地点: 创新大楼303 四、课程设计(论文)内容要求: 1.课程设计的目的

《数据结构》课程设计是计算机科学与技术专业集中实践性环节之一,是学习完 《数据结构》课程后进行的一次全面的综合练习。目的是要达到理论与实际应用相结 合,使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际 问题在计算机内部表示出来,并培养良好的程序设计技能。

要求能从实际应用问题出发,合理地选择数据结构,设计相应的数据处理算法, 并对算法进行必要的分析;合理选择编程工具,实现数据的物理结构和相应的数据处 理算法;对算法进行调试和测试,并对调试及测试结果进行分析;针对数据结构及算 法的设计、调试及测试过程认真写出设计分析报告。

2.课程设计的任务及要求 1)基本要求

(1)要充分认识课程设计的重要性,认真做好上机前的各项准备工作; (2)独立按时完成规定的工作任务,不得弄虚作假、抄袭他人内容;

(3)课设过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、

按质、按量完成课程设计;

(4)按规范撰写课程设计报告,对设计进行总结和讨论。

2)课程设计论文编写要求

(1)要按照书稿的规格撰写打印课程设计论文;

(2)论文包括任务书、目录、绪论、正文、总结、参考文献、附录等; (3)正文中要有问题描述与分析、算法的设计、算法的实现、调试分析与结果; (4)课程设计论文装订按学校的统一要求完成

1

3)课设考核

(1)考勤和态度;

(2)任务的难易程度及设计思路; (3)动手调试能力;

(4)论文撰写的水平、格式的规范性。

4)课程设计进度安排

内容 天数 地点 构思及收集资料 1 创新大楼 程序设计与调试 1 创新大楼 撰写论文 1 创新大楼

5)具体任务及要求

⑴在售票、退票、查询剩余票等环节中,都必须显示出车票的信息,即车次、车厢、座位情况。

⑵为简单起见,在此假设所有出售的车票均为同一车次的车票。 ⑶购票时,可以显示余票信息,并可以选择买哪张票。

⑷退票时,必须是车站售出的车票才能退,否则视为无效票,不能退票,而且退票可以再次销售。

⑸演示程序以用户和计算机的对话方式进行。

学生签名:

2016年 1 月 4 日

课程设计(论文)评审意见

(1)考勤和态度 :优( )、良( )、中( )、一般( )、差( ) (2)任务难易及设计思路 :优( )、良( )、中( )、一般( )、差( ) (3)动手调试能力评价 :优( )、良( )、中( )、一般( )、差( ) (4)论文撰写水平及规范性评价:优( )、良( )、中( )、一般( )、差( )

评阅人: 职称: 讲师

年 月 日

2

目 录

1 绪 论 ........................................................................................... 4

1.1 课设的目的 ............................................................................................ 4 1.1.1预期的结果 ......................................... 4

2需求分析 .......................................................................................... 4 3概要设计 .......................................................................................... 4 4详细设计 .......................................................................................... 5 5编码实现 .......................................................................................... 6 6调试分析与结果 .............................................................................. 7 7课设总结.............................................9 参考文献 ........................................................................................... 10 附 录.............................................................................................. 11

3

姓名——题目名称

1 绪 论

1.1 课设的目的

编出一个程序,实现用户可以从网上购买火车票,可以从网上查询还有没有火车票,还有多少票。也可以从网上退掉一些不需要的票。

1.1.1预期的结果

通过我的努力,我对程序有了一个大致的框架构思,我觉得我能设计出能实现以上功能的程序,并且能够实现上述操作,能够进行网上查票,订票与退票。但是程序还不够严谨,我会努力查阅书籍,尽力完善程序。

2需求分析

现在越来越多的人依赖手机,人们用手机上网。如果可以在网上购买火车票,可以省去许多不必要的麻烦,也可以让火车站免于因人们排队购买火车票而造成拥挤。

3概要设计

我用的是c++来书写这个程序,我是根据程序的需求过程来书写程序的顺序。在编写这个程序的时候,我翻阅了相关的书籍,然后上网参考了别人写的程序结构,了解了程序的书写方法,然后写完了程序。在程序中我用顺序表来存储,用do while 来循环订票,判断是否输入错误。以上就是我的设计思路

4

4详细设计

4.1 流程图

火车票网上售票系统

退出 退票 订票 查票

4.2 算法设计

查票

输入终点站与票数 输入终点 输出信息 输入个人信息

退出 核对信息 退出 退票

输入终点站,姓名与证件号

系统核对

5

输出信息

姓名——题目名称

5编码实现

数据体结构声明:#include

#include using namespace std;

构造与初始化单链表:void InitList_L(LinkList &L)

{

L=new LNode; L->next=NULL; }

typedef strucy {

struct Tickets *elem; int length; int listsize; }SqList;

用swich case算法来开始输入: switch(n)

{

case 1:ChaXun(L);break; case 2:DingPiao(L); break; case 3:TuiPiao(L); break; case 4:TuiChu();break; }

6

6调试分析与结果

进入程序根据提示输入数字如图1;然后进入查票界面后输入终点站如

图2.

图1

图2

7

姓名——题目名称

返回主界面后输入2进入订票界面后输入相关信息后如图3所示

图3

返回主界面后进入退票系统后根据提示输入信息后如图4所示

图4

8

华东交通大学课程设计

退完票后返回主界面后进入退出系统如图5所示

图5

7 课设总结

这个程序虽然不是很复杂,但是我努力后的作品,在编写的过程中虽

然很多不懂得地方,但是我通过查阅书籍和别人沟通交流,最终克服了那些问题。

但是在编程的过程中,由于练得少,所以比较生疏,总是忘记加一些字符,但我以后会努力练习,争取彻底弄懂。

通过这次的课程设计,我收获颇丰。这次的实习让我明白了编写一个程序系统的过程是多么的辛苦,哪怕是一个简单的程序也需要花费很大的心思来思考,需要考虑到很多方面的问题。编程的过程虽然是枯燥乏味的,但当我们的努力得到回报之后,那时我们就会觉得吃再多的苦也是值得的。 通过这次课设我学到了更多知识,因为经过了自己认真翻书查阅,记得更加清楚。

9

姓名——题目名称

参考文献

[1] 严蔚敏,吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社, 2007.

[2] 软件开发技术联盟. C语言自学视频教程. 北京;清华大学出版社;2010

[3] 杨开城. C语言程序设计教程,实验与练习.北京:人民邮电出版社,2005

[4] 杨彩霞. C语言程序设计实验指导与习题解答.北京;中国铁道出版社,2006

[5]王贺艳.C语言程序设计综合实训.北京:科学出版社,2005

10

华东交通大学课程设计

附 录

源代码

#include #include using namespace std;

typedef struct LNode {

struct LNode *next; char* name; int dingnum; char* zhengjian; int chexiang;

int zhuoweihao[300]; int zhekou;

float fufei; }LNode,*LinkList;

typedef struct Tickets { char* endstop; char* checi; float piaojia; float discut; int day; int totalnum; int lastnum; int tuipiao[300]; int tuipiaoshu; int maipiao; LinkList la; }Tickets;

11

姓名——题目名称

void InitList_L(LinkList &L) //初始化单链表 {

L=new LNode; L->next=NULL; }

typedef struct //构造顺序表 {

struct Tickets *elem; int listsize; int length; }SqList;

SqList Create_Sq(SqList &L)//初始化并创建顺序表 {

L.length=7;

L.elem = new Tickets[7];

if (!L.elem) cout<<\存储失败!\ for(int j=0;j

L.elem[j].tuipiaoshu=0;

L.elem[j].maipiao;//座位号从1开始 }

for(int i=0;i

InitList_L(L.elem[i].la); //创建顺序表 L.elem[0].endstop=\九江\ L.elem[0].checi=\ 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=\ L.elem[1].day=18;

L.elem[1].piaojia=37.5;

12

华东交通大学课程设计

L.elem[1].discut=0.5;

L.elem[1].totalnum=L.elem[1].lastnum=100; L.elem[2].endstop=\婺源\ L.elem[2].checi=\ 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=\ 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=\ 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=\ 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=\ 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; return L; } }

void ChaXun(SqList &L)

13

姓名——题目名称

{

int n1; do{

char *endstop=new char[100];

cout<<\查票窗口********\ cout<<\请输入终点站名:\ cin>>endstop;

for(int i=0;i

if(strcmp(L.elem[i].endstop,endstop)==0) {

cout<\:\

cout<<\日期:\月\日\ cout<<\车次:\ cout<<\车厢号: \

cout<<\票价:\ cout<<\学生5折):

\ cout<<\余票量:\ cout<<\总票量:\ break; }

if(i==L.length-1)cout<

cout<<\返回主菜单;2.继续\ cin>>n1;

}while(n1==2); }

void DingPiao(SqList &L) {

int n2=2,zhekou; int num;

float money;

char *endstop=new char[100]; char *name=new char[100];

14

华东交通大学课程设计

char *zhengjian=new char[100]; do {

cout<>endstop;

cout<<\订票数:\ cin>>num;

for(int i=0;i

if(strcmp(L.elem[i].endstop,endstop)==0) //有票 {

if(L.elem[i].lastnum==0) {

cout<

cout<>n2; }

else if(num>L.elem[i].lastnum)

{

cout<>n2; } else

{

cout<>name;

cout<<\能不能打折(1:能,2:不能)\ cin>>zhekou;

while(zhekou!=1&&zhekou!=2) {

cout<<\输入错误\ cin>>zhekou;

15

姓名——题目名称

}

if(zhekou==1) {

cout<<\学生证号码:\ cin>>zhengjian; }

else {

cout<<\身份证号码:\ cin>>zhengjian; }

cout<

cout<<\日期:\月\日\ cout<<\车次:\ cout<<\车厢号: \ 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<<\座位号:\ //有退票优先卖退票

int k=0; //k为买到的票是退票的数目

for(int j=L.elem[i].tuipiaoshu-1;j>=0;j--) {

cout<<\ k++;

if(k>=num)break;

16

华东交通大学课程设计

}

if(k

for(int j=0;j

cout<<\ }

cout<>n2; if(n2==1) {

cout<<\订票成功!\ L.elem[i].lastnum-=num;

LinkList p,s; //用座位号记录购票人信息 p=L.elem[i].la; s=new LNode; if(!s) {

cout<<\内存分配失败!\ } else {

s->next=p->next; p->next=s;

s->dingnum=num; s->fufei=money; s->zhekou=zhekou;

s->name=new char[100];

s->zhengjian=new char[100]; strcpy(s->name,name);

strcpy(s->zhengjian,zhengjian); int index=0; //座位号

while(L.elem[i].tuipiao>0) //买到的票是退票 {

int j=L.elem[i].tuipiaoshu-1;

s->zhuoweihao[index++]=L.elem[i].tuipiao[j];

17

姓名——题目名称

L.elem[i].tuipiaoshu--; if(index>=num)break; }

while(index

s->zhuoweihao[index++]=L.elem[i].maipiao++; } } } }

break; } } }

while(n2==2); }

void TuiPiao(SqList &L) {

int n3=2,k; LinkList p;

char *name=new char[100];

char *zhengjian=new char[100]; char *endstop=new char[100]; do {

cout<>zhengjian;

for(int i=0;i

if(!(strcmp(L.elem[i].endstop,endstop)==0)) {

p=L.elem[i].la;

if(!p->next)cout<<\没有该购票者\ else {

p=p->next;

18

华东交通大学课程设计

while(!(strcmp(p->zhengjian,zhengjian)==0)&&p->next) p=p->next;

if(strcmp(p->zhengjian,zhengjian)==0) {

cout<\

cout<<\日期:\月\日\ cout<<\车次:\ cout<<\车厢号: \ cout<<\姓名:\

cout<<\证件号码:\ if(p->zhekou==1) {

cout<<\票价:\ }

else {

cout<<\票价:

\ }

cout<<\订票数:\ cout<<\座位号:\

for(int j=0;jdingnum;j++) {

cout<<\ }

cout<>k;

if(k>p->dingnum) {

cout<<\你只有\张票,请重新确认!\ cout<<\重新确定;2.返回主菜单\ cin>>n3; } else

19

姓名——题目名称

{

cout<<\确认;2取消;3.返回主菜单\ cin>>n3;

if(n3==1) {

cout<<\退票成功!\ for(int

i1=L.elem[i].tuipiaoshu,i2=p->dingnum-1;i1p->dingnum-k-1;i1++,i2--) {

L.elem[i].tuipiao[i1]=p->zhuoweihao[i2]; }

L.elem[i].tuipiaoshu+=k; L.elem[i].lastnum+=k;

if(k==p->dingnum) {

LinkList q=L.elem[i].la; while(q->next!=p)q=q->next; q->next=p->next; free(p); n3=3; } else {

if(p->fufei==p->dingnum*L.elem[i].piaojia)p->fufei-=L.elem[i].piaojia*k;

else {

p->fufei-=L.elem[i].piaojia*k*L.elem[i].discut; }

p->dingnum-=k;

cout<<\你还有\张票\ n3=3; } }

20

华东交通大学课程设计

} } else {

cout<<\没有该购票者购票的信息!请重新确认!\ n3=3; } }

break; } }

}while(n3==2); }

void TuiChu() {

cout<

void main() {

LinkList L0; InitList_L(L0); SqList L;

Create_Sq(L); int n; do{

cout<

cout<<\本站车票信息******************\

cout<<\日期\目的地\\车次\票价 *\ for(int i=0;i

cout<<\

\月\日

21

姓名——题目名称

\ }

cout<<\查询 2.订票 *\

cout<<\退票 4.退出 *\

cout<<\

***************************************************\ cout<>n; switch(n) {

case 1:ChaXun(L); break; case 2:DingPiao(L); break; case 3:TuiPiao(L); break; case 4:TuiChu(); break; }

}while(n!=4); cout<

system(\系统终止,结束程序 }

22

本文来源:https://www.bwwdw.com/article/ccmg.html

Top