简单的文件管理系统C课程设计.doc

上传人:仙人指路1688 文档编号:3990531 上传时间:2023-03-30 格式:DOC 页数:14 大小:415KB
返回 下载 相关 举报
简单的文件管理系统C课程设计.doc_第1页
第1页 / 共14页
简单的文件管理系统C课程设计.doc_第2页
第2页 / 共14页
简单的文件管理系统C课程设计.doc_第3页
第3页 / 共14页
简单的文件管理系统C课程设计.doc_第4页
第4页 / 共14页
简单的文件管理系统C课程设计.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《简单的文件管理系统C课程设计.doc》由会员分享,可在线阅读,更多相关《简单的文件管理系统C课程设计.doc(14页珍藏版)》请在三一办公上搜索。

1、课程设计报告(本科)课程:高级语言程序设计学号:姓名:班级:2011级计算机软件1班教师:时间:2011.12计算机科学与技术系设计名称:简单的文件管理系统设计内容、目的与要求:设计内容与目的:编写一个简单的文件管理系统,能够对磁盘文件进行简单的文件管理和操作,方便计算机用户能够对磁盘 文件的访问和管理,熟悉并掌握C语言对文件的基本操作,以及了解C文件的基本知识设计要求 :能够实现命令dir、rename、del、copy、move,完成对文件的查看、重命名、删除、复制及移动。计划与进度安排:2011-12.26:完成设计思路,并作出草稿。2011-12.27-12.31按要求编写能够实现各个

2、功能的源代码。2012-1.1-1.5完成对源代码的编写、运行及调试。2012-1.6 验收,答辩。设计过程、步骤(可加页):设计思路; 总体,主函数使用死循环,然后后使用switch 函数,对用户不同的操作请求输入的数字,从而调用不同的函数。分别自己定义,dir()、rename()、del()、copy()、move()五个函数,分别完成对文件的查看、重命名、删除、复制,及移动的功能,然后主函数使用switch语句控制不同的选择,调用不同的函数,完成对文件的操作。简单的文件管理系统主界面 谢谢使用.查看文件.重命名文件.删除文件复制文件移动文件退出程序接收用户指令调用函数 循环主界面步骤:

3、1. 主函数使用死循环,完成多次的使用,直到用户输入的为0结束,输入有误自动结束,否则会导致一直循环的!2. switch ()函数控制输入不同的指令,调用不同的函数。定义整型变量a,接收用户输入要执行的操作指令。如果用户输入的是1,则调用dir()查看文件;如果用户输入的是2,则调用rename()重命名文件;如果用户输入的是3,则调用del()删除文件;如果用户输入的是4,则调用move()移动文件;如果用户输入的是5,用调用copy()复制文件;如果用户输入的是0,提示用户“谢谢使用”结束for()循环,结束程序;如果用户输入有误则,将0赋给a,结束程序。3. dir()自定义函数:实现

4、查看文件的功能,打开需要查看的文件,定义字符型变量ch暂存文件里的字符,和字符型数组filename用来存放用户输入要查看的文件名,然后定义文件类型指针,利用fopen()、for()循环、putchar()、fgetc()系统函数将文本文件的字符逐个输出到屏幕上。4. rename()自定义函数 :实现重命名的功能,rename()用法: int rename(char *oldname, char *newname);如果成功返回值为0,失败返回值为非0;定义字符型数组oldname和newname,分别接受用户输入原文件名和新文件名,然后使用rename()函数即可。 5. del()自

5、定义函数 :实现删除文件的功能, remove用法: int remove(char *filename); 如果成功返回值为0,失败返回值为非0;定义字符型数组delname接收用户输入要删除的文件名,然后是用remove()函数即可。6. copy()自定义函数:实现文件的复制功能,定义字符型数组infile和outfile,接收用户输入的要复制的文件名和复制后的文件名,定义文件指针fp用fopen()打开要复制的文件,for()循环当fgetc(infile)是文件结束符时停止循环,使用fputc()和fgetc()将infile文件的字符复制到了outfile里。7. move()自定

6、义函数:实现移动文件的功能,定义字符型数组infile和outfile,分别接收要移动的文件名好移动后的文件名,定义文件指针fp,然后将infile复制到outfile方法同6,然在使用remove()函数删除infile就完成了移动的功能。结果与分析(可以加页): 结果:以下是调试后,正常运行的截图,分别是,查看、重命名、删除、移动、复制和退出时的截图!调试前:1. 总程序可以正常的运行。2. 可以实现对文本文件的查看,并显示在屏幕上!3. 我在运行重命名的函数时,出现了rename permission denied!在运行remove函数时出现了remove : No such file

7、 directoty.4. 能够正常复制,但是复制的文本文件,文件里面结尾时乱码但是但是查看复制后文件,显示正常!分析:1. 我在运行重命名的函数时,出现了rename permission denied!不知道为什么提示重命名未授权。在最后的调试中,我发现了问题,是由于我在重命名的文件时打开没有关闭文件,修改了代码之后,完成了重命名函数的调试。2. 删除文件时出错,原因时remove()函数使用有误,调试前我的代码是remove(“delfile”)改为remove(delfile),就可以了。设计体会与建议: 体会:1.首先通过这次的课程设计,让我知道了-万事开头难,好的开始成功的一半,首

8、先一定要有一个明确的设计思路,一开始看到了课程设计的题目,虽然心中有了个大概的思路,并没有做好详细的计划,到了真正的编写程序时,才发现,要考虑到一些细节,比如程序要实现循环使用,不能执行一次任务就退出了,以及调用函数要考虑到用户,是要继续操作还是返回上一级菜单,等等问题。2.做好计划时,有几天为一个问题,耽搁了很长时间,在调用函数是我使用了gets()函数接收用户输入的字符串,程序就出现了问题,后来我使用scanf()函数接收用户输入,就可以了,我现在还不知道为什么?3.写程序的时候对文件的操作很不熟练,编写的程序时用到的rename remove,等函数,通过查阅资料的,课本上的东西,并不是

9、能讲到所有知识,有些东西,只有自己查阅!但是,如果书上的都不能掌握,也是不行的!同这次的课程设计,让我对文件的操作有了较多的理解和运用了。C语言程序代码附录:#include stdio.h #include stdlib.h #define N 40 /* 宏定义*/int main() /* 主函数*/void dir();void rename();void del();void move();void copy(); /* 函数声明*/int a;for(;a!=0;) /*死循环,如果用户输入的不是0执行循环*/ printf(nnn); printf(tt*n); /*屏幕上显示主

10、界面*/ printf(tt* 欢迎使用文件管理系统 *n); printf(tt*n); printf(tt*t1.查看文件(只适用文本文件) *n); printf(tt*t2.重命名文件 *n); printf(tt*t3.删除文件 *n); printf(tt*t4.移动文件 *n); printf(tt*t5.复制文件 *n); printf(tt*t0.退出系统 *n); printf(tt*n); printf(tt请选择要进行的操作(按enter键执行!):); /*提示用户输入*/ scanf(%d,&a); /*接受用户输入*/ switch(a) case 1: dir(

11、); break; /*如果用户输入1调用dir()函数查看文件*/ case 2: rename(); break; /*如果用户输入2调用rename()函数-文件*/ case 3: del(); break; /*如果用户输入3调用del()函数-删除文件*/ case 4: move(); break; /*如果用户输入4调用move()函数-移动文件*/ case 5: copy(); break; /*如果用户输入5调用copy()函数-复制文件*/ case 0: printf(tt谢谢使用!n);break; /*如果用户输入0 ,结束循环!退出程序*/ default: p

12、rintf(输入有误,自动结束!n);a=0; /*如果用户输入有误,将0赋给a结束循环*/ return 0;void dir() /*dir()函数*/int a; /*定义变量a,接收用户的操作选择*/for(;a!=0;) /*死循环*/FILE *fp; /*定义文件指针*/char ch,filenameN;printf(请输入要查看的文本文件(如d:1.txt):);/*提示用户输入*/scanf(%s,filename);if(fp=fopen(filename,r)=NULL) printf(无法找到该文件!n);/*打开文件操作*/else ch=fgetc(fp); /*

13、将fp文件的字符赋给ch*/ while(ch!=EOF) /*循环直到遇到文件结束标识符结束*/ putchar(ch); /*将字符ch输出到屏幕上*/ch=fgetc(fp); /*将fp文件的下一个字符赋给ch*/ fclose(fp); /*关闭文件*/printf(nnt1.继续。nt0.返回上一级!n请选择要进行的操作(按enter执行!):);scanf(%d,&a); /*接收用户输入的指令*/ switch(a) case 1: ;break; /*如果输入的是1,继续执行循环-查看文件*/ case 0: ;break; default :printf(输入有误!自动返回

14、上一级nn);a=0;void rename() /*rename()函数-重命名文件*/ int a; for(;a!=0;) char oldnameN,newnameN; /*定义字符型数组用来存放好、用户输入的文件名*/ char *p1,*p2; FILE *fp; /*文件指针*/ printf(要重命名的文件(如C:1.txt): ); scanf(%s,oldname); if(fp=fopen(oldname,r)=NULL) /*打开文件*/ printf(无法找该文件!n); exit(0); fclose(fp); p1=oldname ; printf(输入新的文件名

15、(如C:2.txt): ); scanf(%s,newname); p2=newname; if (rename(oldname, newname) = 0) /*rename函数()成功返回值为0,则输出重命名成功*/ printf(将 %s 重命名为 %s.n重命名成功n, p1, p2); else perror(rename); getchar(); printf(nnt1.继续。nt0.返回上一级!n请选择要进行的操作(按enter执行!):);/*提示用户输入要执行的指令*/ scanf(%d,&a); switch(a) case 1: ;break; case 0: ;brea

16、k; default :printf(输入有误!自动返回上一级nn);a=0;/*如果用户输入有误,将0赋给a结束循环*/void del() /*del()函数-删除文件*/ int a; for(;a!=0;) char delfileN;printf(输入要删除的文件(如C:1.txt):);scanf(%s,delfile); if(remove(delfile)=0) /*remove函数()成功返回值为0,则输出删除文件成功*/ printf(删除文件%s 成功!n,delfile); elseperror(remove); printf(nnt1.继续。nt0.返回上一级!n请选

17、择要进行的操作(按enter执行!):); scanf(%d,&a); switch(a) case 1: ;break; case 0: ;break; default :printf(输入有误!自动返回上一级nn);a=0;void move() /*move()函数-移动文件*/ int a; for(;a!=0;) FILE *in ,*out; /*定义文件指针*/char infileN,outfileN;printf(请输入要移动的文件(如C:a.txt):n);scanf(%s,infile);if(in=fopen(infile,r)=NULL)printf(无法打开文件!n

18、); exit(0);printf(请输入移动后的文件(如C:a.txt):n); /*提示用户输入*/scanf(%s,outfile); /*接收用户输入*/if(out=fopen(outfile,wb)=NULL) /*使用二进制方式打开文件*/printf(无法打开文件!n); exit(0);for(;!feof(in);) /*直到遇到文件结束标志结束循环*/ fputc(fgetc(in),out); /*将in文件里的字符写入out文件里*/fclose(out); /*关闭文件*/fclose(in);if(remove(infile)=0) printf(移动成功n);

19、else perror(remove); /*关闭文件*/printf(nnt1.继续。nt0.返回上一级!n请选择要进行的操作(按enter执行!):); scanf(%d,&a); switch(a) case 1: ;break; case 0: ;break; default :printf(输入有误!自动返回上一级nn);a=0; void copy() /*copy()函数-复制文件*/ int a; for(;a!=0;) FILE *in ,*out; /*定义文件指针*/char infileN,outfileN;printf(请输入要复制的文件(如C:a.txt):n);s

20、canf(%s,infile);if(in=fopen(infile,r)=NULL)printf(无法打开文件!n); exit(0);printf(请输入复制后的文件(如C:a.txt):n); /*提示用户输入*/scanf(%s,outfile); /*接收用户输入*/if(out=fopen(outfile,wb)=NULL) /*使用二进制方式打开文件*/printf(无法打开文件!n); exit(0);for(;!feof(in);) /*直到遇到文件结束标志结束循环*/ fputc(fgetc(in),out); /*将in文件里的字符写入out文件里*/printf(复制成功n); /*提示用户*/fclose(in); /*关闭文件*/fclose(out); /*关闭文件*/ printf(nnt1.继续。nt0.返回上一级!n请选择要进行的操作(按enter执行!):); scanf(%d,&a); switch(a) case 1: ;break; case 0: ;break; default :printf(输入有误!自动返回上一级nn);a=0; /*提示用户*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号