优化前三步
来源:互联网 发布:电子书杂志制作软件 编辑:程序博客网 时间:2024/06/14 15:05
/////////////////////////////////子函数1 创建进程函数 #include <stdio.h> //标准输入输出函数#include <stdlib.h> //标准库函数#include <string> //字符串处理函数#include <ctype.h> //字符操作函数#include <conio.h> //控制台输入输出函数,虽然不是标准头文件,但是大部分编译器都支持#include <iostream>using namespace std;//________ //定义进程数量/** *在文件开头声明函数原型,将函数定义放在main()函数后面 *这是一个优雅的编程习惯**/int yanzheng(void); //验证void Menu(void); //主界面int Create(int); //创建进程int View(int); //查看进程int Swap(int,int); //换出进程int swapdg();//swap递归函数struct PCB //定义进程结构(PCB) { int ID; //进程ID int jj; //进程优先级 int dx; //进程大小 string jx; //进程信息 bool hs; //活动标识 }; //结构体寄存器,用于中转其内在数据struct PCB A[5],t;int A_ID[5];//进程ID寄存器int main(){if(yanzheng()==0) { return 0; // 主函数返回0 结束主函数; }//用于验证密码////////////////////////////////////////////////////////////char key;//用于判断用户对于子界面的选择 int i,a,s=0; //a用于判断用户输入的选择,s用于累加进程数量 进程总数 ,i用于作为循环变量 //________; //要进行的操作 //显示程序菜单,执行各种操作 while(1) { system("cls"); //清屏 Menu(); //显示主菜单 printf("请选择一个项目\n"); scanf("%d",&a); //输入要执行的操作 //刷新(清空)stdin缓冲区 system("cls"); //清屏 switch(a) { case 1: printf(" 1.创建新进程\n"); for(i=0;i<5;i++) { Create(i); s++; cout<<"是否继续创建进程,Y键确认"<<endl; cin>>key; if(key!='Y') { i=5; } } printf("按任意键返回主菜单\n"); getch(); break; case 2: printf(" 2.查看某进程\n"); if(s!=0) { View(s); } else { cout<<"还未创建进程"<<endl; } printf("按任意键返回主菜单\n"); getch(); break; case 3: //换出进程 printf(" 3.换出某进程\n"); cout<<"当前进程id号如下"<<endl; for(i=0;i<s;i++) { printf("第%d个进程的ID为%d\t",i+1,A[i].ID); } Swap(0,s); printf("按任意键返回主菜单\n"); getch(); break; case 4: //撤销进程 /* while(1) { ________ //调用撤销进程函数 if(________) //继续撤销进程 ________ //清屏 else //返回主菜单 ________ } */ printf("4.撤销某进程\n"); printf("按任意键返回主菜单\n"); getch(); break; //Redo(); case 5: //进程通信 /* while(1) { ________ //调用进程通信函数 if(________) //继续进程通信 ________ //清屏 else //返回主菜单 ________ } */ printf("5.进程间通信\n"); printf("按任意键返回主菜单\n"); getch(); break; case 6: //退出系统 return 0; //正常退出 default: printf("没有相应的菜单,请从新选择...\n"); printf("按任意键返回主菜单\n"); } //return 0; } return 0; }/////////////////////////////////////////////////////////////// int Create(int c)//c为进程下标 { int j=0,i=0; system("cls"); printf("请输入第%d创建进程的ID\n",c+1); scanf("%d",&A[c].ID); printf("请输入第%d进程的优先级(JJ)\n",c+1); scanf("%d",&A[c].jj); printf("请输入第%d进程的大小(DX)\n",c+1); scanf("%d",&A[c].dx);//////////////////////////////////////////////////////// printf("请输入第%d进程的信息(jx)\n",c+1); cin>>A[c].jx;//////////////////////////////////////////////////////// A[c].hs=true; for(i=0;i<c;i++) { if(A[c].ID==A[c--].ID) {cout<<"进程ID与之前进程冲突,请重新输入该进程ID"<<endl; printf("请输入第%d创建进程的ID\n",c+1); scanf("%d",&A[c].ID); } } A_ID[c]=A[c].ID; //为进程ID寄存器赋值 system("cls"); return 0; }//////////////////////////////////////////////////////////////////////// void Menu(){ printf("***********************************************\n"); printf("* 进程演示系统 *\n"); printf("* 信管一班 201552070118 王同学 *\n"); printf("***********************************************\n"); printf(" 1.创建新进程 2.查看某进程 \n"); printf(" 3.换出某进程 4.撤销某进程 \n"); printf(" 5.进程间通信 6.退出系统 \n"); printf("***********************************************\n"); printf("请选择(1~6):");}////////////////////////////////////////////////////////////////////int yanzheng() ////////////////////验证码函数{ int a,i,j=3; for(i=0;i<3;i++) { printf("请输入验证密码(6位)"); scanf("%d",&a); if(a==123456) //验证密码是否正确 { i=3; //如果密码正确 ,改变循环变量,结束循环 } else { j--; //j--提示用户输入密码错误次数 printf("你输错了,还有%d次机会\n",j); if(j==0) { return 0; //j==0 结束程序 } } }}///////////////////////////////////////////////////////////int View(int a) //查看进程{ int i; printf("***********************************************\n"); printf("共创建了%d个进程\n",a); for(i=0;i<a;i++) { printf("第%d个进程的ID为%d\n",i+1,A[i].ID); printf("第%d个进程的优先级为%d\n",i+1,A[i].jj); printf("第%d个进程的大小为%d\n",i+1,A[i].dx); printf("第%d个进程的信息为",i+1); cout<<A[i].jx<<endl; printf("第%d个进程标示为",i+1); if(A[i].hs==true) { cout<<"TRUE"<<endl; } printf("***********************************************\n"); } printf("***********************************************\n"); return 0;}////////////////////////////////////////////////////////int Swap(int swap_c,int swap_s) //换出进程 swap_c用于记录进程ID寄存器,swap_s用于记录当前创建进程总数{ int swap_A,swap_B,i,j; //swap_A,swap_B为交换的两个进程变量,变量内所载入的为所交换进程的ID号,由用户输入。i为循环变量 char swap_n; //swap_n为用户判断是否要交换操作。 cout<<"如果不需要调换进程按N返回上一层"<<endl; cin>>swap_n; if(swap_n=='N') { getch(); return 0; }//用户输入swap_n 判断确认操作 if(swap_s<2) { cout<<"当前进程数小于2"<<endl<<"按任意键返回"<<endl; getch(); return 0; }//swap_s为当前创建进程总数,如果总数小于2 那么结束 交换操作 else { //当通过前边验证时,正式进入交换阶段 //用户输入swap_A 与 swap_B for(i=0;i<swap_s;i++) { cout<<"请输入需要交换的A进程的ID号"<<endl; cin>>swap_A; cout<<"请输入需要交换的B进程的ID号"<<endl; cin>>swap_B; if(swap_A==A_ID[i])//swap_A与A_ID[i] 进程ID寄存器, 作比较找到用户输入的ID在 当前系统中存在 { for(j=0;j<swap_s;j++) if(swap_B==A_ID[j]) { t=A[swap_A]; A[swap_A]=A[swap_B]; A[swap_B]=t; return 0; } else if(j+1==swap_s) { cout<<"swap_B输入有误"<<endl; getch(); break; } break;//如果swap_A==A_ID[i]不满足,但满足i+1==swap_s,也就是说当i达到判定范围的最后一次操作时 输出用户输入的swap_A有误,为i初始化 } else if(i+1==swap_s) { cout<<"swap_A输入有误"<<endl; getch(); break; } } } return 0;}
阅读全文
0 0
- 优化前三步
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 优化
- 处理ViewPager嵌套RecycleView卡顿问题
- 575. Distribute Candies
- Eclipse中导入外部jar包
- day 2 替换空格
- d1
- 优化前三步
- 前端静态基于纯js的最后一步验证
- (PHP)基于Token的身份验证中对无状态的理解
- 搭建FTP服务器
- 安卓高级控件3之Gallery(画廊)
- Numpy中转置transpose、T和swapaxes
- 亿级Web系统的容错性建设实践
- Uncaught RangeError: Maximum call stack size exceeded
- 前端-表头固定,内容滚动