/************************************************************/
/* File:menu.c */
/************************************************************/
#include "AList.h"
/* 菜单显示和控制 */
/********************************************************** */
/* 函数原型:void menulist(void); */
/* 参 数:无 */
/* 返 回 值:无 */
/* 函数功能:以文本方式显示程序主菜单,同时响应用户输入。 */
/***********************************************************/
void menulist(void)
{
int ky,y;
int cmd;
textbackground(0);
clrscr();
do
{
system("cls");
textmode(C80);
textbackground(13);
textcolor(RED);
window(7,8,23,25); /* 开一个窗口 */
clrscr();
textbackground(1);
textcolor(RED);
window(8,9,22,24); /* 再开一个当前窗口,套在上一个窗口之中*/
clrscr();
gotoxy(3,3);
cprintf("1:APPEND\r\n");
gotoxy(3,5);
cprintf("2:SEARCH\r\n");
gotoxy(3,7);
cprintf("3:DELETE\r\n");
gotoxy(3,9);
cprintf("4:CHANGE\r\n");
gotoxy(3,11);
cprintf("5:LIST ALL\r\n");
gotoxy(3,13);
cprintf("Q:QUIT\r\n");
y=11;
upbar(y-2); /* 调用光条上移函数 */
cmd=1;
do
{
ky=bioskey(0); /* 得到按键的键值 */
switch(ky)
{
case Key_1: /* 按键 1 */
{
cmd=1;
ky=Key_ENTER;
break;
}
case Key_2: /* 按键 2 */
{
cmd=2;
ky=Key_ENTER;
break;
}
case Key_3: /* 按键 3 */
{
cmd=3;
ky=Key_ENTER;
break;
}
case Key_4: /* 按键 4 */
{
cmd=4;
ky=Key_ENTER;
break;
}
case Key_5: /* 按键 5 */
{
cmd=5;
ky=Key_ENTER;
break;
}
case Key_q: case Key_Q: /* 按键 Q(or q) */
{
cmd=0;
ky=Key_ENTER;
break;
}
case Key_DOWN: /* 向下方向键 */
{
if ( y<21 )
{
upbar(y);
y+=2;
cmd=(cmd+1)%6;
}
break;
}
case Key_UP: /* 向上方向键 */
{
if(y>11)
{
downbar(y);
y-=2;
cmd=(cmd+5)%6;
}
break;
}
}
} while (ky !=Key_ENTER ); /* 回车键 */
switch(cmd)
{
case 0:
{
quit(); /* 返回系统 */
break;
}
case 1: /* 添加记录 */
{
append();
break;
}
case 2: /* 查找记录 */
{
search();
break;
}
case 3: /* 删除记录 */
{
delet();
break;
}
case 4: /* 修改记录 */
{
change();
break;
}
case 5: /* 显示所有记录 */
{
list_all();
break;
}
}
} while(1);
}
/* 光条上移函数 */
/********************************************************** */
/* 函数原型:void upbar(int y); */
/* 参数:光标条的当前位置(纵轴坐标值) */
/* 返 回 值:无 */
/* 函数功能:向上滚动光标条。 */
/*************************************************************/
void upbar(int y)
{
int i;
typedef struct texel_struct {
unsigned char ch;
unsigned char attr;
} texel;
texel t;
for(i=9;i<=19; i++)
{
gettext(i,y,i,y,&t);
t.attr=0x14; /* 字符为红色,背景为蓝色 */
puttext(i,y,i,y,&t);
gettext(i,y+2,i,y+2,&t);
t.attr=0x4f; /* 字符为白色,背景为红色 */
puttext(i,y+2,i,y+2,&t);
}
return;
}
/* 光条下移函数 */
/********************************************************** */
/* 函数原型:void downbar(int y); */
/* 参数:光标条的当前位置(纵轴坐标值) */
/* 返 回 值:无 */
/* 函数功能:向下滚动光标条。 */
/*************************************************************/
void downbar(int y)
{
int i;
typedef struct texel_struct {
unsigned char ch;
unsigned char attr;
} texel;
texel t;
for(i=9;i<=19;i++)
{
gettext(i,y,i,y,&t);
t.attr=0x14; /* 字符为红色,背景为蓝色 */
puttext(i,y,i,y,&t);
gettext(i,y-2,i,y-2,&t);
t.attr=0x4f ; /* 字符为白色,背景为红色 */
puttext(i,y-2,i,y-2,&t);
}
return;
}
/********************************************************** */
/* 函数原型:mydelay(void); */
/* 参数:无 */
/* 返 回 值:无 */
/* 函数功能:等待用户响应。 */
/*************************************************************/
void mydelay(void)
{
printf("Press any key to continue...\n");
getch();
}
/********************************************************** */
/* 函数原型:void format(void); */
/* 参数:无 */
/* 返 回 值:无 */
/* 函数功能:结果输出时打印输出的格式信息 */
/*************************************************************/
void format(void)
{
printf("number\tgroup\tname\tgender\t");
printf("birthday address\tphone\t email\n");
}
/********************************************************** */
/* 函数原型:void searchmenu(void); */
/* 参数:无 */
/* 返 回 值:无 */
/* 函数功能:输出查询功能的子菜单。 */
/*************************************************************/
void searchmenu(void)
{
system("cls");
printf("------search menu------\n\n\n");
printf(" 1:search by entry num.\n");
printf(" 2:search by group.\n");
printf(" 3:search by name.\n");
printf(" 4:return.\n");
printf("\n\n Enter your choice(1-4): ");
}
/********************************************************* ** */
/* 函数原型:myrecord *input_app(void); */
/* 参数:无 */
/* 返 回 值:新增的记录项的地址 */
/* 函数功能:录入信息时处理键盘输入,对输入进行合法性检查。 */
/*************************************************************/
myrecord *input_app(void)
{
int t;
char s[100],c;
system("cls");
while(1) /* 输入分组 */
{
printf(" group(1-10):");
scanf("%d",&t);
if(t<1 || t>10)
{
printf("invalid input!\n");
continue;
}
input.group=t;
break;
}
while(1) /* 输入姓名 */
{
printf(" name:");
scanf("%s",&s);
if(strlen(s)>MAXLEN)
{
printf("too long!\n");
continue;
}
strcpy(input.name,s);
break;
}
while(1) /* 输入性别 */
{
printf(" gender(F/M):");
scanf("%s",&s);
if(strlen(s)>1)
{
printf("invalid input!\n");
continue;
}
c=s[0];
if(c!='F' && c!='f' && c!='M' && c!='m')
{
printf("invalid input!\n");
continue;
}
input.gender=toupper(c);
break;
}
while(1) /* 输入出生日期 */
{
printf(" brithday-year(1900-2007):");
scanf("%d",&t);
if(t<1900 || t>2007)
{
printf("invalid input!\n");
continue;
}
input.birthday.year=t;
break;
}
while(1)
{
printf(" brithday-month(1-12):");
scanf("%d",&t);
if(t<1 || t>12)
{
printf("invalid input!\n");
continue;
}
input.birthday.month=t;
break;
}
while(1)
{
printf(" brithday-day(1-31):");
scanf("%d",&t);
if(!date_legal(input.birthday.year,input.birthday.month,t))
{
printf("invalid input!\n");
continue;
}
input.birthday.day=t;
break;
}
while(1) /* 输入地址 */
{
printf(" address:");
scanf("%s",&s);
if(strlen(s)>MAXLEN)
{
printf("too long!\n");
continue;
}
st
没有合适的资源?快使用搜索试试~ 我知道了~
c程序设计第三版的简单例程
共56个文件
c:45个
h:4个
prj:3个
需积分: 0 3 下载量 141 浏览量
2008-12-30
17:19:18
上传
评论
收藏 51KB RAR 举报
温馨提示
这是c语言第三版中比较典型的例子 尤其是针对c语言初学者,是个很好的帮手
资源推荐
资源详情
资源评论
收起资源包目录
.rar (56个子文件)
例程
第四章
4_1
MENU.C 13KB
FILE.C 5KB
ADDRESS.PRJ 52B
CONTROL.C 6KB
alist.h 2KB
4_2
util.c 9KB
compute.prj 97B
mouse.c 3KB
picture.c 3KB
compute.h 862B
compute.c 8KB
4_3
Russia.h 2KB
RUSSIA.PRJ 81B
Drawing.c 3KB
Util.c 10KB
Timer.c 2KB
Russia.c 5KB
第三章
3_25.c 3KB
3_11.c 891B
3_14.c 967B
3_16.c 5KB
3_13.c 1KB
3_4.c 4KB
3_10.c 3KB
3_12.c 1KB
3_17.c 4KB
3_6.c 823B
3_9.c 656B
3_22.c 2KB
3_3.c 2KB
3_23.c 889B
3_19.c 1KB
3_20.c 825B
第二章
2_1.c 809B
2_3.c 285B
2_2.c 561B
3_7.c 906B
3_5.c 921B
3_21.c 214B
3_24.c 2KB
3_8.c 1KB
3_18.c 519B
3_15.c 913B
3_1.c 799B
3_2.c 451B
第二章
2_1.c 809B
2_3.c 285B
2_2.c 561B
第一章
key.c 904B
新建文件夹
main.cpp 1KB
bios.h 582B
miner.cpp 6KB
Project1.dev 1KB
Makefile.win 870B
miner.c 6KB
smain.c 1KB
共 56 条
- 1
资源评论
t16300
- 粉丝: 1
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功