- 2
- 0
- 约1.21万字
- 约 20页
- 2018-06-01 发布于贵州
- 举报
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)