📄 un.cpp
字号:
#include<iostream.h>
#include<string.h>
#include<stdio.h>
typedef char CString;
const int DIRSIZE=20;
const int DIRNUM=20;
const int NADDR=512;
const int NICFREE=512;
const int NICINOD=512;
const int NOFILE=20;
//文件目录数据结构,16个字节
struct direct{
char d_name[DIRSIZE]; //目录名
unsigned int d_ino; //目录号
};
//目录数据结构
struct dir{
struct direct direct[DIRNUM];
int size;
};
struct inode{
char i_flag;
struct inode *i_forw;
struct inode *i_back;
unsigned int i_ino; //磁盘i节点标号
unsigned int i_count; //引用计数
unsigned int di_size; //文件大小
unsigned short di_number; //关联文件数,当为0时,则删除该文件
unsigned short di_mode; //存取权限
unsigned short di_uid; //磁盘i节点用户id
unsigned short di_gid; //磁盘i节点组id
unsigned short di_addr[NADDR]; //物理块号
};
//磁盘i节点数据结构,32个字节
struct dinode{
unsigned int di_size; //文件大小
unsigned short di_number; //关联文件数
unsigned short di_mode; //存取权限
unsigned short di_uid; //磁盘i节点用户id
unsigned short di_gid; //磁盘i节点组id
unsigned short di_addr[NADDR]; //物理块号
};
//超级块数据结构
struct filsys{
char s_fmod; //超级块修改标志
unsigned int s_free[NICFREE]; //空闲块堆栈
unsigned int s_ninode; //空闲i节点数
unsigned int s_nfree; //空闲块块数
unsigned int s_inode[NICINOD]; //空闲i节点数组
unsigned int s_rinode; //铭记i节点
unsigned short s_pfree; //空闲块指针
unsigned short s_isize; //i节点块块数
unsigned short s_pinode; //空闲i节点指针
unsigned long s_fsize; //数据块块数
};
//系统打开表数据结构
struct file{
char f_flag; //文件操作标志
unsigned int f_count; //引用计数
unsigned longf_off; //读写指针
struct inode *f_inode; //指向内存I节点
};
//用户数据结构
struct user{
char u_name; //用户名
char u_pass; //用户密码
char u_default_mode; //访问权限
char u_uid; //用户标志
char u_gid; //用户组标志
char u_ofile[NOFILE]; //用户打开表
};
user users[8];//用户数量,全局
//注册新用户的程序段
void registeruser(int i)
{
CString tempname,temp,temppassword;
if(i>=8)
{
printf("Registered user has already fulled./n");
}
else
{
printf("Please input your user name(Max 11 characters):");
scanf("%s",tempname);
printf("Please input your password(Max 11 characters):");
scanf("%s",temp);
printf("Please input your password again:");
scanf("%s",temppassword);
if(strcmp(&temppassword,&temp)==0)
{
printf("OK! You have register ! You can login your accounts./n");
strcpy(&users[i].u_name,&tempname);
strcpy(&users[i].u_pass,&temppassword);
}
else
{
printf("Sorry!Password incorrect.You can't login/n");
}
}
}
//系统初始化以及登录/ 注册的程序段
int loginin(){
return 1;
}
void initialize()
{
char c;
int i=0;
cout<<"- - - - Welcome to this system ! - - - - \n";
cout<<"initializing. . . \n";
cout<<"initializing. . . \n";
strcpy(&users[i].u_name,"lwj");
strcpy(&users[i].u_pass,"123");
for(;;)
{
cout<<"Do you want to Register or Login?(R/ L)";
cin>>c;
switch(c)
{
case'q':;
case'Q':break;
case'r':;
case'R':registeruser(i);break;
case'l':;
case'L':if(loginin()==1) c='q';break;
default:break;
}
}
// if(c=='q'||c=='Q')
// break;
// else cout<<endl;
}
//typedef struct node *point;
struct node{
int d_name; //邻接点
node *next;
};
//列出文件目录的程序段
void dirstru()
{
int i=0;
printf("CURRENT DIRECTORY:/n");
node *p=new node;
while(p->next!=NULL)
{
i++;
p=p->next;
printf( "%s/ n",p->d_name) ;
}
printf( "/ t %d file (s) / n",i) ;
printf( "/ t %d directorie (s) / n",i) ;
}
void main(){
void initialize();
}//main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -