自动存包柜 C语言程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#include
typedef struct bag_infor
{
int id;
int pass[6];
int lock_stat;//0 为可用 1为不可用
struct bag_infor *next;
} bag_infor, *bag_link;
int get_length(bag_link *link)
{
bag_link temp_node;
int i = 0;
if(*link == NULL)
{
return i;
}
temp_node = (*link)->next;
while(temp_node)
{
i = i + 1;
temp_node = temp_node->next;
}
return i;
}
void enter_bag(bag_link *link)
{
int count = get_length(link);
int i;
int flag = 0;
int choice;
if(count == 0)
{
printf("\n\n超市存包系统没有进行初始化,不能使用!\n\n");
}
else
{
while(1)
{
printf("\n请放入一枚一元硬币:1->确定 2->取消\n");
printf("请操作:>");
scanf("%d", &choice);
if(choice == 1)
{
bag_link temp_node;
temp_node = (*link)->next;
while(temp_node)
{
if(temp_node->lock_stat == 0)//该柜子是可用的
{
printf("\n存在可用的存包柜,您的存包柜是第%d个\n", temp_node->id);
printf("\n请记住您的密码信息:\n");
srand( (unsigned)time( NULL ) );
for(i = 0; i < 6; i++)
{
//printf("%d", rand() % 10);
temp_node->pass[i] = (rand() % 10);
printf("%d",temp_node->pass[i]);
}
printf("\n\n");
flag = 1;
temp_node->lock_stat = 1;
break;
}
temp_node = temp_node->next;
}
if(flag == 0)
{
printf("\n!存包柜已满,不能进行存包!\n");
}
break;
}
else if(choice == 2)
{
printf("谢谢您的使用!再见");
break;
}
else
{
printf("输入错误!!!");
}
}
}
}
void get_bag(bag_link *link)
{
char pass[6];
int temp[6];
int i;
int flag = 0;
bag_link temp_node;
printf("\n欢迎使用取包功能\n");
printf("请输入你的密码:>");
scanf("%s", pass);
for(i = 0; i < 6; i++)
{
temp[i] = (int)(pass[i] - '0');
}
temp_node = (*link)->next;
while(temp_node)
{
if(temp_node->lock_stat == 1)
{
for(i = 0; i < 6; i++)
{
if(temp_node->pass[i
] != temp[i])
{
break;
}
else
{
if(i == 5)//最后的数据都是相等的
{
temp_node->lock_stat = 0;
flag = 1;
}
}
}
}
if(flag == 1)
{
break;
}
temp_node = temp_node->next;
}
if(flag == 1)
{
printf("\n\n成功打开存包箱\n");
printf("你的存包箱是第%d个\n", temp_node->id);
printf("请妥善保管你的财务,谢谢你的使用\n\n\n");
}
else
{
printf("\n\n密码输入不正确,不能完成取包操作!\n\n");
}
}
void init_bag(bag_link *link)
{
int num;
int i;
bag_link temp_link;
printf("\n\n/**程序将会初始化超市存包柜系统信息**/\n");
printf("请输入超市存包柜个数:>");
scanf("%d", &num);
*link = (bag_link)malloc(sizeof(bag_infor));
(*link)->next = NULL;
for(i = 0; i < num; i++)
{
temp_link = (bag_link)malloc(sizeof(bag_infor));
if(temp_link == NULL)
{
printf("\nError:内存分配失败,程序退出!");
return;
}
temp_link->id = i + 1;
temp_link->lock_stat = 0;
temp_link->next = (*link)->next;
(*link)->next = temp_link;
}
}
void destory_bag(bag_link *link)
{
bag_link temp_node;
temp_node = *link;
while(temp_node)
{
temp_node = (*link)->next;
free(link);
*link = temp_node;
}
}
int main()
{
bag_link bags = NULL;
int menu;
printf("******C存包柜问题模拟程序******\n");
while(1)
{
printf("*******************MENU********************\n");
printf("* *\n");
printf("* 1,初始化存包系统 *\n");
printf("* 2,存包 *\n");
printf("* 3,取包 *\n");
printf("* 4,关闭系统 *\n");
printf("* *\n");
printf("* *\n");
printf("*******************************************\n");
printf("\n\n请选择操作项目:>");
scanf("%d", &menu);
if(menu == 1)
{
init_bag(&bags);
printf("\n\n系统初始化成功.............\n\n");
}
else if(menu == 2)
{
enter_bag(&bags);
}
else if(menu == 3)
{
get_bag(&bags);
}
else if(menu == 4)
{
destory_bag(&bags);
printf("Bye-Bye");
return;
}
else
{
printf("\n选择错误,请重新选择!\n\n");
}
}
return 0;
}