hangenga)需求分析
本系统主要功能为:
2)浏览班次信息:可显示所有班次当前的状态(如果当前系统时间超过了某班次的发车时间,则显示“此班已发出”的提示信息);
3)查询班次信息;
4)售票和退票功能:
A、当查询出已定票人数小于额定量且当前系统时间小于发车时间时才能售票,自动更新已售票人数;
B、退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售人数。
在本程序设计中定义了一个公共结构体,结构体定义如下:
#define SIZE 3
struct busses
{ int num;
char outtime[6];
char startplace[10]; 最具有代表性的立春的古诗
char endplace[10];
int runtime;
int carry;
int crush;}bus[SIZE];
c)详细设计
在本程序设计中,定义了11个函数,分别是:welcome()欢迎界面函数、append()追加车次信息函数,用于题目要求的添加初始化数据,也可以用于添加过路车辆的信息、browse()浏览班次信息函数,浏览当前车次的况总、query()查询车次信息函数、info()调用append()输入数据函数、modify()修改车次信息函数、buyticket()买票函数、backticket()退票函数、see()显示车次信息函数、exitsystem()退出系统函数和main()主函数。
在主函数中,首先在屏幕上显示出“输入数据”、“浏览信息”、“追加数据”、“查询信息”、“修改数据”、“订购车票”、“退订车票”、“退出系统”八个功能模块。在每个模块后对应一个数字,用于选择相应模块,完成所需操作。
国外美食节目输入数字时,如果数据超过1—8或输入的不是数字,系统提示“输入错误,重新输入”。
程序开始运行,选择1,主函数调用info(),对系统进行初始化班次信息。info()函数调用append(),将输入的数据送入结构体。默认是输入三条数据,输完一条显示出该条信息,亦可以利用append()函数添加任意条班次信息。
选择2,浏览班次信息,主函数调用browse()函数利用访问结构体变量的方法,显示出当前班次况总,并判断每班车是否已发出,显示出提示信息。
选择3:主函数调用append()函数添加需要的数据。首先系统提示添加的班次数,根据用户输入的数字进行相应循环几次添加数据。
选择4:主函数调用query()查询信息。系统根据用户输入的班次循环比较结构体中的记录,查到后访问结构体输出该条记录,查不到,提示输入有误是否
继续查。
选择5:主函数调用mod
ify()修改数据。首先显示出当前班次况总,根据用户输入的班次循环比较查相应班次的记录,到则显示出此条记录,提示用户输入修改信息,输入完后提示用户是否继续修改数据,按下’Y’、’n’或’N’、’n’,继续查或返回。
选择6:主函数调用buyticket()买票函数。首先显示出当前车次况总,根据用户输入的班次循环比较结构体中的记录,到相应记录,判断额定人数和已定票人数,若额定人数未满,系统时间小于发车时间,购票成功;否则不能购票,提示用户是否继续购买车票,相应按下’Y’、’n’或’N’、’n’,继续买票或返回。
选择7:主函数调用backticket()退票函数。首先显示出当前车次况总,根据用户输入的班次循环比较结构体中的记录,到相应记录,判断额定人数和已定票人数,若额定人数未满,系统时间小于发车时间,退票成功;否则不能退票,提示用户是否继续购买车票,相应按下’Y’、’n’或’N’、’n’,继续退票或返回。
选择8:主函数调用exitsystem()函数,利用exit(0)函数,退出本系统。
d)调试分析
若运行程序:
车次 发车时间 起点 终点 行车时间 额定载量 已定票人数
1 8:00 铜陵 蚌埠 300 30 23
2 11:00 上海 苏州 450 40 29
3 21:00 凤阳 蚌埠 40 50 50
车次 发车时间 起点 终点 行车时间 额定载量 已定票人数
1 8:00 铜陵 蚌埠 300 30 23
2 11:00 上海 苏州 450 40 29
3 21:00 凤阳 蚌埠 40 50 50
请输入追加车次个数:1
车次:4
发车时间:23:00
起点:乌镇
终点:夏门
行车时间:500
额定载量:32
已定票人数:21
车次 发车时间 起点 终点 行车时间 额定载量 已定票人数
4 23:00 乌镇 夏门 500 32 21
输入车次:2
您所要查询的信息为:
车次 发车时间 起点 终点 行车时间 额定载量 已定票人数
1 8:00 铜陵 蚌埠 300 30 23
您是否要继续查(Y/N):n
按任意键返回主菜单…
车次 发车时间 起点 终点 行车时间 额定载量 已定票人数
1 8:00 铜陵 蚌埠 300 30 23
2 11:00 上海 苏州 450 40
29
3 21:00 凤阳 蚌埠 40 50 5
0
4 23:00 乌镇 夏门 500 32 21
请输入修改车次:4
车次 发车时间 起点 终点 行车时间 额定载量 已定票人数
4 23:00 乌镇 夏门 500 32 21
请输入修改信息:
车次:5
发车时间:23:00
起点:广州
终点:夏门
行车时间:550
额定载量:20
男孩起名字大全2013已定票人数:23
您是否要继续修改(Y/N):n
# 请输入购票车次:6
没到您所需购票的车次,请重新输入:
请输入购票车次:5
购票成功!
您是否要继续购票(Y/N):n
人数已满或车已发出,不能购买车票!
您是否要继续购票(Y/N):y
# 请输入退票车次:6
没到您所需退票的车次,请重新输入:
请输入退票车次:2
退票成功!
您是否要继续退票(Y/N):n
人数已满或车已发出,不能退票!
您是否要继续退票(Y/N):y
在程序运行时,存在两个问题需要加以改进,就是在遇到输入班次的时候,如果输入了一个不是整数的数值,程序将进入死循环。其次在修改数据时,应设置默认值,用户不需修改直接按下回车键保留原有数据。这二点是需要完善的。
五一放假调休5天 还能跨省出行吗课程设计总结
第一次以实践的方式来检验我们对这门课程的掌握情况,通过车票订购管理系统课程设计,我们感触颇多。
我们经过商讨,决定选题《车票管理系统》课程设计,虽然有些难度,但为了检验自身所学程度、巩固知识、提高自己,我们没有被困难所动摇。
在刚开始的几天里,面对这个课程,我们有些茫然,每天跑图书馆,查阅资料,后来通过理解老师所给的程序设计模板,我们理清了一些思绪,开始着手做。程序设计的过程并不一帆风顺,因为我们三
个是分模块设计,起初没有统一格式和关键字,导致程序不能整合在一起,进行了大量的修改,浪费了不少时间。在后来的设计中,我们吸取前一次的经验,整合程序、统一修改。但问题的出现仍是层出不穷。比如说,判断输入的车次是否大于系统中原有的车次;如何定位在所查的车次上;以及如何利用循环判断,判断用户是否需要再进行其它操作。再比如,在程序调试的过程中,虽然编译成功,但运行时出现的问题是意想不到的,有时甚至检查不出到底是哪里出了错。于是我们三人就坐在一起,一起讨论、检查,想想是不是程序的逻辑错误;是不是应该再定义一个函数;是不是变量引用的错误;是不是输出
格式的错误等。经过不断运行、检查,我们到了不少问题的根源所在,再通过老师的指导,终于运行成功。
虽然
程序设计成功,我们都很高兴,但通过此次课程设计,我们对《C语言程序设计》和下学期要学习的《数据结构》有了新的认识:
1)C语言是一门很重要的基础课程,它和《数据结构》是紧密相连的,只有打好了C语言的基础,才能为学习《数据结构》铺下道路;
2)C语言并不是我们想象中的那么简单,其所包含的相关内容,如图形处理,各种软、硬件设置函数相当广泛、灵活、有难度,想学好C语言并不简单,必须以认真的态度对它进行系统且深入的学习;
3)作为计算机专业学生,要掌握C语言面向对象的程序设计,掌握算法设计的精髓,而不是死背死抠概念。尤其是在《数据结构》这门课中,算法是程序的灵魂,掌握算法设计是学好语言的关键所在。
总之,通过此次实践技能,使我们对C语言和数据结构有了更深一步的认识,充分了解了学习语言的重要性、注意的事项和应避免的问题,切不可自以为是,要以谦虚谨慎的态度学习。
火车票订购系统源程序:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<dos.h>
#define SIZE 3
#define FORMAT " %-3d\t %-6s\t\t%-6s\t %-6s %-10d %-10d %-d\n"
struct busses
{ int num;
char outtime[6];
char startplace[10];
char endplace[10];
int runtime;
int carry;
int crush;}bus[SIZE];
int n,j,n1=0,a=0;
void welcome();
void append();
void browse();
void query();
void info();
void modify();
void buyticket();
void backticket();
void exitsystem();
void see();
void main()
{welcome();
loop1:textcolor(15);
textbackground(1);
clrscr();
printf("\n");
printf("\t\t\t * * * * * * * * * * * * * *\n");
printf("\t\t\t * 车票管理系统 *\n");
printf("\t\t\t * * * * * * * * * * * * * *\n");
printf("--------------------------------------------------------------------------------");
printf("\t\t 输入数据:Input 1\n");
printf("\t\t 浏览信息:2\n");
printf("\t\t 追加数据:3\n");
printf("\t\t 查询信息:Query 4\n");
printf("\t\t 修改数据:5\n");
printf("\t\t 订购车票:Buy ticket ...........6\n");
printf("\t\t 退订车票:Return ticket ...........7\n");
printf("\t\t 退出系统:Exit system ...........8\n");
printf("--------------------------------------------------------------------------------");
printf(";请在(1-8)之间选
择您要的操作:");
scanf("%d",&n);
while(sizeof(n)!=2 || n<=0 || n>8 )
{
printf(";您输入的数据超过1-8!\n");
printf(";请重新输入:");
scanf("%*c%d",&n);
}
switch(n)
{
case 1:info();break;
case 2:browse();break;
case 3:printf(";添
加车次!\n\n请输入您要添加的记录数:");scanf("%d",&n1);for(j=0;j<n1;j++)append();break;
case 4:query();break;
case 5:modify();break;
case 6:buyticket();break;
case 7:backticket();break;
case 8:exitsystem();break;
}
goto loop1;
}
void append()
{int i=a;
printf(";请输入班次:\nNo:");
scanf("%d",&bus[i].num);
printf(";请输入发车时间:");
scanf("%s",bus[i].outtime);
printf(";请输入起点:");
scanf("%s",bus[i].startplace);
printf(";请输入终点:");
scanf("%s",bus[i].endplace);
printf(";请输入行车时间:");
scanf("%d",&bus[i].runtime);
printf(";请输入额定载量:");
scanf("%d",&bus[i].carry);
printf(";请输入实际人数:");
scanf("%d",&bus[i].crush);
printf(";车次\t发车时间\t起点\t 终点 行车时间 额定载量 实际人数\n");林妙可沙滩照
printf(FORMAT,bus[i].num,bus[i].outtime,bus[i].startplace,bus[i].endplace,\
bus[i].runtime,bus[i].carry,bus[i].crush);
a++;
sleep(1);
return;
}
void info()
{
int i;
for(i=0;i<SIZE;i++)
{
append();
}
printf(";按任意健回主界面...");
getch();
return;
}
void browse()
{ int i;
printf(";车次\t发车时间\t起点\t 终点 行车时间 额定载量 实际人数\n");
for(i=0;i<a;i++)
{ printf(FORMAT,bus[i].num,bus[i].outtime,bus[i].startplace,bus[i].endplace,\
bus[i].runtime,bus[i].carry,bus[i].crush);
}
printf(";按任意健回主界面...");
getch();
return;
}
void query()
{
int num,i;
char ch;
loop:printf(";请输入班次:");
scanf("%d",&num);
for(i=0;i<a;i++)
if(num==bus[i].num)
{
printf(";您所要查询的信息为:\n");
printf(";车次\t发车时间\t起点\t 终点 行车时间 额定载量 实际人数\n");
printf(FORMAT,bus[i].num,bus[i].outtime,bus[i].startplace,\
bus[i].endplace,bus[i].runtime,bus[i].carry,bus[i].crush);
}
if(num>a || num<0)
{
loop9: printf(";您输入的班次错误,是否重新输入(Y/N):");
scanf("%*c%c",&ch);
if(ch=='Y' || ch=='y')
goto loop;
else
if (ch=='N' || ch=='n')
return;
else
goto loop9;
}
else
{
printf(";按任意健回主界面...");
getch();
return;
}
}
void buyticket()
{ char ch;
int num,i;
loop2:see();
printf(";请输入购票车次:");
scanf("%d",&num);
for(i=0;i<a;i++)
if(num==bus[i].num)
bre
发布评论