C语言综合实验题目
C语言综合实验题目
(说明:每位同学必须按时完成所指定的综合实验题目,并提交详细的实验报告。如果没有完成本次综合实验,总实验成绩以0分计,实验题目不能随意更改。综合实验报告提交截止时间7月7号,其他实验提交截止时间7月3号)
一.基本题目
1.航班售票系统(请学号末尾位为0和5的同学完成)
航班售票系统,要求完成以下功能:
1)假设该民航有若干航班,要求实现增加航班和取消某个航班的功能。
2)查询:根据用户提出的终到站查询航班号、售票情况等航班信息;也可根据航班号,列出该航班已订票的乘客名单。
3)订票:根据航班号为客户订票,如该航班有余票,则为客户订票;如该航班已满员,则显示相应信息。
4)退票:按乘客要求退出已预定的机票。
提示:数据结构:可以使用链表表示航线表,对每个航班应包括以下信息:航班号、到达港、总座位数、余票额、乘客名单等;其中乘客名单应为一个单链表,每个乘客的信息有:乘客姓名、证件号码、座位号等,为方便查,可考虑按乘客姓名排序;相应数据类型示范如下:
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; /*下一航班指针*/
};
2.银行帐户管理(请学号末尾位为1和6的同学完成)
要求建立二进制文件存储银行帐户信息,其中每个用户帐户信息中要求保存帐号、用户身份证号码、用户姓名、用户地址、帐户金额等,完成以下功能:1)录入新帐户;
2)查询帐户情况,根据输入的帐号查询用户情况和帐户金额;
3)修改帐户信息,要求用户输入帐号,根据用户需要修改除了帐号之外的其余信息;
4)删除帐户:根据输入的帐号到要删除的帐号信息以后,经确认后删除该帐号信息;
提示:程序中定义用户帐户结构体:
struct account{
char accountid[10];
char customerid[30];
char name[20];
c语言游戏编程题经典100例char address[30];
float balance; };
其中存储用户帐户信息的二进制文件中每个数据类型应为struct account,在操作之前可以考虑先将文件中的用户帐户信息读出并建立成一个链表,然后进行查询、删除等操作,可节省读写文件的时间;当录入新帐户信息、修改帐户信息之后,同时更新相应文件的内容;
3.学生信息管理系统(请学号末尾位为2和7的同学完成)
用户可以选择1-7可以分别进行学生信息的查看、添加、删除,修改,计算平均成绩,保存,退出系统操作。
提示:用一个结构体类型表示学生信息
typedef struct node /*定义结构体*/
{ char sex[9];
int age;
int num;
char name[15];
int money;
int english;
int math;
int computer;
int average;
struct node *next;
}student_info;
运行过程中采用一个结构体链表存储学生信息。退出系统时可以采用文件存储用户输入的信息,再次运行的时候从文件中读取。
4.长整数运算(请学号末尾位为3和8的同学完成)
C中的long int所能表示的数据范围有限,现要求编程完成超过long int 所能表示的数据范围以上的十进制正的长整数的加法和乘法运算;
提示:两个参与运算的长整数可用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函数实现),再进行向左偏移后相加完成;
注意:此程序设计最关键的问题是对字符数组的下标定位和动态申请恰当的内存空间以保存计算结果,注意在乘法运算中回收不再使用的内存空间。
5.计算器(请学号末尾位为4和9的同学完成)
编程实现计算器程序,完成实数的加、减、乘、除运算。注意运算符优先级别。表达式要
求采用中缀形式,例如:2.3+7.2*7
提示:表达式处理可参考“逆波兰表达式”范例。
按 END键退出算术计算器程序
检测是否有键按下,需要调用kbhit()库函数。kbhit的原数原型: int kbhit(void);kbhit函数功能:检测是否有键按下,如果有,则返回非0值(即真),否则返回0(即假)。调用kbhit()函数的源程序必须包含conio.件。
具有延时功能的函数是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)
{
相关操作
}
二.可选题目(如果你对下面题目有兴趣,可另行选择,欢迎多选)1.发牌
一付扑克牌52张共4种花,用户可选择“1---发牌”将这52张牌随机发成4敦;或选择“0----退出”退出程序。
提示:用一个具有52个元素的数组(如char p[52][5])存放这52张牌的内容,如P_i表示黑桃、H_i表示红桃、C_i表示梅花、D_i表示方块;程序中可以首先初始化该数组,然后显示
菜单等待用户选择输入,用户选择“发牌”,程序调用“发牌”函数;在发牌函数中,可使用TC 中的产生随机数的函数(参看rand(),srand(),random()等函数的使用说明)一个随机数m,选取一张牌{p[m]},将其与最前面的牌交换位置,即将选取的牌放在最前面;然后对数组p 余下的牌重复选取操作,直到所有牌均重排列;最后按13行*4列输出发牌结果。
2.时钟模拟
图形化界面,屏幕上显示圆形的模拟时钟表盘,显示12个刻度。时钟上有秒针、分针和时针指示,随着时间推移,秒针、分针和时针在表盘上移动。
提示:在dos.h头文件中定义有如下结构类型
struct time {
unsigned char ti_min; /* Minutes */
unsigned char ti_hour; /* Hours */
unsigned char ti_hund; /* Hundredths of seconds */
unsigned char ti_sec; /* Seconds */
};
可直接利用该类型表示时间类型。
在dos.h头文件中定义库函数gettime(struct time *),该函数返回系统时钟。此程序可通过读取系统时钟调整秒针、分针和时针位置。
3.俄罗斯方块游戏
用C语言实现常见的游戏-俄罗斯方块。应包含初始化新游戏,累积方块,消除方块,方块移动与变形,计分和调速等功能,方块界面和容器都可以自己设计。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论