C语言会合上机实验报告 车票管理系统.docVIP

  • 2
  • 0
  • 约1.21万字
  • 约 20页
  • 2018-06-01 发布于贵州
  • 举报

C语言会合上机实验报告 车票管理系统.doc

C语言会合上机实验报告 车票管理系统

C语言集中上机报告 院 系: 计算机学院 班 级: xxx 姓 名: xxx 合 作 者: 无 指导教师: xxx 2009年 6月 11日 目 录 一.概述 3 二.总体方案设计 3 三.详细设计 5 四.程序的调试与运行结果说明 8 五.课程设计总结 10 六.后记 10 七.附录 11 参考文献 20 一 概述 课程设计的目的 熟练掌握C语言的应用及特点; 掌握函数声明、定义和使用的方法;熟练掌握C语言中的对文件进行操作的基本方法;熟练掌握结构体的使用方法;掌握链表的基本操作。 课程设计的要求 1.要求利用C语言面向过程的编程思想完成系统设计; 2.突出C语言的函数特征,以多个函数实现每一个子功能; 3.画出功能模块图; 4.进行简单的界面设计,能够实现友好交互; 5.具有清晰的程序流程图和数据结构的详细定义; 6.源码格式规范,要有适当的注释,使程序容易阅读。 课程设计的主要设计思想 这次设计的车票管理系统,实现了对车票的实时管理,功能包括录入、增加班次信息(信息用文件保存),浏览班次信息,查询路线以及售票和退票功能。主要使用了链表实现了数据的保存和修改,同时使用文件相关函数对文件进行同步。 二 总体方案设计 这个程序比较简单,主要分为菜单,浏览/查询,售票/退票,和增加数据四个部分。 采用了链表作为存储的方式,并实现了结构体与文件的同步修改,已经具备了题目要求的所有功能。这个程序由我个人完成。 在编程过程中遇到的关键问题有系统时间的获取与显示,从文件中读取链表,处理每天班次的人数刷新问题,以及如何提高代码的复用率等。 程序整体框图如下: 三 详细设计 程序结构以及各函数的具体功能 main.c: void main(); 程序入口,对文件进行打开和初始化后进入菜单 void menu(struct banci *head,struct banci *nw,FILE *data,unsigned int serial); 显示菜单,从主函数中得到各种信息,通过switch语句调用其他功能 operate.c: void update(struct banci *ut,FILE *data); 更新结构体中的各个数据,主要对日期进行处理,当班次更新后重新写入日期并将已订票人数清零 void displaybanci(struct banci *head, unsigned short mode); 作为整个程序中唯一的数据显示函数,显示班次信息,有3个显示模式 struct banci * addbanci(struct banci * tail, FILE *data,unsigned serial); 增加一条新的班次信息到链表末尾,并写入文件 void searchbanci(struct banci * head); 查找班次信息,可按班次号查询或按终点站查询 void piao(struct banci *head,FILE *data); 实现售票和退票功能,并自动更新文件 operate.h 声明结构体和各个自定义函数 部分函数的算法分析 1. 对文件进行打开和初始化。这个功能在主函数main()中完成。有关代码如下,具体功能解释在程序注释中。 FILE *data; struct banci *head,*nw; head=(struct banci*)malloc(sizeof(struct banci)); if((data=fopen(banci.dat,r+))==NULL) { data=fopen(banci.dat,w); printf(\n\n建立新文件,请至少输入一条班次记录\n); nw=addbanci(head,data,1); head=nw; } else if(fread(head,sizeof(struct banci),1,data)==0) //判断文件是否为空。fread()返回的是读取成功的数据块数目,返回0说明读取失败。若文件不为空则实现读取文件 { printf(\n\n数据文件是空的,请至少输入一条班次记录\n); nw=addbanci(head,data,1); head=nw; } else { nw=head; } while(1) //把整个链表从文件中读出来,同时获取目前的班次总数 { serial++;

文档评论(0)

1亿VIP精品文档

相关文档