|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}
|
|