优化前三步

来源:互联网 发布:电子书杂志制作软件 编辑:程序博客网 时间: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;}
原创粉丝点击