C语言课程设计报告Word文件下载.docx
《C语言课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
进入系统后,首先选择购票方式,输入汽车班次或发车时间后,即显示出售票情况。
对“退票”功能:
首先输入所退票的班次,在确认输入信息正确并且车未发出后则退票成功,并修改系统中的相关信息。
对“显示当前售票情况”功能:
将当前的售票情况按相应的格式输出。
对“保存当天数据”功能:
打开程序所在的文件,在文件中按相应格式输出对应的汽车班次情况,然后关闭文件。
通过“Cur_tim”函数获取系统当前时间。
2.2部分模块流程图
3.程序代码设计:
A·
menue函数:
/*菜单项*/
voidmenue(void)
{
system("
cls"
);
/*清屏*/
printf("
\t\t*售票系统*\n"
\t1.售票\n"
\t2.退票\n"
\t3.显示当前售票情况\n"
\t4.保存当天数据\n"
\t5.退出\n"
请选择:
"
}
B·
售票函数:
/*售票*/
voidSell(structTickittickit[],intn)
intselect,flag=1,i,no,flag2=1,flag1=1,H,M;
售票:
按7退出\n"
请选择购票方式:
5-按班次购票;
6-按发车时间购票;
按7退出:
scanf("
%d"
&
select);
/*等待用户选择购票方式*/
while(select!
=7)/*非退出*/
{
switch(select)
case5:
/*按班次售票*/
printf("
请输入汽车班次:
scanf("
no);
for(i=0;
i<
5;
i++)/*遍历所有班次*/
{
if(no==tickit[i].No)/*捕获输入班次*/
{
intcount;
charmin;
flag2=0;
if(Hour>
tickit[i].Start_Time[0]||(Hour==tickit[i].Start_Time[0]&
&
Min>
tickit[i].Start_Time[1]))/*已发出的班次不能购票*/
{
printf("
对不起,该车已发出。
不能购票.\n"
break;
}
printf("
%d\n"
tickit[i].No);
详细信息:
\n"
min=change(tickit[i].Start_Time[1]);
班次\t发车时间\t载客量\t已售\n"
%d\t%d:
%c%d\t\t%d\t%d\n"
tickit[i].No,tickit[i].Start_Time[0],min,tickit[i].Start_Time[1],tickit[i].Pasenger_Total,tickit[i].Sold_Ticklts);
请输入购票数量:
scanf("
count);
if(tickit[i].Sold_Ticklts+count<
=tickit[i].Pasenger_Total)
确认购买?
y/n\n"
if(_getch()=='
y'
||_getch()=='
Y'
)
{
tickit[i].Sold_Ticklts+=count;
/*购买成功,已售票额更新*/
printf("
购买成功!
}
else
票额不足!
break;
}
}
if(flag2)printf("
该班次不存在,请核对后购买!
break;
case6:
/*按发车时间来购票(基本思路同上)*/
友情提示:
汽车时间表:
printf("
06:
40\t09:
30\t12:
00\t14:
30\t16:
00\n"
请输入发车时间(时分格式):
scanf("
%d%d"
H,&
M);
for(i=0;
i++)
{
if(H==tickit[i].Start_Time[0]&
M==tickit[i].Start_Time[1])
intcount;
flag1=0;
if(Hour>
tickit[i].Start_Time[1]))
break;
min=change(tickit[i].Start_Time[1]);
if(tickit[i].Sold_Ticklts+count<
if(_getch()=='
{
tickit[i].Sold_Ticklts+=count;
printf("
}
else
printf("
}
if(flag1)printf("
该时间班次不存在,请核对后购买!
break;
default:
操作错误!
}
}
C·
退票函数:
/*退票*/
voidBack(structTickittickit[])
intno;
\t\t*售票系统*\n\n\t\t退票:
请输入所退车票班次:
/*接收用户输入退票班次*/
if(Hour>
tickit[no].Start_Time[0]||(Hour==tickit[no].Start_Time[0]&
tickit[no].Start_Time[1]))/*已发出的班次不能退*/
printf("
不能退票.\n"
}
else
intcount;
请输入退票数额:
scanf("
/*更新*/
tickit[no-1].Sold_Ticklts-=count;
tickit[no-1].Back_count+=count;
退票成功!
按任意键继续....."
_getch();
/*显示当前*/
voidShow_Curr(structTickittickit[],intn)
inti;
\t\t*售票系统*\n当前票额信息:
for(i=0;
n;
charmin;
min=change(tickit[i].Start_Time[1]);
}
按任意键退出....."
D·
保存当日数据save函数:
/*保存当日数据*/
voidSave(structTickittickit[],intn)
FILE*p;
p=fopen("
Tickit.txt"
"
w"
/*文件指针。
以“写”的方式打开文件“Tickit.txt”,不存在则创建*/
/*开始写入数据*/
fprintf(p,"
售票情况:
班次\t发车时间\t载客量\t已售\t曾退票数\n"
i++)/*遍历结构体数组中的信息,写入文件*/
fprintf(p,"
%c%d\t\t%d\t%d\t%d\n"
tickit[i].No,tickit[i].Start_Time[0],min,tickit[i].Start_Time[1],tickit[i].Pasenger_Total,tickit[i].Sold_Ticklts,tickit[i].Back_count);
/*写入结束*/
保存成功!
fclose(p);
/*关闭已打开的文件*/
E·
加载车票信息load函数:
/*加载车票信息*/
voidLoad(structTickittickit[])
for(i=1;
=5;
i++)/*初始化结构体数组*/
tickit[i-1].No=i;
tickit[i-1].Sold_Ticklts=0;
tickit[i-1].Back_count=0;
/*开始加载*/
tickit[0].Start_Time[0]=6;
tickit[0].Start_Time[1]=40;
tickit[1].Start_Time[0]=9;
tickit[1].Start_Time[1]=30;
tickit[2].Start_Time[0]=12;
tickit[2].Start_Time[1]=0;
tickit[3].Start_Time[0]=14;
tickit[3].Start_Time[1]=30;
tickit[4].Start_Time[0]=16;
tickit[4].Start_Time[1]=0;
tickit[0].Pasenger_Total=tickit[4].Pasenger_Total=50;
tickit[1].Pasenger_Total=tickit[2].Pasenger_Total=tickit[3].Pasenger_Total=40;
/*结束*/
4.C程序设计总结:
这一次的C程序设计让我的C语言驾驭能力有了很大的提高。
从对老师给我们的课题目瞪口呆,到逐渐深入学习探索,再到不断修改调试程序,最后达到标准状态,整个过程中我学习了很多原来没有接触过的C语言知识,比如如何清屏,如何调用系统时间,同时也对很多原来不是很熟悉的知识进行了更深入的学习,比如结构体知识。
在编写程序的过程中,我也比较粗心,常常把字母,单词拼错,导致一些小的错误。
这些小的错误在程序设计过程中是完全可以避免的。
同时,在编程过程中,我深刻的意识到作为一名编程人员,耐心和细心是必不可少的优秀品质,通过本次设计,我的细心程度有所提高,也更加锻炼了做事耐心的优秀品质。
我还从总学到了一种比较高效的学习方法,就是理论与实践相结合的学习方法。
只有在理论的基础上加以实践,加以感受,才能更好的理解理论知识,才能更好的掌握需要学习的知识,从而更好的运用。
参考文献
[1]谭浩强,C程序设计(第二版),北京:
清华大学出版社,2007.1
[2]陈朔鹰,C语言程序设计习题集,北京:
人民邮电出版社,2003.6
附录:
程序清单:
#include<
stdio.h>
string.h>
stdlib.h>
conio.h>
time.h>
/*存储车票信息*/
structTickit
intNo;
/*车票编号*/
intStart_Time[2];
/*发车时间*/
intPasenger_Total;
/*最大票额*/
intSold_Ticklts;
/*已售票额*/
intBack_count;
/*退票数额*/
};
voidmenue(void);
/*菜单项*/
voidSell(structTickittickit[],intn);
/*售票模块*/
voidBack(structTickittickit[]);
/*退票模块*/
voidShow_Curr(structTickittickit[],intn);
/*显示当日信息*/
voidSave(structTickittickit[],intn);
/*文件存盘.txt文件格式*/
voidLoad(structTickittickit[]);
voidCur_Tim();
/*获取系统当前时间*/
charchange(intn);
/*转化输出*/
#defineN5/*定义车票种类数*/
intHour,Min;
/*全局变量,保存系统当前的时间*/
voidmain(void)
intselect;
structTickittickit[N];
Load(tickit);
/*加载车票*/
Cur_Tim();
/*获取系统时间*/
menue();
/*显示菜单*/
/*等待用户选择功能*/
=5)/*选择为非退出*/
intflag=1;
switch(select)/*根据用户选择进入相应模块*/
case1:
Sell(tickit,N);
case2:
Back(tickit);
case3:
Show_Curr(tickit,N);
case4:
Save(tickit,N);
default:
您的输入有误,请重新输入:
flag=0;
if(flag)