小弟我这有个完整的无异常的程序,想改成多文件结构的,小弟我对多文件结构不是很会,有人帮忙改下吗

我这有个完整的无错误的程序,想改成多文件结构的,我对多文件结构不是很会,有人帮忙改下吗?
C/C++ code
//此程序为词法分析器,请注意,所给代码必须有终止符,否则程序有可能崩溃
#include <iostream>
#include <string>
#include <fstream>
#include <cctype>
#include <list>
using namespace std;
ofstream fin;
//定义关键字表和特殊字符表的结构体
struct code_page
{
    char *name;
    int num;
};

//关键字表
code_page key[6]={{"main",26},{"int",21},{"if",22},{"then",23},{"else",24},{"return",25}};

//特殊字符表
code_page code[12]={{"(",1},{")",2},{"{",3},{"}",4},{";",5},{"=",6},{"+",7},{"*",8},{">",9},{"<",10},{",",11},{"\'",12}};

//构建存储词法分析结果的链表
list<code_page>clist;

//判断字符串是否为关键字,是关键字则返回关键字代码,否则返回0
int IsKey(string a)
{
    int i=0,j=-1;
        for(i=0;i<6;i++)
        {
            if(strcmp(key[i].name,a.c_str())==0)
                    j=i;
        }
        return j;
}

//判断字符是否为特殊字符,如果是则返回字符代码,否则返回0
int Iscode(char ch)
{
    int i=0,j=-1;
    for(i=0;i<12;i++)
    {
        if(ch==code[i].name[0])
            j=i;
    }
    return j;
}
//输出链表
void display()
{
    list<code_page>::iterator i;
    for(i=clist.begin();i!=clist.end();i++)
    {
    cout<<"("<<(*i).num<<","<<"\'"<<(*i).name<<"\'"<<")"<<endl;
        fin<<"("<<(*(i)).num<<","<<"\'"<<((*(i))).name<<"\'"<<")"<<endl;
    }
}
//词法分析器
void analyse()
{    
    clist.clear();
    FILE *txt;
    char name[40];
    cout<<"请输入要分析的代码的完整路径及后缀:";
    while(1)
    {
        cin>>name;
        if((txt=fopen(name,"r"))==NULL)
            cout<<"文件不存在,请重新输入!"<<endl;
        else
            break;
    }
    cout<<"读取代码成功!"<<endl;
    cout<<"词法分析结果如下:"<<endl<<endl;
    cout<<"<<<<<<<<<<<<<<<<<<<"<<endl;
    
    fin.open("词法分析结果.txt");
    char ch=fgetc(txt);

    //开始对代码进行分析
    while(ch!=EOF)
    {    
        string carry;
        if(ch==' '||ch=='\t'||ch=='\n')//对空格、制表符tab、换行符的处理
        {

        }


        //判断是否为变量名或关键字
        else if(isalpha(ch))// isalpha(ch)判断是否为字母
        {
            while(isalnum(ch))// isalnum(ch)判断是否为字母或数字
            {
                ch=tolower(ch);//把字母转换成小写字母
                carry+=ch;
                ch=fgetc(txt);
            }

            fseek(txt,-1L,SEEK_CUR);

            if(IsKey(carry)!=-1)//判断是否为关键字
            {
                int i=IsKey(carry);
                clist.insert(clist.end(),key[i]);//讲该关键字插入链表尾
            }
            else
            {
                const char *arr=carry.c_str();
                char *r=new char[strlen(arr)+1];
                strcpy(r,arr);
                code_page other;
                other.name=r;
                other.num=0;
                clist.insert(clist.end(),other);
            }
        }//一个变量名或关键字分析完毕

        
        else if(isdigit(ch))//分析是否为数字
        {
            while(isdigit(ch))
            {
                carry+=ch;
                ch=fgetc(txt);
            }
            fseek(txt,-1L,SEEK_CUR);
            const char *arr=carry.c_str();
            char *r=new char[strlen(arr)+1];
                strcpy(r,arr);
                code_page other;
                other.name=r;
                other.num=0;
                clist.insert(clist.end(),other);
        }//一个数字分析完毕

        //判断是否为特殊字符
        else if(Iscode(ch)!=-1)
        {
            int i=Iscode(ch);
            clist.insert(clist.end(),code[i]);
        }//是否为特殊字符判断完毕

        else//其他字符种类都归结为100
        {
            code_page other;
            other.name="-";
            other.num=100;
            clist.insert(clist.end(),other);
        }//其他情况判断完毕
        

        ch=fgetc(txt);//再读取一个字符
    }
    display();
    cout<<"<<<<<<<<<<<<<<<<<<<"<<endl<<endl;
    cout<<"词法分析完毕,结果已存放在目录下的\"词法分析结果.txt\" 里"<<endl<<endl;
    fin.close();
    fclose(txt);
}
int main()
{
    analyse();
    while(1)
    {    
        char t;
        cout<<"还要继续进行其他代码分析吗?(y/n)"<<endl;
        cin>>t;
        t=tolower(t);
        switch(t)
        {
        case 'n':
            cout<<"感谢使用"<<endl;
                break;
        case 'y':
            analyse();  
            break;
        default:
            cout<<"输入有误 请重新输入!"<<endl;
        }
        if(t=='n')
            break;
    }

}