搜档网
当前位置:搜档网 › 文件管理系统实验报告

文件管理系统实验报告

文件管理系统实验报告
文件管理系统实验报告

姓名任倩倩倪晨

学号2011210590

2011210542

华中师范大学计算机科学系

实验报告书

实验题目:基于两级目录结构的简单文件系统的管理与操作

课程名称:操作系统

主讲教师:叶俊民教授

辅导教师:叶俊民教授

班级:1班

实验时间:2013年12月10日

实验

成绩

目录

CDIO性质的实践步骤: (2)

构思性实践(C)(做什么) (2)

设计性实践(D)(准备怎么做) (2)

实现性实践(I)(做的结果) (2)

运行性实践(O)(做的方式) (3)

一、实验目的 (3)

二、实验内容 (3)

三、实验环境 (3)

四、实验详细实现过程与算法流程 (3)

五、源程序(加注释) (5)

六、实验结果 (19)

七、实验总结 (21)

CDIO性质的实践步骤:

构思性实践(C)

采用两级目录,即设置主文件目录[MFD]和用户文件目录[UED]。在主文件目录中,每个用户目录都占有一个目录项,其目录项中包含文件名和指向该文件目录文件。在用户文件目录UFD中,这些文件目录具有相似的结构。具体测试时可考虑:设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件,并需要对文件设置保护措施。

(2)设计并实现Create、Open、Read、Write、Close、Delete等文件命令的算法,用户可通过菜单方式或者API方式实现对自己文件的管理。

设计性实践(D)

确定基本数据结构,MFD,UFD.,Userinf,Fileinf,File,以及每个数据结构可以进行的对应操作。

确定每个函数的参数、返回对象,并且完成每个函数,没完成一个函数,需要进行一次测试。

确定用户菜单,并将用户菜单与对应的函数操作进行关联。

完整测试每个功能,找出存在的缺陷,并对用户界面做适当调整。具体可参见本实验报告的“三、实验环境”和“四、实验设计原理”。

实现性实践(I)

完成代码编写,形成.c源文件与.exe可执行文件;

进行演示,演示应包含所有功能点,将演示结果截图保存;

完成实验报告说明,具体可参见本实验报告的“五、实验详细实现过程与算法流程”、“六、实验调试”和“七、源程序”。

运行性实践(O)

(7)小组成员确定程序需要完成的功能,并详细列出功能点为后期检查程序是

否满足需求做准备。

(8)确定编码人员,由编码人员完成基本编码工作,另一人负责对完成的程序进行测试,检查是否满足所有的功能点。

(9)对不满足的功能点或缺少的功能点进行修改或增加,重复第2步,直至符合要求。

(10)完成上机验收。

具体可参见本实验报告的和“九、实验结果分析”和“十一、实验总结”。

(11)实验目的:

为了模拟文件系统实现的基本功能,了解文件系统的基本结构和文件的各种管理方法,加深理解文件系统的内部功能及内部实现,理解文件管理的工作过程,加深各种文件操作命令的实质内容和执行过程的了解,现要求编程模拟一个简单的文件系统,以实现对文件系统的管理和控制功能,支持用户对自己文件的管理与操作。

二、实验内容:

(12)要求本文件系统采用两级目录,即设置主文件目录[MFD]和用户文件目录[UED]。在主文件目录中,每个用户目录都占有一个目录项,其目录项中

包含文件名和指向该文件目录文件。在用户文件目录UFD中,这些文件目

录具有相似的结构。具体测试时可考虑:设计一个10个用户的文件系统,

每次用户可保存10个文件,一次运行用户可以打开5个文件,并需要对

文件设置保护措施。

(2)设计并实现Create、Open、Read、Write、Close、Delete等文件命令的算法,用户可通过菜单方式或者API方式实现对自己文件的管理。

三、实验环境:

Windows操作系统、VC++6.0、C语言

(13)实验详细实现过程与算法流程

my_format:对文件存储器进行格式化,即按照文件系统的结构对虚拟磁盘空间进行布局,并在其上创建根目录以及用于管理文件存储空间等的数据结构。

my_mkdir:用于创建子目录。

my_rmdir:用于删除子目录。

my_ls:用于显示目录中的内容。

my_cd:用于更改当前目录。

my_create:用于创建文件。

my_open:用于打开文件。

my_close:用于关闭文件。

my_write:用于写文件。

my_read:用于读文件。

my_rm:用于删除文件。

my_exitsys:用于退出文件系统。

1.打开文件函数fopen()

(1)格式:FILE *fopen(const char *filename,const char *mode)

(2)功能:按照指定打开方式打开指定文件。

(3)输入参数说明:

filename:待打开的文件名,如果不存在就创建该文件。

mode:文件打开方式,常用的有:

"r":为读而打开文本文件(不存在则出错)。

"w":为写而打开文本文件(若不存在则创建该文件;反之,则从文件起始位置写,原内容将被覆盖)。

"a":为在文件末尾添加数据而打开文本文件。(若不存在则创建该文件;反之,在原文件末尾追加)。

"r+":为读和写而打开文本文件。(读时,从头开始;在写数据时,新数据只覆盖所占的空间,其后不变) 。

"w+":首先建立一个新文件,进行写操作,随后可以从头开始读。(若文件存在,原内容将全部消失) 。

"a+":功能与"a"相同;只是在文件末尾添加新的数据后,可以从头开始读。

另外,上述模式字符串中都可以加一个“b”字符,如rb、wb、ab、rb+、wb+、ab+等组合,字符“b”表示fopen() 函数打开的文件为二进制文件,而非纯文字文件。

(4)输出:一个指向FILE类型的指针。

2.关闭文件函数fclose()

(1)格式:int fclose(FILE * stream);

(2)功能:用来关闭先前fopen()打开的一个文件。此动作会让缓冲区内的数据写入文件中,并释放系统所提供的文件资源。

(3)输入参数说明:

stream:指向要关闭文件的指针,它是先前执行fopen()函数的返回值。

(4)输出:若关闭文件成功则返回0;有错误发生时则返回EOF并把错误代码存到errno。3.读文件函数fread()

(1)格式:size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

(2)功能:读二进制文件到内存。

(3)输入参数说明:

buffer:用于存放输入数据的缓冲区的首地址;

stream:使用fopen()打开的文件的指针,用于指示要读取的文件;

size:每个数据块的字节数;

count:要读入的数据块的个数;

size*count:表示要求读取的字节数。

(4)输出:实际读取的数据块的个数。

4.写文件函数fwrite()

(1)格式:size_t fwite(const void *buffer,size_t size,size_t count,FILE *stream);

(2)功能:将数据写到二进制文件中。

(3)输入参数说明:

buffer:用于存放输出数据的缓冲区的首地址;

stream:使用fopen()打开的文件的指针,用于指示要写出的文件;

size:每个数据块的字节数;

count:要写出的数据块的个数;

size*count:表示要求写出的字符数。

(4)输出:实际写出的数据块的个数。

5.判断文件结束函数feof ()

(1)格式:int feof(FILE * stream)

(2)功能:用来判断是否已读取到文件末尾。

(3)输入参数说明:

stream:使用fopen()打开的文件的指针,用于指示要判断的文件。(4)输出:如果已读到文件尾则返回非零值,其他情况返回0。

6 主要函数功能实现:

int format(); // 格式化磁盘

int mkdir(char *sonfname); // 创建子目录

int rmdir(char *sonfname); // 删除子目录

int create(char *name); // 创建文件

int listshow();// 显示子文件信息

int delfile(char *name); //删除文件

int changePath(char *sonfname);// 更改当前路径

int write(char *name); // 写入文件

int exit();//退出系统

int open(char *file);//打开文件

int close(char *file);// 关闭文件

int read(char *file);//读取文件

五、源程序:

#include

#include

#include

#include

using namespace std;

#define GENERAL 1//1代表普通文件2代表目录文件0表示空文件#define DIRECTORY 2

#define Zero 0

struct FCB

{

char fname[16]; //文件名

char type; // 0空文件1目录文件2空文件

int size; //文件大小

int fatherBlockNum; //当前的父目录盘块号

int currentBlockNum; //当前的盘块

void initialize()

{

strcpy(fname,"\0");

type = Zero;

size =0;

fatherBlockNum = currentBlockNum = 0;

}

};

const char* FilePath = "C:\\myfiles";/*常量设置*/

const int BlockSize = 512; //盘块大小

const int OPEN_MAX = 5; //能打开最多的文件数

const int BlockCount = 128; //盘块数

const int DiskSize = BlockSize * BlockCount; //磁盘大小

const int BlockFcbCount = BlockSize/sizeof(FCB);//目录文件的最多FCB数

int OpenFileCount = 0; // 统计当前打开文件数目

struct OPENLIST //用户文件打开表

{

int files; //当前打开文件数

FCB f[OPEN_MAX]; //FCB拷贝

OPENLIST()

{

files=0;

for(int i=0;i

f[i].fatherBlockNum = -1;//为分配打开

f[i].type=GENERAL;

}

}

};

struct dirFile/*-------------目录文件结构---------------*/

{

struct FCB fcb[BlockFcbCount];

void init(int _FatherBlockNum,int _CurrentBlockNum,char *name)//父块号,当前块号,目录名

{

strcpy(fcb[0].fname,name); //本身的FCB

fcb[0].fatherBlockNum=_FatherBlockNum;

fcb[0].currentBlockNum=_CurrentBlockNum;

fcb[0].type=DIRECTORY; //标记目录文件

for(int i=1;i

fcb[i].fatherBlockNum=_CurrentBlockNum; //标记为子项

fcb[i].type=Zero; // 标记为空白项

}

}

};

struct

DISK/**********************************************************************/ {

int FAT1[BlockCount]; //FAT1

int FAT2[BlockCount]; //FAT2

struct dirFile root; //根目录

char data[BlockCount-3][BlockSize];

void format(){

memset(FAT1,0,BlockCount); //FAT1

memset(FAT2,0,BlockCount); //FAT2

FAT1[0]=FAT1[1]=FAT1[2]=-2; //0,1,2盘块号依次代表FAT1,FAT2,根目录区

FAT2[0]=FAT2[1]=FAT2[2]=-2; //FAT作备份

root.init(2,2,"C:\\");//根目录区

memset(data,0,sizeof(data));//数据区

}

};

FILE *fp; //磁盘文件地址

char * BaseAddr; //虚拟磁盘空间基地址

string currentPath="C:\\"; //当前路径

int current=2; //当前目录的盘块号

string cmd; //输入指令

struct DISK *osPoint; //磁盘操作系统指针

char command[16]; //文件名标识

struct OPENLIST* openlist; //用户文件列表指针

int format();

int mkdir(char *sonfname);

int rmdir(char *sonfname);

int create(char *name);

int listshow();

int delfile(char *name);

int changePath(char *sonfname);

int write(char *name);

int exit();

int open(char *file);

int close(char *file);

int read(char *file);

/*------------初始化-----------------------*/

int format()

{

current = 2;

currentPath="C:\\"; //当前路径

osPoint->format();//打开文件列表初始化

delete openlist;

openlist=new OPENLIST;

/*-------保存到磁盘上myfiles--------*/

fp = fopen(FilePath,"w+");

fwrite(BaseAddr,sizeof(char),DiskSize,fp);

fclose(fp);

printf("格式化成功!!\n");

return 1;

}

int mkdir(char *sonfname)/*-----------------------创建子目录-------------------*/

{//判断是否有重名寻找空白子目录项寻找空白盘块号当前目录下增加该子目录项分配子目录盘块,并且初始化修改fat表

int i,temp,iFAT;

struct dirFile *dir; //当前目录的指针

if(current == 2) // 根目录

dir=&(osPoint->root);

else

dir=(struct dirFile *)(osPoint->data [current-3]);

/*--------为了避免该目录下同名文件夹--------*/

for(i = 1;i

if(dir->fcb[i].type==DIRECTORY && strcmp(dir->fcb[i].fname,sonfname)==0 ){ printf("该文件夹下已经有同名的文件夹存在了!\n");

return 0;

}

}

for(i = 1;i < BlockFcbCount; i++){//查找空白fcb序号

if(dir->fcb[i].type==Zero)

break;

}

if(i == BlockFcbCount){

printf("该目录已满!请选择新的目录下创建!\n");

return 0;

}

temp = i;

for(i = 3;i < BlockCount;i++) {

if(osPoint->FAT1[i] == 0)

break;

}

if(i == BlockCount){

printf("磁盘已满!\n");

return 0;

}

iFAT=i;

/*-------------接下来进行分配----------*/

osPoint->FAT1[iFAT]=osPoint->FAT2[iFAT] = 2; //2表示分配给下级目录文件

//填写该分派新的盘块的参数

strcpy(dir->fcb[temp].fname,sonfname);

dir->fcb[temp].type=DIRECTORY;

dir->fcb[temp].fatherBlockNum=current;

dir->fcb[temp].currentBlockNum=iFAT;

//初始化子目录文件盘块

dir=(struct dirFile*)(osPoint->data [iFAT-3]); //定位到子目录盘块号

dir->init (current,iFAT,sonfname);//iFAT是要分配的块号,这里的current用来指要分配的块的父块号

printf("创建子目录成功!\n");

return 1;

}

int rmdir(char *sonfname)/*-------删除当前目录下的文件夹--------*/

{

int i,temp,j;//确保当前目录下有该文件,并记录下该FCB下标

struct dirFile *dir; //当前目录的指针

if(current==2)

dir=&(osPoint->root);

else

dir=(struct dirFile *)(osPoint->data [current-3]);

for(i=1;i

if(dir->fcb[i].type==DIRECTORY && strcmp(dir->fcb[i].fname,sonfname)==0){ break;

}

}

temp=i;

if(i==BlockFcbCount){

printf("当前目录下不存在该子目录!\n");

return 0;

}

j = dir->fcb[temp].currentBlockNum;

struct dirFile *sonDir; //当前子目录的指针

sonDir=(struct dirFile *)(osPoint->data [ j - 3]);

for(i=1;i

if(sonDir->fcb[i].type!=Zero)

{

printf("该文件夹为非空文件夹,为确保安全,请清空后再删除!\n");

return 0;

}

}

/*开始删除子目录操作*/

osPoint->FAT1[j] = osPoint->FAT2[j]=0; //fat清空

char *p=osPoint->data[j-3]; //格式化子目录

memset(p,0,BlockSize);

dir->fcb[temp].initialize(); //回收子目录占据目录项

printf("删除当前目录下的文件夹成功\n");

return 1;

}

/*-----------在当前目录下创建文本文件---------------*/

int create(char *name){

int i,iFAT;//temp,

int emptyNum = 0,isFound = 0; //空闲目录项个数

struct dirFile *dir; //当前目录的指针

if(current==2)

dir=&(osPoint->root);

else

dir=(struct dirFile *)(osPoint->data [current-3]);

for(i=1;i

{

if(dir->fcb[i].type == Zero && isFound == 0) {

emptyNum = i;

isFound = 1;

}

else if(dir->fcb[i].type==GENERAL && strcmp(dir->fcb[i].fname,name)==0 ){ printf("无法在同一目录下创建同名文件!\n");

return 0;

}

}

if(emptyNum == 0){

printf("已经达到目录项容纳上限,无法创建新目录!\n");

return 0;

}

for(i = 3;i

if(osPoint->FAT1[i]==0)

break;

}

if(i==BlockCount){

printf("磁盘已满!\n");

return 0;

}

iFAT=i;

/*------进入分配阶段---------*///分配磁盘块

osPoint->FAT1[iFAT] = osPoint->FAT2[iFAT] = 1;

/*-----------接下来进行分配----------*///填写该分派新的盘块的参数

strcpy(dir->fcb[emptyNum].fname,name);

dir->fcb[emptyNum].type=GENERAL;

dir->fcb[emptyNum].fatherBlockNum=current;

dir->fcb[emptyNum].currentBlockNum=iFAT;

dir->fcb[emptyNum].size =0;

char* p = osPoint->data[iFAT -3];

memset(p,4,BlockSize);

printf("在当前目录下创建文本文件成功!\n");

return 1;

}

/*-------查询子目录------------*/

int listshow()

{

int i,DirCount=0,FileCount=0;

//搜索当前目录

struct dirFile *dir; //当前目录的指针

if(current==2)

dir=&(osPoint->root);

else

dir=(struct dirFile *)(osPoint->data [current-3]);

for(i=1;i

if(dir->fcb[i].type==GENERAL){ //查找普通文件

FileCount++;

printf("%s 文本文件.\n",dir->fcb[i].fname);

}

if(dir->fcb[i].type==DIRECTORY){ //查找目录文件

DirCount++;

printf("%s 文件夹.\n",dir->fcb[i].fname);

}

}

printf("\n该目录下共有%d 个文本文件, %d 个文件夹\n\n",FileCount,DirCount);

return 1;

}

/*---------在当前目录下删除文件-----------*/

int delfile(char *name)

{

int i,temp,j;

//确保当前目录下有该文件,并且记录下它的FCB下标

struct dirFile *dir; //当前目录的指针

if(current == 2)

dir=&(osPoint->root);

else

dir=(struct dirFile *)(osPoint->data [current-3]);

for(i=1;i < BlockFcbCount;i++) //查找该文件

{

if(dir->fcb[i].type==GENERAL && strcmp(dir->fcb[i].fname,name)==0){

break;

}

}

if(i == BlockFcbCount){

printf("当前目录下不存在该文件!\n");

return 0;

}

int k;

for(k=0;k

if((openlist->f [k].type = GENERAL)&&

(strcmp(openlist->f [k].fname,name)==0)){

if(openlist->f[k].fatherBlockNum == current){

break;

}

else{

printf("该文件未在当前目录下!\n");

return 0;

}

}

}

if(k!=OPEN_MAX){

close(name);

}

//从打开列表中删除/*开始删除文件操作*/

temp=i;

j = dir->fcb [temp].currentBlockNum ; //查找盘块号j

osPoint->FAT1[j]=osPoint->FAT2[j]=0; //fat1,fat2表标记为空白

char *p=osPoint->data[j - 3];

memset(p,0,BlockSize); //清除原文本文件的内容

dir->fcb[temp].initialize(); //type=0; //标记该目录项为空文件

printf("在当前目录下删除文件成功!\n");

return 1;

}

/*--------------进入当前目录下的子目录--------------*/

int changePath(char *sonfname)

{

struct dirFile *dir; //当前目录的指针

if(current==2)

dir=&(osPoint->root);

else

dir=(struct dirFile *)(osPoint->data [current-3]);

/*回到父目录*/

if(strcmp(sonfname,"..")==0){

if(current==2){

printf("你现已经在根目录下!\n");

return 0;

}

current = dir->fcb[0].fatherBlockNum ;

currentPath = currentPath.substr(0,currentPath.size() - strlen(dir->fcb[0].fname )-1);

return 1;

}

/*进入子目录*///确保当前目录下有该目录,并且记录下它的FCB下标

int i,temp;

for(i = 1; i < BlockFcbCount; i++){ //查找该文件

if(dir->fcb[i].type==DIRECTORY&&strcmp(dir->fcb[i].fname,sonfname)==0){ temp=i;

break;

}

}

if(i==BlockFcbCount){

printf("不存在该目录!\n");

return 0;

}

//修改当前文件信息

current=dir->fcb [temp].currentBlockNum ;

currentPath = currentPath+dir->fcb [temp].fname +"\\";

printf("进入当前目录下的子目录成功!\n");

return 1;

}

int exit(){//保存到磁盘上C:\myfiles

//将所有文件都关闭/*--------System exit---------------------*/

fp=fopen(FilePath,"w+");

fwrite(BaseAddr,sizeof(char),DiskSize,fp);

fclose(fp);

//释放内存上的虚拟磁盘

free(osPoint);

//释放用户打开文件表

delete openlist;

printf("退出文件系统成功!\n\n");

return 1;

}

int write(char *name)/*-------------在指定的文件里记录信息---------------*/

{

int i;

char *startPoint,*endPoint;

//在打开文件列表中查找file(还需要考虑同名不同目录文件的情况!!!)

for(i=0;i

if(strcmp(openlist->f [i].fname,name)==0 ){

if(openlist->f[i].fatherBlockNum ==current){

break;

}

else{

printf("该文件处于打开列表中,本系统只能改写当前目录下文件!\n");

return 0;

}

}

}

if(i==OPEN_MAX){

printf("该文件尚未打开,请先打开后写入信息!!\n");

return 0;

}

int active=i;

int fileStartNum = openlist->f[active].currentBlockNum - 3 ;

startPoint = osPoint->data[fileStartNum];

endPoint = osPoint->data[fileStartNum + 1];

printf("请输入文本以Ctrl D号结束:\t");

char input;

while(((input=getchar())!=4)) {

if(startPoint < endPoint-1) {

*startPoint++ = input;

}

else{

printf("达到单体文件最大容量!");

*startPoint++ = 4;

break;

}

}

return 1;

}

int read(char *file)/*---------选择一个打开的文件读取信息----------*/

{

int i,fileStartNum;

char *startPoint,*endPoint;

//struct dirFile *dir;

//在打开文件列表中查找file(还需要考虑同名不同目录文件的情况!!!)

for(i=0;i

if(strcmp(openlist->f [i].fname,file)==0 ){

if(openlist->f[i].fatherBlockNum ==current){

break;

}

else{

printf("该文件处于打开列表中,本系统只能阅读当前目录下文件!\n");

return 0;

}

}

}

if(i==OPEN_MAX){

printf("该文件尚未打开,请先打开后读取信息!\n");

return 0;

}

int active=i;//计算文件物理地址

fileStartNum = openlist->f[active].currentBlockNum - 3 ;

startPoint = osPoint->data[fileStartNum];

endPoint = osPoint->data[fileStartNum + 1];

printf("该文件的内容为: ");

while((*startPoint)!=4&& (startPoint < endPoint)){

putchar(*startPoint++);

}

printf("\n");

return 1;

}

int open(char *file)//打开文件/*当前目录下添加一个打开文件*/

{

int i,FcbIndex;

//确保没有打开过该文件= 相同名字+ 相同目录

for(i=0;i

if(openlist->f[i].type ==GENERAL && strcmp(openlist->f [i].fname,file)==0

&&openlist->f[i].fatherBlockNum == current)

{

printf("该文件已经被打开!\n");

return 0;

}

}

//确保有空的打开文件项

if(openlist->files == OPEN_MAX){

printf("打开文件数目达到上限!无法再打开新文件.\n");

return 0;

}

//确保当前目录下有该文件,并且记录下它的FCB下标

struct dirFile *dir; //当前目录的指针

if(current==2)

dir=&(osPoint->root);

else

dir=(struct dirFile *)(osPoint->data [current-3]);

for(i = 1;i< BlockFcbCount;i++){ //查找该文件

if(dir->fcb[i].type==GENERAL && strcmp(dir->fcb[i].fname,file)==0 ) { FcbIndex=i;

break;

}

}

if(i==BlockFcbCount){

printf("当前目录下不存在该文件!\n");

return 0;

}

//装载新文件进入打开文件列表,(FCB信息,文件数++) ??难道名字过不来?

openlist->f[OpenFileCount] = dir->fcb[FcbIndex]; //FCB拷贝

openlist->files ++;

printf("文件打开成功!\n");

OpenFileCount++;

return 1;

}

int close(char *file)

{

//释放该文件所占内存//释放用户打开文件列表表项

int i;

//在打开文件列表中查找file(还需要考虑同名不同目录文件的情况!!!)

for(i=0;i

if((openlist->f [i].type = GENERAL)&&

(strcmp(openlist->f [i].fname,file)==0)){

if(openlist->f[i].fatherBlockNum == current) {

break;

}

else{

printf("该文件已打开,但未在当前目录下,无法关闭!\n");

return 0;

}

}

}

if(i==OPEN_MAX){

printf("该文件未在打开列表中!\n");

return 0;

}

int active=i;

openlist->files --;

openlist->f[active].initialize();

OpenFileCount--;

printf("该文件已关闭!\n");

return 1;

}

int main()

{

printf("@ Welcome To My Operate System Of File(FAT) @n");

printf("\n 以下是使用说明书:\n");//使用说明书

printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@\n");

printf("@ format :对磁盘格式化. @ \n");

printf("@ exit :安全退出该文件系统,保存信息. @ \n");

printf("@ mkdir dirname :创建子目录. @ \n");

printf("@ rmdir dirname :删除子目录. @ \n");

printf("@ ls dirname :显示当前目录下信息. @ \n");

printf("@ cd dirname :更改当前目录. @ \n");

printf("@ create filename :创建一个新文件,并且打开. @ \n");

printf("@ write filename :选择一个打开的文件写入信息@ \n");

printf("@ read filename :选择一个打开的文件读取信息. @ \n");

printf("@ rm filename :删除文件. @ \n");

printf("@ open filename :打开文件. @\n");

printf("@ close filename :关闭文件. @\n");

printf("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@\n\n");

openlist=new OPENLIST;//创建用户文件打开表

BaseAddr=(char *)malloc(DiskSize);//申请虚拟空间并且初始化

osPoint=(struct DISK *)(BaseAddr);//虚拟磁盘初始化

if((fp=fopen(FilePath,"r"))!=NULL){//加载磁盘文件

fread(BaseAddr,sizeof(char),DiskSize,fp);

printf("加载磁盘文件( %s )成功,现在可以进行操作了!\n\n",FilePath);

}

else{

printf("这是你第一次使用该文件管理系统!\t正在初始化...\n");

format();

printf("初始化已经完成,现在可以进行操作了!\n\n");

}

while(1){

cout<

cin>>cmd;

if(cmd=="format"){

format();

}

else if(cmd=="mkdir"){

cin>>command;

mkdir(command);

}

else if(cmd=="rmdir"){

cin>>command;

rmdir(command);

}

else if(cmd=="ls"){

listshow();

}

else if(cmd=="cd"){

cin>>command;

changePath(command);

}

else if(cmd=="create"){

cin>>command;

create(command);

}

else if(cmd=="write"){

cin>>command;

write(command);

}

else if(cmd=="read"){

cin>>command;

read(command);

}

else if(cmd=="rm"){

cin>>command;

delfile(command);

}

else if(cmd=="open"){

cin>>command;

open(command);

}

else if(cmd=="close"){

cin>>command;

close(command);

}

else if(cmd=="exit"){

exit();

break;

}

else cout<<"无效指令,请重新输入:"<

}

printf("Thank you for using my file system!\n");

return 1;

}

六、实验结果截图

管理信息系统实验报告

实验一认识计算机硬件和网络结构 一、实验题目 认识计算机硬件和网络结构。 二、实验课时 2课时。 三、实验目的 认识计算机的主要构成部件、功能、型号、在计算机机箱内的位置、网络结构等。 四、实验内容和要求 1、利用多媒体演示计算机的主要组成部件:机箱、主板、CPU、内存条、硬盘、软驱、光驱、插槽、BUS总线、串行接口、并行接口、USB接口等; 2、打开机箱,实物展示并讲解个部件的功能及其连接; 3、机箱、主板、CPU、CPU风扇、内存条、显卡、网卡等分别如下所示。 机箱主板

内存条显卡网卡无线网卡 CPU CPU风扇硬盘 机箱背面并行接口串行接口USB接口 4、观察每个部件在机箱的位置,并掌握每个部件的功能和基本知识。 5、观察实验室网络结构图。 6、结合某网吧的例子更好地理解网络结构。 Parallel port Serial port USB port Keyboard and mouse ports

7、独立完成上述内容,并提交书面实验报告。 五、实验体会 通过本次实验,我了解了计算机的各种硬件和网络结构。知道了各种硬件的形状、功能、特征等。还知道了网络结构的流程、大体构造。这使我对计算机有了初步的认识,为以后更进一步的学习打下了坚实的基础。也为我以后的学习和生活提供了方便。 1、cpu——中央处理器,是一台计算机的运算核心和控制核心。 2、硬盘——是电脑的主要存储媒介之一。 3、主板——又叫主机板、系统板或母板,安装在机箱内,是微机最基本也是最重要的部件之一。 4、机箱——作为电脑配件的一部分,它起的主要作用是放置和固定各电脑配件,起到一个承托和保护作 用。 5、内存条——是连接CPU和其他设备的通道,起到缓冲和数据交换作用。

会计信息系统实验报告模板

会计信息系统实验报告模板 一、实验目的 1.掌握会计信息系统中系统管理的相关内容,理解系统管理在整个系统中的重要性,理解操作员权限设置的重要意义。 2.掌握会计信息系统中基础档案设置的有关内容,理解基础档案设置在整个系统中的作用。 3.掌握会计信息系统中总账子系统初始设置与日常业务处理的相关内容,理解初始设置的意义,熟悉具体内容和操作方法。 4.掌握工资子系统的相关内容,熟悉工资子系统初始化,日常业务处理,工资分摊及月末处理操作。 5.掌握固定资产管理子系统中的相关内容,熟悉固定资产管理子系统初始化,日常业务处理及月末处理操作。 6.掌握总账子系统月末处理的相关内容,熟悉月末处理的各种操作,掌握银行对账、自动转账设置与生成、对账和月末结账的操作方法。 7.理解财务报表编制的原理及流程,掌握报表格式定义、公式定义的操作方法,掌握报表单元公式的设置方法,掌握报表数据处理、表页管理及图表功能等操作,掌握利用报表模板生成会计报表的方法。 8.通过综合实验,巩固单项实验中掌握的各模块操作技能并综合理解掌握,进一步提高会计信息系统综合实务操作能力。 二、实验内容 1.建立账套。 2.操作员及权限设置。 3.基础信息设置。 4.总账子系统、工资子系统、固定资产子系统初始化。 5.根据业务资料填制记账凭证(工资业务和固定资产业务分别在工资子系统和固定资产子系统处置后生成记账凭证向总账子系统传递)。 6.对填制和生成的凭证进行审核、记账。

7.账簿查询。 8.月末结账。 9. 编制资产负债表和利润表。 三、实验步骤 (一)建立账套及操作员权限设置(二)基础信息设置(三)总账系统基本设置(四)总账系统日常业务处理(五)工资管理(六)固定资产管理(七)月末对账与结账(八)编制报表 编制资产负债表和编制利润表 四、实验结果 1. 余额及发生额表 2. 凭证清单

C++图书管理系统实验报告

面向对象程序设计(C++语言)课程设计 设计说明书 图书管理系统的设计与实现 起止日期:年月日至年月日 学生姓名 班级 学号 成绩 指导教师(签字) 计算机与通信学院 年月日 图书管理系统

一.需求分析 图书馆是目前生活中除了网络外的另一个获取知识的重要场所。利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。同时是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。 二.设计要求: 1.图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时 间、价格等。试设计一图书信息管理系统,使之能提供以下功能: 2.系统以菜单方式工作 3.图书信息录入功能(图书信息用文件保存)--输入 4.图书信息浏览功能--输出 5.查询和排序功能:(至少一种查询方式)--算法 6.按书名查询 7.按作者名查询 8.图书信息的删除与修改(可选项) 三.概要设计 1、类的设计 ①、Book类的设计(内部函数流程图):

②、BDatabase类的设计: ③、主函数流程图:

4多态的实现 class People { public: virtual void card(){cout<<"card people"<

管理信息系统实验报告97692

《管理信息系统》实验报告 实验项目:教务处排课系统分析 实验学时:18 学时 姓名: 学号: ________________ 专业班级: 实验时间: _______ 实验成绩: __________________________

东北财经大学 《管理信息系统》实验报告实验项目名称:

沟通能力,养成对问题全面分析、思考和严谨认真的态度,增强创新意识五、教师评语 签名: 日期: 管理系统实验报告

实验小组成员: 实验对象:教务处排课信息系统 实验对象背景介绍:教务管理系统是一个庞大而复杂的系统,它包括:学生学籍管理系统、排课 系统、教师管理系统、学生成绩系统、系统设置、班级信息系统、教学培养计划管理系统、教学资源管理系统、招生系统教务信息发布系统和事务处理系统。随着科学技术的进步与相应的管理信息系统的升级,教务系统管理平台充分利用互联网络B/S 管理信息模式,以网络为平台,为各个学校教务系统的管理提供一个平台,帮助学校管理教务系统,用一个帐号解决学校教务教学管理,并且学校可以自由选择学校需要的教务管理系统,灵活地定制符合学校自己实际情况的教务系统。教务管理系统内部子系统多样庞杂, 今天我们主要讨论的研究对象是排课管理信息系统。 排课管理系统是每个学校必不可少的内容,它的优劣直接学校教学工作质量和学校的正常教学活动秩序。随着现在生源数量的不断增长以及各行业竞争日益激烈,为了满足中国社会主义事业发展对高素质人才的需求,各大高校都在尽自己努力,以本校现状及需求作为基础,以科技发展进步作为依托,发展完善一个功能完整,操作简单快捷,高效率,与本校其他教务管理系统良好适应的排课系统与之配套,使教师等教学资源利用达到最大化,为学生提供优良的教育环境。因此,东北财经大学作为一个知名的财经类高校, 要达到适应教育现状及 提高自身教育层次的目标,完善教务排课管理系统显得尤为重要。 系统功能简述排课管理系统需要合理调配各个班级专业所需的专业课程选修必修课程,相应教师,教师及上课班级,尽可能全面的考虑到教师的身体状况,工作条件,家庭状况甚至与学校距离,教师及学生时间,各种课程按重要程度以及学生兴奋点和接受能力合理排序,教师的容量用途,学校集体活动或教师会议等多方面因素,以计算机安排为主,手工调整为辅的方式做出各个院系各个专业各个班级的课程安排。 排课管理系统的目标不仅是对于原有系统进行改进提高,还使课程管理科学化系统化准确化,减少手工录入的误差可能性,方便操作者的随时添加、查询、修改,是统计表格格式规范化统一化,提高工作效率,降低人工成本,提高处理数据能力与速度,提高教学质量,优化学校教务管理系统,为学校的进一步发展提供技术支持与可能性。 系统分析(1)系统分析任务:根据系统设计任务书所确定的范围,并在充分认识原有系统的基础上进行详细的调查分析,通过问题识别、可行性分析、详细调查、系统化分析,进而确定新系统的基本目标和逻辑功能结构,最后完成新系统的逻辑方案设计。 (2)可行性分析和详细调查概述:由于实验的限制,假定建立排课管理信息系统在管理上、技术上、经 济上都是可行的。而详细调查采用一定的调查方法发现了现行系统有以下优缺点: 现有系统优缺点分析 1. 选课分为预选、正选、补退选,一定程度上完善了选课系统。 2. 在选课中,按年级差异区分次序,一定程度上缓解短时间内系统压力,保证了高年级学生顺利完成课业。 3. 学生面临选课时,具有多重选择性,使学生有机会挑选感兴趣的课程,更加人性化设置。 4. 正选是以随机抽选的形式来的话,会更具有公平性。 5?学生可以自主跨专业选择自己喜欢的课,使选课更具有自主性。 6?在登录选课系统时,需要学生输入个人账号信息,保证了学生信息隐私,具有一定的安全性。

财务会计会计信息系统实验报告

会计信息系统实验报告

实验题目:实验一企业建账 实验目的:1、理解ERP系统中企业账的存在形式 2、掌握ERP系统中企业账的设立过程 3、理解系统用户及权限的含义及设置方法 4、理解账套输出及引入的作用 实验内容:1、增加操作员 2、建立企业账套 3、进行财务分工 4、备份/引入账套数据 实验步骤: 1、以系统管理员身份注册进入系统 (1)操作路径:从“开始”→“程序”→“用友ERP-U872”→“系统服务”→“系统管理”,进入用友ERP-U8[系统管理]窗口。 (2)单击系统注册命令,打开“登入”对话框。 (3)在”登入到”文本框中填上本机默认名称。 (4)在“操作员”文本框中输入系统管理员“admin”,密码为空。 (5)单击【确定】按钮,进入系统管理。 2、增加操作员 操作路径:(1)权限→用户,进入用户管理窗口 (2)打开增加用户对话框 (3)按所给资料增加角色 3、建立帐套 操作路径:(1)账套→建立,打开创建账套--张涛信息对话框 (2)填写账套信息

(3)填写单位信息 (4)填写核算类型 (5)填写基础信息 (6)确定分类编码方案 (7)定义数据精度 4、权限设置 操作路径:指定账套主管(1)权限,进入操作员权限窗口 (2)选择【621】冠群公司 (3)设置用户账套主管权限 给操作员赋权(1)选择冠群公司,选中用户单击修改 (2)展开总账、凭证、出纳签字,单击保存

5、输出和引入账套 操作路径:账套输出(1)以系统管理员注册进入系统管理,账套→输出 (2)选中要输出的账套,单击确认 (3)打开账套备份路径对话框,单击确定 账套引入(1)以系统管理员注册进入系统管理,账套→引入 (2)选择要引入的账套数据备份文件确认引入目录,单击确定 实验体会: 1.注册进入系统管理的身份有哪几个?区别是什么? 答:注册进入系统管理的身份可以是系统管理员和账套主管。系统管理员负责整个系统的总体控制和数据维护,管理系统中所有账套,可进行账套的建立、引入和输出,可设置操作员和权限,监控系统运行过程,清除异常任务等。账套主管负责所选账套的维护工作,包括对所选账套参数修改,对年度账的管理(创建、清空、引入、输出等),该账套操作员权限的设置。 2.建立账套时忘记了启用“总账”模块,以后应如何启用呢?请写出简要步骤。

图书管理系统uml实验报告.doc

面向对象分析与设计大作业 学院:计算机科学与工程学院 班级:计算机软件 3 学生姓名:陈俊伟 学号:2174 指导老师:苏锦钿 提交日期:

华南理工大学 面向对象分析与设计大作业课程实验报告 实验题目 :_____ 图书管理系统 uml 图__________________________ 姓名 :___ 陈俊伟 ________学号:_ 2174_____ 班级 : ___09 软件 3 班________ 组别 : ________ 合作者 : __________________ 指导教师 : ______ 苏锦钿 __________ 实验概述 【实验目的及要求】 一.目的 1.掌握面向对象技术的基本原理和各种相关概念; Rational Rose 2003 、 IBM 2. 熟练掌握 UML的基本知识和9 种常见的 UML图形 , 并能够利 用 Software Architecture、或trufun UML工具进行建模; 3.根据问题进行学习,拓广、深化; 4.独立完成一个应用程序的分析、设计和建模,为以后软件项目的开发打下实践基础。 【实验原理】 UML建模,就是用模型元素来组建整个系统的模型,模型元素包括系统中的类、类和类 之间的关联、类的实例相互配合实现系统的动态行为等。UML提供了多种图形可视化描 述模型元素,同一个模型元素可能会出现在多个图中对应多个图形元素,人们可以从多 个视图来考察模型。UML建模主要分为结构建模、动态建模和模型管理建模 3 个方面,第 1 个方面是从系统的内部结构和静态角度来描述系统的,在静态视图、用例视图、实施视 图和配置视图中适用,采用了类图、用例图、组件图和配置图等图形。例如类图用于描述系 统中各类的内部结构(类的属性和操作)及相互间的关联、聚合和依赖等关系, 包图用于描述系统的分层结构等;第 2 个方面是从系统中对象的动态行为和组成对象间的相互 作用、消息传递来描述系统的,在状态机视图、活动视图和交互视图中适用,采 用了状态机图、活动图、顺序图和合作图等图形,例如状态机图用于一个系统或对象从 产生到结束或从构造到清除所处的一系列不同的状态;第 3 个方面描述如何将模型自身组织到高层 单元,在模型管理视图中适用,采用的图形是类图。建模的工作集中在前两 方面,而且并非所有图形元素都适用或需要采用

实验报告管理系统报告

实验报告管理系统报告文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)

软件项目设计报告 实验报告管理系统 所在班级12计卓 小组成员 江灵瞳201印海平201钱晨晨 学院名称信电工程学院 专业名称计算机科学与技术 指导教师胡局新 起止日期 2015年1月15日 目录

1 绪论 开发背景 实验教学是学生技能培养的重要环节之一,学生实验报告的质量在一定程度上反映了实验教学的质量,实验报告管理水平也反映了实验教学管理水平。目前,大部分学校所提交的实验报告大多还停留在以纸为介质的方式上,这将严重制约着实验教学的开展。首先,很多课程的实验结果在纸质实验报告中不能表现或不能完全表现,其次纸质实验报告的批改和分析也是实验授课老师的一个很重负担,如何提高学生实验报告的表象能力,提高教师批改实验报告的效率并及时发现和纠正实验报告中存在的问题是许多课程实验授课教师所面对的一个难题。 本次设计完成的工作 老师登录该系统可以上传、下载实验报告、查看学生做的实验报告并给学生打分、老师可以查看实验验课程、实验课程列表、查看实验提交情况等。 学生登录该系统可以上传、下载实验报告、查看实验课程和实验课程列表。 任务分工 组织结构:为了完成学生信息管理系统的项目开发,班级组成了一个项目团队,人员分工:为了明确项目团队中每个人的任务分工,现制定人员分工,如下表所示: 任务 我们三个人各自分工完成自己的模块内容,首先,江灵瞳构造整个系统的框架,然后印海平设计数据库,在我们一起先设计前台界面,之后我们就各自实现各自模块的功能。

2 系统分析 需求分析 1)实验课程设置,设置课程编号、课程名、时间、次数、老师编号、老师名、实验班级; 2)实验列表设置,设置实验编号、实验名、班级、学生学号、学生名、老师名、实验路径、提交状态、分数; 3)树型类别设置,设置编号、名字、路径、学生名、老师名、树的状态。 可行性分析 编写目的: 背景: 徐州工程学院是一所培养应用型人才的普通高等学院。为了完善管理学校实验报告太多没有地方保存了,经决定开发实验报告管理系统。 要求: 实验报告系统必须提供学生信息和教师信息的基础设置;提供强大的条件搜索功能个实验课程查询、实验列表出现等管理功能;可以分不同权限、不同用户对该系统进行操作。另外,该系统还必须保证数据的安全性、完整性和准确性。 目标: 实验报告管理系统的目标是实现学生的纸质的实验报告太多没有地方长期保存,这样用一个系统可以将一个课程所有学生的实验报告进行管理方便存放。 条件、假定和限制: 时间的限制,我们必须在两周的时间里完成项目,在这期间系统分析员需要整理好分析结果,分配各组员的任务,每天需要人员跟踪记录整理文档。程序开发人员须在5天的时间里进行系统设计、程序编码、系统测试、程序调试。期间,还包括一个双休日假期。 根据上面的分析,在技术上不会存在什么问题,因此项目延期的可能性很小。只要在分配的时间里都能顺利地完成任务,再加上团队的凝聚力齐心协力,相信在这两周内会获得一个满意的结果。 用例图 图用例图

管理信息系统实验报告答案要点

实验

3、分组讨论并确定小组管理信息系统的题目,并给出题目的具体功能和要求。心得体 会:(可以从以下几个方面来总结:你在上机过程中遇到了哪些难题?你是怎么克服的?你的收获有哪些?你有什么没有解决的问题等) 实验

书E 选脚 ■1. 订盼蔚豆 建立学生表 则剩余不够的部分还须向其他书商订购,同时 在订购信息中添加该教材在另一个书商中订购的信息。 1、请画出上述内容的 E-R 图。 2、把E-R 图转换成合理的关系模式: 学 生(学号,姓名,性别,院系,年龄) 教 材(书号,书名,出版社,出版日期, 书商(商号,电话,联系人,商名) 山膿E 軀 nanie = ^Buy_Booksdb , j filename - J E: \Buy_Bcoksdb* mdf', size = 5j maxsize - 20, f llegrovrth = 1 ) log on ( rtajne-' Buy^Bookslog 1、 f ilenajue~, E:\Buy_Bcakslog. ldf'. size=2_, maxsize! 8, fllegrawth-1 ] Go 口. ■号, 3、在SQL Serve r (或Access )中建立数据库和表(截图) 建立数据库: create database Buy Books on primary 主键为学号 主编) 主键为书号 主键为商号 ' —i r - ! 見意「腿 性别 商号 1 ---------- 戟条人

CREATE TABLE St udent ( Sno char 9- primary key. Sname char (20 i unique, Ssex char (2), Sage smallint. Sdept char (2Q 1 ) f -f 建立教材表 CREATE TABLE Books ( Eno char 9) primary key Btitle char (40), Bauthor char ^20), Bpress char 40 Bdate datetime ): 建立书商表 -CREATE TABLE SSellcr BSno char 9[ priinaty key, BSnane char 201 . Tel char 30;. Person char (201 feedback char '40 1 鼻 /*书号* /車书名*/ 八作者于/ /廉也版社康/ " 由版日期柑

会计信息系统实验报告

2、 单击“增加”按钮,打开“项目大类定义一增加”对话框; 3、 输入新项目大类名称“生产成本”; (八) 设置项目目录 (九) 数据权限控制设置及分配 四、输入期初余额 执行“设置” / “期初余额”命令,直接输入数据,但设置辅助核算的科 目要到相应的辅助帐中进行,按明细输入每笔业务的金额,输完所有科目余额 后,单击“试算”按钮,若期初余额不平衡,则修改期初余额,若平衡则退出。 实验三 总账管理系统日常业务处理 、凭证管理 (一)填制凭证的身份进入企业应用平台,进行凭证的填制 ① 执行“凭证 ”1“填制凭证”命令,进入“填制凭证”窗口。 ② 打击“增加”按钮即可增加一张空白的凭证依次进行 收款凭证、付款凭 证、转账凭证的填写,如下图所示: (二)出纳签字 以“王晶(002) ”进入系统进行出纳的签字。 ⑴?出纳签字: ① 执行“凭证”1“出纳签字”命令,打开“出纳签字”查询条件对话框 ② 输入查询条件:选择“全部”单击按钮。 J_J FI -fl 1?Fth > 小 ijldl i-c± 弓它 hlL 曰 KM = 廿斗口 47璋E- Ml 冶寸H 齐耳 I 十*■町" :Lffl ht-r

垢讦诵志-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -U全刼r 作庞焼ii£ I 永flffi ③单击“确定”按钮,进入“出纳签字”的凭证列表窗口 (三)审核凭证 (四)凭证记账 ①执行“凭证”1“查询凭证”命令,打开“凭证查询”对话框 ②输入查询条件,单击“确定”按钮 ③双击你所要查询的某一张凭证,屏幕课显示出此张凭 厂Tt应妊证 二、出纳管理 (一)现金日记账 1执行“出纳” / “现金日记账”命令,打开“现金日记账查询条件”对话框; 疑证咨别L月曲丰檢曰期 *ilAPA 审牺人 含汁主首 柯華曰明 I~未呈乎下勲 fflW 世力毎ESH十?-* A.盤手人 ■M 口a-oa-EB收-OOC3 2CDQ-IX3-DZ付-QCM3I ■sc 口p-&sr口 n忖-OOOT ?aa-M^OB付-0003 ZODU-dC-CE;忖-口O□斗 炊邮啊册立JR 旳不办i$■刖吕 乐!IMREff;立付ilk 誓招朽S? 1UT 曲』《3 口DD □O M no 口 V MO 口□D 甘口a」o□口V SD J O□口 V】.」jza 口 □D □D □□ 毘tn:昶库内存坛 iirserSd 13005.130 二| 存梭曰朗r na ih'i-tm A.1 帀悵人厂- St HE —I — I I 尅 rH* 內A 会计土甘 rKffi 曰i丘竺璋也 K 话:ft 1L? E :*£证号JO呼 *■1 ■口?J1%LEi 倍门口口-OG-13- EUUW-US—1W caan- csB-oQ f-nna-c?- a?i 2DD^-CRS-OO- ^□□9-OB>-lS- fOOA-Ci^-1-a zoon- g W' ^O. UUU. g V L, SOO. □□ v 记.MS w ■tf L. ?13O. OO w ?, coo. 口口¥ 3. 500. GO V Hg V F CB.E W EDO. CO ¥ in. nnn GA ¥ 日ODO. E V — ZDC. OO * 锐 560 UK* ¥ "DO” co ¥ ZS^ 口DC 8 W 3. £? CK> □ O W zaz. 310. E I显口口它-晶 玻 西 共 S5K 姚 AKAK ISBRrarlsralRIIsm 顾 ^UU'J-Ut? 2QOC-DB s- nnfl nri iiUUU-Utt E□口B-DS s- nns-riA zuuu-ae £□□■& DD £nnfi-nA JlJ 站曰豆』~rs口口口 aona-ras^ns OCM3Z 口 □ 口 口 口 □ 口 口 □ 口 耳r*- 曰期 L平逝 V M. IU1O 口口W fl?!. ftrtCi 8 版人

图书馆管理系统实验报告

华北科技学院计算机系综合性实验 实验报告 课程名称数据库系统 实验学期2009至2010学年第2学期学生所在系部计算机系 年级专业班级网络B081 学生姓名王明仁学号200807024102 任课教师郭红 实验成绩 计算机系制

《图书馆管理系统》课程综合性实验报告 开课实验室:基础62010年6月19日实验题目 一、实验目的 利用一种DBMS作为设计平台,理解并应用课程中关于数据库设计的相关理论,能按照数据库设计步骤完成完整的数据库设计,包括需求分析、概念设计、逻辑设计、物理设计和实施。同时能够正确应用各个阶段的典型工具进行表示。 二、设备与环境 (1)硬件设备:PC机一台 (2)软件环境:安装Windows操作系统,安装数据库管理系统SQL Server2000等。 三、实验内容 完整实践应用数据库设计的工程过程:需求分析\概念设计\逻辑设计\物理设计和实施: (1)需求分析:选定一个应用(如图书管理系统),对所设计的数据库系统进行调研分析,其结果应该准确表达出选定 应用的功能需求; (2)概念分析:使用E-R图作为描述工具.必要时描述出局部和全局的E-R图; (3)逻辑设计:将上述绘制的E-R图转化为相应的关系模式,并根据范式理论进行优化分析。要求的关系模式不少于 3个,并根据实际应用的需要设计必要的视图; (4)物理设计:根据设计的结构,说明系统已经有的索引,并根据需要设计必要的索引; (5)实施:以SQL SERVER为平台创建出完整的数据库.在数据库中要表现出的知识点包括 ①登录控制(标准登录和混合登录) ②数据完整性:参照完整性、实体完整性、自定义完整性(包括触发器) ③安全性设计:设置用户,并相应设计用户的权限或角色(用户设计至少3个,有不同的权限) ④使用触发器、游标或存储过程完成相关操作,至少使用1种技术。 (6)以上内容,请详细描述,并有必要抓图. 四、实验结果及分析 根据我设计的图书馆数据库管理系统,我作了如下分析: 图书馆提供图书借阅业务,读者借阅需先办理借书卡(用条码识别身份),并交纳一定的押金。不同的书有着不同的借阅期限,比如期刊和某些新书最多只能借阅七天,而另一些书则可以借阅半个月或最长三个月不等。逾期不还,或丢失、损坏书籍则予以罚款。在交纳罚款前,借书卡被冻结。不同类别的读者不着不同的借阅数量限制,比如有的一次可以借阅7本,有的只能借阅5本等。对逾期不还的,系统给出报警,并打印催还通知单。读者可以事先从网上查询拟借书刊是否存在,并可查询书刊存放地点。 我设计的图书管理系统,功能包括: 一.图书管理系统: 1.图书查询 2.新书登记 3.图书下架 二.读者信息管理: 1.办卡 2.信息 3.挂失 4.注销 5.冻结 三.借阅管理系统: 1.借书(还书)

会计信息系统实验报告

云南师范大学 商学院 实验报告册 学期:2011-2012学年上学期 课程名称:《会计信息系统》 班级:09会计9班 学号:09422218 姓名:杨涛 2011年12月16日

实验名称财务业务一体化实验 实验目的 1、掌握用友网络财务软件中有关系统管理和基础设置的相关内容。 2、理解系统管理在整个系统中的作用及基础设置的重要性。 3、掌握拥有REP-U8管理软件中总账管理系统初始设置、日常业务处理、月末处理、薪资管理系统、固定资产管理系统等的相关内容。 4.、理解总账管理系统初始设置的意义。 5、掌握总账管理系统初始设置,凭证管理、出纳管理和账簿管理,银行对账、自动转账设置与生成、对账和月末结账,报表格式定义、公式定义,薪资管理系统和固定资产管理系统初始化、日常业务处理、工资分摊及月末处理等的具体内容和操作方法。 6.、熟悉总账管理系统日常业务处理、月末处理业务、 7、掌握报表单元公式的用法,掌握报表数据处理、表页管理及图表功能等操作,掌握如何利用报表模板生成一张报表。 实验设备硬件软件

实验一实验过程(要求根据实现进行的过程,常用文字、图、表等描述,可另附页) 一、以系统管理员admin身份登入系统管理 (一)执行“系统”/“注册”命令,打开“登陆”系统对话框; (二)系统中预先设定了一个系统管理员admin,第一次运行时,系统管理员密码为空,选择系统默认账套(default),单击“确定”按钮,以系统管理员身份进入系统管理。 二、增加操作员 (一)执行“权限”/“用户”命令,进入“用户管理”窗口 (二)单击工具栏上的“增加”按钮,打开“增加用户”对话框,输入操作员(三)最后单击“退出”按钮结束返回“用户管理”窗口 三、建立账套 (一)创建帐套:执行“帐套”/“建立”命令,打开“创建帐套”对话框;(二)账套信息:账套号:007 启用期间:2008年8月; (三)输入单位信息,核算类型; (四)确定基础信息、编码方案和精度定义; (五)退出。 四、进行财务分工 (一)执行“权限”/“权限”命令,进入“操作员权限”窗口; (二)选择007帐套,2008年度; (三)从窗口左侧操作员列表中选择“001陈明”,选中“帐套主管”复选框,确定陈明具有帐套主管权限; (四)选择“王晶”,选择“007”账套。单击工具栏上的“修改”按钮,打开“增加和调整权限”对话框,选中“GL总账”前的“+”图标,展开“总账”、“凭证”项目,选中“出纳签字”权限,再选中“总账”下地“出纳”权限,单击“确定”按钮返回; (五)同理,设置其他用户的操作权限。单击工具栏上的“退出”按钮,返回系统管理。 五、系统启用和基础设置

C--大作业图书管理系统实验报告

附件1: 《面向对象程序设计》 大作业 题学专班姓目 院 业 级 名 学生成绩管理系统 文法学院 教育学 教育学1201 杨欣 指导教师鄢红国 2013 年12 月20 日学号:0121213640126

目录 一二三四五六七八十设计目的 (1) 大作业的内容 (2) 大作业的要求与数据 (3) 大作业应完成的工作 (4) 总体设计(包含几大功能模块) (5) 详细设计(各功能模块的具体实现算法——流程图) (6) 调试分析(包含各模块的测试用例,及测试结果) (7) 总结 (8) 参考资料 (9)

一二 大作业的目的 《面向对象程序设计》是一门实践性很强的课程,通过大作业不仅可以全方位检验学生知识掌握程度和综合能力,而且还可以进一步加深、巩固所学课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。更好地掌握运用C++语言独立地编写、调试应用程序和进行其它相关设计的技能。 大作业的内容 对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数等) 进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出.将图书的信息进行记录,信息内容包含:(1)图书的编号(2)图书的书名(3)图书的库存量。假设,现收集到了一个图书馆的所有图书信息,要求用C语言编写一个简单的图书管理系统,可进行录入、查询、修改和浏览等功能。学习相关开发工具和应用软件,熟悉系统建设过程。 三大作业的要求与数据 1、用C语言实现系统; 2、对图书信息(包括编号、书名、总入库数量、当前库存量、已借出本数)进行管理,包括图书信息的输入、输出、查询、删除、排序、统计、退出. 3、图书信息包括:其内容较多,为了简化讨论,要求设计的管理系统能够 完成以下功能: (1)每一条记录包括一本图书的编号、书名、库存量 (2)图书信息录入功能:(图书信息用文件保存,可以一次完成若干条记录 的输入。) (3)图书信息显示浏览功能:完成全部图书记录的显示。 (4)查询功能:完成按书名查找图书记录,并显示。 (5)图书信息的删除:按编号进行图书某图书的库存量. (6)借书登记系统:可以输入读者编号和所借书号来借书。 (7)还书管理系统:可以输入读者编号和所借书号来还书。 (8)、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应 尽可能清晰美观!

学生信息管理系统软件项目管理实验报告

实验报告 <学生信息管理系统> 实验项目一:可行性分析报告 1.实验目的:根据理论课程所学内容,针对某一项目进行可行性分析训练 2.实验原理:从理论课的学习中掌握规范的可行性分析技术,通过编写报告的形 式得到练习。 3.实验器材:Microsoft Office 4.实验步骤:(1)参照理论学习的内容进行阅读思考;(2)针对某一软件项目, 着手编写;(3)提交。 实验一:学生信息管理系统可行性分析报告 A1、引言 学校的不断发展,学校规模不断扩大,学生数量不断剧增,有关学生的各种信息也成倍增长。面对庞大的数据信息,有一个学生信息管理系统是非常有必要的,不仅可以提高学生管理的工作的效率,还可以通过这个系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量。 A1.1 编写目的 学校的不断发展,学校规模不断扩大,学生数量不断剧增,有关学生的各种信息也成倍增长。面对庞大的数据信息,有一个学生信息管理系统是非常有必要的,不仅可以提高学生管理的工作的效率,还可以通过这个系统,可以做到信息的规范管理、科学统计和快速查询,从而减少管理方面的工作量. A1.2 项目背景 开发软件名称:学生信息管理系统 项目任务提出者:计算机与信息学院

项目开发者:学生组 用户:管理员、老师和学生 A1.3 定义 学生信息管理系统(SMIS):学生管理系统是帮助教学人员、行政人员和人事人员的管理软件,使用HTML5语言编写,独立完成其功能。 SQL语言:SQL全称是“结构化查询语言”,SQL是一个非过程化的语言。 A1.4参考资料 [1].<软件项目管理> 覃征徐文华翰毅唐晶编著清华大学出版社2009.10 [2].<软件工程> 钱乐秋赵文耘牛军钰编著清华大学出版社2013.08 A2 可行性研究的前提 A2.1 要求 (1)主要功能:本系统应该实现学生信息的管理与查询,具体包括学生信息查询,同时可以对信息进行修改,删除和添加,以及各种信息统计,学籍管理,新生注册等功能。 (2)性能要求:查询效率尽可能做到精准,保持全校数据的一致性、准确性、实时性,信息维护功能做到简单易用。 (3)输入要求:查询效率尽可能做到精准,保持全校数据的一致性、准确性、实时性,信息维护功能做到简单易用。 (4)输出要求:学生基本信息和学籍各种处理的结果表格文档形式 安全与保密要求:对该软件系统设置不同级别的访问权限,通过对不同权限的管理,实现对学生学籍的管理的安全性与保密方面的要求. (5)完成期限:2015年12月11日到 2016年1月10日

管理信息系统实验报告分析

实验报告 课程:管理信息系统 一、实验目的 验证有关概念和理论,加深对概念和知识的理解和认识;熟悉和掌握Visual Basic 6.0 软件的使用方法;初步具备信息管理知识和制作数据字典、系统数据流程图的能力。运用课程讲授的管理信息系统的系统分析方法、模块化系统设计方法以及系统的调试方法进行人事档案管理信息系统的分析、设计、开发、实现与调试。 二、实验方法 面向对象法 三、实验环境及开发工具 1.硬件环境 在最低配置的情况下,系统的性能往往不尽如人意,但现在的硬件性能已经相当的出色,而且价格便宜,因此通常给服务器的配置高性能的硬件。 处理器:Interl Pentium II 266 MX 或更高 内存:64M 硬盘空间:2 GB 显卡:SVGA 显示适配器 显示器:液晶17寸 2.软件环境 操作系统:Windows/98/ME/2000/XP或更高版本 数据库:Microsoft Access 2000 3.实验开发工具:Visual Bisic 6.0程序系统 四、实验内容

(一)、系统分析 1、系统数据流程图 2、数据字典 3、系统中所有实体(包括实体的属性)以及实体之间的联系类型分析 人员的个人资料经过专业的处理部门的处理形成个人档案。档案包括自然情况,工作情况,简历,政治情况等各方面信息,内容比较庞大复杂。将档案信息传送到人员信息库。同时还综合考虑档案管理工作的性质,总结归纳出所需实现

的功能。为人事档案进行服务,对人事的变动、人事资料、以及人事资料的查询,统计等功能。总体上说具有编辑,查询,用户管理,图表统计等功能。然后将最终结果提交到人力资源管理部门,由人力资源管理人员进行审查,以便于对职工的调配。 4、典型处理的表达 档案完整添加用户档案到档案库 个人信息成功添加到档案库 修改用户档案信息 失败退回用户档案 退回用户档案 (二)、系统设计 1、子系统划分(或功能划分或模块划分) 功能划分 1、用户管理 功能:设置使用人事管理系统的用户及其使用权限。整个人事管理系统由多个功能模块组成,不同的模块完成不同的功能,所以可以为不同的职工分配不同的功能,使其具有不同的权限,完成其权限所对应的功能,从而很好地管理好整个系统。 2、辅助表管理 功能:通过它的这个功能可以有效的对本单位人事部门的扩充进行及时的计算机管理。只要管理员进行简单的数据字段添加即可。辅助表管理功能是高级管理员及中级管理员拥有的权限,它的功能是对数据库进行新表的添加。 3、档案编辑 功能:档案编辑模块中有4个子模块。他们是档案卡片、个人简历、家庭成员、历史档案等功能。这些功能因管理员的权限不同所表示出的功能使用也不同,普通管理员没有数据修改及删除的权利。在这些功能里详细的记录了所有单位员工的资料。 4、档案查询 功能:对档案卡片的查询功能,在这里可以查到符合程序要求的任何信息。

会计信息系统实验报告

会计信息系统实验报告 Document number【AA80KGB-AA98YT-AAT8CB-2A6UT-A18GG】

实验报告课程名称会计信息系统 实验项目名称薪资管理子系统 班级与班级代码 实验室名称(或课室) 专业会计学 任课教师 学号: 姓名: 实验日期:20 年月 广东商学院教务处制 姓名实验报告成绩 评语: 指导教师(签名) 年月日 说明:指导教师评分后,实验报告交院(系)办公室保存。

会计信息系统实验报告 一、实验目的 通过用友ERP软件掌握如何正确建立账套,设置用户的权限以及账套数据的输入,系统地学习总账日常业务处理的主要内容和操作方法以及凭证的处理和记账方法。了解会计信息系统的总帐、固定资产管理、薪资管理、应收、应付款管理等五大系统,掌握系统初始化,账务及报表模块的主要功能和使用方法,熟悉系统的管理与维护,了解会计软件各个模块之间的关系。 本次实验报告是关于薪资管理子系统的,主要是系统学习薪资系统初始化、日常业务处理的主要内容和操作方法。掌握建立工资账套、建立工资类别、建立人员类别、设置工资项目和计算公式的方法,了解工资账套与企业账套的区别;掌握工资数据计算、个人所得税计算得方法;掌握工资分摊和生成转账凭证的方法。 二、实验原理 严格遵照会计准则,并根据会计信息系统实验教程,按照会计学原理中会计核算的步骤进行账务处理,按照会计监督的要求进行账务核对和监督;按照复式记账法,根据记账凭证登记账簿;按照资产=负债+所有者权益的会计恒等式进行凭证登记,账簿登记和对账工作。 三、实验设备 计算机系统、用友ERP软件 四、结果预测 个人所得税扣缴申报表、部门工资汇总表、工资发放条、工资项目分析表(财务部)、银行代发工资表、工资分摊转账凭证、应付福利费转账凭证 五、实验步骤 (一)建立工资套,并进行基本项目设置,其中包括人员信息、工资项目、银行名称、在岗人员工资套人员档案、在岗人员工资类别工资项目、“缺勤扣款”等计算公式; (二)修改个人所得税计提基数,录入及计算一月份的工资数据,得出个人所得税扣缴申报表; (三)分摊工资并生成转账凭证 (四)查看个人所得税扣缴申报表、部门工资汇总表、工资发放条、工资项目分析表(财务部)、银行代发工资表、工资分摊转账凭 证、应付福利费转账凭证

学生信息管理系统实验报告

(此文档为word格式,下载后您可任意编辑修改!) 面向对象程序设计大作业 ------学生信息管理系统 学院名称信息科学与工程学院 专业班级数学大类2011级2班 学生姓名魏仿 学号 指导教师孙红梅 1

完成时间: 2013 年 5 月 29 日

学生信息管理系统 1、编程目的 为方便学生信息的管理,特编写这个程序方便操作学生信息管理系统。实现对学生姓名、学号、性别、成绩等信息的管理,可以实现学生的增加、删、查等多种功能的操作。 2、系统简介 本系统实现学生信息的管理,以动态链表、结构体数据类型来实现数据的存储与加工,利用链表来实现学生信息的插入、删除、查找功能。 主要分7个模块: 模块一: 结构体的定义,定义struct student{};struct date{};结构体struct student{};数据成员包括:int studentId; char name[20]; char sex[5]; struct date birthday; int score; struct student *next; 其中 struct date birthday;又借用struct date{};结构体的成员:int year; int month; int day;以此来实现学生学号、姓名、性别、出生日期、成绩等信息的存储于处理。

模块二: ListCreate函数,函数类型为:struct student 形参:struct student *();主函数,测试数据,测试链表各节点(学生基本信息)的输出、插入、删除、查找功能。 3、编程思路 一:数据类型: 1.考虑到学生个人信息包含学号、姓名、性别、出生日期、成绩等信息。因此采用结构体类型,定义学生个人信息结构体,并定义学生学号、姓名、性别、出生日期、成绩等数据成员。 2.考虑到要实现多个学生个人信息的管理,可采用结构体数组与链表。但是由于要对多个学生信息进行信息的插入、删除、查找等操作。显然结构体数组很难实现以上操作,因此选用链表。 二:存储结构: 选用链表之后,考虑其存储结构,由于要实现信息的插入、删除、查找等功能,显然动态链表更适合。相应的以链式存储结构来存储数据。 三:功能的实现 学生信息的插入功能的实现:在动态链表中要实现节点数据的插入,只要灵活的改变头一个节点的next指针使它指向要插入节点的

管理信息系统实验报告

. 经济管理学院 《管理信息系统》实验报告 集发农业生态观光园景区管理系统设计

专业资料 . 课程实验报告基本内容一、系统概述

1、系统背景 集发农业生态观光园作为秦皇岛大型旅游景区,其旅游项目较为齐全,景区内存在餐饮,住宿,娱乐,观光,植物采摘,民俗展示,购物中心等众多旅游项目,但经过我们的网上调查,其还没有建立自己的官方网站系统。我们通过与景区负责人员的沟通,了解到该景区有意向开发自己的官方网站系统,并且对于网站系统内部的板块设计提出了一些特定需求。 2、功能需求 (1)用户注册登录功能 用户可以注册为网站会员。会员支持修改、完善会员基本资料,自助修改密码,查看、管理订单、在线支付订单,对网站进行留言评论、查看留言。 (2)会员管理 后台可以直接添加会员,记录会员注册时间、注册IP、登录次数、最后登录时间,会员详细资料应记录会员发布的信息、商品、购买过的商品、评论留专业资料 . 言及相关资料信息,支持按用户名搜索用户、按注册时间范围显示用户,支持删除、关闭用户。 (3)后台用户 添加后台管理员,支持自定义设置姓名、密码、所属级别、设置

开通或者关闭或者删除的权限。自定义设置用户组的详细权限分配。(4)更新景区、活动、票务信息 随时更新景区景点的介绍,包括文字和图片;自定义设置添加网站活动名称、时间,详情;更改门票、住宿、餐饮的价格及相关信息(5)网站留言 网站动态,实时显示最新留言,会员可以编辑,提交留言,管理员可以回复、删除留言。 (6)支付接口 系统内置网上支付系统:支付宝、网银,配置好账号相关信息即可使用支付接口,支付接口适用于本系统的购物支付。由于时间关系与技术问题,支付功能暂时没有实现,也是本次网站设计课程的不足之处。 3、人员分工 A:系统背景、人员分工、系统目标、子系统划分、业务流程分析、课 程实验报告的汇总与修改 B:系统可行性分析、系统必要性分析 C:输入设计、输出设计、信息系统流程图设计 D:数据库设计、功能结构图设计、数据流程分析 二、系统规划 1、系统目标

相关主题