搜索
查看: 2605|回复: 15
打印 上一主题 下一主题

求助求助C的一个课程设计啊,文件相关的

[复制链接]
跳转到指定楼层
楼主
发表于 2013-7-3 21:26:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
                                  求助求助
学生使用C语言设计程序,产生如下界面,1-5对应不同功能,若不用汉字,可用拼音或英文表示。
**********************************************************
*                                                        *
* 1--输入 2--加密 3--解密 4--显示5—统计  0--退出       *
*                                                        *
**********************************************************                 请选择(0--5):
0.退出系统。
1.      输入信息,并写入文本文件。
2.      对给定的文件进行加密。
3.      对给定的文件进行解密。
4.      显示文本文件的内容。
5.统计某单词在文件中出现的次数。
*6. 统计在文件中各单词出现的次数(可选)。
三.考核评估
根据学生的动手能力、独立分析解决问题的能力、创新精神、完成任务的时间、课程设计报告和答辩水平以及学习态度进行综合考评。成绩分优、良、中、及格和不及格五等。
*、清屏命令:VC下用system(“cls”); <stdlib.h>
*、文件删除命令:system(“delfile”);<stdlib.h>
*、文件更名命令:system(“rename file1 file2”); <stdlib.h>

最佳答案

查看完整内容

https://gist.github.com/rosynirvana/5951153 微薄ID和论坛上这个ID一样
沙发
发表于 2013-7-3 21:26:21 | 只看该作者
https://gist.github.com/rosynirvana/5951153

微薄ID和论坛上这个ID一样
板凳
发表于 2013-7-3 21:41:07 | 只看该作者
这个代码量太大了,你先试着写吧,然后发上来,会帮你改的
地板
 楼主| 发表于 2013-7-5 20:23:46 | 只看该作者
rosynirvana 发表于 2013-7-3 21:41
这个代码量太大了,你先试着写吧,然后发上来,会帮你改的

我···我···试试吧
5#
 楼主| 发表于 2013-7-6 12:03:25 | 只看该作者
rosynirvana 发表于 2013-7-3 21:41
这个代码量太大了,你先试着写吧,然后发上来,会帮你改的

# include <stdio.h>
# define B 1234
int jiami(char fname1[50],char fname2[50])
{
        int c;
        FILE *fp1,*fp2;

        if(fname1[0]=='\0')
                return;
        if((fp1=fopen(fname1,"r"))==NULL)
        {
                puts("打开失败!");
                return;
        }
        if(fname2[0]=='\0')
                return;
        if((fp2=fopen(fname2,"w"))==NULL)
        {
                puts("打开失败!");
                fclose(fp1);
                return;
        }
        while((c=fgetc(fp1))!=EOF)
                fputc(c^B,fp2);
        fcloseall();
        return 1;
               
}
int jiemi(char fname2[50],char fname3[50])
{
        FILE *fp2,*fp3;
        int d;

        if(fname2[0]=='\0')
                return;
        if((fp2=fopen(fname2,"r"))==NULL)
        {
                puts("打开失败!");
                return;
        }
        if(fname3[0]=='\0')
                return;
        if((fp3=fopen(fname3,"w"))==NULL)
        {
                puts("打开失败!");
                fclose(fp2);
                return;
        }
        while((d=fgetc(fp2))!=EOF)
                fputc(d^B,fp3);
        fcloseall();
        return 1;
}
void main()
{
        FILE *fp0,*fp1,*fp2,*fp3;
        int c,d,n=0,i,j,t=0;
        char fname1[50],fname2[50],fname3[50];
        char words[10000],s[20];
        puts("1.输入");
        puts("2.加密");
        puts("3.解密");
        puts("4.显示");
        puts("5.查找");
        puts("0.退出");
        switch(getchar())
        {
        case '0':puts("退出程序!");break;

        case '1':
                printf("请输入要写入的文件名(包括路径):");
                gets(fname0)
            if(fname0[0]=='\0')
                    return;
            if((fp0=fopen(fname0,"w"))==NULL)
                {
                    puts("打开失败!");
                    return;
                }
                printf("请输入一串文字(回车结束):");
                gets(words);
                fputs(words,fp);
                fclose(fp);
                puts("写入成功!");

        case '2':
            printf("请输入要加密的文件名(包括路径):");
            gets(fname1);
            printf("请输入加密后存入的文件名(包括路径):");
            gets(fname2);
                jiami(fname1,fname2);
                if((jiami(fname1,fname2))==1)
                        puts("加密成功!");

        case '3':
            printf("请输入要解密的文件名(包括路径):");
            gets(fname2);
            printf("请输入解密后存入的文件名(包括路径):");
            gets(fname3);
                jiemi(fname2,fnema3);
                if((jiemi(fname2,fnema3))==1)
                        puts("解密成功!");

        case '4':
                printf("请输入要显示的文件名(包括路径):")
        gets(fname0)
            if(fname0[0]=='\0')
                    return;
            if((fp0=fopen(fname0,"rb"))==NULL)
                {
                    puts("打开失败!");
                    return;
                }
                while(1)
                {
                        fread(&words[n],sizeof(unsigned char),1,fp);
                    if(ferror(fp1))
                        {
                             puts("读文件有错!");
                            break;
                        }
                        n++;
                }
                for(i=0;i<n;i++)
                    printf("%c",words);

        case '5':
                printf("请输入要查找的文件名(包括路径):")
        gets(fname0)
            if(fname0[0]=='\0')
                    return;
            if((fp0=fopen(fname0,"rb"))==NULL)
                {
                    puts("打开失败!");
                    return;
                }
                printf("请输入要查找的单词:");
                gets(s);

                while(1)
                {
                        fread(&words[n],sizeof(unsigned char),1,fp);
                    if(ferror(fp1))
                        {
                            puts("读文件有错!");
                            break;
                        }
                        n++;
                }

       for(i=0;words!='\0';i++)
           {
                    for(j=0;s[j]!='\0';j++)
                                if(words[i+j]!=s[j])
                                        break;
                        if(s[j]=='\0')
                                t++;
           }
           printf("所查单词在文件中有%d个\n",t);

        default :puts("选择错误!");
}
6#
发表于 2013-7-6 20:01:29 | 只看该作者
话说这个加密算法是你们课上教的?
7#
 楼主| 发表于 2013-7-8 12:46:38 | 只看该作者
rosynirvana 发表于 2013-7-6 20:01
话说这个加密算法是你们课上教的?

不是我自己弄得
8#
发表于 2013-7-8 20:51:52 | 只看该作者
嘛,我写一个你参考吧
大概晚些时候贴出来
9#
发表于 2013-7-9 02:20:16 | 只看该作者
https://gist.github.com/rosynirvana/5951153

估且这样子吧,还是半成品
10#
 楼主| 发表于 2013-7-9 10:44:27 | 只看该作者
rosynirvana 发表于 2013-7-9 02:20
https://gist.github.com/rosynirvana/5951153

估且这样子吧,还是半成品

有一些还没看得太懂,我再努力努力。那你还会给我成品?
11#
发表于 2013-7-9 11:54:52 | 只看该作者
accueil 发表于 2013-7-9 10:44
有一些还没看得太懂,我再努力努力。那你还会给我成品?

哪些地方没看懂?
12#
 楼主| 发表于 2013-7-9 13:07:16 | 只看该作者
rosynirvana 发表于 2013-7-9 11:54
哪些地方没看懂?

现在全弄懂了,如果我要加第六步的话要怎么加啊?
缓冲区的那个函数buffer我可以用清屏语句system("cls");来替换吧。
我们可以加个QQ做个朋友?我也可以在上面问你问题啊。我的252232437
13#
发表于 2013-7-9 13:26:25 | 只看该作者
accueil 发表于 2013-7-9 13:07
现在全弄懂了,如果我要加第六步的话要怎么加啊?
缓冲区的那个函数buffer我可以用清屏语句system("cls" ...

第6步写个树结构会比较好,如果文件很小也可以考虑用线性链表或者数组,我稍晚时候写一写
那个函数是用来清理缓冲区的字符,比如第一个数字输入之后,缓冲区残留的回车
cls是用来清除控制台显示的字符的,两个东西功能不同

我不用qq来着⋯⋯
14#
 楼主| 发表于 2013-7-9 18:17:14 | 只看该作者
rosynirvana 发表于 2013-7-9 13:26
第6步写个树结构会比较好,如果文件很小也可以考虑用线性链表或者数组,我稍晚时候写一写
那个函数是用来 ...

恩恩。那你用微博?
15#
发表于 2013-7-9 21:30:28 | 只看该作者
对了,还需要补充一句,新增的那个全文件统计用来统计随机的文件或是小文件不会有问题,如果是按字母表顺序排列的文件(例如字典)就会很慢

如果拿来测试的数据有字典或者名册这类的,改成一个有自平衡能力的树结构会比较好,用AVL或者红黑树都可以
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表