《叫号机操作系统》-源代码
来源:互联网 发布:淘宝男模特排名 编辑:程序博客网 时间:2024/05/06 21:46
/*********************************************************** * 版权所有 (C)2016,wangxiuwen * 文件名称: main.c * 文件标识:无 * 内容摘要:叫号器操作系统 * 其它说明:无 * 当前版本: V1.0 * 作 者:王修文 * 完成日期: 2016.12.27 * 修改记录: 1 * 修改日期: 2016.12.27 * 版本号: V1.0 * 修改人: 王修文 * 修改内容:创建 **********************************************************/
主函数main.c
#include "LinkList.h" #include "Mine.h" /*提示:普通用户交款回执码统一默认为:1加急用户交款回执码统一默认为:2管理员密码默认为:1*/int main(){LinkList *L; InitList(L);//初始化单链表int n;for (;;){index();//调用索引函数scanf("%d",&n);if (n==1)//普通挂号{ordinary(L);//调用相应函数}else if (n==2)//加急挂号{urgent(L);//调用相应函数}else if (n==3)//退号{back(L);//调用相应函数}else if (n==4)//管理员{administrator(L);//调用相应函数}else{break;}}return 0;}
/*********************************************************** * 版权所有 (C)2016,wangxiuwen * 文件名称: mine.h * 文件标识:无 * 内容摘要:叫号器操作系统 * 其它说明:无 * 当前版本: V1.0 * 作 者:王修文 * 完成日期: 2016.12.27 * 修改记录: 1 * 修改日期: 2016.12.27 * 版本号: V1.0 * 修改人: 王修文 * 修改内容:创建 **********************************************************/头函数mine.h
#include <stdio.h>#include <windows.h>void index();//索引void index_();//管理员索引void ordinary(LinkList *L);//普通号void urgent(LinkList *L);//加急号void back(LinkList *L);//退号void administrator(LinkList *L);//管理员bool add1(LinkList *&L,int shenfen);//普通号入链bool add2(LinkList *&L,int shenfen);//加急号入链bool shenfen1(int a);//验证身份证号是否为4位数bool shenfen2(LinkList *&L,int a);//验证身份证号是否重复bool pay1();//普通号交款bool pay2();//加急号交款void sleep05();//延时0.5s清屏void sleep3();//延时3s清屏bool Aback(LinkList *&L);//普通号退号bool Tback(LinkList *&L);//加急号退号bool mima();//判断管理员密码
/*********************************************************** * 版权所有 (C)2016,wangxiuwen * 文件名称: mine.c * 文件标识:无 * 内容摘要:叫号器操作系统 * 其它说明:无 * 当前版本: V1.0 * 作 者:王修文 * 完成日期: 2016.12.27 * 修改记录: 1 * 修改日期: 2016.12.27 * 版本号: V1.0 * 修改人: 王修文 * 修改内容:创建 **********************************************************/源函数mine.c
#include "LinkList.h" #include "mine.h" int num1=1;//普通用户程序内部代号int num2=1;//加急用户程序内部代号//索引实现*********************************************************************************************************************************void index(){printf("欢迎光临烟台大学移动公司\n");printf("\n");printf("1、普通挂号\n");printf("2、加急挂号\n");printf("3、退号 \n");printf("4、管理员 \n");printf("任意键退出 \n");printf("请输入:");printf("\n");}//普通号实现*******************************************************************************************************************************void ordinary(LinkList *L){sleep05();printf ("请输入您的身份证号后四位:\n");int shenfen;scanf("%d",&shenfen);sleep05();if ( !shenfen1(shenfen) )//判断输入身份证号是否为4位{printf ("输入错误!请重新操作\n\n");sleep3();return;}if ( !shenfen2(L,shenfen) )//判断输入身份证号是否是否重复{printf ("该用户已在队伍中!请重新操作\n\n");sleep3();return;}if (!pay1())//判断是否交款成功{printf ("回执码错误!请重新操作\n\n");sleep3();return; }add1(L,shenfen) ;//加入链表队伍中printf ("********************");//输出用户信息printf("\n您的号码为:A%d 号\n",num1);int j=ListLength(L)-1;printf("您的前面有:%d 位用户\n",j); printf ("********************\n\n");sleep3();num1++;//下一个用户代号}//加急号实现*******************************************************************************************************************************void urgent(LinkList *L){sleep05();if(ListEmpty(L))//判断队伍是否需要开放加急号{printf ("您目前是第一位,请申请普通号!请重新操作\n\n");sleep3();return;}printf ("请输入您的身份证号后四位:\n");int shenfen;scanf("%d",&shenfen);sleep05();if ( !shenfen1(shenfen) )//判断输入身份证号是否为4位{printf ("输入错误!请重新操作\n\n");sleep3();return;}if ( !shenfen2(L,shenfen) )//判断输入身份证号是否是否重复{printf ("该用户已在队伍中!请重新操作\n\n");sleep3();return;}if (!pay2())//判断是否交款成功{printf ("回执码错误!请重新操作\n\n");sleep3();return; }add2(L,shenfen) ;//加入链表队伍中printf ("********************");//输出用户信息printf("\n您的号码为:T%d 号\n",num2);int j=num2-1;printf("您的前面有:%d 位用户\n",j); printf ("********************\n\n");sleep3();num2++;//下一个用户代号}//退号实现*********************************************************************************************************************************void back(LinkList *L){sleep05();char type;printf ("清输入您的号码类型(A/T):\n");scanf ("%s",&type);sleep05();if (type=='A')//调用普通号退号函数{if (Aback(L)){printf ("退号成功!请凭回执码 1 至取款处取款\n\n");sleep3();return;}else {return;}}else if (type=='T')//调用加急号退号函数{if (Tback(L)){printf ("退号成功!请凭回执码 2 至取款处取款\n\n");sleep3();return;}else {return;}}else {printf ("不存在该类型!请重新操作\n\n");sleep3();return; }}//管理员实现*******************************************************************************************************************************void administrator(LinkList *L){sleep05();while (!mima())//判断密码是否正确{return;}index_();int i;scanf ("%d",&i);sleep05();if (i==1)//请第一位客户{if (ListEmpty(L))//判断队伍中是否有人{printf("无人在等待!\n\n"); sleep3();}else//删除第一个用户信息{LinkList *p=L,*q;q=p->next;p->next=q->next;free (q);printf("屏幕显示:请第一位客户到人工窗口进行业务办理!\n\n");sleep3();}}else if (i==2)//查看队伍信息{if(ListEmpty(L)){printf ("当前队伍中的成员有:\n");printf ("\n0 人\n\n");sleep3();}else//显示队伍信息{printf ("当前队伍中的成员有:\n");printf ("\n");DispList(L);for (;;){int k;//固定队伍信息页面printf ("输入 1 跳转至首页面:\n");scanf ("%d",&k);while (k==1){sleep05();return ;}}}}else if (i==3)//清空队伍{DestroyList(L);printf ("操作成功!当前队伍已经为空\n\n");sleep3();}else//退出管理员系统{return;}}//普通号入链实现***************************************************************************************************************************bool add1(LinkList *&L,int shenfen) { LinkList *p=L,*s; while (p->next!=NULL)//找到当前队伍中的最后一名{ p=p->next; } s=(LinkList *)malloc(sizeof(LinkList)); s->data=shenfen; s->num=num1;s->type='A'; s->next=p->next; p->next=s; return true;}//加急号入链实现***************************************************************************************************************************bool add2(LinkList *&L,int shenfen){LinkList *p=L,*s; while (p->next->type=='T')//找到当前队伍中的最后一名{ p=p->next; } s=(LinkList *)malloc(sizeof(LinkList)); s->data=shenfen; s->num=num2;s->type='T'; s->next=p->next; p->next=s; return true;}//检查身份证号是否正确且唯一***************************************************************************************************************bool shenfen1(int a){if (999<a&&a<10000)//检测输入的数是否为4位数{return true;}else {return false;}}//检查身份证号是否重复*********************************************************************************************************************bool shenfen2(LinkList *&L,int a){LinkList *p=L->next;while (p!=NULL) { if (p->data==a){return false;}else{p=p->next; } }return true;}//普通号交款*******************************************************************************************************************************bool pay1(){printf ("请至交款处交款5元,并输入交款回执号:\n");int k;scanf ("%d",&k);sleep05();if (k!=1){return false;}return true;}//加急号交款*******************************************************************************************************************************bool pay2(){printf ("请至交款处交款100元,并输入交款回执号:\n");int k;scanf ("%d",&k);sleep05();if (k!=2){return false;}return true;}//延时3s清屏*******************************************************************************************************************************void sleep3(){printf ("3秒后自动跳转至首页\n");Sleep (1000);printf ("2秒后自动跳转至首页\n");Sleep (1000);printf ("1秒后自动跳转至首页\n");Sleep (1000);/*Sleep (500);*/system("cls");}//延时0.5s清屏*****************************************************************************************************************************void sleep05(){printf ("处理中,请稍候\n");printf ("[");for (int j=0;j<35;j++){printf (">");Sleep (15);}printf ("]");Sleep (300);system("cls");}//普通号退号*******************************************************************************************************************************bool Aback(LinkList *&L){int i;printf ("请输入您的身份证号码后四位:\n");scanf ("%d",&i);sleep05();LinkList *q,*p=L;while ( p!=NULL && p->type!='A')//找到普通号第一位 { q=p; p=p->next; } while (p!=NULL && p->data!=i)//找到该用户 { q=p; p=p->next; } if (p==NULL) {printf ("您输入的号码不存在!请重新操作\n\n");sleep3();return false;}else//实现退号{int j;printf ("请输入您的排队号码:\n");scanf ("%d",&j);if (p->num==j)//判断排队号与身份证号是否对应{sleep05();q->next=p->next;free(p);return true; }else {sleep05();printf ("排队号码与身份证号不符!请重新操作\n\n");sleep3();return false;}}}//加急号退号*******************************************************************************************************************************bool Tback(LinkList *&L){int i;printf ("请输入您的身份证号码后四位:\n");scanf ("%d",&i);sleep05();LinkList *q,*p=L;while (p!=NULL && p->type!='T')//找到加急号第一位 { q=p; p=p->next; } while (p!=NULL && p->data!=i)//找到该用户 { q=p; p=p->next; } if (p==NULL) {printf ("您输入的号码不存在!请重新操作\n\n");sleep3();return false;}else{int j;printf ("请输入您的排队号码:\n");scanf ("%d",&j);if (p->num==j)//判断排队号与身份证号是否对应{sleep05();q->next=p->next;free(p);return true; }else {sleep05();printf ("排队号码与身份证号不符!请重新操作\n\n");sleep3();return false;}}}//管理员索引实现***************************************************************************************************************************void index_(){printf("1、有请当前队伍的第一位\n");printf("2、查看目前队伍信息\n");printf("3、清空队伍\n");printf("任意键退出\n");printf("请输入:");printf("\n");}//判断管理员密码是否正确*******************************************************************************************************************bool mima(){int i;printf ("请输入管理员密码:\n");scanf ("%d",&i);sleep05();if (i==1){return true;}else {printf ("密码输入错误!请重新操作\n\n");sleep3();return false;}}
/*********************************************************** * 版权所有 (C)2016,wangxiuwen * 文件名称: LinkList.h * 文件标识:无 * 内容摘要:叫号器操作系统 * 其它说明:无 * 当前版本: V1.0 * 作 者:王修文 * 完成日期: 2016.12.27 * 修改记录: 1 * 修改日期: 2016.12.27 * 版本号: V1.0 * 修改人: 王修文 * 修改内容:创建 **********************************************************/头函数LinkList.h
#include <stdio.h> #include <malloc.h> typedef int ElemType; typedef struct LNode //定义单链表结点类型 { ElemType data; ElemType num;char type; struct LNode *next; //指向后继结点 }LinkList; void InitList(LinkList *&L);//初始化线性表 void DestroyList(LinkList *&L);//销毁线性表 bool ListEmpty(LinkList *L);//判断线性表是否为空 int ListLength(LinkList *L);//求线性表长度 void DispList(LinkList *L);//输出线性表 bool GetElem(LinkList *L,int i,ElemType &e);//求线性表某个数据元素值 int LocateElem(LinkList *L,ElemType e);//按元素值查找 bool ListInsert(LinkList *&L,int i,ElemType e);//插入数据元素 bool ListDelete(LinkList *&L,int i,ElemType &e);//删除数据元素
/*********************************************************** * 版权所有 (C)2016,wangxiuwen * 文件名称: LinkList.c * 文件标识:无 * 内容摘要:叫号器操作系统 * 其它说明:无 * 当前版本: V1.0 * 作 者:王修文 * 完成日期: 2016.12.27 * 修改记录: 1 * 修改日期: 2016.12.27 * 版本号: V1.0 * 修改人: 王修文 * 修改内容:创建 **********************************************************/
源函数LinkList.c
#include "LinkList.h" //初始化链表*******************************************************************************************************************************void InitList(LinkList *&L) { L=(LinkList *)malloc(sizeof(LinkList)); //创建头结点 L->type ='T'; L->next=NULL; } //销毁单链表*******************************************************************************************************************************void DestroyList(LinkList *&L) { while (L->next==NULL){return ;} LinkList *p=L->next ,*q=p->next;//p指向*q的前驱节点 while (q!=NULL)//循环判断 逐个销毁 { free(p);//释放*p节点 p=q;//p、q同步后移一个节点 q=p->next;//再赋值 } free(p);//此时q为NULL,p指向尾结点,释放它 L->next=NULL;} //判断链表是否为空*************************************************************************************************************************bool ListEmpty(LinkList *L) { return(L->next==NULL); } //求链表长度*******************************************************************************************************************************int ListLength(LinkList *L) { LinkList *p=L; int i=0; while (p->next!=NULL) { i++; p=p->next; } return(i); } //输出链表*********************************************************************************************************************************void DispList(LinkList *L) { int i=1; LinkList *p=L->next; while (p!=NULL) { printf("第%d位:%d 号码:%c%d\n",i,p->data,p->type,p->num); p=p->next; i++; } printf("\n"); } //求链表中某个元素的值*********************************************************************************************************************bool GetElem(LinkList *L,int i,ElemType &e) { int j=0; LinkList *p=L; while (j<i && p!=NULL) { j++; p=p->next; } if (p==NULL) //不存在第i个数据结点 return false; else //存在第i个数据结点 { e=p->data; return true; } } //按元素查找*******************************************************************************************************************************int LocateElem(LinkList *L,ElemType e) { LinkList *p=L->next; int n=1; while (p!=NULL && p->data!=e) { p=p->next; n++; } if (p==NULL) return(0); else return(n); } //插入数据元素*****************************************************************************************************************************bool ListInsert(LinkList *&L,int i,ElemType e) { int j=0; LinkList *p=L,*s; while (j<i-1 && p!=NULL)//查找第i-1个结点 { j++; p=p->next; } if (p==NULL)//未找到位序为i-1的结点 return false; else//找到位序为i-1的结点*p { s=(LinkList *)malloc(sizeof(LinkList)); //创建新结点*s s->data=e; s->next=p->next; //将*s插入到*p之后 p->next=s; return true; } } //删除数据元素*****************************************************************************************************************************bool ListDelete(LinkList *&L,int i,ElemType &e) { int j=0; LinkList *p=L,*q; while (j<i-1 && p!=NULL) //查找第i-1个结点 { j++; p=p->next; } if (p==NULL) //未找到位序为i-1的结点 return false; else //找到位序为i-1的结点*p { q=p->next; //q指向要删除的结点 if (q==NULL) return false; //若不存在第i个结点,返回false e=q->data; p->next=q->next; //从单链表中删除*q结点 free(q); //释放*q结点 return true; } }
运行过程截图:
1 0
- 《叫号机操作系统》-源代码
- 叫号机
- 叫号机NumberMachine
- 模拟银行排队叫号机 2011.04.18
- 数据结构课程设计(银行叫号机)
- 课程设计(银行叫号机系统)
- 排队叫号机控制系统与自助查询终端系统解决方案
- 华为机试题:实现一个简易的银行叫号系统
- Motorola 手机操作系统源代码
- Android移动操作系统源代码
- 操作系统Marking02源代码
- 获取Android操作系统源代码
- 做最好的-排队叫号系统;智能排队系统;排队叫号软件;排队管理系统;排队叫号机;取号机;取号机软件;排队软件;LED显示屏;LED大屏幕;LED条屏;触摸屏一体机;
- android 操作系统源代码 下载编译
- Android操作系统源代码下载方法
- 简易的银行排号叫号系统(华为机试题目)
- 排队叫号程序
- 排队叫号系统
- PHP命名空间(Namespace)的使用详解
- J2EE规范jdbc使用到的设计模式
- 通达OA2015和2016链接sqlserver数据库的几种方式
- Java基础之==号、equals()和hashCode()区别
- Python中的异步IO和协程
- 《叫号机操作系统》-源代码
- poj3104
- Atitit. 提升存储过程与编程语言的可读性解决方案v3 qc25.docx
- ASP.NET MVC4学习2之初识控制器
- 安卓点击涟漪
- 剑指Offer-字符串
- 千万级规模高性能、高并发的网络架构经验分享
- 发送邮件 发送验证码
- 北京天宇联科技有限责任公司-智慧由你改变,展现园区风采