数据追加方面还待解决。马马虎虎写的。以后改进。 #include<iostream> #include<fstream> using namespace std; /*默认文件是student.data"*/ #define N 100 struct Course { int num; char name[100]; char mayor[100]; char kind[100]; int time; int fen; }; Course course[N]; int n; Course temp; //输入到文件 void InputToFile() { //如果不存在则创建 int i; fstream fs; fs.open("student.data",ios::out); for(i=0;i<n;i++) { temp=course[i]; fs<<temp.num<<" "<<temp.name<<" "<<temp.mayor<<" "<<temp.kind<<" "<<temp.time<<" "<<temp.fen<<" "; } fs.close(); } void OutputFromFile() { fstream onfile; onfile.open("student.data",ios::in); if(!onfile) { cout<<"文件不存在"<<endl; return ; } n=0; while(onfile>>course[n].num) { onfile>>course[n].name>>course[n].mayor>>course[n].kind>>course[n].time>>course[n].fen; n++; } onfile.close(); } //显示 void Display() { int i; OutputFromFile(); if(n==0) {cout<<"暂无记录"<<endl;return;} cout<<"课程号 课程名 所属专业 性质 学时 学分"<<endl; for(i=0;i<n;i++) { cout<<course[i].num<<" "<<course[i].name<<" "<<course[i].mayor<<" "<<course[i].kind<<" "<<course[i].time<<" "<<course[i].fen<<endl; } } //增加数据 void AddData() { cout<<"请按(课程号 课程名 所属专业 性质 学时 学分)格式输入一条记录"<<endl; cout<<"当学号为-1时退出"<<endl; n=0; do { cin>>temp.num; if(temp.num==-1) break; cin>>temp.name>>temp.mayor>>temp.kind>>temp.time>>temp.fen; // InputToFile(0); course[n++]=temp; }while(true); InputToFile(); } //修改数据 void ModifyData() { cout<<"请输入你要修改的课程号"<<endl; cin>>temp.num; OutputFromFile(); int i,t; t=-1; for(i=0;i<n;i++) { if(temp.num==course[i].num) {t=1;break;} } if(t==-1) {cout<<"不存在该课程号"<<endl;return;} cout<<"查找成功,请输入你要修成的信息,按(课程号 课程名 所属专业 性质 学时 学分)格式输入"<<endl; cin>>course[i].num>>course[i].name>>course[i].mayor>>course[i].kind>>course[i].time>>course[i].fen; for(i=0;i<n;i++) { temp=course[i]; InputToFile(); } } //查询数据 void Search() { OutputFromFile(); int i,choose; cout<<"1.按课程名查询"<<endl; cout<<"other.按专业查询"<<endl; cin>>choose; if(choose==1) { cout<<"请输入课程名"<<endl; cin>>temp.name; for(i=0;i<n;i++) { if(strcmp(temp.name,course[i].name)==0) { temp=course[i]; break; } } } else { cout<<"请输入专业"<<endl; cin>>temp.mayor; for(i=0;i<n;i++) { if(strcmp(temp.mayor,course[i].mayor)==0) { temp=course[i]; break; } } } if(i==n) {cout<<"无此信息"<<endl;return;} else { cout<<"查找成功"<<endl; cout<<temp.num<<" "<<temp.name<<" "<<temp.mayor<<" "<<temp.kind <<" "<<temp.time<<" "<<temp.fen<<endl; } } int main() { int choose; do { cout<<"1.浏览数据"<<endl; cout<<"2.增加数据"<<endl; cout<<"3.修改数据"<<endl; cout<<"4.查询数据"<<endl; cout<<"other.退出"<<endl; cin>>choose; if(choose==1) Display(); else if(choose==2) AddData(); else if(choose==3) ModifyData(); else if(choose==4) Search(); else break; }while(true); return 0; }