鱼C论坛

 找回密码
 立即注册
查看: 2654|回复: 1

大神们啊,我这个代码为什么和新建的文件关联不起来啊

[复制链接]
发表于 2018-1-17 20:08:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个程序里在E盘我自己建立了1个student.txt,为什么老打不开这个文件呢,还有就是如果关联了之后,为什么存入文件的数据有乱码啊
#include <iostream>
#include<fstream>
#include<iomanip>
using namespace std;
#include<string.h>
//#include<process.h>
#include<windows.h>


class student
{
public:
    char name[20];
    char no[20];
    char date[20];
    char type[20];
    char classes[20];


    //student();
     void stu1()
    {
        cout<<endl<<"\t\t\t*                 请输入学生姓名及学号  ";
        cin>>name>>no;
    }
    void stu2()
    {
        cout<<endl<<"\t\t\t*                 请输入学生缺课日期  ";
        cin>>date;
    }
    void stu3()
    {
        cout<<endl<<"\t\t\t*                 请输入缺课课程  ";
        cin>>classes;
    }
    void stu4()
    {
        cout<<endl<<"\t\t\t*                 请输入缺课类型  ";
        cin>>type;
        //cout<<endl;
    }
    friend void input();//录入学生缺课记录(导入到文件中)
    friend void search();//根据学生姓名查询缺课记录
    friend void modify(student a[],int n);//修改学生缺课信息
    friend void output();//输出缺课学生信息(从文件中读取)
    friend int add();//添加一个学生的缺课信息
    friend void output2(student a[],int n);//输出当前学生缺课记录
    friend void input2(student a[],int n);//把最终的数据保存到文件中
};
void input()//写入到文件中
{
    int i,j;
    student s[100];
    //char c='\n';
    fstream file;
    file.open("D:\\student.txt",ios::in|ios::out);//导入到文件
    cout<<"请输入要录入的学生人数"<<endl;
    cin>>j;
    for(i=0;i<j;i++)
    {
        s[i].stu1();
        s[i].stu2();
        s[i].stu3();
        s[i].stu4();
        file.write((char *)&s[i], sizeof(s[i]));//写文件
        //file.write((char *)&c, sizeof(c));

        //file<<endl;

    }
    cout<<"成功输入同学信息";
    file.close();
}
void input2(student a[],int n)//把最终的数据保存到文件中
{
    int i;
    char c='\n';
    fstream ifile;
    ifile.open("D:\\lstudent.txt",ios::out);//导入到文件
    for(i=0;i<n;i++)
    {
        ifile.write((char *)&a[i], sizeof(a[i]));//写文件
        ifile.write((char *)&c, sizeof(c));

        //ifile<<endl;

    }
    cout<<"成功保存学生信息";
    ifile.close();
}
int add(student a[],int n)//新增一个学生的缺课记录
{
    student x;
    x.stu1();
    x.stu2();
    x.stu3();
    x.stu4();

    strcpy(a[n].name,x.name);
    strcpy(a[n].no,x.no);
    strcpy(a[n].date,x.date);
    strcpy(a[n].classes,x.classes);
    strcpy(a[n].type,x.type);
    n++;
    cout<<"成功输入同学信息";
    return n;
}

void search()
{
    student x;
    char name[11];
    int z;
    fstream m;
    a1:
        int flag=0;
        m.open("D:\\student.txt",ios::in);//打开文件
        cout<<"请输入您要查找的同学姓名:"<<endl;
        cin>>name;
        m.read((char*)&x,sizeof(x));

        while(!m.eof())
        {
            if(!strcmp(name,x.name))
            {
                cout<<"姓名  学号  日期  课程名称  缺课类型"<<endl;
                cout<<x.name<<x.no<<x.date<<x.classes<<x.type<<endl;
                flag=1;
                break;
            }
            m.read((char*)&x,sizeof(x));

        }
        m.close();
        if(flag==0)
            cout<<"您查询的同学无缺课信息"<<endl;
        cout<<"是否继续查询,若是,请输入 1 ,若否,请输入 0 ;"<<endl;
        cin>>z;
        if(z==1)
            goto a1;
}

void modify(student a[],int n)
{
    int i,j;
    char xname[11];
    cout<<"请输入您想要修改的学生姓名"<<endl;
    cin>>xname;
    for(i=0;i<n;i++)
    {
        if(strcmp(xname,a[i].name)==0)
        {
            cout<<"该学生的缺课记录信息为"<<endl;
            cout<<"姓名  学号  日期  课程名称  缺课类型"<<endl;
            cout<<a[i].name<<a[i].no<<a[i].date<<a[i].classes<<a[i].type<<endl;
            cout<<"请确认是否需要修改,若是,请输入 1 ,若否,请输入 0 ;";
            cin>>j;
            if(j==1)
            {
                a[i].stu1();
                a[i].stu2();
                a[i].stu3();
                a[i].stu4();
                cout<<"修改成功"<<endl;
            }
            else
                printf("请检查!!!");break;
            break;
        }
    }
}
void output()//输出从文件导入的学生缺课记录
{
    student x;
    fstream m;
    m.open("D:\\student.txt",ios::in);//打开文件
    m.read((char*)&x,sizeof(x));
    cout<<"\t\t\t姓名  学号    日期  课程名称  缺课类型"<<endl;
    while(!m.eof())
    {

        cout<<"\t\t\t"<<x.name<<setw(7)<<x.no<<setw(10)<<x.date<<setw(8)<<x.classes<<setw(8)<<x.type<<endl;
        m.read((char*)&x,sizeof(x));
    }
    m.close();
}
void output2(student a[],int n)//输出当前学生缺课记录
{
    int i;
    cout<<"\t\t\t学生的缺课记录信息为"<<endl;
    cout<<endl<<"\t\t\t*姓名  学号   日期  课程名称  缺课类型"<<endl;
    for(i=0;i<n;i++)
        cout<<"\t\t\t"<<a[i].name<<setw(7)<<a[i].no<<setw(10)<<a[i].date<<setw(8)<<a[i].classes<<setw(8)<<a[i].type<<endl;
}

void menu()
{
    cout<<"\t\t\t****************************************************************"<<endl;
    cout<<"\t\t\t******************欢迎使用学生考勤管理系统**********************"<<endl;
    cout<<"\t\t\t******************1.录入学生缺课记录并输出 *********************"<<endl;
    cout<<"\t\t\t******************2.查找学生缺课记录****************************"<<endl;
    cout<<"\t\t\t******************3.修改学生的缺课记录**************************"<<endl;
    cout<<"\t\t\t******************4.新增一个学生的缺课记录 *********************"<<endl;
    cout<<"\t\t\t******************5.输出当前学生缺课记录************************"<<endl;
    cout<<"\t\t\t******************6.把最终的数据保存到文件中********************"<<endl;
        cout<<"\t\t\t******************7.退出程序************************************"<<endl;
    cout<<"\t\t\t****************************************************************"<<endl;

}
int main()
{
    int sel;
    int n,i=0;
    char pass[7],pname[11];
    cout<<"\n\n\n\n\n\n\n\t\t\t****************************************************************"<<endl;
    cout<<"\t\t\t*                  欢迎使用学生考勤管理系统                    *"<<endl;
    cout<<endl<<"\t\t\t*                  请输入用户名:  ";
    cin>>pname;
    cout<<endl<<"\t\t\t*                  请输入密码:  ";
    cin>>pass;
    system("cls");
    if(strcmp(pass,"000")==0)
    {
        student x[100];
        fstream m;
        m.open("D:\\student.txt",ios::in);//打开文件
        m.read((char*)&x[i],sizeof(x[i]));
        cout<<"姓名  学号  日期  课程名称  缺课类型"<<endl;
        while(!m.eof())
            {
                i++;
                m.read((char*)&x[i],sizeof(x[i]));
            }
        m.close();
        n=i;
        do
        {
            menu();
            cout<<"\t\t\t*                 请输入你的选择";
            cin>>sel;
            switch(sel)
            {
                case 1:input();system("pause");system("cls");break;
                case 2:search();system("pause");system("cls");break;
                case 3:modify(x,n);system("pause");system("cls");break;
                case 4:n=add(x,n);system("pause");system("cls");break;
                case 5:output2(x,n);system("pause");system("cls");break;
                case 6:input2(x,n);system("pause");system("cls");break;
                                case 7:exit(1);
            }
        }while(sel!=0);
        cout<<"感谢您的使用"<<endl;
    }
   else
        cout<<"\t\t\t密码错误";
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-20 11:39:22 | 显示全部楼层
打开文件时 要说明文件所在的地方和名称
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-6 03:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表