运行截图:

代码:

/*Header.h*/
#pragma once
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<direct.h>
#include<io.h>
#include<cstring>
#include<string>
#include<string.h>
#include<fstream>
#include <conio.h> //包含_getch()函数
#include <algorithm>//包含字符大小写转换函数transform()
#include<Windows.h>
#include<stdio.h>using namespace std;/************************************************
//系统中用到的一些全局变量
*************************************************/bool SystemOpen = false;//判断文件系统是否已经打开string UInfoPath = "C:FileSystemUInformation.txt";//记录用户信息的文件路径/*用户信息*/
struct User
{string Username="";string Password="";
};User user[8]; //创建八个用户对象/*临时使用的用户结构体*/
struct Temp
{char Username[20];char Password[20];
}TempUser;/*当前系统的信息*/
string Username = "";//记录当前用户名
string Uname="";//用于行首标记
string SPath="";//记录当前根目录的路径
string newpath = "";//用于记录运行时的新路径
int changepathnum = 0;//记录用户改变路径的次数,判断是否要加‘/’/*文件操作对象和变量*/
fstream finout;
const char* filepath;//记录文件路径
const char* openfilepath;//记录处于打开状态的文件的路径
string Ofilepath;
FILE *fp;
long totalfilebyte = 0;//下面的变量用于格式化系统或者删除目录树
string to_search = "C:/FileSystem";
string path = "C:/FileSystem";
int index = 0;//用于标记字符串
int FEindex;//记录开始循环时文件夹的个数
int LEindex;//记录循环结束时文件夹的个数
string record[100];//记录要删除的文件夹所在的路径/*枚举变量*/
enum EnumType{CH,CLOSE,CREAT,DELECT,DIR,FORMAT,HELP,LOGIN,LOGOUT,MKDIR,OPEN,QUIT,RD,READ,WRITE};/*用于和选择的操作进行对比*/
string operation[15] = { "CH","CLOSE","CREAT","DELETE","DIR","FORMAT",
"HELP","LOGIN","LOGOUT","MKDIR","OPEN","QUIT","RD","READ","WRITE" };/*实现系统功能函数用到的函数声明*/
int select(string selection);
string HidPwd(int i);
void mkdirs(string muldir);
void AddUInfo(string FilePath, User user);
void ReadUInfo(string FilePath, Temp tempuser);
void menu();
void DDRF();
void NewSystem();/*系统的功能函数*/
void ch1(string changepath);
void close1();
void creat1(string filename);
void del1(string filename);
void dir1();
int format1();
void help1();
void login1();
void logout1();
void mkdir1(string str);
void open1(string filename);
void quit1();
void rd1(string str);
void read1();
void write1();/*FileSystem.cpp*/
#include"Header.h"
using namespace std;EnumType choice;
string getstr;
string selection;
string str;
int choicenum;
int i = 0;void getoperation(string getstr);//该函数用于读取操作名称及参数int main()
{NewSystem();if (SystemOpen){menu();cout << SPath << "> ";cin.clear();cin.sync();getline(cin, getstr);getoperation(getstr);while (true){if (choicenum == 11){if (str != ""){cout << "无效输入!" << endl;cout << SPath << "> ";getline(cin, getstr);getoperation(getstr);}else{break;}}/*必须登录以后才能够执行的操作*/while (Uname==""&&str!="-help"&&str!="-HELP"&&choicenum != 5 && choicenum != 7&&choicenum!=-1){cout << "请先登录!" << endl;cout << SPath << "> ";getline(cin, getstr);getoperation(getstr);}/*根据输入选择操作*/switch (choicenum){case -1: {cout << "无效输入!" << endl; break; }case 0: {if (str == "-help" || str == "-HELP"){cout << "CH 改变文件目录" << endl;cout << "CH [foldername]/[foldername]/.../[foldername]" << endl;cout << "如果用户目录下有文件夹file1,file1内有文件夹file2" << endl;cout << "打开file2目录的语句必须为:CH file1/file2" << endl;cout << "CH root      (返回根目录)" << endl << endl;}else if(str!=""){ch1(str);}else{cout << "无效输入!" << endl;}break; }case 1: {if (str == "-help" || str == "-HELP"){cout << "CLOSE 关闭已打开的文件" << endl;cout << "CLOSE 无参数" << endl << endl;}else if(str==""){close1();}else{cout << "无效输入!" << endl;}break;}case 2: {if (str == "-help" || str == "-HELP"){cout << "CREAT 在当前目录下创建文件" << endl;cout << "CREAT filename" << endl << endl;}else if(str!=""){creat1(str);}else{cout << "无效输入!" << endl;}break;}case 3: {if (str == "-help" || str == "-HELP"){cout << "DELETE 指定路径下的文件" << endl;cout << "DELETE [foldername]/.../[foldername]/filename" << endl << endl;}else if(str!=""){del1(str);}else{cout << "无效输入!" << endl;}break;}case 4: {if (str == "-help" || str == "-HELP"){cout << "DIR 列出当前目录下的所有文件名" << endl;cout << "DIR 无参数" << endl << endl;}else if (str == ""){dir1();}else{cout << "无效输入!" << endl;}break;}case 5: {if (str == "-help" || str == "-HELP"){cout << "FORMAT 格式化文件系统,删除系统内的全部文件和用户信息" << endl;cout << "FORMAT 无参数" << endl << endl;}else if (str == ""){if (format1() == 1){}else{NewSystem();}}else{cout << "无效输入!" << endl;}break;}case 6: {if (str == "-help" || str == "-HELP"){cout << "HELP 显示系统中指令的信息" << endl;cout << "HELP 无参数" << endl << endl;}else if (str == ""){help1();}else{cout << "无效输入!" << endl;}break;}case 7:{if (str == "-help" || str == "-HELP"){cout << "LOGIN 用户登录" << endl;cout << "LOGIN 无参数" << endl << endl;}else if (str == ""){login1();}else{cout << "无效输入!" << endl;}break;}case 8:{if (str == "-help" || str == "-HELP"){cout << "LOGOUT 退出当前用户" << endl;cout << "LOGOUT 无参数" << endl << endl;}else if (str == ""){logout1();}else{cout << "无效输入!" << endl;}break;}case 9: {if (str == "-help" || str == "-HELP"){cout << "MKDIR 在当前目录下创建新的目录" << endl;cout << "MKDIR [foldername]/../[foldername]" << endl << endl;}else if (str != ""){mkdir1(str);}else{cout << "无效输入!" << endl;}break;}case 10: {if (str == "-help" || str == "-HELP"){cout << "OPEN 打开当前目录下的一个文件" << endl;cout << "OPEN filename" << endl << endl;}else if (str != ""){open1(str);}else{cout << "无效输入!" << endl;}break;}case 12: {if (str == "-help" || str == "-HELP"){cout << "RD 删除目录树" << endl;cout << "RD [foldername]/../[foldername]" << endl;cout << "如果用户目录下有文件夹file1,file1内有文件夹file2" << endl;cout << "删除file2目录树的语句必须为:RD file1/file2" << endl << endl;}else if (str != ""){rd1(str);}else{cout << "无效输入!" << endl;}break;}case 13: {if (str == "-help" || str == "-HELP"){cout << "READ 读取当前已打开的文件内容并显示" << endl;cout << "READ 无参数" << endl << endl;}else if (str == ""){read1();}else{cout << "无效输入!" << endl;}break;}case 14: {if (str == "-help" || str == "-HELP"){cout << "WRITE 向已打开的文件末尾写入新的内容" << endl;cout << "WRITE " << endl << endl;}else if (str == ""){write1();}else{cout << "无效输入!" << endl;}break;}}/*用户登录后的行首内容*/if (Uname != ""){cout << Uname<<"> ";}/*用户未登录时的行首内容*/else{cout << SPath << "> ";}cin.clear();cin.sync();getline(cin, getstr);getoperation(getstr);}quit1();}return 0;
}void getoperation(string getstr)
{int i=0;/*该循环用于判断是否有空格(即有无参数)*/for (i;; i++){if (getstr[i] == ' ' && (i + 1) != getstr.length()){break;}else if (getstr.length() == (i + 1)){break;}else continue;}/*如果没有空格,则整个getstr当作操作名称*/if (getstr.length() == (i + 1)){selection = getstr;str = "";choicenum = select(selection);}/*如果有空格,空格前面部分为操作名称,后面为参数*/else{selection = getstr.substr(0, i);str = getstr.substr(i + 1, getstr.length() - i);choicenum = select(selection);}
}/*****************************************
//实现系统功能函数用到的函数
*******************************************//*用于判断选择的操作*/
int select(string selection)
{int i;int choicenum;for (i = 0; i < 15; i++){transform(selection.begin(), selection.end(), selection.begin(), ::toupper);if (selection == operation[i]){choicenum = i;break;}}if (i == 15){choicenum = -1;}return choicenum;}/*用*号隐藏输入的密码*/
string HidPwd(int i)
{string pwd;char temp_pwd;if (i != 0){temp_pwd = _getch();}while (true){temp_pwd = _getch();if (temp_pwd == 13){break;}if (temp_pwd == 0){continue;}if (temp_pwd == 8){cout << "b" << " " << "b";pwd.pop_back();continue;}cout << '*';pwd.push_back(temp_pwd);}cout << endl;return pwd;
}/*新建文件夹*/
void mkdirs(string muldir)
{int i;int len;char str[512];strcpy_s(str, muldir.c_str());len = strlen(str);for (i = 0; i < len; i++){if (str[i] == '/'){str[i] = '0';if (_access(str, 0) != 0){_mkdir(str);}str[i] = '/';}}if (len > 0 && _access(str, 0) != 0){_mkdir(str);}}/*记录新的用户信息,保存到 UInformation.txt*/
void AddUInfo(string FilePath, User user)
{strcpy_s(TempUser.Username, user.Username.data());strcpy_s(TempUser.Password, user.Password.data());ofstream fout;fout.open(FilePath, ios_base::out | ios_base::app | ios_base::binary);if (fout.is_open()){fout.write((char*)&TempUser, sizeof TempUser);fout.close();}else{cout << "Failed to record user's information!";cin.get();}}/*打开系统时读取用户信息*/
void ReadUInfo(string FilePath, Temp tempuser)
{ifstream fin;int i = 0;fin.open(FilePath, ios_base::in | ios_base::binary);if (fin.is_open()){while (fin.read((char*)&tempuser, sizeof tempuser)){user[i].Username = tempuser.Username;user[i].Password = tempuser.Password;i++;}fin.close();}else{cout << "Failed to read users' information!";cin.get();}}/*指令帮助菜单*/
void menu()
{cout << "有关某个命令的详细信息,请键入 命令名 -HELP" << endl;cout << "CHt" << "改变文件目录" << endl;cout << "CLOSEt" << "关闭文件" << endl;cout << "CREATt" << "创建文件" << endl;cout << "DELETEt" << "删除文件" << endl;cout << "DIRt" << "列文件目录" << endl;cout << "FORMATt" << "格式化文件系统" << endl;cout << "HELPt" << "提供文件系统的帮助信息" << endl;cout << "LOGINt" << "用户登录" << endl;cout << "LOGOUTt" << "退出当前用户" << endl;cout << "MKDIRt" << "创建目录" << endl;cout << "OPENt" << "打开文件" << endl;cout << "QUITt" << "退出文件系统" << endl;cout << "RDt" << "删除目录树" << endl;cout << "READt" << "读文件" << endl;cout << "WRITEt" << "写文件" << endl;cout << endl;
}/*用于查找目录下的文件夹路径并保存到字符串数组中,和删除目录下的文件*/
void DDRF()
{long handle;//用于查找的句柄struct _finddata_t fileinfo;//文件信息的结构体path = path + "/*";handle = _findfirst(path.data(), &fileinfo);//第一次查找if (-1 == handle){return;}if (!_findnext(handle, &fileinfo))//除去父目录的影响{}while (!_findnext(handle, &fileinfo))//循环查找符合条件的文件{if (fileinfo.attrib&_A_SUBDIR)//文件夹{record[index] = to_search + "/" + fileinfo.name;index++;}else//文件{string newpath = to_search + "/" + fileinfo.name;remove(newpath.data());//删除文件}}_findclose(handle);//关闭句柄
}/*打开现有文件系统或者新建文件系统*/
void NewSystem()
{string choose;bool unfinish = true;//用于记录创建系统的操作是否完成if (SystemOpen)//用于格式化以后使用{ofstream fout;fout.open(UInfoPath.data(), ios_base::out);fout.close();}else{/*判断是否存在一个文件系统,若不存在则新建一个*/if (_access("C:/FileSystem", 0) != 0){cout << "是否新建一个文件系统?(Y/N):";getline(cin, choose);while (unfinish){/*新建一个文件系统*/if (choose == "Y" || choose == "y"){_mkdir("C:/FileSystem");SystemOpen = true;SPath = "C:/FileSystem";ofstream fout;fout.open(UInfoPath.data(), ios_base::out);fout.close();unfinish = !unfinish;}/*不新建文件系统*/else if (choose == "N" || choose == "n"){unfinish = !unfinish;}/*输入的选择有误*/else{cin.clear();cin.sync();cout << "输入有误,请重新输入:";getline(cin, choose);}}}/*已有文件系统,询问是否直接打开*/else{cout << "是否打开现有的文件系统?(Y/N):";getline(cin, choose);while (unfinish){/*打开现有的文件系统*/if (choose == "Y" || choose == "y"){SystemOpen = true;cout << "已打开现有的文件系统!" << endl << endl;SPath = "C:/FileSystem";ReadUInfo(UInfoPath, TempUser);unfinish = !unfinish;}/*不打开现有的文件系统*/else if (choose == "N" || choose == "n"){unfinish = !unfinish;}/*输入的选择有误*/else{cin.clear();cin.sync();cout << "输入有误,请重新输入:";getline(cin, choose);}}}cout << endl;}}/**************************************************
//系统的功能函数
**************************************************//*改变文件目录*/
void ch1(string changepath)
{if (changepath == "root" || changepath == "ROOT"){newpath = SPath;Uname = "[" + Username + "] ";changepathnum = 0;}else{path = SPath + "/" + changepath;struct stat s;if (stat(path.data(), &s) == 0)//判断路径是否存在{if (s.st_mode&S_IFDIR)//是文件夹{if (changepathnum == 0){Uname = Uname + changepath;changepathnum = 1;}else{Uname = "[" + Username + "] " + changepath;}newpath = path;}else//文件{cout << "请输入目录名!" << endl;}}else{cout << "路径错误!" << endl;}}
}/*关闭文件*/
void close1()
{if (finout.is_open()){openfilepath = "";Ofilepath = "";cout << "文件关闭成功!" << endl;}else{cout << "无打开的文件" << endl;}
}/*创建文件,先判断该文件是否存在,存在则询问是否覆盖,不存在则直接新建文件*/
void creat1(string filename)
{ofstream fout;string fpath = newpath + "/" + filename;/*文件已存在*/if (_access(fpath.data(), 0) == 0){cout << "文件已存在,是否要覆盖该文件?(Y/N):";char choose;bool unfinish = true;while (unfinish){cin >> choose;cin.get();/*覆盖文件*/if (choose == 'Y' || choose == 'y'){fout.open(fpath, ios_base::out);fout.close();unfinish = false;cout << "创建文件成功!" << endl;}/*放弃覆盖文件*/else if (choose == 'N' || choose == 'n'){unfinish = false;cout << "创建文件失败!" << endl;}/*输入有误,提示重新输入*/else{cout << "文件已存在,是否要覆盖该文件?(Y/N):";}}}/*文件不存在,则创建新文件*/else{fout.open(fpath, ios_base::out);fout.close();cout << "创建文件成功!" << endl;}
}/*删除文件*/
void del1(string filename)
{string fpath;fpath = newpath + "/" + filename;/*查看文件是否在当前目录下*/if (_access(fpath.data(), 0) == 0){if (remove(fpath.data()) == 0){cout << "删除文件成功!" << endl;}else{cout << "删除文件失败!" << endl;}}else{cout << "该文件不在当前目录下!" << endl;}
}/*列文件目录*/
void dir1()
{int filenum = 0;int foldernum = 0;string path = newpath + "/*";long handle;//用于查找的句柄struct _finddata_t fileinfo;//文件信息的结构体handle = _findfirst(path.data(), &fileinfo);//第一次查找if (handle == -1){cout << "路径有误!" << endl;}if (!_findnext(handle, &fileinfo))//除去父目录的影响{}while (!_findnext(handle, &fileinfo))//循环查找符合条件的文件{if (fileinfo.attrib&_A_SUBDIR)//文件夹{cout << "<DIR>" << 't' << 't' << fileinfo.name << endl;foldernum++;}else//文件{totalfilebyte = totalfilebyte + fileinfo.size;cout << "<FILE>" << 't' << 't' << fileinfo.name<< 't' << 't' << fileinfo.size << endl;filenum++;}}cout << 't' << filenum << " 个文件" << 't' << 't' << totalfilebyte / 8 << "字节" << endl;cout << 't' << foldernum << " 个目录" << 't' << 't' << endl;cout << endl;
}/*格式化文件系统,调用DDRF删除目录下的所有文件,并删除字符串数组中记录的文件夹。*/
/*用户无调用该函数的权力*/
int format1()
{bool unfinish = true;if (Uname != ""){cout << "用户无权利格式化系统!" << endl;return 1;}cout << "格式化系统将删除系统内所有的文件以及用户信息,确定格式化?(Y/N):";char choose;cin >> choose;cin.get();while (unfinish){if (choose == 'y' || choose == 'Y'){DDRF();LEindex = index;FEindex = LEindex;if (LEindex == 0)//没有文件夹{}else//存在文件夹{for (int j = 0; j < FEindex; j++)//第二次查文件夹并记录新的文件夹和删除文件{to_search = record[j];path = record[j];DDRF();}LEindex = index;while (LEindex > FEindex)//有新增文件夹路径,则继续往下记录新的文件夹和删除文件{for (int j = FEindex; j < LEindex; j++){to_search = record[j];path = record[j];DDRF();}FEindex = LEindex;LEindex = index;}for (int j = FEindex; j >= 0; j--)//从最新记录的文件夹开始删除,并置相应字符串为空{RemoveDirectory(record[j].data());record[j] = "";}}cout << "格式化系统成功!" << endl << endl;/*重置记录数为0,以供下一次使用*/index = 0;FEindex = 0;LEindex = 0;string to_search = "C:/FileSystem";string path = "C:/FileSystem";for (int i = 0; i < 8; i++){user[i].Username = "";user[i].Password = "";}unfinish = !unfinish;}else if (choose == 'n' || choose == 'N'){cout << "取消格式化系统!" << endl << endl;unfinish = !unfinish;}else{cout << "输入错误,请重新输入:";cin >> choose;cin.get();}return 0;}
}/*显示指令信息*/
void help1()
{menu();
}/*用户登录:用户名存在,输入密码登录;用户名不存在,提示是否要创建新用户;用户数目已满,再有新的用户名称出现,则直接提示该用户不存在 */
void login1()
{if (Uname != "")//判断是否已有用户登录{cout << "请先退出当前用户再进行登录操作!" << endl;}else{string username;string password;cout << "Username:";getline(cin, username);int i = 0;for (i; i < 8; i++){/*如果输入的用户名不存在,且还有空用户,则询问是否要创建新用户*/if (user[i].Username.empty() && user[i].Username.compare(username) != 0){char choose;cout << "Passwords:";cin.clear();cin.sync();password = HidPwd(0);cout << "是否创建新用户?(Y/N):";cin >> choose;bool unfinish = true;while (unfinish){/*创建新用户*/if ((choose == 'Y' || choose == 'y') && cin.get() == 'n'){user[i].Username = username;user[i].Password = password;AddUInfo(UInfoPath, user[i]);Username = user[i].Username;Uname = "[" + user[i].Username + "] ";SPath = SPath + "/" + "Users/" + user[i].Username;newpath = SPath;mkdirs(SPath);unfinish = !unfinish;cout << "创建新用户成功!" << endl;}/*不创建新用户*/else if ((choose == 'N' || choose == 'n') && cin.get() == 'n'){cout << "创建新用户失败!" << endl;unfinish = !unfinish;}/*输入错误*/else{cout << "输入有误,请重新输入:";while (cin.get() != 'n')continue;cin >> choose;}}break;}/*如果输入的用户名存在,则请用户输入密码进行登录*/else if (user[i].Username.compare(username) == 0){int j = 0;//用于函数HidPwd()cout << "Passwords:";cin.clear();cin.sync();password = HidPwd(j);j++;/*3次密码错误,则提示登录失败!*/for (j; j < 4; j++){if (user[i].Password.compare(password) == 0){Username = user[i].Username;Uname = "[" + user[i].Username + "] ";SPath = SPath + "/" + "Users/" + user[i].Username;newpath = SPath;cout << "登录成功" << endl;break;}else{cout << "密码错误,请重新输入!" << endl;cout << "Passwords:";password = HidPwd(j);}}if (j == 4){cout << "登录失败!" << endl;}break;}else{}}/*如果空用户数为0,则无法创建新用户,直接提示用户不存在*/if (i == 8){cout << "该用户不存在,且无法新建用户!" << endl;}}
}/*无用户处于登录状态,返回警告提示;否则,退出当前用户*/
void logout1()
{if (Uname == ""){cout << "无效操作!" << endl;}else{Username = "";Uname = "";newpath = "";changepathnum = 0;if (finout.is_open()){finout.close();}SPath = "C:/FileSystem";cout << endl;}
}/*创建目录*/               //改好了
void mkdir1(string str)
{string path = newpath + "/" + str;if (_access(path.data(), 0) == 0)//目录已存在{cout << "目录已存在!" << endl;}else{mkdirs(path);if (_access(path.data(), 0) == 0){cout << "创建目录成功!" << endl;}else{cout << "创建目录失败!" << endl;}}
}/*打开文件,先判断文件是否存在,再打开文件*/
void open1(string filename)
{if (finout.is_open()){cout << "请先关闭当前文件!" << endl;}else{string fpath = newpath + "/" + filename;Ofilepath = fpath;if (_access(fpath.data(), 0) != 0){cout << "找不到文件!" << endl;}else{finout.open(fpath, ios_base::in | ios_base::out);if (!finout.is_open()){cout << "文件打开失败!" << endl;}else{openfilepath = filepath;cout << "文件打开成功!" << endl;}}}}/*退出文件系统*/
void quit1()
{if (finout.is_open()){finout.close();}else{}
}/*删除目录树*/
void rd1(string str)
{to_search = SPath + "/" + str;path = to_search;bool ifdo = true;if (strcmp(path.data(), newpath.data()) < 0){if (strcmp(newpath.data(), path.data()) != 0){cout << "该目录正在使用,无法删除!" << endl;ifdo = !ifdo;}else{}}else if (strcmp(newpath.data(), path.data()) == 0){cout << "该目录正在使用,无法删除!" << endl;ifdo = !ifdo;}if(ifdo){struct stat s;if (stat(path.data(), &s) == 0)//判断路径是否存在{if (s.st_mode&S_IFDIR)//路径是目录时{record[index] = to_search;//记录当前文件目录index++;DDRF();//第一次查找子文件LEindex = index;FEindex = 1;if (LEindex == 1)//没有子文件夹{RemoveDirectory(record[0].data());}else{while (LEindex > FEindex)//有新增文件夹路径,则继续往下记录新的文件夹和删除文件{for (int j = FEindex; j < LEindex; j++){to_search = record[j];path = record[j];DDRF();}FEindex = LEindex;LEindex = index;}for (int j = LEindex - 1; j >= 0; j--)//从最新记录的文件夹开始删除,并置相应字符串为空{RemoveDirectory(record[j].data());record[j] = "";}}cout << "删除目录树成功!" << endl;}else//路径是文件时{cout << "请输入一个目录名!" << endl;}}else//路径不存在{cout << "目录不存在!" << endl;}/*重置记录数为0,以供下一次使用*/index = 0;FEindex = 0;LEindex = 0;}to_search = "C:/FileSystem";path = "C:/FileSystem";
}/*读文件*/
void read1()
{char ch;if (finout.is_open()){ifstream fin;fin.open(Ofilepath.data(), ios::in);cout << "/" << endl<< "文件内容:" << endl;while (fin.get(ch)) cout << ch;cout << endl << "/" << endl;fin.close();}else{cout << "请先打开文件!" << endl;}
}/*写文件*/
void write1()
{if (finout.is_open()){ofstream fout;fout.open(Ofilepath.data(), ios::out | ios::app);if (fout.is_open()){string write;cout << "以两行空行作为输入结束标志!" << endl;while (true){getline(cin, write);if (write != ""){fout << write << endl;}else{getline(cin, write);if (write == "")break;else continue;}}cout << "文件写入结束!" << endl;fout.close();}else{cout << "错误!" << endl;}}else{cout << "请先打开文件!" << endl;}
}

文件管理系统_文件管理系统相关推荐

  1. C#.Net工作笔记012---c# 文件操作_文件路径操作_随时更新

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 路径操作: class Program     {         static void Mai ...

  2. java 家谱管理系统_家谱管理系统

    [实例简介] 用JAVA写了一个简易的家谱管理系统,里面有所有的实现代码与过程 [实例截图] [核心代码] 家谱管理系统 ├── JM │   └── MyJob │   ├── Bookface.j ...

  3. java 设备管理系统_设备管理系统

    压缩包 : b679ef31dc714eb51f600211e9.rar 列表 设备管理系统/EquipmentManage/.classpath 设备管理系统/EquipmentManage/.pr ...

  4. c语言通讯录管理系统_通讯录管理系统(C语言)

    #include<stdio.h> #include<stdlib.h> //动态内存分配malloc的头文件 #include<conio.h> #include ...

  5. dbms数据库管理系统_数据库管理系统dbms

    dbms数据库管理系统 A database is an organized collection of data, generally stored and accessed electronica ...

  6. java 保险管理系统_保险管理系统

    [实例简介] 该系统是保险保单管理系统,利用的技术是jsp+servlet+sql server 2005技术.该项目由MyEclipse环境下实现的.服务器是用tomcat.里面有完整的毕业设计项目 ...

  7. python课程设计汽车销售管理系统_汽车销售管理系统课程设计.doc

    课程设计报告 一. 需求分析 描述问题,简述题目要解决的问题是什么?规定软件做什么. 编写一个简单的4S店汽车销售管理程序,帮助管理汽车销售信息.要求具有汽车销售信息管理的功能.汽车销售信息管理包括汽 ...

  8. java web 图书管理系统_图书管理系统,源代码 Java初级小项目

    今天再给大家分享一个小项目:MiNi图书管理系统.用的是Java语言开发的,代码不多,大概260行左右吧,系统是实现图书的新增图书.删除图书.借阅图书.归还图书.查看图书等简单的功能(后附源代码)! ...

  9. 网络资产管理系统_固定资产管理系统的三种网络架构方式

    随着互联网技术的发展和信息技术的广泛使用,固定资产管理系统在各行业的应用越来越普及,固定资产管理系统作为当今主流的企业固定资产信息化管理模式,能够对企业固定资产进行有效管理并提升企业的管理水平.对于固 ...

最新文章

  1. cdrx4自动排版步骤_现在的大学生,都不会论文排版了
  2. 好语言,就该善用它——《C++语言的设计与演化》读书笔记
  3. 商业智能SAAS走向中小企业
  4. matlab2c使用c++实现matlab函数系列教程- polyint函数
  5. 以太坊 solidity return 返回值写法 3种格式
  6. -个很个性的二本人计时
  7. 2019年全国各类型POI数据
  8. 金融时间序列及Matlab实现
  9. 使用adb安装apk报错:INSTALL_FAILED_INVALID_URI
  10. 晶振匹配电容容值计算总结
  11. 移动通信技术的发展历程初
  12. 傅里叶变换,其物理意义是什么?(转)
  13. nginx笔记1:nginx指令与上下文
  14. c语言单链表的按序号查找,以下为单链表按序号查找的运算,分析算法,请在______处填上正确的语句。 pointer find_lklist(1kl...
  15. 京东方27寸液晶屏MV270FHM-N20参考参数
  16. DRM应用程序进阶 (atomic-crtc)
  17. 如何快速的熟悉对接新项目,并快速融入开发
  18. Arab Security Cyber Wargames 2022 Qualifications corCTF 部分题解
  19. Idea启动jar包冲突 解决
  20. 烦人的后台首页index.jsp弄好了

热门文章

  1. PHP经典文:服务容器
  2. MySQL的distinct:去重
  3. PHP的namespace与use
  4. c 窗体程序 mysql_C\C++开发MySQL程序简介(下)
  5. python面试应急5分钟_Python面试必须要看的15个问题
  6. 让div margin属性消失_为什么div里面打一个字之后就会有高度了呢?
  7. python图片比对、自动化测试,腾讯优图及知脸(ZKface)人脸比对接口测试(python)
  8. tp的echo输出字符串后换行
  9. 推荐一个优化分页查询的办法(分页数很大的情况)
  10. Linux基础知识(2)