| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 484 人关注过本帖
标题:学生管理系统数据保存到文件的问题,请指教
只看楼主 加入收藏
编程Samuel
Rank: 1
等 级:新手上路
帖 子:24
专家分:0
注 册:2015-1-6
结帖率:50%
收藏
已结贴  问题点数:9 回复次数:1 
学生管理系统数据保存到文件的问题,请指教
程序代码:
#include<iostream>
#include<cstdlib> 
#include<fstream>
#include<string>
#include"Score.h"
#include"Subject.h"
#include"Student.h"
using namespace std;
int M=100;
static int M2=0;
class Class{                    //班级类
private:
    Student stu;
    char name2[20];
    int num2;
public:
    Class(){
        for(int i=0;i<20;i++)
            name2[i]=0;
        num2=0;
    }
    int getNU(){return stu.getNU1();}
    string getNA(){return stu.getNA1();}
    void set4(){
        cout<<"请输入该生所在班级名称:";
        cin>>name2;
        cout<<"请输入该班班号:";
        cin>>num2;
        stu.set3();
    }
    void show4(){
        cout<<"班级:"<<name2<<"\t班号:\t"<<num2;
        stu.show3();
    }
    friend void Search1(Class c1[],int count1);        
    friend void Search2(Class c2[],int count2);
    friend void Update1(Class c3[],int count_d);
    friend void Delete(Class c4[],int *count_c);
    friend void Insert(Class c5[],int &count_a);
}b[100];
void Save(Class c6[],int count)      //记录存入文件函数
{
    
    
    fstream file("class.txt",ios::out|ios::app);
    if(!file)
    {
        cout<<"file coun't open."<<endl;
        abort();
    }
    for(int i=0;i<count;i++)
        file.write(reinterpret_cast<char*>(&c6[i]),sizeof(c6[i]));
    file.close();
}



void Show(Class c7[])                 //显示记录函数
{
    int i=0;
    for(i=0;c7[i].getNU()!=0;i++)
        c7[i].show4();
}
void Insert(Class c5[],int &count_a)   //信息录入函数
{
    int i,in_number,n=0;
    if(count_a==M)
    {
        cout<<"空间已满!";
        return;
    }
    cout<<"请输入学生的学号:"<<endl;
    do
    {
        do
        {
            cin>>in_number;
            for(i=0;i<count_a;i++)
            {
                if(c5[i].getNU()==in_number)
                    cout<<"已有相同的学号,请重新输入!"<<endl;
                break;
            }
        }while(c5[i].getNU()==in_number);
        if(in_number<1)
            cout<<"输入错误,请重新输入大于零的整数!"<<endl;
    }while(in_number<=0);
    i=count_a;
    c5[i].set4();
    count_a++;
    cout<<endl<<endl;n=n+1;
    if(n!=0)
        cout<<"学生成绩录入成功!"<<endl;
}
void Search1(Class c1[],int count1)    //按学号查询信息函数
{
    int i,number,flag=1,n=0;
    cout<<"请输入所要查询的学生的学号:"<<endl;
    do
    {
        cin>>number;
        if(number<=0)
            cout<<"输入错误,请重新输入大于零的整数!"<<endl;
    }while(number<=0);
    for(i=0;i<count1&&flag;i++)
        if(c1[i].getNU()==number)
        {
            c1[i].show4();
            flag=0;n=n+1;
        }
        if(n==0)
            cout<<"没有查询到该学生的资料!"<<endl;
}
void Search2(Class c2[],int count2)  //按姓名查询信息函数
{
    int i,n=0;
    char nam[20];
    cout<<"请输入所要查询的学生的姓名:"<<endl;
    cin>>nam;
    for(i=0;i<count2;i++)
        if(c2[i].getNA()==nam)
        {
            c2[i].show4();
            n=n+1;
        }
        if(n==0)
            cout<<"没有查询到该学生的资料!"<<endl;
}
void Update1(Class c3[],int count_d)  //信息修改函数
{
    int i,n=0,flag=1,m;
    char nam[20];
    cout<<"请输入所要修改的学生的姓名:"<<endl;
    cin>>nam;
    for(i=0;i<count_d&&flag;i++)
    {
        if(c3[i].getNA()==nam)
        {
            cout<<"请输入所要修改的学生的学号:"<<endl;
            cin>>m;
            for(i=0;i<count_d&&flag;i++)
            {
                if(c3[i].getNU()==m)
                {
                    c3[i].set4();
                    flag=0;n=n+1;
                }
            }
        }
        break;
    }
    if(n!=0)
        cout<<"修改成功!"<<endl;
    if(n==0)
        cout<<"没有查询到该学生的资料!"<<endl;
}
void Delete(Class c4[])  //信息删除函数
{
    fstream file("class.txt",ios_base::in|ios_base::out|ios_base::app);
    int i=0;
    for(i=0;i<100;i++)
    {
        file.read(reinterpret_cast<char*>(&b[i]),sizeof(b[i]));    
    }
    for(i=0;b[i].getNU()!=0;i++)
        ;
    M2=i;
    Class c9;
    int n=0,number,flag=1;
    cout<<"请输入要要进行操作的学生的学号:"<<endl;
    cin>>number;
    for(i=0;i<M2&&flag;i++)
    {
        if(c4[i].getNU()==number)
        {
            for(i;i<M2&&flag;i++)
                c4[i]=c4[i+1];
            flag=0;
            (M2)--;n=1;
            Save(b,M2);
            break;
        }
    }
    if(n==0)
        cout<<"没有查询到可以删除的资料!"<<endl;
    if(n!=0)
        cout<<"资料删除成功!"<<endl;
}
int main()
{
    char a1;
    fstream file("class.txt",ios_base::in|ios_base::out|ios_base::app);
    cout<<"\t\t*************☆欢迎进入学生成绩管理系统**************"<<endl<<endl;
    do
    {
        cout<<"\t\t\t请键入小写字母键选择功能:"<<endl;
        cout<<"\t\t\ta.学生成绩查询"<<endl;
        cout<<"\t\t\tb.学生成绩录入"<<endl;
        cout<<"\t\t\tc.学生成绩删除"<<endl;
        cout<<"\t\t\td.学生成绩修改"<<endl;
        cout<<"\t\t\te.显示全部记录"<<endl;
        cout<<"\t\t\tf.记录存入文件"<<endl;
        cout<<endl;
        cout<<"\t\t\t按g退出本系统"<<endl;
        int i=0;
        for(i=0;i<100;i++)
        {
            file.read(reinterpret_cast<char*>(&b[i]),sizeof(b[i]));    
        }
        for(i=0;b[i].getNU()!=0;i++)
                ;
        M2=i;
        cin>>a1;
        switch(a1)
        {
        case 'a':
            {
                cout<<"\t\t\t请继续选择:"<<endl;
                cout<<"\t\t\t\t1.按学号查询信息"<<endl;
                cout<<"\t\t\t\t2.按姓名查询信息"<<endl;
                int x;
                cin>>x;
                switch(x)
                {
                case 1:Search1(b,M2);break;
                case 2:Search2(b,M2);break;
                default:cout<<"选择错误,请重新选择!"<<endl;
                }
            }
            break;
        case 'b':Insert(b,M2);break;
        case 'c':
            {
                file.close();
                Delete(b);
            }break;
        case 'd':Update1(b,M2);break;
        case 'e':Show(b);break;
        case 'f':
            {
                file.close();
                Save(b,M2);
                cout<<"保存文件成功!"<<endl;
                fstream file("class.txt",ios_base::in|ios_base::out|ios_base::app);
            };break;
        case 'g':{file.close();break;}
        default:cout<<"选择错误,请重新选择!"<<endl;
        }
    }while(a1!='g');
    return 0;
}

学生信息中的分数保存到文件时,以ASCll值显示,比如88在txt文件中显示成X,如何修改代码?
搜索更多相关主题的帖子: 管理系统 color 
2015-06-26 13:31
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:9 
回复 楼主 编程Samuel
输入字符串用你本来的file.write(),要输入数字或逻辑值时改用file<<
2015-06-28 13:57
快速回复:学生管理系统数据保存到文件的问题,请指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016546 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved