前三步融合测试
#include <stdio.h> //标准输入输出函数
#include <stdlib.h> //标准库函数
#include <string.h> //字符串处理函数
#include <ctype.h> //字符操作函数
#include <conio.h> //控制台输入输出函数,虽然不是标准头文件,但是大部分编译器都支持
//________ //定义进程数量
/**
*在文件开头声明函数原型,将函数定义放在main()函数后面
*这是一个优雅的编程习惯
**/
int yanzheng(void); //验证
void Menu(void); //主界面
int Create(void); //创建进程
struct PCB //定义进程结构(PCB)
{
int ID; //进程ID
int jj; //进程优先级
int dx; //进程大小
char jx[10]; //进程信息
char hs[2]; //活动标识
};
int main()
{
int a; //用于判断用户输入的选择
if(yanzheng()==0)
{
return 0; // 主函数返回0 结束主函数;
}
//________; //要进行的操作
//显示程序菜单,执行各种操作
while(1)
{
system("cls");
//清屏
Menu();
//显示主菜单
printf("请选择一个项目\n");
scanf("%d",&a);
//输入要执行的操作
//刷新(清空)stdin缓冲区
system("cls");
//清屏
switch(a)
{
case 1:
printf(" 1.创建新进程\n");
Create();
//创建进程
/*while()
{
__ //调用创建进程函数
if(________) //继续创建进程
________ //清屏
else //返回主菜单
________
}
*/
printf("按任意键返回主菜单\n");
getch();
break;
case 2: //查看进程
/*
while(1)
{
________ //调用查看进程函数
if(________) //继续查看进程
________ //清屏
else //返回主菜单
________
}
*/
printf(" 2.查看某进程\n");
printf("按任意键返回主菜单\n");
getch();
break;
case 3: //换出进程
/*
while(1)
{
________ //调用换出进程函数
if(________) //继续换出进程
________ //清屏
else //返回主菜单
________
}
*/
printf(" 3.换出某进程\n");
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;
}
void Menu()
{
printf("***********************************************\n");
printf("* 进程演示系统 *\n");
printf("* 信管一班 201552070XXX 王同学 *\n");
printf("***********************************************\n");
printf(" 1.创建新进程 2.查看某进程 \n");
printf(" 3.换出某进程 4.撤销某进程 \n");
printf(" 5.进程间通信 6.退出系统 \n");
printf("***********************************************\n");
printf("请选择(1~6):");
}
/子函数1 创建进程函数
int Create()
{
int j,i,a;
printf("请输入需要创建进程的数量");
scanf("%d",&a);
struct PCB A[100];
for(i=0;i<a;i++)
{
printf("请输入第%d创建进程的ID\n",i+1);
scanf("%d",&A[i].ID);
printf("请输入第%d进程的优先级(JJ)\n",i+1);
scanf("%d",&A[i].jj);
printf("请输入第%d进程的大小(DX)\n",i+1);
scanf("%d",&A[i].dx);
printf("请输入第%d进程的活动标识(hs)",i+1);
for(j=0;j<2;j++)
{
scanf("%c",&A[i].hs[j]);
}
if(j==1)
{
printf("\n");
}
}
printf("请输入第%d进程的信息(jx)",i+1);
for(j=0;j<10;j++)
{
scanf("%c",&A[i].jx[j]);
}
if(j==9)
{
printf("\n");
}
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);
for(j=0;j<11;j++)
{
printf("%c",A[i].jx[j]);
if(j==10)
printf("\n");
}
printf("第%d个进程标示为",i+1);
for(j=0;j<3;j++)
{
printf("%c",A[i].jx[j]);
if(j==2)
printf("\n");
}
}
printf("***********************************************\n");
return 0;
}
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 结束程序
}
}
}
}