亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 實驗室機位管理.cpp

?? 實驗室機位管理模型的完整實現
?? CPP
字號:
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <stdio.h>

//以下為第一部分,定義單鏈表的抽象數據類型
struct DNode//存儲學生信息的節點
{
	char id[4];
	char name[8];
	char clas[5];
	int  seat;
	int  tmin[2];
	int  tmout[2];
	DNode *next;
};

int comp(char a[4],char b[4])
{   //比較學號是否相同
	for(int i=0;i<4;i++)
		if(a[i]!=b[i]) break;
	if(i==4) return 1;
	else return 0;
}

void InitList(DNode *&HL)//初始化
{
	HL=NULL;
}

int EmptyList(DNode *&HL)//判斷鏈表是否為空
{
	return HL==NULL;
}

void NewInsert(DNode *&HL,char in1[4],char in2[8],char in3[5],int &in4,int in5[2],int in6[2])
{  //向鏈表中插入新節點
	DNode *newptr;
	newptr=new DNode;
	if(newptr==NULL)
	{  //分配內存失敗,輸出提示,結束程序
		cerr<<"Memory allocation failure!"<<endl;
		exit(1);
	}
	for(int i=0;i<4;i++)     //節點信息插入新節點中
		newptr->id[i]=in1[i];
	for(i=0;i<8;i++)
		newptr->name[i]=in2[i];
	for(i=0;i<5;i++)
		newptr->clas[i]=in3[i];
	newptr->seat=in4;
	for(i=0;i<2;i++)
		newptr->tmin[i]=in5[i];
	for(i=0;i<2;i++)
		newptr->tmout[i]=in6[i];
    newptr->next=NULL;
	if(HL==NULL) HL=newptr;//表空則作新節點
    else{  //否則遍歷到末尾再插入
		DNode *p=HL;
		while(p->next!=NULL)
			p=p->next;
		p->next=newptr;
	}
}

void nodecut(DNode *&HL,char id[4])
{  //從鏈表中刪除節點
	if(HL==NULL)
	{ //表已空則輸出提示,結束程序
		cerr<<"鏈表已空,無法刪除節點,結束操作。"<<endl;
		exit(1);
	}
	DNode *ptr,*pos;
	ptr=HL;
	while(!comp(ptr->id,id)){
		pos=ptr;
	    ptr=ptr->next;
	}
	if(HL==ptr) HL=ptr->next;//刪除頭節點
	else pos->next=ptr->next;
	delete ptr;//釋放節點空間
}

//以下為第二部分,定義棧的抽象數據類型
struct Stack{ //用于存儲機位的棧
	int stack[20];//機位總數為兩百
	int top;
};

void InitStack(Stack &s)//初始化棧
{
	s.top=-1;
}

int EmptyStack(Stack &s)//檢查棧是否為空
{  
	return s.top==-1;
}

void Push(Stack &s,int item)//向棧中插入元素
{
	if(s.top==19){//棧已滿則輸出提示、結束程序
		cerr<<"Stack overflow!"<<endl;
		exit(1);
	}
	s.top++;
	s.stack[s.top]=item;
}

int Pop(Stack &s)//從棧中刪除元素
{
	if(s.top==-1){////棧已空則輸出提示、結束程序
		cerr<<"Stack is empty!"<<endl;
		exit(1);
	}
	int temp=s.stack[s.top];
	s.top--;
	return temp;
}

//以下為第三部分,定義結構體的模塊和計算上機時間的函數
struct Stu
{
	char id[4];
	char name[8];
	char clas[5];
	double  buy;
	double  total;
	double  left;
};

static struct Stu stu[6]=
{       //初始化存儲學生信息的結構體數組
		{"121","tom","w41",0,10,10},
		{"122","sam","w42",0,10,10},
		{"123","jay","w43",0,10,10},
		{"124","moses","w45",0,10,10},
		{"125","john","w46",0,10,10},
		{"126","peter","w48",0,10,10},
};

double timecut(int a[2],int b[2])
{   //計算上機時間的函數
	double c;
	if(a[1]>=b[1]){//a的秒值比b的秒值大
		int pp=a[1]-b[1];
		c=a[0]-b[0]+pp/60.0;
	}
	else{//a的秒值比b的秒值小
		int pp=a[1]-b[1]+60;
		c=a[0]-b[0]-1+pp/60.0;
	}
	return c;
}

//以下為第四部分,實現各種功能的模塊
void xiaji(Stack &lef,struct Stu stu[6],DNode *&sin,int n)
{   //處理有學生下機時的操作
	int a[2];
	char temp[4];
	double time=0.0;
	for(int i=0;i<4;i++)
		temp[i]=stu[n].id[i];
	DNode *ptr;
	ptr=sin;
	while(!comp(ptr->id,temp))
		ptr=ptr->next;
	cout<<"您的上機時間為"<<ptr->tmin[0]<<":"<<ptr->tmin[1]<<endl;
	cout<<"請分別輸入下機時間的時和分,中間空格:"<<endl;
	cin>>a[0]>>a[1];
	time=timecut(a,ptr->tmin);
	while(time<0||a[0]<0||a[0]>24||a[1]<0||a[1]>60)
	{
		cout<<"下機時間錯誤,請確認后再輸入!"<<endl;
		cin>>a[0]>>a[1];
		time=timecut(a,ptr->tmin);
	}
	stu[n].left=stu[n].left-time;
	Push(lef,ptr->seat);//回收機位,入棧
	nodecut(sin,ptr->id);//從當前上機學生表中刪除此人信息
	cout<<"下機并回收機位成功,上機總時間為"<<time<<endl;
}

void fun1(Stack &lef,struct Stu stu[6],DNode *&sin,int n)
{   //處理有學生刷卡進入時的操作
	int a[2],b[2];  //記錄時間的數組
	b[0]=b[1]=0;
	DNode *ptr;
	ptr=sin;
	while(ptr!=NULL)
	{
		if(!comp(ptr->id,stu[n].id))
	    	ptr=ptr->next;
		else break;
	}
	if(ptr==NULL) 
	{
	    cout<<"請分別輸入進入時間的時和分,中間空格:"<<endl;
        cin>>a[0]>>a[1];//輸入進入時間
		while(a[0]<0||a[0]>24||a[1]<0||a[1]>60)
		{
	     	cout<<"上機時間有誤,請確認后再輸入!"<<endl;
	    	cin>>a[0]>>a[1];
		}
	    if(EmptyStack(lef))//沒有空閑機位
		    cout<<"此時不能進入,沒有空閑機位。"<<endl;
	    else if(stu[n].left==0)//沒有剩余機時
		    cout<<"您已沒有剩余機時,不能進入,請購買機時。"<<endl;
	    else{   //符合要求則分配機位并記錄其信息
		    int temp=Pop(lef);
		    cout<<"機位分配成功,機位號為"<<temp<<endl;
		    NewInsert(sin,stu[n].id,stu[n].name,stu[n].clas,temp,a,b);
		}
	}
	else xiaji(lef,stu,sin,n);
}

void fun2(DNode *&sin)
{   //統計輸出當前上機學生的信息
	DNode *ptr=sin;
	cout<<"當前上機學生相關信息依次如下:"<<endl;
	cout<<setw(5)<<"學號";
	cout<<setw(8)<<"姓名";
	cout<<setw(6)<<"班級";
	cout<<setw(5)<<"座號";
	cout<<setw(4)<<"上機時間";
	cout<<endl;
	while(ptr!=NULL){//遍歷輸出學號、姓名、班級、座位號、進入時間
		cout<<setw(5)<<ptr->id;
		cout<<setw(8)<<ptr->name;
		cout<<setw(6)<<ptr->clas;
		cout<<setw(3)<<ptr->seat;
		cout<<setw(4)<<ptr->tmin[0]<<":"<<ptr->tmin[1];
		cout<<endl;
		ptr=ptr->next;
	}
}

void fun3(DNode *&sin,char temp[4])
{   //查找某個學生是否在上機
    DNode *ptr;
	ptr=sin;
	while(ptr!=NULL)
	{	
		if(!comp(ptr->id,temp))
	    	ptr=ptr->next;
		else break;
	}
	if(ptr==NULL)  cout<<"此人目前不在上機!"<<endl;
	else{
		cout<<"此人相關信息如下:"<<endl;
		cout<<"學號:"<<setw(5)<<ptr->id<<endl;
		cout<<"姓名:"<<setw(8)<<ptr->name<<endl;
		cout<<"班級:"<<setw(5)<<ptr->clas<<endl;
		cout<<"機號:"<<setw(3)<<ptr->seat<<endl;
		cout<<"上機時間:"<<setw(4)<<ptr->tmin[0]<<":"<<ptr->tmin[1];
		cout<<endl;
	}
}

void fun4(struct Stu stu[6],int m)//m為學生總人數
{   //統計學生剩余機時
	int i=0,temp=0;
	cout<<"剩余機時不足的學生有:"<<endl;
	for(i=0;i<m;i++)
	{   //輸出剩余機時為零的學生學號
		if(stu[i].left<=0) 
		{
			cout<<setw(4)<<stu[i].id;
			cout<<setw(7)<<stu[i].left<<endl;
		    temp++;
		}
	}
	if(temp==0) cout<<"沒有剩余機時不足的學生!"<<endl;
}

void fun5(Stack &lef)
{   //統計目前剩余機位情況
	if(EmptyStack(lef)) cout<<"目前無空閑機位!"<<endl;
	else{//有剩余機位則輸出空閑機位號
		cout<<"目前空閑的機位號為:"<<endl;
		int temp=lef.top;
		for(int i=0;i<=temp;i++)
			cout<<setw(4)<<lef.stack[i];
		cout<<endl;
	}
}

void fun6(struct Stu stu[6],int n,double time)
{   //購買機時的函數,購買機時、總機時、剩余機時都增加
	stu[n].left=stu[n].left+time;
	stu[n].buy=stu[n].buy+time;
	stu[n].total=stu[n].total+time;
	cout<<"購買及時成功,購買機時為"<<time<<endl;
}

int input()
{   //輸入并驗證學號的函數
    int patch1,i,num;
    char id[4];
	cout<<"請輸入你的學號(121~126):"<<endl;//輸入學號
	cin>>id;
	while(patch1){//學號輸入的異常處理
		i=0;//查找學號在學生信息表格中的編號
		while(i<6&&!comp(stu[i].id,id))
			i++;
		if(i==6) //沒找到則重新輸入
		{
			cout<<"學號錯誤,請重新輸入:"<<endl;
			cin>>id;
		}
		else {num=i;patch1=0;}//找到并記錄編號
	}
	return num;
}

//以下為第五部分,主函數
void main()
{
	int patch=1,func,i,num;
	char num1[4];
	double time;
	Stack lefp;
	InitStack(lefp);
	for(i=19;i>=0;i--)
		Push(lefp,i+1);
	DNode *infs;
	InitList(infs);
	cout<<"學生初始信息如下:"<<endl;
	for(i=0;i<6;i++){
		cout<<setw(5)<<stu[i].id;
		cout<<setw(8)<<stu[i].name;
		cout<<setw(5)<<stu[i].clas;
		cout<<setw(4)<<stu[i].buy;
		cout<<setw(4)<<stu[i].total;
		cout<<setw(4)<<stu[i].left;
		cout<<endl;
	}
	while(patch){
		cout<<"請選擇要執行的系統功能:"<<endl;
		cout<<"1:刷卡進出機房;"<<endl;
		cout<<"2:統計當前上機同學的信息;"<<endl;
		cout<<"3:查找某個學生是否在機房;"<<endl;
		cout<<"4:統計學生剩余機時的情況;"<<endl;
		cout<<"5:統計當前空閑機位情況;"<<endl;
		cout<<"6:購買機時;"<<endl;
		cin>>func;
		while(func<1||func>7){//功能選擇的異常處理
			cout<<"輸入錯誤,請重新選擇!"<<endl;
			cin>>func;
		}
		switch(func)//執行所選擇的功能功能
		{
		case 1: {
			        num=input();
					fun1(lefp,stu,infs,num);
					break;
				}
		case 2: fun2(infs); break;
		case 3: {
			        cout<<"請輸入你要查找的人的學號:"<<endl;
					cin>>num1;
					fun3(infs,num1);
					break;
				}
		case 4: fun4(stu,6); break;
		case 5: fun5(lefp); break;
		default: {
			        num=input();
			        cout<<"請輸入要購買的機時數:"<<endl;
			        cin>>time;
			        fun6(stu,num,time);
			        break;
				 }
		}
		cout<<"請選擇是否繼續程序,是請輸入1,否請輸入0:"<<endl;
		cin>>patch;
        while(patch!=0&&patch!=1)//功能選擇的異常處理
		{
			cout<<"功能選擇錯誤,請重新輸入"<<endl;
    		cin>>patch;
		}
	}
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人欧美一区二区三区1314| 国产不卡在线视频| 国产盗摄一区二区三区| 欧美少妇bbb| 国产精品沙发午睡系列990531| 亚洲香蕉伊在人在线观| 成人av小说网| 久久嫩草精品久久久精品| 樱桃视频在线观看一区| 国产老女人精品毛片久久| 欧美电影在线免费观看| 一区二区免费视频| 国产mv日韩mv欧美| 精品av综合导航| 日本亚洲电影天堂| 欧美日韩精品一区二区三区| 日韩vs国产vs欧美| 欧美日韩综合色| 亚洲欧美视频在线观看| 成人激情黄色小说| 欧美国产日本韩| 日韩理论片在线| 一区二区三区中文在线| 亚洲成人av在线电影| 国产成人在线网站| 久久久亚洲午夜电影| 日韩不卡手机在线v区| 欧美日韩第一区日日骚| 午夜视频在线观看一区二区 | 亚洲一区在线观看网站| 91网站黄www| 亚洲男人的天堂在线观看| 成人高清视频在线| 亚洲色图另类专区| 日本乱人伦一区| 亚洲国产一区二区视频| 欧美日韩在线播放一区| 亚洲成人一区二区在线观看| 欧美日本在线看| 天天综合色天天综合| 日韩精品自拍偷拍| 国产精品主播直播| 亚洲国产精品v| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲欧洲成人自拍| 91丝袜高跟美女视频| 婷婷综合五月天| 91精品国产乱码久久蜜臀| 美女免费视频一区二区| 久久久精品蜜桃| 91免费视频观看| 午夜精品福利一区二区蜜股av| 欧美精品丝袜久久久中文字幕| 毛片av中文字幕一区二区| 国产女同性恋一区二区| 91国产免费观看| 蜜芽一区二区三区| 中文字幕精品—区二区四季| 91福利在线观看| 狠狠网亚洲精品| 亚洲久草在线视频| 精品日韩一区二区| 色婷婷精品久久二区二区蜜臂av | 日韩一级片网址| 国产成人av一区二区三区在线观看| 日韩毛片高清在线播放| 欧美日韩国产经典色站一区二区三区 | 久久久久久亚洲综合影院红桃| 91在线精品秘密一区二区| 日日夜夜免费精品视频| 国产日产欧产精品推荐色| 欧美日韩免费在线视频| 国产精品亚洲人在线观看| 亚洲免费在线看| 久久日韩粉嫩一区二区三区| 欧美综合一区二区| 国产成人精品一区二区三区网站观看| 一区二区三区四区亚洲| 欧美精品一区二区三区高清aⅴ| 色综合久久99| 国产在线精品视频| 亚洲成av人影院| 国产精品免费视频一区| 欧美一区二区三区在线观看 | 亚洲欧美日韩电影| 26uuu欧美| 欧美日韩国产成人在线免费| 欧美伊人精品成人久久综合97 | 在线精品国精品国产尤物884a| 国产一区二区三区日韩| 日欧美一区二区| 亚洲精品伦理在线| 国产精品免费免费| 国产午夜一区二区三区| 91精品婷婷国产综合久久 | 亚洲高清三级视频| 中文字幕日韩av资源站| 久久久影视传媒| 日韩精品一区二区三区在线观看 | 欧美另类z0zxhd电影| 99国产精品视频免费观看| 国产传媒一区在线| 国产一区在线视频| 久久9热精品视频| 视频一区二区三区入口| 亚洲一区二区三区影院| 亚洲女人****多毛耸耸8| 国产精品久久久久aaaa| 中文一区在线播放| 国产日韩欧美精品在线| 久久这里都是精品| 久久新电视剧免费观看| 久久久久久久综合狠狠综合| 精品国产露脸精彩对白| 欧美一个色资源| 日韩欧美国产麻豆| 日韩三级中文字幕| 日韩欧美综合一区| 精品久久一二三区| 久久久午夜电影| 国产精品午夜在线| 综合久久久久久| 亚洲r级在线视频| 免费观看在线综合色| 精品一区免费av| 国产精品一二三四五| www.亚洲免费av| 日本高清成人免费播放| 欧美日韩国产综合草草| 欧美一二三区精品| 国产欧美一区二区精品忘忧草| 国产精品免费免费| 亚洲综合色婷婷| 日韩一区欧美二区| 国产精品888| 一本到不卡免费一区二区| 欧美色倩网站大全免费| 国产欧美一区在线| 亚洲视频香蕉人妖| 免费看日韩a级影片| 国产真实乱偷精品视频免| 不卡电影一区二区三区| 欧美特级限制片免费在线观看| 欧美一级日韩一级| 中文字幕久久午夜不卡| 香蕉久久夜色精品国产使用方法| 韩国在线一区二区| 在线观看不卡视频| 精品久久久久久久久久久久包黑料| 国产精品久久久久aaaa樱花 | 精品成人在线观看| 中文字幕亚洲不卡| 美女国产一区二区三区| 99久久综合精品| 日韩一区二区在线观看视频| 中文字幕一区二区三区视频| 热久久国产精品| 色哟哟欧美精品| 国产亚洲一二三区| 日av在线不卡| 91色九色蝌蚪| 久久久久国产精品厨房| 日韩精品一级中文字幕精品视频免费观看| 丁香婷婷综合色啪| 欧美一区二区三区爱爱| 亚洲天堂福利av| 国产乱子轮精品视频| 欧美精品一级二级| 亚洲精品美国一| jlzzjlzz亚洲女人18| 日韩精品一区在线| 日本亚洲视频在线| 欧美日韩在线免费视频| 最新中文字幕一区二区三区| 国产乱子伦视频一区二区三区| 欧美一区二区精品| 午夜电影一区二区| 欧美亚洲国产一区在线观看网站| 久久九九影视网| 国产在线一区二区综合免费视频| 欧美乱熟臀69xxxxxx| 亚洲最大色网站| 在线一区二区三区四区| 综合久久一区二区三区| 不卡一卡二卡三乱码免费网站 | 欧美成人精品1314www| 婷婷激情综合网| 欧美精品三级在线观看| 亚洲小说欧美激情另类| 欧美亚洲国产一卡| 亚洲国产成人tv| 欧美日韩国产综合草草| 亚洲国产精品精华液网站 | 91亚洲国产成人精品一区二区三| 久久综合久久久久88| 国产主播一区二区三区| 久久网站最新地址| 成人综合在线视频| 亚洲欧洲av色图| 色中色一区二区|