|
20鱼币
源码在这里,
主要目的就是以下三个
打印数据到屏幕
录入数据
退出程序
源码编译的时候没问题,但是一用就会出现错误,直接退出
下面是源码
- //学生档案管理
- #include <iostream>
- using namespace std;
- struct Archives //档案结构体
- {
- char *name;
- char *id;
- char sex;
- }student;
- int Print(FILE *fp,struct Archives *p);//输出文件中保存的学生档案
- int Input(FILE *fp);//输入学生档案至文件
- int main(int argc ,char *argv[])
- {
- char i;
- FILE *fp;
- struct Archives *p;
- p = &student;
-
- cout <<"请输入要选择的操作:"<<'\n' //操作选择
- <<"1.打印数据到屏幕"<<'\n'
- <<"2.录入数据"<<'\n'
- <<"3.退出程序"<<'\n'<<endl;
- cin >> i;
-
-
-
- while(i != '3')
- {
- if(i<'1' && i>'3')
- {
- cout << "请输入正确顺序!" <<endl;
- break;
- }
-
- if((fp = fopen("temp.txt","wr")) == NULL)
- {
- cout << "文件打开失败!" << endl;
- exit(EXIT_FAILURE);
- }
-
- switch(i)
- {
- case '1':
- Print(fp,p);
- break;
- case '2':
- Input(fp);
- break;
- case '3':
- fclose(fp);
- return 0;
- }
-
- cout <<"请输入要选择的操作:"<<'\n'
- <<"1.打印数据到屏幕"<<'\n'
- <<"2.录入数据"<<'\n'
- <<"3.退出程序"<< endl;
- cin >> i;
- }
-
-
- return 0;
- }
- int Print(FILE *fp,struct Archives *p)//输出文件中保存的学生档案
- {
- int i;
- if(fgetc(fp) == EOF) //对文件判断
- {
- cout << "该文件夹为空文件夹" <<endl;
- getchar();
- return 0;
- }
- rewind(fp); //将光标移动至文件开头
-
- while(feof(fp)) //输出文件内容
- {
- fscanf(fp,"%s,%s,%c",p->name,p->id,&p->sex);
- cout << "第"<< i << "位成员"<< endl;
- cout << "姓名:"<< p->name <<'\n'
- <<"id:" << p->id << '\n'
- <<"sex:" << p->sex << endl;
- }
-
- cout << "共" << i << "位成员" << endl;
- return 0;
- }
- int Input(FILE *fp) //输入学生档案至文件
- {
- char c;
-
- while(1)
- {
- struct Archives st; //输入学生信息
- cout <<"请输入数据:"<< endl;
- cout <<"姓名:" ;
- cin >> st.name;
- getchar();
- cout << "id:" ;
- cin >> st.id;
- getchar();
- cout << "性别:";
- cin >> st.sex;
- getchar();
-
- bool i = true; //是否保存
- while(i)
- {
- cout<< "是否保存数据类型?(Y/N)"<<endl;
- cin >> c;
-
- switch(c)
- {
- case 'y':
- case 'Y':
- i = false;
- fprintf(fp,"%s,%s,%c",st.name,st.id,st.sex);
- break;
- case 'N':
- case 'n':
- i = false;
- break;
- default:
- cout << "请输入正确字符!";
- break;
- }
- }
-
- i = true;
- while(i) //是否继续录入
- {
- cout <<"是否继续录入数据?(Y/N)";
- cin >> c;
-
- switch(c)
- {
- case 'y':
- case 'Y':
- i = false;
- break;
- case 'N':
- case 'n':
- i = false;
- return 0;
- default:
- cout << "请输入正确字符!";
- break;
- }
- }
-
-
- }
-
- return 0;
-
-
- }
复制代码
图片是报错的内容 |
-
|