您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 房地产 > C语言版--火车站售票系统报告及代码解析
《C语言大作业》设计说明书---火车站售票系统学号:08030337姓名:朱陈立班级:08软件指导教师:曹中心2008年6月23日--6月27日目录第一章——————————————课程认识第二章——————————————课题选择第三章———————————总体设计与分析第四章————————————模块详细设计第五章————————————主要实现方法第六章————————————课程设计总结第七章————————————————结论第八章————————————————建议一、课程的性质、任务、目的C语言是非常优秀的程序设计语言,应用广泛,是高校计算机专业的一门专业基础课程;学好C语言,是学习计算机专业课程和用好计算机的重要基础。要学好C语言,应抓好理论学习、上机实验以及综合应用这三个环节。在《C程序设计》课程的学习中,学生在掌握C语言理论知识的同时,通过上机实验完成一定量的实践性题目,初步掌握了程序设计的基本思想、基本概念和基本方法。本课程是计算机专业的学生在完成了《C程序设计》课程的学习后,为加强学生对程序设计思想的理解、通过解决有一定代表性的小型综合应用类课题从而提高实际编程能力而设置的一门实践性课程。本课程为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机地结合起来,培养和锻炼学生分工协作、分析和解决实际问题并利用计算机求解问题的能力,以提高学生适应实际,实践编程的能力,从而掌握基本的程序设计过程和技巧,具备初步的高级语言程序设计和调试能力。二、课题选择(背景、意义、实用性……);背景:现今,人们的生活水平渐渐改善,生活质量也随之提高,人们的精神需求也大了,应此,出行旅游,或是走访亲友成了习以为常的事了,出行已成为现代人的家常便饭,汽车,火车,飞机等交通工具为我们提供了更多的方便。然而在售票中,就需要一个售票系统来帮助售票员来更为快捷,高效,方便的售票,同时也为了车站方面更好的管理票务,因此,一个好的车票管理系统就必不可少了。意义:选择车站售票系统作为课程设计的课题,就车站的售票流程等进一步了解车站的售票系统的原理。在编程过程中能力培养我们团结协作和项目管理能力:设计任务分配和模块划分、参考资料共享、系统基本信息的建立与共享、作业中技术难题的讨论与实验、系统的联合调试、文档资料的建立与维护。自学能力和文献查阅能力项目开发基本流程理解、规划和实施。程序调试能力:程序开发中常用的单步调试、断点设置、中间结果输出等。项目测试能力:掌握基本的测试要素,能完成单体测试和综合测试过程。良好的编程风格:代码缩进书写,合理划分子程序,为程序添加必要的注释以方便程序阅读和维护,采用菜单、图形或各种提示说明方便用户使用程序。实用性:火车站售票系统。随着列车的再次提速,车次也明显增加,新开路线增多,因此票务也变得越来越复杂,而一个便捷,高效的票务管理系统就必不可少了。三、总体设计与分析(总体框架图及简要功能说明);就我们的程序来说,总体框架图如下:上图就是简易的结构图,先制作一个主菜单,进入售票系统的主页面,上面的出现选择菜单,可以根据你输入的字符来选择进入那个部分,分别为管理员与售票员两种,另外,不管是管理员还是售票员,都有一个退出的选择,对于现实生活中的情况,由于在操作时的随意性很大,退出选项并不是退出系统,而是退回到主菜单,则又可以进行选择输入,也可以从管理跳到售票员,而这样就具有人性化了,在管理员修改资料库后必须要检查,所以就要进入售票系统,检查票务是否已经修改或删除完成,在主菜单中可以自由选择。在售票员的系统中又分类进行,划分了五个模块,有售票,换票,还有退票,最后一个就是退出了,可以退到主菜单,在售票中每次都会可以退到售票员。四、模块详细设计(流程图+说明+承担任务);售票员的总体框架图如下:退出火车站售票系统管理员售票员修改列车信息删除已无列车信息修改管理员密码售票换票退票修改售票员密码添加新增列车信息退出系统说明:售票员的程序中也包括了五个部分,分为售票,退票,换票和修改密码以及退出操作,前面的四个部分是基本操作,能够对原文件进行操作的程序,同样是退到主菜单的操作,每次基本操作玩了之后,又会自动转到售票员的主页面去,而退出和以上的管理员的是一样的,自动退到主菜单。下面主要介绍的是售票员的部分。五、主要实现方法(结构体、文件、函数、指针、主要程序段……);程序中用到的结构体如下:structtrian{charname[10];charqs[20];charzd[20];chardate[20];chartime1[20];chartime2[20];intprice;intnum;}tri[N],ticket[N];说明:在结构体中tri[N],ticket[N];由于一组两个人的分工不一样,所以在编程时售票员售票选择1换票选择2退出选择5退票选择3修改密码选择4主菜单由于喜好不一样就用了两个不一样的结构体变量,在拼凑时,由于用到的地方很多,难以逐个修改,应此就在定义结构体变量时,引用了两个不一样的变量,不过他们承载的功能是一样的,只是形式不一样而已。再来观察结构体,在结构体中定义了出发地,目的地,日期,出发时刻,到达时刻,还有价格,另外,为了高效便捷的记录下票的张数,以及座位号码,而座位号码又是根据票的张数来排的,这样有减少了计算机的工作量又简捷。文件:D:\\票.txtD:\\密码.txtD:\\secret.txt说明:在程序运行中总共会用得到以上三个文件,第一个是要调用的票务文件,里面总共包括了所有的票务信息,无论是在管理员还是售票员的程序里,自始至终都要用到这个文件,在管理员中,有对列车信息的修改,删除和新增,这些的变化都得在写进总的票务文件,要覆盖掉原来的文件,以保证售票员的买票有效正常。在售票员的程序里,一直是用的票务文件,由于售票员的业务会比较多,差不多票务文件每时每刻都在被修改,所以每次修改后都要被保存到该文件中。“密码”文件:该文件用于存放管理员的密码,在第一次运行中程序时必须要先初始化一个密码,这样才能进入管理员的界面,在才能进入票务文件。在密码的修改中每次修改密码后都必须把新的密码写入密码文件,否则在下次打开时还是原始的密码,而修改的并不能成功。详细见后面程序说明,简言之,就是存放管理员的的密码的文件。“secret”文件:该文见与密码文件是差不多的,它是用看来保存售票员的密码的,在程序初始化的时候也必须写入一个初始化的密码,在使用过程中如果要修改密码,则该文件就是用来保存密码的,当要换新的密码时,由于在后面程序中有相关操作,会自动将要换的密码写进secret文件,并自动将原文件覆盖掉,从而再次进入售票员的界面时则要输入的密码会修改成功,原来的密码就不能在用了,会有系统提示“密码输入有误!”。主要函数:(1)main函数:voidmain(){output();intn,t=0;while(t==0){printf(************************车站售票系统************************\n);printf(**********************请选择用户类型***********************\n1管理员2售票员3退出\n);scanf(%d,&n);system(cls);switch(n){case1:guanliyuan();break;case2:shoupiaoyuan();break;case3:t=1;break;default:printf(输入错误!!!\n);}}}说明:main函数,主要是编辑了主菜单,有三个选择,会出现选择来让使用人进入那个部分,有管理员和售票员两个,还有一个退出选项,使用了switch语句进行操作,先假定一个变量t,因为存在输入错误的可能,只有当预设条件不成立时才会跳出循环,所以假设t初始值为0,只有当条件成立时才能继续执行,即t=0时;当输入错误的时候,则将t的值重新赋值给1,则引起条件改变,跳出循环。因此,一个主菜单就完成了。(2)shoupiaoyuan函数voidshoupiaoyuan(){charkey[128],key1[128],id1[128],id[128]=2;FILE*fp;/*fp=fopen(D:\\secret.txt,wb);//////第一次输入售票员密码,并将密码写进文if(fp==NULL)文件{printf(OpenError!\n);return;}chars[128]=2;fprintf(fp,%s,s);fclose(fp);*////////////即初始化密码,也可用于一键还原。fp=fopen(D:\\secret.txt,rb);if(fp==NULL){printf(OpenError!\n);return;}fscanf(fp,%s,key);intflag=1;intn,i=0;printf(\t\t\t*********售票员*********\n);printf(请输入工号:);scanf(%s,id1);printf(请输入密码:);while(1)//////////////////////////////////密码出入处理,出入字符,输出“*”号{key1[i]=getch();if(key1[i]==13)break;putchar('*');i++;}key1[i]='\0';printf(\n);system(cls);/////////////////////////////输入密码清屏一次if(strcmp(id1,id)==0&&strcmp(key1,key)==0){printf(\t\t\t***********welcome*********\n);while(flag==1)///////////flag标记,用于实现循环{printf(请选择操作:\n1售票\n2换票\n3退票\n4修改工作密码\n5退出\n);scanf(%d,&n);switch(n){case1:sell();break;case2:change();break;case3:back();break;case4:secret();break;case5:flag=0;break;default:printf(输入错误,请重新输入!\n);}}}elseprintf(登陆错误,前重新输入!\n);system(cls);fclose(fp);}说明:在第一个被取消掉的部分就是密码的初始化程序,同时也用了switch函数,进行了函数选择运行的工作,下一部分中,从secret的文件中读出原始密码,在提示语后输入字符后就进行与原密码的比对,如果相符就可以进如下一步操作,不相符的话就输出“登陆错误,请重新输入!”,在售票员的主界面中也有选择操作,再次运用了switch语句,就不做过多的介绍了。(3)sell函数-----售票函数voidsell(){time_tnow;now=time(NULL);chars1[128],s2[128],s3[128],s4[128];chara;FILE*fp;inti,len,t,n,m=1;fp=fopen(D:\\票.txt,rb);if(fp==NULL){printf(OpenError!\n);return;}for(i=0;!feof(fp);i++)////////读取文件信息,逐条读出,当没有时结束fread(&ticket[i],sizeof(structtrian),1,fp);len=i-1;printf(请输入出发地(全拼):);scanf(%s,s1);printf(请输入目的地(全拼):);scanf(%s,s2);for(i=0;ilen;i++){当输入的字符串符合条件的话则输出符合的条件的语句if(strcmp(ticket[i].qs,s1)==0&&strcmp(ticket[i].zd,s2)==0){printf(%-10
本文标题:C语言版--火车站售票系统报告及代码解析
链接地址:https://www.777doc.com/doc-4352582 .html