文档库 最新最全的文档下载
当前位置:文档库 › 操作系统project

操作系统project

操作系统project
操作系统project

一、实验题目:

熟悉Linux shell命令,熟悉fork,exec的使用.实验1,2当堂完成,报告编写实验1,2.

二、实验目的:

通过对相关linux GNU c语法和命令的熟悉,可进一步了解linux操作系统的功能、结构;了解linux的进程创建方法,父子进程的关系,进程的回收,进程的不同状态等。

三实验设备及环境:

1. 硬件设备:PC机一台

2. 软件环境:安装Linux操作系统,并安装相关的程序开发环境,如C \C++\tsh\bsh等编程语言环境。

四实验内容及要求:

1编写一个shell命令提示符,

(1)包含以下内部命令:

i. cd - change the current default directory to . If the argument is not present, report the current directory. If the directory does not exist an appropriate error should be reported. This command should also change the PWD environment variable.

ii. clr - clear the screen.

iii. dir - list the contents of directory

iv. environ - list all the environment strings

v. echo - display on the display followed by a new line (multiple spaces/tabs may be reduced to a single space)

vi. help - display the user manual using the more filter

vii. pause - pause operation of the shell until 'Enter' is pressed

viii. quit - quit the shell

ix. The shell environment should contain shell=/myshell where /myshell is the full path for the shell executable (not a hardwired path back to your directory, but the one from which it was executed)

(2)在环境变量里添加parent=/myshell

(3)支持批处理,如:

myshell batchfile

(4)支持i/o-redirection,如:

programname arg1 arg2 < inputfile > outputfile

(5)支持后台运行,如:dir &

(6)提示包含当前工作目录

(7)用户手册

(8)makefile文件

2 主机调度shell程序

(1)实时进程基于先来先服务,同时抢占其他正在运行的低优先级的进程而立即被执行。这些实时进程能够一直运行到结束。

(2)普通的用户进程在一个三级反馈的调度器上运行。调度器得到基本时间是1秒。这也是反馈调度器的时间量的值。

五、实验方法内容

1.需要的头文件(实验1,2共用)

#include

#include

#include

#include

#include

2.主要的常量变量(实验1,2共用)

pid_t p;

3.主要模块(实验1,2共用)

int main(int argc, char *argv[])

六.代码

实验一代码:

//主函数

#include

#include

#include

#include

#include

#include

#include"myio.h"

#ifndef FALSE

#define FALSE 0

#endif

#ifndef TRUE

#define TRUE 1

#endif

extern char **environ;

int main(int argc,char **argv)

{

int oldstdout,oldstdin;

oldstdout=dup(1);

oldstdin=dup(0);

char input[300]; //input string

char *cmdline;

char *cmd[20];

char rmpath[100];

char *execmd[20];

char cwdstr[100]; //paraments //valid command

char cmdbuf[300];//all the command

getcwd(rmpath,100);

strcat(rmpath,"/readme");

printf("%s\n",rmpath);

strcpy(cwdstr,"shell=");// & set environment value

if ((getcwd(&cwdstr[6], sizeof(cwdstr)-6))) //从第四个开始接收getcwd传来的值//buf if OK, NULL on error

{ strcat(cwdstr,"/exer21") ;

if (putenv(strdup(cwdstr))) // 0 if OK, non-zero on error

printf("add of shell environment variable failed\n");

} else ;

while(1)

{

if(getcwd(cwdstr, sizeof(cwdstr))) // read current working directory printf("[myshell*%s]=>", cwdstr); // output as prompt

else

printf("getcwd ERROR \n=>");

int usexec=TRUE;

cmdbuf[0]=0;

int i=0;

while((input[i]=getchar())!='\n') i++;

//input the string

input[i]='\0';

if(input[0]=='\0') continue;

char* p;

cmdline=myio(input);

int j=1;

cmd[0]=strtok(cmdline," ");

while ((cmd[j] = strtok(NULL," "))) j++;

//上面是得到用户的输入并分离命令和参数,下面是对命令进行解释

if(!strcmp(cmd[0],"quit")) exit(0);//input 'quit' exit the program else

if(!strcmp(cmd[0],"dir")) //'dir'

{

if(j==1) strcpy(cmd[2],cmd[1]);

cmd[0]="ls";

cmd[1]="-al";

usexec=TRUE;

}else

if(!strcmp(cmd[0],"clr")) //'clr'

{

strcpy(cmd[0],"clear");

usexec=TRUE;

}else

if(!strcmp(cmd[0],"help")) //'help'

{

cmd[0]="more";

cmd[1]="readme";

cmd[2]=NULL;

usexec=TRUE;

}

else

if(!strcmp(cmd[0],"cd")) //'cd '

{

if(j==1){ strcpy(cmd[0],"pwd");usexec=TRUE;}

else if(j>2) printf("ERROR:too many paraments\n");

else

{

if(chdir(cmd[1])) printf("change directory failed\n");

else

{

strcpy(cwdstr,"PWD="); // & set environment value

if ((getcwd(&cwdstr[4], sizeof(cwdstr)-4))) //从第四个开始接收getcwd传来的值buf if OK, NULL on error

{

if (putenv(strdup(cwdstr))) // 0 if OK, non-zero on

error

printf("change of PWD environment variable failed\n");

} else printf("retrieving cwd\n");

}

usexec=FALSE;

}

}

else

if(!strcmp(cmd[0],"environment")) //'environment'

{

char **env =environ;

while(*env) printf("%s\n",*env++);

usexec=FALSE;

}

if(cmd[0][0]!='\0')

{

if(usexec==1)

{

execute(cmd);

}

}

fflush(stdout);

dup2(oldstdout,1);

dup2(oldstdin,0);

}

}

//.h文件

char* myio(char* input) //实现重定向

{

char* cmdline;

char* middle;

char *pathin;

char *pathout;

char *p;

int i=0,j=0;

while(input[i]!='\0')

{

if(input[i]=='>') j++;

i++;

}

cmdline=strtok(input,">"); //get the cmdline

// printf("cmdline is%s\n",cmdline);

p=strtok(NULL,">");

if(p)

{

// printf("the path is%s\n",myio(p)); //get the path while((*p)==' ') p++;

pathout=p;

FILE* fd;

if(j==1) fd = fopen(pathout,"w+"); //输出重定向

if(j==2) { fd = fopen(pathout,"a");}

if(j>2) p rintf("redirection erro to much '>'\n");

dup2(fileno(fd),1);

}

cmdline=strtok(cmdline,"<");

p=strtok(NULL,"<");

if(p)

{

while((*p)==' ') p++;

pathin=p;

FILE* fd;

fd = fopen(pathin,"r"); //输入重定向

dup2(fileno(fd),0);

}

return cmdline;

}

void sysyerrmsg(char *msg1,char* msg2);

void execute(char ** args) //fork+execvp 执行程序

{

int status;

pid_t child_pid;

// fork

switch (child_pid = fork()) {

// something wrong with fork

case -1:

syserrmsg("fork",NULL); break;

// execution in child process

case 0:

execvp(args[0], args); syserrmsg("exec failed -",args[0]); exit(127);

}

waitpid(child_pid, &status, WUNTRACED);

}

// void

void syserrmsg(char * msg1, char * msg2)

{

if (msg1)

fprintf(stderr,"ERROR - %s ", msg1);

if (msg2)

fprintf(stderr,"%s ", msg2);

fprintf(stderr,"; ");

perror(NULL);

}

实验二代码:

1.host.c代码

/****************************************************************************** hostd.c - Hypothetical Operating System Testbed (HOST) dispatcher shell.

******************************************************************************/ #include "hostd.h"

/****************************************************************************** Function declarations

******************************************************************************/

/**

Read job dispatch list and enqueue all jobs to input queue.

@param dispatch_list job dispatch list

*/

void fill_inputQ(FILE *dispatch_list) {

char buff[MAXBUFF]; /* input buffer */

Pcb *p;

while (!feof(dispatch_list)) {

if (fgets(buff, MAXBUFF, dispatch_list)) {

p = createnullPcb();

p = initialisePcb(p, buff);

inputQ = enqPcb(inputQ, p);

}

}

}

/**

Unload pending process(es) from inputQ and dispatch to either

realtimeQ and userjobQ.

*/

void unload_inputQ(void) {

Pcb *p;

/* unload if arrival time reached */

while (inputQ && inputQ->arrivaltime <= timer) {

p = deqPcb(&inputQ); /* dequeue process from inputQ */

/* enqueue on either realtimeQ or userjobQ depending on priority */

if (p->priority == PRIORITYMIN) {

/* delete job if excess resource or memory request */

if (p->printers > RTJOB_PRINTERMAX ||

p->scanners > RTJOB_SCANNERMAX ||

p->modems > RTJOB_MODEMMAX ||

p->cd_drives > RTJOB_CDDRIVEMAX ||

p->memoryusage > RTJOB_MEMORY) {

fprintf(stderr, "One process deleted - excess resource/memory "

"request\n");

free(p);

p = NULL;

}

else {

p->mab = memAlloc(rtmab, RTJOB_MEMORY);

realtimeQ = enqPcb(realtimeQ, p);

}

}

else if (p->priority <= PRIORITYMAX) {

/* delete job if excess resource or memory request */

if (p->printers > PRINTERS ||

p->scanners > SCANNERS ||

p->modems > MODEMS ||

p->cd_drives > CD_DRIVES ||

p->memoryusage > MEMORY - RTJOB_MEMORY) {

fprintf(stderr, "One process deleted - excess resource/memory "

"request\n");

free(p);

p = NULL;

}

else {

userjobQ = enqPcb(userjobQ, p);

}

}

else {

fprintf(stderr, "Unknown process priority level (must be between\

0 and 3)\n");

exit(-1);

}

}

}

/******************************************************************************

Unload pending process(es) from userjobQ, allocate memory and resources

and dispatch to appropriate priorityQ.

******************************************************************************/ void unload_userjobQ(void) {

Pcb *p;

Mab *m;

/* unload if memory and resources are available */

while (userjobQ && (m = memChk(mab, userjobQ->memoryusage)) &&

!rsrcChk(userjobQ)) {

p = deqPcb(&userjobQ); /* dequeue process from userjobQ */

p->status = READY; /* mark as ready to run */

/* allocate memory to process */

if (p->memoryusage == m->size - m->allocated)

p->mab = memAlloc(m, p->memoryusage); /* allocate if just fit */ else

p->mab = memSplit(m, p->memoryusage); /* split otherwise */

/* allocate I/O resources to process */

rsrcAlloc(p);

/* enqueue on appropriate priority feedback queue */

switch (p->priority) {

case 1: priority1Q = enqPcb(priority1Q, p); break;

case 2: priority2Q = enqPcb(priority2Q, p); break;

case 3: priority3Q = enqPcb(priority3Q, p); break;

default:

fprintf(stderr, "Unknown process priority level (must be\

between 1 and 3)\n");

exit(-1);

}

}

}

/****************************************************************************** Main program

******************************************************************************/

int main(int argc, char **argv) {

FILE *dispatch_list;

Pcb *p, *curr;

/* throw error if not two arguments supplied */

if (argc != 2) {

fprintf(stderr, "Usage: hostd \n");

return -1;

}

/* open job dispatch list for reading */

if (!(dispatch_list = freopen(argv[1], "r", stdin))) {

fprintf(stderr, "Dispatch job file \"%s\" not found\n", argv[1]);

return -1;

}

/* initialise dispatcher queues */

inputQ = NULL;

realtimeQ = NULL;

userjobQ = NULL;

priority1Q = NULL;

priority2Q = NULL;

priority3Q = NULL;

/* initialise memory structures */

if (!memChk(mab, MEMORY)) {

/* split into two blocks; one for real-time process and the other

to be shared among user jobs */

mab = memAlloc(mab, MEMORY);

mab = memSplit(mab, RTJOB_MEMORY);

rtmab = mab;

mab = mab->next;

/* real-time memory and user-job memory should not be linked */

rtmab->next = NULL;

mab->prev = NULL;

}

/* initialise resource structures */

printers = PRINTERS;

scanners = SCANNERS;

modems = MODEMS;

cd_drives = CD_DRIVES;

/* fill inputQ from dispatch list file */

fill_inputQ(dispatch_list);

timer = 0; /* start dispatcher timer */

curr = NULL; /* no running process */

/* while there is anything in the queues or currently running process */ while (inputQ || realtimeQ || userjobQ ||

priority1Q || priority2Q || priority3Q || curr) {

/* unload pending process(es) from inputQ */

unload_inputQ();

/* unload pending process(es) from userjobQ */

unload_userjobQ();

/* if a process is currently running */

if (curr) {

/* decrement process remaining time */

curr->remainingcputime -= QUANTUM;

/* if time's up */

if (curr->remainingcputime <= 0) {

/* terminate pcb */

curr = terminatePcb(curr);

/* free memory and resources allocated to process */

if (curr->priority == PRIORITYMIN) {

curr->mab->allocated = 0;

}

else {

memFree(curr->mab); /* user process */

rsrcFree(curr);

}

free(curr); /* free up process structure memory */

curr = NULL; /* now there is no running process */

}

/* if curr is user process and other processes are waiting in any of the queues */

else if (curr->priority > PRIORITYMIN &&

(realtimeQ || priority1Q || priority2Q || priority3Q)) {

/* suspend pcb */

curr = suspendPcb(curr);

/* reduce priority and enqueue to appropriate priorityQ */

if (curr->priority < PRIORITYMAX) curr->priority += 1;

switch (curr->priority) {

case 2: priority2Q = enqPcb(priority2Q, curr); break;

case 3: priority3Q = enqPcb(priority3Q, curr); break;

default: break;

}

curr = NULL; /* now there is no running process */ }

}

/* if no process currently running and real-time queue and feedback queues are not all empty */

if (!curr && (realtimeQ || priority1Q || priority2Q || priority3Q)) { /* dequeue a process from the highest priority queue that is not empty */

if (realtimeQ)

p = deqPcb(&realtimeQ);

else if (priority1Q)

p = deqPcb(&priority1Q);

else if (priority2Q)

p = deqPcb(&priority2Q);

else

p = deqPcb(&priority3Q);

/* restart process if suspended, else start it */

if (p->status == SUSPENDED)

p = restartPcb(p);

else

p = startPcb(p);

curr = p; /* set as currently running process */ }

sleep(QUANTUM); /* sleep for QUANTUM second */

timer += QUANTUM; /* increment dispatcher timer */ }

/* free memory at end */

memFree(mab);

memFree(rtmab);

mab = NULL;

rtmab = NULL;

return 0;

}

2.mab.c代码

/********************************************

mab.c - Contiguous memory blocks.

********************************************/

#include "mab.h"

/********************************************

Function declarations

********************************************/

/********************************************

Allocate memory block.

********************************************/

Mab* memAlloc(Mab *m, int size) {

if (!m) {

if ((m = malloc(sizeof(Mab)))) {

m->offset = 0;

m->size = size;

m->allocated = size;

m->next = NULL;

m->prev = NULL;

}

else {

fprintf(stderr, "Cannot allocate memory.\n");

}

}

else {

m->allocated = size;

}

return m; /* return allocated block */

}

/********************************************

Check if memory is available.

********************************************/

Mab* memChk(Mab *m, int size) {

/* search each partition */

while (m) {

/* get partition that can fit size */

if (size <= m->size - m->allocated) return m;

else m = m->next;

}

return NULL; /* no partition is available */

}

/********************************************

Free memory block.

********************************************/

Mab* memFree(Mab *m) {

/* if already freed */

if (!m) {

return NULL;

}

/* if either side of m initialised */

else if (m->prev || m->next) {

m->allocated = 0;

m = memMerge(m); /* merge with adjacent free block/s */ }

/* if both sides uninitialised, free as normal */

else {

free(m);

m = NULL;

}

return m;

}

/********************************************

Merge adjacent free memory blocks.

********************************************/

Mab* memMerge(Mab *m) {

Mab *ml, *mr, *temp;

ml = m->prev;

mr = m->next;

/* merge left */

if (ml && ml->allocated == 0) {

temp = m;

m = ml;

m->size += temp->size;

m->next = temp->next;

if (m->next) (m->next)->prev = m;

free(temp);

temp = NULL;

}

/* merge right */

if (mr && mr->allocated == 0) {

temp = mr;

m->size += temp->size;

m->next = temp->next;

if (m->next) (m->next)->prev = m;

free(temp);

temp = NULL;

}

return m;

}

/********************************************

Split a memory block into two adjacent partitions.

The first partition is allocated with size

and the second left unallocated.

********************************************/

Mab* memSplit(Mab *m, int size) {

Mab *mr;

/* second partition is the remaining free space */

if ((mr = malloc(sizeof(Mab)))) {

mr->offset = m->offset + size;

mr->size = m->size - size;

mr->allocated = 0;

/* set new partition to inbetween first partition and next block */

mr->next = m->next;

if (mr->next) (mr->next)->prev = mr;

mr->prev = m;

m->next = mr;

}

else {

fprintf(stderr, "Error while splitting memory\n");

}

/* first partition will be fully allocated and point to second partition */ m->size = size;

m->allocated = size;

return m;

}

3.pcb.c代码

/*************************************************

pcb.c - Process control block

*************************************************/

#include "pcb.h"

/************************************************* Function declarations

*************************************************/

Pcb* createnullPcb(void) {

Pcb *p;

if ((p = malloc(sizeof(Pcb)))) {

p->status = UNINITIALISED;

p->arrivaltime = 0;

p->priority = 0;

p->remainingcputime = 0;

p->memoryusage = 0;

p->printers = 0;

p->scanners = 0;

p->modems = 0;

p->cd_drives = 0;

p->args[0] = "./process";

p->args[1] = NULL;

p->mab = NULL;

p->next = NULL;

return p;

}

else {

fprintf(stderr, "Cannot create PCB.\n");

return NULL;

}

}

/***************************************************** PcbPtr deqPcb (PcbPtr *headofQ)

* - dequeue process at front of queue

* returns pointer of process

******************************************************/ Pcb* deqPcb(Pcb **head) {

Pcb *p;

if (head) {

p = *head;

*head = (*head)->next;

p->next = NULL;

return p;

}

else {

fprintf(stderr, "Nothing to dequeue.\n");

return NULL;

}

}

/*****************************************************

PcbPtr enqPcb(PcbPtr headofQ, PcbPtr process)

* - queue process (or join queues) at end of queue

* returns head of queue

******************************************************/

Pcb* enqPcb(Pcb *head, Pcb *p) {

Pcb *curr;

/* first job goes to head */

if (!head) {

head = p;

}

/* the rest goes to tail */

else {

curr = head;

while (curr->next) curr = curr->next;

curr->next = p;

}

return head;

}

/*****************************************************

Initialise process from a string of parameters.

* return new process

*****************************************************/

Pcb* initialisePcb(Pcb *p, char *buff) {

p->status = INITIALISED;

p->arrivaltime = atoi(strtok(buff, DELIMITERS));

p->priority = atoi(strtok(NULL, DELIMITERS));

p->remainingcputime = atoi(strtok(NULL, DELIMITERS));

p->memoryusage = atoi(strtok(NULL, DELIMITERS));

p->printers = atoi(strtok(NULL, DELIMITERS));

p->scanners = atoi(strtok(NULL, DELIMITERS));

p->modems = atoi(strtok(NULL, DELIMITERS));

p->cd_drives = atoi(strtok(NULL, DELIMITERS));

return p;

}

/*******************************************************

* - print process attributes on iostream

* returns PcbPtr of process

******************************************************/

void printPcbInfo(Pcb *p) {

fprintf(stdout, "pid: %d memoffset: %d priority: %d time: %d memory: %d "

"printers: %d scanners: %d modems: %d drives: %d\n", (int) p->pid,

p->mab->offset, p->priority, p->remainingcputime, p->memoryusage,

p->printers, p->scanners, p->modems, p->cd_drives);

}

/*******************************************************

* PcbPtr terminatePcb(PcbPtr process)

* - restart a process

* returns:

* PcbPtr of process

* NULL if terminate failed

******************************************************/

Pcb* restartPcb(Pcb *p) {

if (kill(p->pid, SIGCONT)) {

fprintf(stderr, "Restart of %d failed", (int) p->pid);

return NULL;

}

p->status = RUNNING;

return p;

}

/*******************************************************

* PcbPtr startPcb(PcbPtr process)

* - start a process

* returns:

* PcbPtr of process

* NULL if start (restart) failed

******************************************************/

Pcb* startPcb(Pcb *p) {

/* if new process */

if ((p->pid = fork()) == 0) {

p->pid = getpid();

p->status = RUNNING;

printPcbInfo(p); /* print info */

execvp(p->args[0], p->args);

}

/* if parent process */

else {

kill(p->pid, SIGCONT);

p->status = RUNNING;

}

return p;

}

/*******************************************************

* PcbPtr suspendPcb(PcbPtr process)

* - suspend a process

* returns:

* PcbPtr of process

* NULL if suspend failed

******************************************************/ Pcb* suspendPcb(Pcb *p) {

int status;

if (kill(p->pid, SIGTSTP)) {

fprintf(stderr, "Suspend of %d failed", (int) p->pid);

}

waitpid(p->pid, &status, WUNTRACED);

p->status = SUSPENDED;

return p;

}

/******************************************************* * PcbPtr terminatePcb(PcbPtr process)

* - terminate a process

* returns:

* PcbPtr of process

* NULL if terminate failed

******************************************************/ Pcb* terminatePcb(Pcb *p) {

int status;

if (kill(p->pid, SIGINT)) {

fprintf(stderr, "Terminate of %d failed", (int) p->pid);

}

waitpid(p->pid, &status, WUNTRACED);

p->status = TERMINA TED;

return p;

}

4.rsrc.c代码

/*******************************************

rsrc.c - Resource allocation.

********************************************/

#include "rsrc.h"

/*******************************************

Allocate resource to process.

********************************************/

void rsrcAlloc(Pcb *p) {

printers -= p->printers;

scanners -= p->scanners;

modems -= p->modems;

cd_drives -= p->cd_drives;

}

/*******************************************

Check if resource available for process.

********************************************/

int rsrcChk(Pcb *p) {

if (printers >= p->printers &&

scanners >= p->scanners &&

modems >= p->modems &&

cd_drives >= p->cd_drives) {

return 0;

}

else {

return -1;

}

}

/*******************************************

Free resource from process.

********************************************/

void rsrcFree(Pcb *p) {

printers += p->printers;

scanners += p->scanners;

modems += p->modems;

cd_drives += p->cd_drives;

}

5.sigtrap.c

/******************************************************************** OS Exercises - project 2

sigtrap - report system signals applied to process

usage;

sigtrap [n]

[n] is time for process to exist - default 20 seconds

program ticks away reporting process id and tick count every

second. the program traps and reports the following signals:

SIGINT, SIGQUIT, SIGHUP, SIGTERM, SIGABRT, SIGCONT, SIGTSTP program can not trap SIGSTOP or SIGKILL

to help identify specific processes, the program uses the process

id to select one of 32 colour combinations for the display to an

ASCC terminal.

output is to stdout (set in #define), reset to BLACK and NORMAL

and flushed after every printf.

*******************************************************************/ #include

#include

#include

Microsoft Office Project 2010简易操作指南

Microsoft Office Project 2010 操作手册 <英文界面版> V 1.0 作者:李东 Donglicn@https://www.wendangku.net/doc/8c5782841.html,

目录 1、启动阶段 (3) 1.1、前期准备 (3) 1.1.1、新建项目文件 (3) 1.1.2、设置项目信息 (4) 2、计划阶段 (6) 2.1、定义资源 (6) 2.2、建立任务 (7) 2.2.1、任务列表 (7) 2.2.2、插入周期性任务 (8) 2.2.3、任务日历 (9) 2.2.4、任务工期 (9) 2.2.5、建立限制条件 (9) 2.2.6、建立依赖关系 (10) 2.3、资源分配 (11) 3、跟踪阶段 (11) 3.1、比较基准 (11) 3.2、跟踪完成进度 (12) 4、报告与分析 (13) 4.1、盈余分析 (13) 5、多项目管理 (13) 5.1、创建共享资源 (13) 5.2、使用共享资源 (13) 6、其它 (14) 6.1、如何在“跟踪甘特图”中显示其它比较基准 (14) 6.2、基准保存技巧 (14) 6.3、如何自定义提醒列 (14) 6.4、如何进行计划的调整 (15) 6.5、查询可以调整的时间 (15) 6.6、关于加班 (15)

1、启动阶段 1.1、前期准备 1.1.1、新建项目文件 选择File—New菜单,选择项目模版: 打开项目文件,看见任务表格后,设定任务自动排期

1.1.2、设置项目信息 自定义日历 选择“Project”下的“Change Working Time”菜单: 点击“Create New Calendar”,输入日历名称

Project2010简易操作指南

Project2010简易操作指南 Microsoft Office Project 2010 操作手册 英文界面版 一、启动阶段 1. 前期准备 (1)新建项目文件 选择File — NewNew 菜单,选择项目模版 打开项目文件,看见任务表格后设定任务自动排期

(2)设置项目信息 自定义日历 选择“ Project”下的“Change Working Time”菜单 点击“Create New Calendar”,输入日历名称

设置工作时间,选择工作周中的默认行,点击“Detail”按钮,选择周一至周五,设定实际的工作时间,设置非工作时间(图中设置10月1日-7日为非工作日) Project 2010简介 在Project 2010 客户端版本中,我们致力于使其更易于进行入门学习、更易于规划和更易于报告。本文简要介绍Project 2010 的几个亮点,您可以在Project 团队的官方博客中找到更详细的文章。 更易于进行入门学习 您将最先注意到的变化之一是Office Fluent 用户界面取代了菜单和工具栏,从而更便于查找常用命令。下面是Project 功能区中的“任务”(Task) 选项卡:

此外,我们还对复制/粘贴功能做了改进,现在,当您向Project 中粘贴项目符号列表时,将保留原有的层次结构和格式。请注意下面的任务11 - 没错,现在我们支持自动换行。 更易于规划 不,您的眼睛并没有骗您,上图中的任务确实没有持续时间或日期。原因是我们添加了一项名为“用户控制计划”(User-controlled Scheduling) 的新功能,该功能将控制过程和易用性集成在一起,使您可以完全控制您的计划。如果您不了解某一任务的所有信息,Project 不会强迫您输入相关值。如果您不希望运行任务,Project 将不会运行该任务,但会在可能出现计划问题时发出警告。 在Project 2010 中,既可以自动安排任务,也可以手动安排任务(使用新增的用户控制计划功能)。自动安排任务的行为方式与早期版本中的任务完全相同。除非明确说明,否则手动安排的任务(用图钉图标表示)将不运行。 在上图中: 任务1 是一个自上而下的摘要任务,这意味着您可以将持续时间/日期设置为与汇总值不同的值。蓝色条指定子任务汇总,这样您便可以轻松查看但不执行各个任务。处于初期计划阶段并且知道每个阶段耗时x 天时,使用此类任务会很方便。 任务2 是自动安排的任务,其工作方式与Project 早期版本中的任务相似。 任务3 是手动安排的任务,这意味着即使前期任务开始执行,该任务也不会运行。通过此任务可以就地快速修复事件(请参见下图)。 任务4 和任务5 是占位符任务。使用占位符任务时,您可以输入当前已有的信息作为提

微软项目管理软件Project_2007中文教程(上)

JS Here Project 2007中文教程(上) Benhao 2010-8-24

目录 Project入门 (3) 1.1 使用Project管理项目 (4) 1.2 启动Project Standard (5) 1.3 启动Project Professional (8) 1.4 视图 (13) 1.5 报表 (18) 1.6 创建新项目计划 (21) 1.7 设置非工作日 (23) 1.8 输入项目属性 (25) 1.9 小结 (26) 创建任务列表 (27) 2.1 输入任务 (27) 2.2 估计工期 (29) 2.3 输入里程碑 (32) 2.4 分阶段组织任务 (33) 2.5 链接任务 (35) 2.6 记录任务 (38) 2.7 检查任务工期 (40) 2.8 小结 (42) 设置资源 (43) 3.1 设置人员资源 (43) 3.2 设置设备资源 (46) 3.3 设置材料资源 (48) 3.4 设置成本资源 (49) 3.5 输入资源费率 (49) 3.6 为单个资源调整工作时间 (51) 3.7 记录资源 (54) 3.8 小结 (54)

Project入门 本章内容: ?了解Microsoft Office Project 2007产品系列 ?了解优秀的项目管理工具如何帮助完成任务 ?启动Project Standard或Project Professional,辨别Project窗口的主要组成部分 ?使用视图以不同方式显示项目计划的详细信息 ?使用报表打印项目计划的详细信息 ?创建项目计划和输入项目开始日期 ?设置项目的工作和非工作时间 ?输入项目计划属性 项目管理是一门实践丰富的艺术与科学。不论您正在参与项目管理,还是将要进行项目管理,阅读本书都是一个绝佳的学习机会。 就其核心而言,项目管理是一种融合技能与工具的“工具箱”,有助于预测和控制组织工作的成果。除了项目,组织还有其他工作。项目(如电影项目)与持续业务(Ongoing Operation)(如工资单服务)截然不同,因为项目是临时性的工作,产生唯一性的成果或最终结果。凭借优秀的项目管理系统,您可以解决以下问题: ?要取得项目的可交付成果,必须执行什么任务,以何种顺序执行? ?应于何时执行每一个任务? ?谁来完成这些任务? ?成本是多少? ?如果某些任务没有按计划完成,该怎么办? ?对那些关心项目的人而言,交流项目详情的最佳方式是什么? 良好的项目管理并不能保证每个项目一定成功,但不良的项目管理却会是失败的成因之一。 在您的项目管理工具箱中,Microsoft Office Project 2007应是最常用的工具之一。本书会介绍如何使用Project建立项目计划(包括任务和资源的分配),如何使用Project中扩展的格式化特性来组织和格式化项目计划的详细信息,如何跟踪实际工作与计划是否吻合,以及当工作与计划脱轨时如何采取补救措施。 如果是刚刚接触项目管理,可以在此处暂停,先阅读附录A,然后再继续阅读本章。这样做不会占用多长时间,有助于恰当地评估和组织自己的项目日程安排需求,进而利用Project建立稳固的计划。 本书的大部分练习围绕着一个虚构的电影公司 (Southridge Video and Film Productions)展开。您任职于电影公司的可能性不大,但您肯定看过电视广告或电影。每个电视广告或电影就是一个项目,事实上,有一些还是相当复杂的项目,涉及成百上千的资源但时间限制却很严苛。Southridge Video遇到的许多日程安排问题,您可能都会觉得似曾相识,如此一来,

使用Project编制进度计划步骤

使用P r o j e c t编制进度 计划步骤 文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)

使用P r o j e c t编制进度计划1.三套时间的概念与运用 1.1.基准时间 项目进度计划排定后,经审核通过,即可成为指导整个项目施工过程的基准。我们将这一计划中的时间明确记录下来,固定成为所谓的‘基准时间’。这一时间将成为在后续工作中进行对比分析偏差的‘原点’。在PROJECT软件中,工具栏里有跟踪项,然后点击保存比较基准,这里保存比较基准可以是整个项目,也可以是选中的一些节点。选中某些节点进行保存非常适合进度一次不能够完全排好的情况,把已经确认的一些节点的比较基准保存下来,另外一些等计划时间安排好后再进行保存。 1.2.实际时间 在施工的实际过程中,生产人员根据现场当前实际开工的分项工程,和完成的分项工程,在进度计划中填写‘实际时间’,这一组时间是现实的客观记录。 1.3.滚动计划时间 这一计划在最初是和‘基准时间’完全相同的。过程中,随着每一次填写分项工程实际开始时间或结束时间,我们需要马上重新排定进度计划。比如,一个分项工作完成了,我们有了实际完成时间。根据原先确定的各分项工程间的逻辑关系和计划耗用时间,我们可以重新排定全部计划。 为什么要重新排计划呢因为,如果这项工作脱期了,有可能原先不是‘关键工作’的分项工程,在新的计划中成为了‘关键工作’。也就是说我

们的管理和控制重点将发生改变。随着实际时间的填入,不断生成的计划,这就是滚动计划。 2.进度计划的操作步骤 1)设置项目开始时间; 2)设定工作时间; 3)添加任务名称; 4)设定任务级别; 5)设定任务间的关系; 6)设置任务工期; 7)保存比较基准; 2.1.设置项目开始时间; 打开工具栏中的“项目信息”,如下图一;设置项目开始时间,如下图二;(图一:) (图二:) 2.2.设定工作时间; Project默认的工作时间一般周六、周日为非工作时间。而建筑工程中编制进度计划是不考虑周六、周日的。所以要将Project中的默认工作时间进行更改,将周六、周日改为非默认工作时间。 操作步骤: 工具->更改工作时间,选择要更改的时间列->将所选的-期设置为非默认工作时间,见下图一、图二; 注:非工作时间在Project当中为灰色显示,工作时间为白色显示

project项目管理软件实例分享

project项目管理软件实例分享 导读: 亿图Edraw Project是一款功能强大的企业级国产项目管理软件,可以为企业提供优质的项目管理服务,它已经被越来越多的大型企业所接受,逐渐成为项目管理者必备的管理工具。本文就来为大家介绍一下这款软件的使用。 免费获取甘特图软件:https://www.wendangku.net/doc/8c5782841.html,/project/gantt/ Edraw Project 软件的下载与安装 获取Edraw Project软件,是开启项目管理之前的准备工作。从Edraw Project官方网站,即可免费下载这款软件。 完成下载后,双击【EdrawProject.exe】文件,开始确认安装。整个安装过程仅需1分钟左右。

Edraw Project 软件的使用 甘特图是项目管理领域里,最为常用的一种图示。因此,我们可以使用Edraw Project绘制甘特图。在绘制甘特图的过程,你将学会如何新建甘特图,如何添加任务信息,如何生成各类报表等。 1、新建甘特图 新建甘特图的操作较为简单,双击运行软件,单击新建,即可打开画布。 2、添加任务信息 添加任务的方法有三种,分别是顶部菜单栏按钮、右键菜单按钮和快捷键按钮。每一行内容都可以进行编辑。

温馨提示: Edraw Project软件顶部“开始”菜单中拥有丰富的编辑选项,比如插入链接、添加里程碑、降级任务等等,通过这些功能按键,只需简单几步操作就能轻松实现你想要的效果。 3、编辑资源 资源编辑功能是一种高级的甘特图功能,项目管理者可以在该面板设置资源的类型,成本价格以及名称等等。一个任务中会包含多个不同的资源,这些资源的组合会生成各类的报告。

office_project使用方法

适用于Microsoft Office Project 2003 您是否曾经遇到这样一种情况:提前创建了一个Project 计划(该计划可能获得了批准),但在开始跟踪进度时却发现它无法实施?如果有正确的开端,您就可以确保在项目开始时创建的计划成为整个项目的有效管理工具。 使用本文中概括的五步过程可以确保不会误入歧途。该过程假定您已经定义了项目的开始日期、应用了相应的基准日历,并设置了默认的任务类型和“选项”对话框(“工具”菜单)中的其他设置。如果您还没有这么做,请参阅本页“请参阅”一节中的相关链接。然后,执行下面五个步骤: 1.创建任务列表和工作分解结构(WBS) 2.降级或升级任务以最终确定WBS 3.输入任务工期或工时估计值 4.创建任务之间的相关性 5.分配资源 通过使用Project 中的默认视图(甘特图),可以执行所有这些任务。数据表(甘特图的默认表)也非常适用于此过程。 下列步骤将会告诉您何时插入其他列。 第 1 步:创建任务列表和工作分解结构(WBS) 未能了解工作分解结构(WBS)的重要性是计划人员会犯的一个最大错误。WBS 是由项目的阶段、任务和里程牌组成的层次列表。它是项目日程的核心。WBS 之所以十分重要的原因在于它决定着项目的范围。该范围可转换成时间线和预算。花一些时间来制订WBS 可帮助您避免重复性工作和错误的开始,从而让您在以后节省大量时间。 要创建WBS,首先要列出项目的主要部分(摘要任务),然后制订每个主要部分的次要部分(任务)。接着继续分解每个部分,直到详细级别足以支持您的计划。那么什么是充足的细节呢?请考虑下列因素: 要跟踪哪些任务级别并报告其状态?工作组成员需要为您提供任务的状态,而您需要报告任务的状态。如果将工作分解为若干日常任务,并且您的项目期限长达数月,则您和您的工作组将要花费很多时间来输入和跟踪状态。 哪些细节级别在早期为您提供有关风险的警告?您需要分解任务,以便可以尽早找出问题并采取相应措施。 是否可以有效确定任务之间的相关性?如果在一项工作完成之前,无法执行另一项工作,则需要将每个工作项视为单独的任务,以便可以指出该相关性。 输入摘要任务 输入任务

Project项目管理软件哪个好

Project项目管理软件哪个好 导语: 随着市场上使用项目管理软件的人数增多,越来越多的项目管理软件被开发了出来,那么到底有哪些好用的项目管理软件呢?本文将盘点分析市面上常见几款甘特图软件,以帮助大家能够找到适合自己的工具。 |Edraw Project 这是一款专业的项目管理软件。可以很轻松的创建甘特图来进行项目规划、资源分配和预算管理等,使用起来也十分的简单容易上手。 软件主要有几个特点: ●易操作:界面设计类似Office,交互简洁,帮助支持方面完善。 ●数据交互:数据与图形双向交互,支持数据导入与导出 ●资源管理:支持自定义资源,支持统计和分析 ●一键报表:多种报表,一键生成,一键打印报表

|Microsoft Office Excel 这是微软办公软件中用于处理表格数据的工具,也是职场人士必装的一款软件。万能的Excel也是能够绘制甘特图,进项项目管理的,只是操作难度偏大,或许是对Excel足够熟练的高手才有机会绘制。 虽然网络上有许多相关的教程,教大家如何使用Excel画甘特图,但教程普遍偏难,且绘制完成的图表也缺乏美观度,不大适合新手使用。 |MindMaster 这虽然是款专业绘制思维导图的软件,但也是专业绘制甘特图的。使用MindMaster有一点你可能会觉得不太方便,就是需要先绘制思维导图,才能生成甘特图。但其实在熟练使用后,该步骤绘制甘特图的效率比其他软件还高。所以,笔者挺推荐大家使用这款软件。它不仅可以画甘特图,还能顺便把思维导图给画了。

|瀚文进度计划软件 瀚文软件是一家较为早期的国产软件开发公司,其自主研发的这款瀚文进度计划软件可用于对工程项目的管理和控制。其软件的界面风格类似早期的Windows软件,但较为熟悉的界面或许更容易上手体验。 这款软件提供较为完善的甘特图功能,可满足基础的绘制需求。但美中不足的是,软件所绘制的甘特图,其风格与现代的审美观略有差距,不够时尚整洁,略为遗憾。

Microsoft Project 2013操作手册

Project 2013操作手册

目录 目录 1、启动阶段 (3) 1.1、前期准备 (3) 1.1.1、新建项目文件 (3) 1.1.2、设置项目信息 (3) 2、计划阶段 (5) 2.1、定义资源 (5) 2.2、建立任务 (6) 2.2.1、任务列表 (6) 2.2.2、插入周期性任务 (7) 2.2.3、任务日历 (8) 2.2.4、任务工期 (8) 2.2.5、建立限制条件 (8) 2.2.6、建立依赖关系 (9) 2.3、资源分配 (9) 3、跟踪阶段 (9) 3.1、比较基准 (9) 3.2、跟踪完成进度 (10) 4、报告与分析 (10) 4.1、盈余分析 (10) 5、多项目管理 (11) 5.1、创建共享资源 (11) 5.2、使用共享资源 (11) 6、其它 (11) 6.1、如何在“跟踪甘特图”中显示其它比较基准 (11) 6.2、基准保存技巧 (11) 6.4、如何进行计划的调整 (11) 6.5、查询可以调整的时间 (11) 6.6、关于加班 (12)

1、启动阶段 1.1、前期准备 1.1.1、新建项目文件 选择 File—new 菜单,选择项目模版: 1.1.2、设置项目信息 自定义日历 选择“Project”下的“Change Working Time”菜单:

项目信息定义 在“Project”中选择“Project Information”,打开项目信息窗口,在这个窗口中有几个重要信息要设置:开始日期、排序方法、项目日历:

2、计划阶段 2.1、定义资源 在“Task”中选择将视图切换为“Resource Shee t”: 资源分三类,分别为“work”、“Material”、“Cost”,三种类型均可以设置为费率;

project项目管理软件有哪些

project项目管理软件有哪些 导语: 面对市场上众多的企业项目进度管理软件,有哪些项目管理软件比较好呢?本文将盘点分析市面上常见几款甘特图软件,以帮助大家能够找到适合自己的工具。 |Edraw Project 这是一款专业的项目管理软件。可以很轻松的创建甘特图来进行项目规划、资源分配和预算管理等,使用起来也十分的简单容易上手。 软件主要有几个特点: ●易操作:界面设计类似Office,交互简洁,帮助支持方面完善。 ●数据交互:数据与图形双向交互,支持数据导入与导出 ●资源管理:支持自定义资源,支持统计和分析 ●一键报表:多种报表,一键生成,一键打印报表

|Microsoft Office Excel 这是微软办公软件中用于处理表格数据的工具,也是职场人士必装的一款软件。万能的Excel也是能够绘制甘特图,进项项目管理的,只是操作难度偏大,或许是对Excel足够熟练的高手才有机会绘制。 虽然网络上有许多相关的教程,教大家如何使用Excel画甘特图,但教程普遍偏难,且绘制完成的图表也缺乏美观度,不大适合新手使用。 |MindMaster 这虽然是款专业绘制思维导图的软件,但也是专业绘制甘特图的。使用MindMaster有一点你可能会觉得不太方便,就是需要先绘制思维导图,才能生成甘特图。但其实在熟练使用后,该步骤绘制甘特图的效率比其他软件还高。所以,笔者挺推荐大家使用这款软件。它不仅可以画甘特图,还能顺便把思维导图给画了。

|瀚文进度计划软件 瀚文软件是一家较为早期的国产软件开发公司,其自主研发的这款瀚文进度计划软件可用于对工程项目的管理和控制。其软件的界面风格类似早期的Windows软件,但较为熟悉的界面或许更容易上手体验。 这款软件提供较为完善的甘特图功能,可满足基础的绘制需求。但美中不足的是,软件所绘制的甘特图,其风格与现代的审美观略有差距,不够时尚整洁,略为遗憾。

项目管理软件PROJECT操作手册完整版

项目管理软件 P R O J E C T操作手册 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

项目管理软件PROJECT 2010操作实例 Project工具一般用来管理一个项目,制定项目的执行计划。项目的三要素到底是时间,成本和范围。如何使用Project,必须明确如下几项: A,做什么事? B,这些事的时间有什么要求? C,要做的事之间有什么关系? D,做这些事的人员有谁? E,人员有特别的时间要求? 下面举一个具体例子,了解一下项目管理软件的操作过程。 项目名称:电石炉主体安装工程 项目的开始日期:2016年2月1日 项目的结束日期:2016年6月11日 日程排定方法:从项目的开始之日起 项目日历:标准日历 工作时间:每周工作7天,每天8小时 项目目标:确保设备按期投产。 可衡量结果:达到业主产量要求。 一、任务清单列表:

大纲级别任务名称工期(工作日) 1(摘要)电石炉主体安装进度计划90 安装炉盖2 安装水冷密封套2 安装下料槽4 安装底部装置3 安装铜母线9 安装黄铜管3 安装电极壳3 安装电极柱2 安装下料仓2 安装下料管4 安装环形加料机10 安装炉顶加料皮带10 。。。。。。。。。。。 电气安装57 安装低压配电室电气柜 4 安装中控室电气柜、控制台5 安装3-4层电气柜3 安装电缆槽30 。。。。。。。。。。 液压安装29 调试27 2 配合投料 3 投产保驾 4 设备验收 5 结束 二、资源可使用情况: 资源名称最大单位标准工资率每次使用成本成本累算方式 钳工 4 ¥工时按比例 电工 4 ¥工时按比例 管工 6 ¥工时按比例 电焊工12 ¥工时按比例 起重工 2 ¥工作日按比例 力工42 ¥工作日按比例 电动葫芦 卷扬机3¥ 自卸车1¥ 三、任务之间的相关性: 放线→设备机、电、液安装→调试→投产保驾→竣工验收→结束

Project软件使用说明

Project软件作为项目管理工具,主要分为两大块功能,一是制定项目计划,二是对制定的项目计划进行更新、跟踪和监控,最终形成相关报表。 一.制定项目计划: 一、W BS 1.摘要任务→子任务 2.周期性任务 二、W BS中的任务(子任务)的工期确定 三、每项任务与其他任务依赖关系确定(前置任务) 四、建立资源工作表,输入所有资源(工时,材料,成本) 五、分配资源导各项任务上 六、整体上调整 七、设置比较基准 二.项目数据的更新、跟踪、监控: 数据更新方法: 1、更新(开始时间和完成时间)(“更新任务”按钮,最常用的方法) 2、更新(开始时间和完成时间)(详细信息对话) 3、更新完成百分比(不是推荐方法) 4、任务状态视图下更新 5、更新项目 在做数据更新操作时,最好选择上述几种中的一种就可以了。 监控方法: 设置警示灯(针对成本和进度) 自定义视图(监控成本和进度视图) 形成报表: (现金流报表、资源使用情况报表、关键任务) 使用到可视化报表 (现金流报表、盈余分析报表) ------特别鸣谢主编:刘念学

目录 一、定义新项目 ................................................. 错误!未定义书签。 1、设置项目环境信息............................................. 错误!未定义书签。 2、新建项目..................................................... 错误!未定义书签。 3、时间设置..................................................... 错误!未定义书签。 4、自动计划..................................................... 错误!未定义书签。 5、设置成子任务................................................. 错误!未定义书签。 6、任务工期确定................................................. 错误!未定义书签。 7、查看任务的关键工期........................................... 错误!未定义书签。 8、查看每天工作................................................. 错误!未定义书签。 9、关键任务显示................................................. 错误!未定义书签。 10、前置任务增加或减少几天...................................... 错误!未定义书签。 11、设置时间刻度................................................ 错误!未定义书签。 二、保存使用项目模板 ........................................... 错误!未定义书签。 1、保存为项目模板(保存到默认路径)............................. 错误!未定义书签。 2、使用项目模板................................................. 错误!未定义书签。 三、规划项目任务 ............................................... 错误!未定义书签。 1、任务的类型................................................... 错误!未定义书签。 2、添加新列里直接输入列名称..................................... 错误!未定义书签。 3、标记里程碑................................................... 错误!未定义书签。 4、设置周期性任务............................................... 错误!未定义书签。 四、任务之间的关联性及编辑操作 ................................. 错误!未定义书签。 1、设置任务依赖关系(前置和延搁)............................... 错误!未定义书签。 2、删除工作关系................................................. 错误!未定义书签。

Project使用说明

通知:公司内项目、任务将通过Odoo平台分发到具体责任人,具体到时间。 责任人将每天通过Odoo反馈任务完成情况,此方法将取代邮件周报。 该平台也支持针对项目自己创建任务功能。 2017.5.11、2017.5.12这两天为试运行阶段,在此期间烦请大家把手头正在做的工作及计划完成工作、预计完成时间反馈给我,谢谢。 2015.5.15将正式开始使用,以下为使用说明,希望大家抓紧时间熟悉,如有建议、问题联系我,谢谢。 查看项目任务 1.Odoo网址:http://19 2.168.1.35:8069/web/login,运行该软件的浏览器最好为 Edge、谷歌便于操作; 2.Odoo分配任务时,将会以邮件的形式发送到邮箱,通过邮箱可点击进入; (如遇问题烦请联系邓越) 3.输入自己域邮箱账号; 4.起始密码:123456; 5.点击登陆; 6.点击菜单栏中“项目”按钮,如下图所示: 7.点击右侧菜单栏中的“任务”,即可查看自己的项目任务,如下图所示:

8.点击如下所示文本框,即可查看任务详情,如下图所示:

每天反馈任务完成情况及所需工时 1、如下图所示,点击下方的“工时单”。 2、点击系统上方的“编辑”之后点击“添加一个项目”输入内容及持续时间,确认

无误后点击保存即可。 注意: 1、工作日期间每天都要反馈任务完成进展情况; 2、如果一天内涉及到好几个项目、任务需要针对任务分别反馈; 3、工时单的说明要详细,如果此任务已完成要有“已完成”等字眼,便于管理员查 看并分配下一阶段的任务; 新建任务 可以自己创建项目任务,具体操作如下: 1、点击任务下方的“”按钮,如下图所示:

project使用方法

三分钟快速学会使用Project 2003 Microsoft Project是一个功能强大而且可以灵活运用的项目管理工具,我们可以利用Project来控制简单或复杂的项目。它可以用来安排和追踪所有的活动,让我们对活动的项目进度了若指掌。 制作一个项目首先便是制定项目计划时,Microsoft Project将根据我们所提供的信息(包括预计完成的任务、执行这些任务的人员、用来完成任务的设备和材料以及相关的成本)计算并建立一个工作计划。 实际上要开始进行一个项目,我们可以由以下几种方式开始: 利用模板方式进行部署。 利用现成的文件档案快速变更成自己的部署计划。 下面我们将逐一说明如何进行一个项目。 利用模板方式进行部署 要进行这项工作其方法为: 1. 开启Microsoft Project; 2. 由菜单中选择〔档案/开新档案/在我的计算机上〕 3. 最后选取〔Project范本〕 4. 此时便会出现许多模板供我们选择,由模板中选择〔项目办公室〕。 注意:如果Microsoft Project 2003 没有完全安装这些范本将不会出现。 5. 接着,按下〔确定〕,一个初具原型的项目计划就会出现在我们面前了, 6. 在这份项目资料中,许多步骤Microsoft Project 2003已经为我们想到了。我们只要轻松的加以修改,便可以轻易的创造出属于自己的项目 7. 接着,我们可以针对每项任务中的工作进行修改,其中,像是利用鼠标的右键在适当的工作字段中按下右键,或是由〔插入/新增任务〕,或是〔编辑/删除任务〕 8. 此外,针对原来任务中所设定的任务名称或是工期也可以加以输入或是修改 9. 接着,我们需要设定项目的日程排定方式,由项目开始之日起或是由项目完成之日起。 10. 项目进行时的行事历。由〔项目〕菜单选取〔项目信息〕,以便进行上述信息调整。 11. 在这个练习中,我们假设老板要求能够在两个月内完成,因此我们在〔排程从〕中设定〔由项目完 成日起排程〕安排我们的计划。 12. 接着在〔完成日期〕中输入为二个月后,其中,有红色圆圈的地方按一下可以跳到今天的日期。 13. 接着,在〔行事历〕中设定自己公司的工作行事历。 14. 最后,按下〔确定〕 15. 这时,你会发现我们的项目办公室计划已经变成我们所需的时间了。 16. 可是,如果这样的时间是老板不能接受的该怎么办呢? 17. 不要紧,试着改变自己在运作上真正的时间,同时把不要的工作任务删除,我们便会发觉,Project 便会再自动的帮我们计算最终的结果。

Project的操作与运用

Project的操作与运用 Microsoft Project (或MSP)是一个国际上享有盛誉的通用的项目管理工具软件,凝集了许多成熟的项目管理现代理论和方法,可以帮助项目管理者实现时间、资源、成本的计划、控制。 Microsoft Project 不仅可以快速、准确地创建项目计划,而且可以帮助项目经理实现项目进度、成本的控制、分析和预测,使项目工期大大缩短,资源得到有效利用,提高经济效益。是专案管理软件程序由微软开发销售。软件设计目的在于协助专案经理发展计划、为任务分配资源、跟踪进度、管理预算和分析工作量。第一版微软Project 为微软Project for Windows 95,发布于1995年。其后版本各于1998, 2000, 2003和2006年发布。本应用程序可产生关键路径日程表——虽然第三方ProChain和Spherical Angle也有提供关键链关联软件。日程表可以以资源标准的,而且关键链以甘特图形象化。另外,Project可以辨认不同类别的用户。这些不同类的用户对专案、概观、和其它资料有不同的访问级别。自订物件如行事历、观看方式、表格、筛选器和字段在企业领域分享给所有用户。 一般Project使用步驟可以分为以下几步 1.输入项目基本信息; 2.输入任务名称、任务持续时间、建立任务间的逻辑关系; 3.检查网络逻辑关系; 4.输入资源数据、费用数据; 5.保存进度计划和基础数据; 6.检查工期和成本目标是否符合要求,不符合则进行调整和优化; 7.将最优计划设置为基准计划; 8.打印计划报告(网络图、横道图、资源负荷图); 9.开始实施项目,并分别在7、8、9、10月底各进行一次跟踪和控制 MS Project是一个经典的项目管理工具,它以使用简单、易用得到广大项目管理人员的肯定。但在实际工作中很多项目管理人员并没有将MS Project的功能与项目管理的精髓进行结合来指导项目进度计划的制定,结果导致做出的项目进度计划“看上去很美”。 为什么每个项目都要先制定项目进度计划?因为项目进度计划的制定可以使项目经理、高层经理、客户、业主等所有项目干系人对项目的结果充满信心,在项目未开始前就可以看到项目的结果。因此,项目管理人员制定的项目进度计划一定要准确并具有可执行性,否则项目进度计划就成了空谈,直接导致项目进度计划不停的变更或弃之不用,最终造成项目失控。 在使用MS Project制定项目进度计划时,很多项目管理人员通常只做2件事:创建任务,给任务添加资源。就算项目的任务都经过了WBS分解,而且项目结束时间也符合要求,那么这样的项目进度计划仍然可能不具备实际的可操作性。在此必须强调的是:使用MS Project时不能只看Gantt图,还必须使用“Resource Usage资源使用情况视图”来验证项目计划的合理性和可操作性。 例如某项目需要3个项目成员在10天内完成一个工程,项目经理制定的进度计划如图1所示。当看到这份进度计划时,任何人都不会觉得有什么问题,大家都觉得项目势必是成功的。

使用Project编制进度计划操作手册范本

使用Project编制进度计划 1.三套时间的概念与运用 1.1.基准时间 项目进度计划排定后,经审核通过,即可成为指导整个项目施工过程的基准。我们将这一计划中的时间明确记录下来,固定成为所谓的‘基准时间’。这一时间将成为在后续工作中进行对比分析偏差的‘原点’。在PROJECT软件中,工具栏里有跟踪项,然后点击保存比较基准,这里保存比较基准可以是整个项目,也可以是选中的一些节点。选中某些节点进行保存非常适合进度一次不能够完全排好的情况,把已经确认的一些节点的比较基准保存下来,另外一些等计划时间安排好后再进行保存。 1.2.实际时间 在施工的实际过程中,生产人员根据现场当前实际开工的分项工程,和完成的分项工程,在进度计划中填写‘实际时间’,这一组时间是现实的客观记录。 1.3.滚动计划时间 这一计划在最初是和‘基准时间’完全相同的。过程中,随着每一次填写分项工程实际开始时间或结束时间,我们需要马上重新排定进度计划。比如,一个分项工作完成了,我们有了实际完成时间。根据原先确定的各分项工程间的逻辑关系和计划耗用时间,我们可以重新排定全部计划。 为什么要重新排计划呢?因为,如果这项工作脱期了,有可能原先不是‘关键工作’的分项工程,在新的计划中成为了‘关键工作’。也就是说我们的管理和控制重点将发生改变。随着实际时间的填入,不断生成的计划,这就是滚动计划。

2.进度计划的操作步骤 1)设置项目开始时间; 2)设定工作时间; 3)添加任务名称; 4)设定任务级别; 5)设定任务间的关系; 6)设置任务工期; 7)保存比较基准; 2.1.设置项目开始时间; 打开工具栏中的“项目信息”,如下图一;设置项目开始时间,如下图二;(图一:) (图二:)

Project项目管理软件排名

Project项目管理软件排名 导语: 为了促进企业的可持续发展,项目管理工作在我国相关政策的支持下也逐渐得到了重视。要想对一个项目进行合理的规划控制,则少不了项目管理软件的帮助。面对市面上众多的项目管理软件,很多人不知道该怎么选择,本文就来为大家介绍一下几款最好用的项目管理软件。 |Edraw Project 这是一款专业的项目管理软件。可以很轻松的创建甘特图来进行项目规划、资源分配和预算管理等,使用起来也十分的简单容易上手。 软件主要有几个特点: ●易操作:界面设计类似Office,交互简洁,帮助支持方面完善。 ●数据交互:数据与图形双向交互,支持数据导入与导出 ●资源管理:支持自定义资源,支持统计和分析 ●一键报表:多种报表,一键生成,一键打印报表

|Microsoft Office Excel 这是微软办公软件中用于处理表格数据的工具,也是职场人士必装的一款软件。万能的Excel也是能够绘制甘特图,进项项目管理的,只是操作难度偏大,或许是对Excel足够熟练的高手才有机会绘制。 虽然网络上有许多相关的教程,教大家如何使用Excel画甘特图,但教程普遍偏难,且绘制完成的图表也缺乏美观度,不大适合新手使用。 |MindMaster 这虽然是款专业绘制思维导图的软件,但也是专业绘制甘特图的。使用MindMaster有一点你可能会觉得不太方便,就是需要先绘制思维导图,才能生成甘特图。但其实在熟练使用后,该步骤绘制甘特图的效率比其他软件还高。所以,笔者挺推荐大家使用这款软件。它不仅可以画甘特图,还能顺便把思维导图给画了。

|瀚文进度计划软件 瀚文软件是一家较为早期的国产软件开发公司,其自主研发的这款瀚文进度计划软件可用于对工程项目的管理和控制。其软件的界面风格类似早期的Windows软件,但较为熟悉的界面或许更容易上手体验。 这款软件提供较为完善的甘特图功能,可满足基础的绘制需求。但美中不足的是,软件所绘制的甘特图,其风格与现代的审美观略有差距,不够时尚整洁,略为遗憾。

project的用法总结大全

project的用法总结大全 英语词汇project的意思是放映,计划,发射,展现,那project 的用法你们有了解吗?今天给大家带来了project的用法,希望能够帮助到大家,一起来学习吧。 project的用法总结大全 project的意思 vt. 放映,计划,发射,展现,使突出 vi. 伸出,突出 变形:过去式: projected; 现在分词:projecting; 过去分词:projected; project用法 project可以用作动词 project用作名词是“计划”的意思,转化为动词则作“规划”解,用作及物动词,接名词或代词作宾语,可用于被动结构。 project作“伸出,突出”解时,可用作不及物动词,常与from连用; 也可用作及物动词,接名词或代词作宾语。

project还可作“投射”解,用作及物动词,接名词或代词作宾语。宾语后常接介词into, onto,意为“将…投影于…上”。引申可作“设想自己处身于”“将某事归罪于某人”解。 project用作动词的用法例句 The government projected a tax decrease.政府计划降低税收。 Our projected visit had to be cancelled.我们计划中的访问不 得不取消。 The unemployment rate has been projected to fall.据预测失 业率将下降。 project用法例句 1、A former associate of Mr. Pierces was among the projects boosters. 皮尔斯先生的一个前合伙人是这个计划的热心支持者之一。 2、The total cost of the project would be more than $240 million. 该项目的总成本会超过2.4亿美元。 3、The Channel Tunnel project is the biggest civil engineering project in Europe.

PROJECT简易操作流程图

1Project2003简明使用教程 Microsoft Project是一个功能强大而且可以灵活运用的项目管理工具,我们可以利用Project来控制简单或复杂的项目。它可以用来安排和追踪所有的活动,让我们对活动的项目进度了若指掌。 制作一个项目首先便是制定项目计划时,Microsoft Project将根据我们所提供的信息(包括预计完成的任务、执行这些任务的人员、用来完成任务的设备和材料以及相关的成本)计算并建立一个工作计划。 实际上要开始进行一个项目,我们可以由以下几种方式开始: ●利用模板方式进行部署。 ●利用现成的文件档案快速更改成自己的部署计划。 下面我们将逐一说明如何进行一个项目。 1.1利用模板方式进行部署 由于公司快速的成长面临了企业快速更改的挑战,公司决定全方位导入知识管理系统,实际上,在原本传统的作业下,总是老业务带领着新业务,而知识都只是藏在老业务的脑海中,而一旦老业务离职或者是高升时,这些知识也就随着老业务的离职而消失。 最近,公司决定不如数字化工作环境,于是也决定导入Microsoft Project2003以便能够好好将知识传承下去,而你便是这项工作的执行者,我们要做的第一道工作便是了解如何快速进行Microsoft Project2003部署计划,并告知老板知道。这项计划老板要求能够在两个月内完成,此时,我们应该怎么办呢? 正所谓前人种树,后人乘凉,直接套用范本是最快而最有效率的方式,所幸,Microsoft Project提供我们许多模板供我们直接套用,只需选择适合我们使用的模板再将项目的时间与日历更改好,这样,项目便几乎规划完成了。 要进行这项工作其方法为: 1.开启Microsoft Project; 2.由菜单中选择〔文件/新建/在我的计算机上〕 3.最后选取〔Project范本〕

Project 使用技巧

Project 使用技巧 1 项目开始 在新建一个项目project 的第一步,就是确定项目的启动日期 项目–》项目信息-》从项目完成之日起 这里不需要确定完成日期,因为在具体的项目排版中的最后任务或者里程碑进行确定。 优先级:从0-1000 ,在同时管理多个项目的时候,可以有权重参考。一般在制定一个项目的计划时,没有参考价值。 日历: 24小时,就是不分工作日或者假日的项目,同样按照每个工作日8小时计算; 标准,就是普通工作日的工作日历。 2 任务 在一个计划中的一个项目完成后,如何体现具体事项的阶段性完成? 只要将任务的工作日的工期定义为0日就可以确定这是一个完成标志,而非一个任务周期。而一个任务下面如果有子任务,制定这个任务的结束日期是没有必要和不可行的,这个结束日期通过子任务的最后一个结束日期决定,所以工期也是不可选择的。 例子:

对于表示任务间关系,甘特图里面的大线拖去那个标识点就可以了。另外一个方法是在表格中直接写,前置任务,输入1fs 表示1号任务完成后二号开始。在这里的标志位还包括 FS——完成后开始 SS——开始时开始 FF 完成的时候完成,要同时完成 SF 开始的时候完成,其实也等于任务重新排列了。 【小知识: 扩大,缩小很有意义,当任务非常多的时候,在甘特图图里面将很难全部显示,点击缩小和放大能够进行适当的缩放。而到选定任务能够在甘特图中跳跃到相应的任务项中。】 2.1 增加任务列 例子:在任务中增加一个责任人的列 Project 中默认“项”的列如下: 如果想增加一下适合自己项目的列,可以通过自定义增加列。 工具-》自定义–》域

域的列主要存在于任务表和资源表,这次增加的域是在任务表中显示的一个属性,所以选择任务,类型主要是关系到域的数据类型,例如:成本、数字等是数值型,文本是字符串。由于责任人需要输入文字,所以就用文本型。 选择其中一个文本进行重命名。 值列表能够定义这个项中可以选择的值。 工具–》自定义–》域 类型:文本 将文本1 重命名–》1责任人 上面的工作完成之后,在任务列头上,单击右键–》插入列 域名称,重新选择刚刚定义的责任人。

相关文档
相关文档 最新文档