《操作系統(tǒng)課程設(shè)計(jì)說明書》參考樣版_第1頁(yè)
《操作系統(tǒng)課程設(shè)計(jì)說明書》參考樣版_第2頁(yè)
《操作系統(tǒng)課程設(shè)計(jì)說明書》參考樣版_第3頁(yè)
《操作系統(tǒng)課程設(shè)計(jì)說明書》參考樣版_第4頁(yè)
《操作系統(tǒng)課程設(shè)計(jì)說明書》參考樣版_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙PAGE課程設(shè)計(jì)說明書設(shè)計(jì)名稱:操作系統(tǒng)課程設(shè)計(jì)題目:操作系統(tǒng)命令接口設(shè)計(jì) 學(xué)生姓名:老志翔專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)班級(jí):05級(jí)學(xué)號(hào):305104534044指導(dǎo)教師:任朝暉日期:2010年9月16日

課程設(shè)計(jì)任務(wù)書計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)05年級(jí)班老志翔設(shè)計(jì)題目操作系統(tǒng)命令接口設(shè)計(jì)主要內(nèi)容利用C語言、DOS中斷中21H與屏幕顯示相關(guān)的中斷調(diào)用完成設(shè)計(jì),具體包括:命令解釋器列目錄命令顯示時(shí)間命令顯示日期命令回顯字符串命令創(chuàng)建目錄命令刪除目錄命令更改路徑命令顯示當(dāng)前工作目錄命令刪除文件命令打印文本命令文件重新命名顯示文本命令顯示版本命令顯示目錄結(jié)構(gòu)命令清除當(dāng)前顯示內(nèi)容命令上述內(nèi)容中,所有命令通過命令解釋器能夠執(zhí)行,即啟動(dòng)命令解釋器以后,輸入相應(yīng)命令,按照輸入指令執(zhí)行相應(yīng)功能,并在屏幕上顯示相應(yīng)結(jié)果。具體要求本設(shè)計(jì)的目的是通過設(shè)計(jì)一些簡(jiǎn)單的操作系統(tǒng)的命令接口,使學(xué)生掌握操作系統(tǒng)接口的設(shè)計(jì)方法。要求學(xué)生在熟悉操作系統(tǒng)的命令接口及程序接口的基礎(chǔ)上,利用C語言設(shè)計(jì)簡(jiǎn)單的命令接口。命令接口基于DOS的命令行接口。

進(jìn)度安排依照教學(xué)計(jì)劃,課程設(shè)計(jì)時(shí)間為:2周。要求講解、資料查找、系統(tǒng)分析,概要設(shè)計(jì)(2天)系統(tǒng)詳細(xì)設(shè)計(jì)、功能設(shè)計(jì)(2天)算法實(shí)現(xiàn)、編程調(diào)試(5天)功能演示、資料整理、課程設(shè)計(jì)說明書編寫。(1天)完成后應(yīng)上交的材料課程設(shè)計(jì)說明書紙質(zhì)文檔總評(píng)成績(jī)指導(dǎo)教師簽名日期年月日系主任審核日期年月日佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙PAGE15佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙目錄TOC\o"1-3"\h\z一、程序概述 11.1完成的任務(wù) 11.2解決的問題 1二、概念原理 12.1基本概念 12.2基本原理 2三、總體設(shè)計(jì) 23.1實(shí)現(xiàn)方法 23.2技術(shù)路線 2四、詳細(xì)設(shè)計(jì) 24.1主要函數(shù) 24.2引用函數(shù) 3五、完成情況 3六、使用說明 3七、設(shè)計(jì)總結(jié) 47.1系統(tǒng)特色 47.2經(jīng)驗(yàn)教訓(xùn) 57.3實(shí)踐感受 5參考資料 6附錄 7PAGE1一、程序概述1.1完成的任務(wù)本設(shè)計(jì)是要求編寫一個(gè)簡(jiǎn)單的命令解釋器,利用C語言、DOS中斷中21H與屏幕顯示相關(guān)的中斷調(diào)用進(jìn)行設(shè)計(jì)的,主要完成要求中所提到的功能如:可打開提示符,并獲取用戶輸入的指令、可解析指令、可尋找命令文件、可執(zhí)行基本的命令。在本設(shè)計(jì)中,設(shè)計(jì)了一個(gè)dos命令提示行,初步實(shí)現(xiàn)了系統(tǒng)登陸、用戶帳戶管理、命令解析、基本命令的實(shí)現(xiàn)。1.2解決的問題在設(shè)計(jì)過程中主要遇到了兩個(gè)難題,一個(gè)是有關(guān)文件的操作,另一個(gè)是有關(guān)系統(tǒng)調(diào)用問題。由于課題是要模擬命令處理器功能,命令處理器命令中有大部分是文件的操作,有關(guān)文件夾的創(chuàng)建與刪除,文件的操作,當(dāng)前目錄等一系列問題都是有待解決的;并且由于本身做的就是一個(gè)命令處理器那么就不能再使用系統(tǒng)中原有的命令處理器命令,通過與老師討論,可以使用系統(tǒng)調(diào)用解決這一問題。在查閱了庫(kù)函數(shù)后基本確定了,可以使用包含在“doc.h”和“dir.h”中的findfirst()、findnext()、dir()、dir()完成以上功能,并且它們會(huì)將文件信息保存在一個(gè)Structffolk結(jié)構(gòu)體中,定義如下:structffblk{charff_reserved[21];/*DOS保留字*/charff_attrib;/*文件屬性*/intff_ftime;/*文件時(shí)間*/intff_fdate;/*文件日期*/longff_fsize;/*文件長(zhǎng)度*/charff_name[13];/*文件名*/}二、概念原理2.1基本概念命令接口處理器命令處理器是一個(gè)讀入并解釋你輸入的命令的程序,它是介于使用者和操作系統(tǒng)之核心程序(kernel)間的一個(gè)接口。它是一個(gè)交互性命令解釋器。命令處理器獨(dú)立于操作系統(tǒng),這種設(shè)計(jì)讓用戶可以靈活選擇適合自己的命令處理器。命令處理器讓你在命令行鍵入命令,經(jīng)過命令處理器解釋后傳送給操作系統(tǒng)(內(nèi)核)執(zhí)行。命令提示符“命令提示符”也就是Windows95/98下的“MS-DOS方式”,雖然隨著計(jì)算機(jī)產(chǎn)業(yè)的發(fā)展,Windows操作系統(tǒng)的應(yīng)用越來越廣泛,DOS面臨著被淘汰的命運(yùn),但是因?yàn)樗\(yùn)行安全、穩(wěn)定,有的用戶還在使用,所以一般Windows的各種版本都與其兼容,用戶可以在Windows系統(tǒng)下運(yùn)行DOS,中文版WindowsXP中的命令提示符進(jìn)一步提高了與DOS下操作命令的兼容性,用戶可以在命令提示符直接輸入中文調(diào)用文件。消息循環(huán)通過這個(gè)循環(huán)機(jī)制應(yīng)用程序從消息隊(duì)列中檢索消息,再把它分派給適當(dāng)?shù)拇翱冢缓罄^續(xù)從消息隊(duì)列中檢索下一條消息,再分派給適當(dāng)?shù)拇翱?,依次進(jìn)行。系統(tǒng)調(diào)用系統(tǒng)調(diào)用,顧名思義,說的是操作系統(tǒng)提供給用戶程序調(diào)用的一組“特殊”接口。用戶程序可以通過這組“特殊”接口來獲得操作系統(tǒng)內(nèi)核提供的服務(wù),比如用戶可以通過文件系統(tǒng)相關(guān)的調(diào)用請(qǐng)求系統(tǒng)打開文件、關(guān)閉文件或讀寫文件,可以通過時(shí)鐘相關(guān)的系統(tǒng)調(diào)用獲得系統(tǒng)時(shí)間或設(shè)置定時(shí)器等。從邏輯上來說,系統(tǒng)調(diào)用可被看成是一個(gè)內(nèi)核與用戶空間程序交互的接口,它好比一個(gè)中間人,把用戶進(jìn)程的請(qǐng)求傳達(dá)給內(nèi)核,待內(nèi)核把請(qǐng)求處理完畢后再將處理結(jié)果送回給用戶空間。2.2基本原理首先系統(tǒng)登陸,在這一塊采用文件的形式保存用戶信息。登陸通過后進(jìn)入提示符界面,同時(shí),此時(shí)已進(jìn)入一個(gè)消息循環(huán),不斷地接收消息,根據(jù)輸入的命令進(jìn)行解析,然后執(zhí)行命令,遇exit命令退出?;玖鞒虉D:開始開始系統(tǒng)登陸合法?獲取命令解析命令處理命令結(jié)束三次?三、總體設(shè)計(jì)3.1實(shí)現(xiàn)方法程序主要通過文件來存儲(chǔ)帳戶信息。登陸時(shí),根據(jù)用戶名查找?guī)ぬ?hào)名,核對(duì)密碼。進(jìn)入提示符后,首先初始化。在消息循環(huán)中運(yùn)用了一個(gè)while(1)循環(huán),連續(xù)的獲取用戶輸入,直到用戶輸入exit退出循環(huán),結(jié)束程序。在處理文件或文件夾過程中,沒有使用系統(tǒng)當(dāng)前文件夾變量,只是在程序中單獨(dú)設(shè)定了一個(gè)變量作為系統(tǒng)當(dāng)前目錄,每次獲得的目錄路徑,如果是相對(duì)路徑,則自動(dòng)在前面加上當(dāng)前目錄路徑。3.2技術(shù)路線整個(gè)程序的設(shè)計(jì)流程,圍繞著消息循環(huán)這一主線,根據(jù)消息判斷調(diào)用不同的功能函數(shù)來完成相應(yīng)的功能,主要使用了一些文件操作的函數(shù)。四、詳細(xì)設(shè)計(jì)4.1主要函數(shù)voidinit()顯示系統(tǒng)信息,版權(quán)信息等,初始化當(dāng)前目錄等信息。intlogin()顯示登陸界面,以及登陸成功與否的判斷與結(jié)果。正常登陸返回1。intgetcmd()命令獲取函數(shù),在消息循環(huán)中獲取用戶輸入的命令,并將命令通過空格分隔開,分別存放在一個(gè)命令數(shù)組中。voiddir() 列出目錄及文件voidcd() 改變當(dāng)前文件夾voidclear() 清屏voidnewdir() 新建目錄voiddeldir() 刪除目錄voiddel() 刪除文件voidcopy() 復(fù)制文件voidcut() 剪切文件voidaccount() 更改用戶信息以上均為一般的實(shí)現(xiàn)命令處理器功能的命令函數(shù),可以通過相應(yīng)的調(diào)用來實(shí)現(xiàn)一般的功能,也可以在其后面加入“/?”來獲得幫助。voidhelp()幫助信息,當(dāng)用戶在提示符下直接輸入“/?”或在一個(gè)命令處理器命令后輸入“/?”轉(zhuǎn)至此函數(shù)處,顯示相關(guān)命令的幫助信息。4.2引用函數(shù)intchdir(char*path)使指定的目錄path(如:“C:\\WPS”)變成當(dāng)前的工作目錄,成功返回Ointfindfirst(char*pathname,structffolk*ffolk,intattrib)查找指定的文件,成功返回0intfindnext(structffolk*ffolk)取匹配finddirst的文件,成功返回0intmkdir(char*pathname)建立一個(gè)新的目錄pathname,成功返回Ointrmdir(char*pathname)刪除一個(gè)目錄pathname,成功返回0五、完成情況在用戶登陸方面,完成了簡(jiǎn)單的,用戶名和用戶密碼的保存更改,核對(duì)等操作,對(duì)密碼文件采用的是記錄式的讀寫。但是,本程序中并未實(shí)現(xiàn)記錄的刪除以及用戶信息的加密。在命令處理機(jī)命令方面,基本實(shí)現(xiàn)了幾個(gè)比較常用的命令,但參數(shù)還不夠非富,并且對(duì)參數(shù)的輸入,以及路徑等的解析還不夠智能化,輸入命令時(shí)必輸按固定的格式。在當(dāng)前目錄方面,沒有使用系統(tǒng)調(diào)用中的設(shè)置當(dāng)前目錄的函數(shù),而是自己定義了一個(gè)變量用于存入當(dāng)前目錄,每次操作文件或文件夾時(shí),都要將相對(duì)目錄轉(zhuǎn)化為絕對(duì)目錄才能進(jìn)行操作。另外還有一個(gè)問題,就是命令對(duì)大小寫敏感,這對(duì)于基于“Windows”平臺(tái)的命令處理機(jī)是一大缺點(diǎn)。因?yàn)樵诿罱馕鲋杏昧撕?jiǎn)單的字符串比較,所以對(duì)大小寫敏感。六、使用說明啟動(dòng)程序,首先會(huì)出現(xiàn)下圖所示的登陸界面,在Login后面輸入用戶名,在Password后面輸入密碼,如果用戶名密碼正確,那么進(jìn)入系統(tǒng),否則返回到登陸界面,如果連續(xù)輸錯(cuò)三次,那么程序自動(dòng)退出。進(jìn)入系統(tǒng)后,首先出現(xiàn)版權(quán)信息等,然后就是出現(xiàn)提示符了如下圖,用戶可以輸入“/?”查看當(dāng)前系統(tǒng)支持的命令及作用等信息。如果想使用某個(gè)命令,那么可以先查看使用幫助,方法為:先在提示符后輸入命令名,加空格后輸入“/?”就會(huì)出現(xiàn)如下圖所示的命令幫助提示,它會(huì)告訴用戶可以使用哪些參數(shù),各參數(shù)的作用等信息。在命令提示符下輸入exit可以退出系統(tǒng)。七、設(shè)計(jì)總結(jié)7.1系統(tǒng)特色在本系統(tǒng)中已初步實(shí)現(xiàn)一個(gè)完整命令處理器的功能,能夠正常的解析命令并執(zhí)行,在解析命令方面,采用指針加數(shù)組的形式,既可以節(jié)約內(nèi)存資源,又可以自動(dòng)擴(kuò)充命令參數(shù)。7.2經(jīng)驗(yàn)教訓(xùn)在編程過程中要多使用庫(kù)函數(shù)中自帶的內(nèi)容,不必另外再去編寫已有的功能,這樣不僅能節(jié)省時(shí)間,也能提高程序的可靠性。要多了解庫(kù)函數(shù),可以閱讀相應(yīng)的幫助文件來獲得有用的信息。遇到問題多與老師同學(xué)討論,可以幫助自己跳出思維定勢(shì)。7.3實(shí)踐感受每次的課程設(shè)計(jì)都是對(duì)我們所學(xué)知識(shí)的一個(gè)深化,在實(shí)踐過程中能遇到許多的問題,遇到問題分析問題解決問題,這樣對(duì)知識(shí)的理解得到一個(gè)升華。實(shí)踐過程中學(xué)到的都是印象非常深刻的,所以以后要多參加這樣的實(shí)踐,認(rèn)真對(duì)待每一次機(jī)會(huì)。

參考資料1、《計(jì)算機(jī)操作系統(tǒng)教程》(第2版)張堯?qū)W史美林編著清華大學(xué)出版社2、《操作系統(tǒng)實(shí)驗(yàn)指導(dǎo)》任愛華李鵬劉方毅清華大學(xué)出版社3、《操作系統(tǒng)實(shí)驗(yàn)教程——核心技術(shù)與編程實(shí)例》顧寶根王立松顧喜梅科學(xué)出版社4、《C++編程思想》 Bruck著侯捷譯機(jī)械工業(yè)出版社5、《C語言程序中清除鍵盤緩沖區(qū)的方法》楊長(zhǎng)虹益陽(yáng)職業(yè)技術(shù)學(xué)院學(xué)報(bào)

附錄#include<string.h>#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<dir.h>#include<dos.h>#include<time.h>/*定義全局變量*/charroot_dir[3];charpre_dir[255];char*cmd_line[255];charcuruser[10];structuserinf{charusername[10];charuserpass[10];};/*函數(shù)申明*/voidinit();intlogin();intgetcmd();voiddir();voidcd();voidclear();voidnewdir();voiddeldir();voiddel();voidcopy();voidcut();voidaccount();voidhelp();main(){init();while(1)/*消息循環(huán)*/{switch(getcmd()){case0:help();break;case1:dir();break;case2:cd();break;case3:newdir();break;case4:deldir();break;case5:del();break;case6:copy();break;case7:cut();break;case8:account();break;}}}voidinit()/*程序初始化*/{if(login()==0){exit(0);}strcpy(pre_dir,"C:\\");/*設(shè)定當(dāng)前目錄*/clear();/*清屏*/printf("SShell-AboveWindowsXP[Ver1.0]\n");printf("(C)Copyright2007stars_625.\n\n");getchar();/*清空緩沖區(qū)*/}intlogin()/*程序登陸*/{charname[10];charpass[10];intlogintime=3;FILE*fp;structuserinfinf;while(logintime>0)/*登陸錯(cuò)誤超過三次自動(dòng)退出*/{printf("Login:");scanf("%s",name);printf("Password:");scanf("%s",pass);if((fp=fopen("inf.dll","r"))==NULL){printf("Can'topeninf.dllfile!\n");printf("Pressanykeytoexit...");getch();exit(0);}while(fread(&inf,sizeof(inf),1,fp)==1&&strcmp(inf.username,name)!=0){}fclose(fp);if(strcmp(inf.username,name)==0){if(strcmp(inf.userpass,pass)==0){strcpy(curuser,inf.username);clear();return1;}else{printf("Loginerror,Pressanykeytorelogin!\n");getch();clear();}}else{printf("Theuserisnotexist,Pressanykeytorelogin!\n");getch();clear();}logintime--;}printf("Loginerrorabovethreetimes,Pressanykeytoexit!");getch();return0;}intgetcmd()/*獲得命令*/{inti=0,j=0,k=0;charbuf[255];printf("%s>",pre_dir);/*打印提示符*/fgets(buf,255,stdin);cmd_line[j]=calloc(255,sizeof(char));while(buf[i]!='\n'&&buf[i]!='\0')/*命令分析*/{if(buf[i]!=''){cmd_line[j][k]=buf[i];++k;}else{cmd_line[j+1]=calloc(255,sizeof(char));k=0;++j;}++i;}cmd_line[j+1]=0;if(strcmp(cmd_line[0],"exit")==0){exit(0);}elseif(strcmp(cmd_line[0],"/?")==0||strcmp(cmd_line[1],"/?")==0){return0;}elseif(strcmp(cmd_line[0],"dir")==0){return1;}elseif(strcmp(cmd_line[0],"cd")==0){return2;}elseif(strcmp(cmd_line[0],"newdir")==0){return3;}elseif(strcmp(cmd_line[0],"deldir")==0){return4;}elseif(strcmp(cmd_line[0],"del")==0){return5;}elseif(strcmp(cmd_line[0],"copy")==0){return6;}elseif(strcmp(cmd_line[0],"cut")==0){return7;}elseif(strcmp(cmd_line[0],"account")==0){return8;}elseif(cmd_line[0][1]==':'){strcpy(pre_dir,cmd_line[0]);strcat(pre_dir,"\\");}elseif(strcmp(cmd_line[0],"clear")==0){clear();}else{printf("Thecommandisnotsupported!\n");}}voiddir()/*列出文件及文件夾*/{structffblkff;charfilepath[255];strcpy(filepath,pre_dir);findfirst(strcat(filepath,"*.*"),&ff,FA_DIREC);if(ff.ff_attrib==16){printf("<DIR>\t");}else{printf("\t");}printf("%s\n",ff.ff_name);while(findnext(&ff)==0){if(ff.ff_attrib==16){printf("<DIR>\t");}else{printf("\t");}printf("%s\n",ff.ff_name);}}voidcd()/*改變當(dāng)前目錄*/{inti=0;structffblkff;charfilepath[255];strcpy(filepath,pre_dir);if(strcmp(cmd_line[1],"..")==0)/*返回上一層目錄*/{while(filepath[i]!='\0'){i++;}if(filepath[i-2]!=':'){i=i-2;while(filepath[i]!='\\'&&i>=2){i--;}filepath[i+1]='\0';strcpy(pre_dir,filepath);}}elseif(strcmp(cmd_line[1],"\\")==0)/*返回根目錄*/{while(filepath[i]!='\\'){i++;}filepath[i+1]='\0';strcpy(pre_dir,filepath);}else{findfirst(strcat(filepath,"*.*"),&ff,FA_DIREC);while(strcmp(ff.ff_name,cmd_line[1])!=0){if(findnext(&ff)!=0){break;}}if(strcmp(ff.ff_name,cmd_line[1])==0){strcat(pre_dir,cmd_line[1]);strcat(pre_dir,"\\");}else{printf("Can'tfindthefile!\n");}}voidclear(){clrscr();}voidnewdir(){charfilepath[255];strcpy(filepath,pre_dir);if(mkdir(strcat(filepath,cmd_line[1]))==0){printf("Makedir'%s'successfully!\n",cmd_line[1]);}else{printf("Makedirerror!\n");}}voiddeldir(){charfilepath[255];strcpy(filepath,pre_dir);if(rmdir(strcat(filepath,cmd_line[1]))==0){printf("Deletedir'%s'successfully!\n",cmd_line[1]);}else{printf("Deletedirerror!\n");}}voiddel(){charfilepath[255];strcpy(filepath,pre_dir);if(unlink(strcat(filepath,cmd_line[1]))==0){printf("Delete%ssuccessfully!\n",cmd_line[1]);}else{printf("Deleteerror!\n");}}voidcopy(){charfilepath[255];charsourcepath[255];charaimpath[255];FILE*newfp;FILE*oldfp;charch;strcpy(filepath,pre_dir);if(cmd_line[1][1]!=':'){strcpy(sourcepath,filepath);strcat(sourcepath,cmd_line[1]);}else{strcpy(sourcepath,cmd_line[1]);}if(cmd_line[2][1]!=':'){strcpy(aimpath,filepath);strcat(aimpath,cmd_line[2]);}else{strcpy(aimpath,cmd_line[2]);}if((oldfp=fopen(sourcepath,"r"))==NULL){printf("Can'topenoldfile!\n");}if((newfp=fopen(aimpath,"w"))==NULL){printf("Can'tcreatnewfile!\n");}while((ch=fgetc(oldfp))!=EOF){fputc(ch,newfp);}fclose(oldfp);fclose(newfp);printf("Copyfrom%sto%ssuccessfully!\n",sourcepath,aimpath);}voidcut(){charfilepath[255];charsourcepath[255];charaimpath[255];FILE*newfp;FILE*oldfp;charch;strcpy(filepath,pre_dir);if(cmd_line[1][1]!=':'){strcpy(sourcepath,filepath);strcat(sourcepath,cmd_line[1]);}else{strcpy(sourcepath,cmd_line[1]);}if(cmd_line[2][1]!=':'){strcpy(aimpath,filepath);strcat(aimpath,cmd_line[2]);}else{strcpy(aimpath,cmd_line[2]);}if((oldfp=fopen(sourcepath,"r"))==NULL){printf("Can'topenoldfile!\n");}if((newfp=fopen(aimpath,"w"))==NULL){printf("Can'tcreatnewfile!\n");}while((ch=fgetc(oldfp))!=EOF){fputc(ch,newfp);}fclose(oldfp);fclose(newfp);if(unlink(sourcepath)==0){printf("Cutfrom%sto%ssuccessfully!\n",sourcepath,aimpath);}else{printf("Deleteoldfileerror!\n");}}voidaccount(){FILE*fp;structuserinfinf;if(strcmp(cmd_line[1],"/add")==0){if((fp=fopen("inf.dll","r+"))==NULL){printf("Can'topeninf.dllfile!\n");printf("Pressanykeytoexit...");getch();}while(fread(&inf,sizeof(inf),1,fp)==1&&strcmp(inf.username,cmd_line[2])!=0){}if(strcmp(inf.username,cmd_line[2])==0){printf("Createusererror,theuserisexist!\n");}else{strcpy(inf.username,cmd_line[2]);strcpy(inf.userpass,cmd_line[3]);if(fwrite(&inf,sizeof(inf),1,fp)==1){printf("Createuser%ssuccessfully!\n",inf.username);}else{printf("Createusererror!\n");}}fclose(fp);}elseif(strcmp(cmd_line[1],"/edit")==0){if((fp=fopen("inf.dll","r+"))==NULL){printf("Can'topeninf.dllfile!\n");printf("Pressanykeytoexit...");getch();}while(fread(&inf,sizeof(inf),1,fp)==1&&strcmp(inf.username,cmd_line[2])!=0){}if(strcmp(inf.username,cmd_line[2])!=0){printf("Editusererror,theuserisnotexist!\n");}else{strcpy(inf.username,cmd_line[2]);strcpy(inf.userpass,cmd_line[3]);fseek(fp,-20L,1);if(fwrite(&inf,sizeof(inf),1,fp)==1){printf("Edituser%ssuccessfully!\n",inf.username);}else{printf("Editusererror!\n");}}fclose(fp);}else{printf("Pleaseentercorrectparameter,type/?forhelp!\n");}}voidhelp(){if(strcmp(cmd_line[0],"/?")==0){printf("Thelistofcommands.\n\n");printf("dir\t\tListthefilesanddirs.\n");printf("cd\t\tChangethedir.\n");printf("clear\t\tClearthescreen.\n");printf("newdir\tMakeadir.\n");printf("deldir\tDeleteadir.\n");printf("del\t\tDeleteafile.\n");printf("copy\t\tCopyafilefromaplacetoanother.\n");printf("cut\t\tCutafilefromaplacetoanother.\n");printf("account\tAddeditordeleteaaccount.\n\n");printf("Formoreinformationaddtype/?aftercommand.\n\n");printf("Notice:Allthecommandlineiscapitalizationdistinction!\n\n");}else{if(strcmp(cmd_line[0],"dir")==0){printf("Listthefilesanddirs.\n\n");printf("dirpath\n\n");printf("path\t\tThediryouwanttolist.\n");printf("\t\tifpathisNULLthenlistthecurrentdir.\n\n");}elseif(strcmp(cmd_line[0],"cd")==0){printf("Changethedir.\n\n");printf("cd<\\|..|path>\n\n");printf("\\\t\tReturntotherootdir.\n");printf("..\t\tReturntotheparentdir.\n");printf("path\t\tThediryouwantchangeto.\n\n");}els

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論