資源簡(jiǎn)介
用高級(jí)語(yǔ)言編寫(xiě)和調(diào)試一個(gè)簡(jiǎn)單的文件系統(tǒng),模擬文件管理的工作過(guò)程。
代碼片段和文件信息
/*
title:?文件管理
Author:?王婷(20083560)
Date:?2010/11/01
*/
#include?
#include?
#include?
#include?
using?namespace?std;
typedef?struct?UNode
{?//?UFD結(jié)點(diǎn)
????char?FileName[12];?//?文件名
????char?ProCode[4];?//?保護(hù)碼
????int?length;?//?文件長(zhǎng)度
????int?Open_RW;?//?文件打開(kāi)關(guān)閉讀寫(xiě)指針
????struct?UNode?*next;?//?后向指針
????struct?UNode?*prior;?//?前向指針
}*?UFD;
typedef?struct?MNode
{?//?MDF結(jié)點(diǎn)
????char?UserName[12];?//?用戶(hù)名
????char?Password[12];?//?密碼
????struct?UNode?*FileMenu;?//?文件目錄指針
????struct?MNode?*next;?//?后向指針
}*?MDF;
MDF?H=(MDF)malloc(sizeof(MNode));?//?全局變量指向MDF頭結(jié)點(diǎn)(數(shù)據(jù)項(xiàng)為空)
MDF?CurrUser;?//?全局變量當(dāng)前操作用戶(hù)指針
//---------------------------函數(shù)聲明------------------------------
void?Welcome();?
void?InitSystem();?
UFD?InitUFD(MDF?p);?
void?DispMDF();?
void?DispMDF();?
void?DispUFD(MDF?L);
int?LoginCheck();?
void?Create();?
void?Delete();?
void?Open();???
void?Close();?
void?Read();??
void?Write();
void?Bye();?
//-----------------------------------------------------------------
void?InitSystem()?//?從文件將默認(rèn)MDF和UFD組織起來(lái)進(jìn)入內(nèi)存
{
????//“InitInfo.txt“?所有初始化信息都已寫(xiě)入該文件這里未使用文件流
????H->FileMenu=NULL;
????H->next=NULL;
????MDF?p=H;
????int?UserNum;?//?初始化時(shí)用戶(hù)個(gè)數(shù)和文件個(gè)數(shù)
????cout<<“系統(tǒng)初始化開(kāi)始請(qǐng)輸入用戶(hù)名個(gè)數(shù):?“;
????cin>>UserNum;
????for?(int?i=1;?i<=UserNum;?i++)
????{
????????p=p->next=(MDF)malloc(sizeof(MNode));
????????cout<<“\n請(qǐng)輸入第?“<????????cin>>p->UserName;
????????cin>>p->Password;?//?初始化MDF結(jié)點(diǎn)
????????p->FileMenu=InitUFD(p);
????????p->next=NULL;
????}
????cout<<“\n初始化完畢按任意鍵清屏并開(kāi)始文件管理!\n“;
????system(“pause“);
????char?c;
????cin.get(c);
????system(“cls“);
}
UFD?InitUFD(MDF?p)?//首次創(chuàng)建用戶(hù)的文件
{
????UFD?srL=(UFD)malloc(sizeof(UNode));?//?初始化當(dāng)前用戶(hù)的所有文件UFD
????L->next=NULL;
????r=L;
????int?FileNum;
????cout<<“請(qǐng)輸入用戶(hù)?“<UserName<<“?將要?jiǎng)?chuàng)建的文件個(gè)數(shù):?“;
????cin>>FileNum;
????cout<<“請(qǐng)輸入用戶(hù)?“<UserName<<“?的所有文件名保護(hù)碼和長(zhǎng)度:?“;
????for?(int?j=1;?j<=FileNum;?j++)
????{
????????s=(UFD)malloc(sizeof(UNode));
????????cin>>s->FileName;?//讀取文件名
????????cin>>s->ProCode;?//?讀取保護(hù)碼
????????cin>>s->length;?//文件長(zhǎng)度
????????s->Open_RW=0;
????????r->next=s;
????????s->prior=r;
????????r=s;
????}
????r->next=NULL;?//?UFD是雙向鏈表,便于刪除
????return?L->next;
}
void?DispMDF()?//?顯示用戶(hù)名列表
{
????cout<<“現(xiàn)有用戶(hù)名列表:?“;
????MDF?p=H->next;
????while?(p)
????{
????????cout<<“\t“<UserName;
????????p=p->next;
????}
????cout< }
void?DispUFD(MDF?L)?//?顯示UFD里的各個(gè)文件名
{
????cout< ????????<<“???“<UserName< ????????<<“---------\n“;
????UFD?p=L->FileMenu;
????if?(!p)
????{
????????cout<UserName<<“?用戶(hù)無(wú)文件現(xiàn)在創(chuàng)建文件嗎??(y/n)“;
????????char?c;?cin.get(c);?//?為無(wú)文件用戶(hù)第一次創(chuàng)建文件
????????if?(c==‘y‘)?L->FileMenu=InitUFD(L);
????????else?return;
????}
????while?(p)
????{
????????cout<<“???“<FileName< ????????p=p->next;
????}
????cout<<“---------\n“;
}
int?LoginCheck()?//?搜索用戶(hù)名是否存在
{
????char?UserName[12]PassWord[12];
????
評(píng)論
共有 條評(píng)論