回 帖 发 新 帖 刷新版面

主题:数据结构课程设计C描述 民航售票处的服务系统   源代码200行左右



[问题描述]
    设民航售票处的服务系统提供下列服务:
(1)查询航线:顾客提出终点站输出下列信息:
航班号.飞机号,星期几飞行,最近一天航班的日期和余票额.
(2)订票业务;据顾客要求(航班号,订票额)查询该航班票额情况,若有余票,办理售票手续,输出座位号;若已满员或票额不足,则另询顾客要求.若需要,可预约登记排队等候.
(3)退票业务:根据顾客情况(日期,航班)为顾客办理退票手续,然后查询该航班是否有人预约登记,首先询问排在第一位的顾客,若退票额能满足他的要求,则为他办理退票手续,否则依次询问其他排队预约的顾客.

回复列表 (共144个回复)

51 楼

等着救命啊。大师,也发给我一份吧。最好有算法描述(汗,要求是不是太多了?是老师一定要的)。
这份作业居然占总分的20%!!!昏。
我不想重修啊!!!!!!!
arika2001_12@163.com
qq:409452628

52 楼

ps:
我的大作业:
六、题目
第一部分 链表
航班售票系统
  设有一个航班售票系统,要求完成以下功能:
1)假设该民航有若干航班,要求实现增加航班和取消某个航班的功能。
2)查询:根据用户提出的终到站查询航班号、售票情况等航班信息;也可根据航班号,列出该航班已订票的乘客名单。
3)订票:根据航班号为客户订票,如该航班有余票,则为客户订票;如该航班已满员,则显示相应信息。
4)退票:按乘客要求退出已预定的机票。
基本要求:实现单个航班的定票、退票、航班信息录入修改和航班及乘客信息查询功能。
升级功能:可在基本功能上考虑添加以下功能
多个航班的定票、退票。此时要考虑航班总数是否是固定数目,如果是固定数目的航班,实现难度低一点(考虑数组);如果航班数目动态变化,不固定,则要用到链表。
航班及乘客信息的永久保存问题。需要用到文件类型数据,采用指定文件保存航班或乘客信息。
提示:(参考教材第10章通讯录程序范例)
数据结构:可以使用链表表示航线表,对每个航班应包括以下信息:航班号、到达港、总座位数、余票额、乘客名单等;其中乘客名单应为一个单链表,每个乘客的信息有:乘客姓名、证件号码、座位号等,为方便查找,可考虑按乘客姓名排序;相应数据类型示范如下:
struct cnode{  
     char name[20]; /*乘客姓名*/
     char idcard[30]; /*证件号码*/
     int seatno; /*座位号*/
     struct cnode *clink; /*下一乘客指针*/
  };
struct pnode{  
     int no; /*航班号*/
   char destin[30]; /*终到站*/
   int limit,rest; /*总座位数、余票额*/
   struct cnode *clist; /*乘客名单*/
   struct pnode *plink; /*下一航班指针*/
   };
算法:涉及到对链表的建立、插入、删除等操作、以及文件的读写。

银行帐户管理
   要求建立二进制文件存储银行帐户信息,其中每个用户帐户信息中要求保存帐号、用户身份证号码、用户姓名、用户地址、帐户余额等,完成以下功能:
   1)开户:录入新帐户;
   2)查询帐户情况,根据输入的帐号查询用户情况和帐户余额;
   3)修改帐户信息,要求用户输入帐号,根据用户需要修改除了帐号之外的其余信息;
   4)删除帐户:根据输入的帐号找到要删除的帐号信息以后,经确认后删除该帐号信息;
提示:(参考教材第10章通讯录程序范例)
基本要求:完成帐户的开户、查询、删除和帐户信息的永久保存等操作。
升级功能:可在基本功能上考虑添加以下功能
存取款业务。
提示:程序中定义用户帐户结构体:
         struct  account{
                  char     accountid[10];
                  char     customerid[30];
                  char     name[20];
                  char     address[30];
                float    balance;
             };
    其中存储用户帐户信息的二进制文件中每个数据类型应为struct account,在操作之前可以考虑先将文件中的用户帐户信息读出并建立成一个链表,然后进行查询、删除等操作,可节省读写文件的时间;当录入新帐户信息、修改帐户信息之后,同时更新相应文件的内容;
                    
第二部分  
3、 长整数运算
  C中的long int所能表示的数据范围有限,现要求编程完成超过long int所能表示的数据范围以上(如32位以上)的十进制正的长整数的加法和乘法运算;
  提示:两个参与运算的长整数可用char a[256], b[256]表示,整个程序中要求完成以下几个函数的编写:
   1) int  readlongint(char  * x); 此函数用于读入一个正的长整数到x中,函数返回长整数的实际长度;要求输入时检查所读入的字符串是否是合法的长整数,如不是提示用户直到输入合法的长整数为止;
   2) char *addition(char *x,char *y); 此函数用于实现用字符串表示的长整数的加法运算,其计算结果保存在一个动态申请的字符数组空间(其长度为参与加法运算的两个长整数中较长的一个的长度加1)中,函数返回该数组的指针。
   3) char *multiplacation(char * x,char *y);此函数用于实现用字符串表示的两个长整数的乘法运算,可考虑先将乘数的从个位到最高位的每一位与被乘数相乘(这一步可利用addition函数实现),再进行向左偏移后相加完成;
注意此程序设计最关键的问题是对字符数组的下标定位和动态申请恰当的内存空间以保存计算结果,注意在乘法运算中回收不再使用的内存空间。

                  第三部分  
4、算术计算器的实现
实现过程和步骤提示:
基本要求:实现一个简单的算术器1。
功能说明:程序首先显示计算器界面,并等待用户输入一个算术计算式(见图1所示)。假如用户输入22+1<CR>,程序将在计算器的显示屏上输出计算结果(见图2所示)。如果输入错误,显示input error!。
图略
#include <stdio.h>
#include <conio.h>

void main()
{
float a,b;
char c;

clrscr();
gotoxy(1,2);
printf("--------------------------------------\n");
printf("|                                     |\n");
printf("--------------------------------------\n");
printf("| 1   2   3     +   -                 |\n");
printf("|                                     |\n");
printf("| 4   5   6     *   /                 |\n");
printf("|                                     |\n");
printf("| 7   8   9     =   \x1b              |\n");
printf("|                                     |\n");
printf("| 0   .             End               |\n");
printf(“|-------------------------------------|\n");

gotoxy(2,3);
/*following codes get user's input and complete the calculation*/
/*add your codes down here!*/




/*add your codes up here!*/
}

计算器1实现提示:
读懂并掌握显示计算器界面的程序
获取用户输入的算式只需利用”%f%c%f”调用scanf函数就可以。其中%c用来获取运算符+,-,*,/,%f用来获取运算数。
利用if语句或switch语句区分 +,-,*,/ 的不同情况进行运算输出。
在屏幕的指定位置输出利用gotoxy() 和cprintf函数实现。包含在conio.h头文件中。

升级功能
在算术计算器1的基础上,实现算术计算器2。
功能说明:算术计算器1一次只能执行一次计算,算术计算器2要求实现可以多次响应用户的计算请求。当用户输入一个算式后,计算器显示计算结果,同时屏幕项部显示:continue? 如果用户此时按Y键,则继续输入下一个算式,否则,程序终止。
计算器2实现提示:
在“计算器1”的主要算法外层套一个循环语句
在循环体内,显示完计算结果后调用getch函数,如果它的返回值不是’y’或’Y’,则跳出循环,程序终止。
在算术计算器2的基础上,实现算术计算器3。
功能说明:算术计算器3不盲目等待用户输入,而是当用户没有输入时,计算器顶部显示一串闪烁的文本“This is a simple calculator!”, 并且这串文本一会儿变成红色,一会儿变成绿色。当用户按键时,这串文本不再闪烁。 如果用户按下End键,程序终止;否则程序接受用户输入的算式,并显示计算结果。 显示完计算结果后,程序继续闪烁言文本 “This is a simple calculator!”,等待用户输入下一个算式或按End键退出。
计算器3实现提示:
程序在调用scanf函数之前,必须先检测是否有键被按下。
显示闪烁文本的算法如图3所示。

图略
检测是否有键按下,需要调用kbhit()库函数。
kbhit的原数原型: int kbhit(void);
kbhit函数功能:检测是否有键按下,如果有,则返回非0值(即真),否则返回0(即假)。 调用kbhit()函数的源程序必须包含conio.h文件。
具有延时功能的函数是delay(unsigned milliseconds)。 包含在dos.h头文件中。
delay()函数的功能是:将程序挂起milliseconds毫秒,即程序暂停或延时milliseconds毫秒。
当kbhit函数返回非0时,还要检测是否是End键。这需要调用bioskey库函数。但参数必须是1,不能是0。因为bioskey(1)虽然返回用户所按键值,但没有接受键盘输入,不会影响其它函数(如scanf函数)接受有效输入。
END的键值定义为:    #define END 0X4F00
bioskey(1)判断是否是END的用法:
  if (bioskey(1)= =END)
  {
         相关操作
  }

53 楼

我也想要一份
谢谢急用
hongfei1226@tom.com

54 楼

不错哦,楼主,我挺你了.[em1][em3]

55 楼

好东西,不过我要努力学习
大家加油啊

56 楼

各位大虾  小弟是大一新手 由于要叫实习设计  忘各位伸出援受帮小弟一把
satan031336@163.com
24774967

57 楼

我有 我有 不过我这个是买的 哈 哈哈 10RMB一个 要的  联系

58 楼

如果有答案也给我一个亚
cooper2507@163.com
谢谢

59 楼

俺也要亚
cooper2507@163.com

60 楼

把源代码发给我吧。我会感激不尽的[em8]

我来回复

您尚未登录,请登录后再回复。点此登录或注册