用C语言一、文件管理系统 设计一个文件管理系统,包括: 对文件的创建,删除,修改,查看等操作 以及文件的复制,移动重命名 功能:实现后台登录,实现增删改查功能
时间: 2024-02-22 09:00:16 浏览: 17
好的,我可以为您提供一些用C语言实现文件管理系统的思路和代码示例。
首先,我们可以定义一个结构体来表示文件的属性:
```c
typedef struct {
char name[100]; // 文件名
char path[100]; // 文件路径
int size; // 文件大小
time_t create_time; // 创建时间
time_t modify_time; // 修改时间
} File;
```
然后,我们可以定义一个文件管理类 FileManager,实现文件的增删改查操作,以及复制、移动和重命名功能。具体代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
typedef struct {
char name[100]; // 文件名
char path[100]; // 文件路径
int size; // 文件大小
time_t create_time; // 创建时间
time_t modify_time; // 修改时间
} File;
typedef struct {
File* files[100]; // 最多管理100个文件
int count; // 当前管理的文件数
} FileManager;
// 添加文件
void addFile(FileManager* fm, File* file) {
fm->files[fm->count++] = file;
}
// 删除文件
void deleteFile(FileManager* fm, char* name) {
int i;
for (i = 0; i < fm->count; i++) {
if (strcmp(fm->files[i]->name, name) == 0) {
free(fm->files[i]);
fm->files[i] = NULL;
break;
}
}
if (i < fm->count - 1) {
memmove(fm->files + i, fm->files + i + 1, (fm->count - i - 1) * sizeof(File*));
}
fm->count--;
}
// 修改文件
void modifyFile(FileManager* fm, char* name, char* newname, char* newpath, int newsize) {
int i;
for (i = 0; i < fm->count; i++) {
if (strcmp(fm->files[i]->name, name) == 0) {
strcpy(fm->files[i]->name, newname);
strcpy(fm->files[i]->path, newpath);
fm->files[i]->size = newsize;
fm->files[i]->modify_time = time(NULL);
break;
}
}
}
// 查看文件
void viewFile(FileManager* fm, char* name) {
int i;
for (i = 0; i < fm->count; i++) {
if (strcmp(fm->files[i]->name, name) == 0) {
printf("文件名:%s\n", fm->files[i]->name);
printf("文件路径:%s\n", fm->files[i]->path);
printf("文件大小:%d\n", fm->files[i]->size);
printf("创建时间:%s", ctime(&fm->files[i]->create_time));
printf("修改时间:%s", ctime(&fm->files[i]->modify_time));
break;
}
}
}
// 复制文件
void copyFile(FileManager* fm, char* name, char* newname, char* newpath) {
int i;
for (i = 0; i < fm->count; i++) {
if (strcmp(fm->files[i]->name, name) == 0) {
File* newfile = malloc(sizeof(File));
strcpy(newfile->name, newname);
strcpy(newfile->path, newpath);
newfile->size = fm->files[i]->size;
newfile->create_time = time(NULL);
newfile->modify_time = time(NULL);
addFile(fm, newfile);
break;
}
}
}
// 移动文件
void moveFile(FileManager* fm, char* name, char* newpath) {
int i;
for (i = 0; i < fm->count; i++) {
if (strcmp(fm->files[i]->name, name) == 0) {
strcpy(fm->files[i]->path, newpath);
fm->files[i]->modify_time = time(NULL);
break;
}
}
}
// 重命名文件
void renameFile(FileManager* fm, char* name, char* newname) {
int i;
for (i = 0; i < fm->count; i++) {
if (strcmp(fm->files[i]->name, name) == 0) {
strcpy(fm->files[i]->name, newname);
fm->files[i]->modify_time = time(NULL);
break;
}
}
}
// 后台登录
int login() {
printf("请输入用户名和密码:\n");
char username[100];
char password[100];
scanf("%s %s", username, password);
if (strcmp(username, "admin") == 0 && strcmp(password, "123456") == 0) {
return 1;
} else {
return 0;
}
}
int main() {
FileManager fm = {.count = 0};
// 添加文件示例
File* file1 = malloc(sizeof(File));
strcpy(file1->name, "file1.txt");
strcpy(file1->path, "/home/user1");
file1->size = 1024;
file1->create_time = time(NULL);
file1->modify_time = time(NULL);
addFile(&fm, file1);
File* file2 = malloc(sizeof(File));
strcpy(file2->name, "file2.txt");
strcpy(file2->path, "/home/user2");
file2->size = 2048;
file2->create_time = time(NULL);
file2->modify_time = time(NULL);
addFile(&fm, file2);
// 后台登录示例
if (!login()) {
printf("用户名或密码错误,无法登录。\n");
return 0;
}
// 测试文件管理操作
viewFile(&fm, "file1.txt");
renameFile(&fm, "file1.txt", "newfile1.txt");
viewFile(&fm, "newfile1.txt");
moveFile(&fm, "newfile1.txt", "/home/user3");
viewFile(&fm, "newfile1.txt");
copyFile(&fm, "file2.txt", "file2_copy.txt", "/home/user4");
viewFile(&fm, "file2_copy.txt");
deleteFile(&fm, "file2_copy.txt");
return 0;
}
```
以上就是一个简单的C语言实现的文件管理系统示例。您可以根据实际需求进行适当的调整和扩展。