📄 david.cpp
字号:
strcat(a, "\n");
strcpy(p->sc.computer, a);
cout<<"请输入数学成绩: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.maths, a);
cout<<"请输入物理成绩: "<<endl;
cin>>a;
strcat(a, "\n");
strcpy(p->sc.physics, a);
cout<<"编辑学科成绩完成!"<<endl;
dispscore(p);
}
void List::editroom(LinkList* p) //编辑学生宿舍信息
{
char c[20];
cout<<"请输入宿舍地址: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->ro.room_addr, c);
cout<<"请输入宿舍号码: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->ro.room_num, c);
cout<<"请输入宿舍电话: "<<endl;
cin>>c;
strcat(c, "\n");
strcpy(p->ro.room_tel, c);
cout<<"编辑宿舍信息完成!"<<endl;
disproom(p);
}
void List::dispdata(LinkList* p) //显示学生档案
{
cout<<"姓名: "<<p->name;
cout<<"学号: "<<p->number;
cout<<"出生日期: "<<p->da.birthday;
cout<<"性别: "<<p->da.sex;
cout<<"家庭电话: "<<p->da.JD;
cout<<"手机号码: "<<p->da.SJ;
cout<<"家庭住址: "<<p->da.address;
cout<<"学历: "<<p->da.XL;
}
void List::dispscore(LinkList* p) //显示学生成绩
{
cout<<"英语成绩: "<<p->sc.english;
cout<<"计算机成绩: "<<p->sc.computer;
cout<<"数学成绩: "<<p->sc.maths;
cout<<"物理成绩: "<<p->sc.physics;
cout<<" 总 分: "<<atof(p->sc.english)+atof(p->sc.computer)+atof(p->sc.maths)+atof(p->sc.physics)<<endl;
cout<<" 平均分: "<<(atof(p->sc.english)+atof(p->sc.computer)+atof(p->sc.maths)+atof(p->sc.physics))/4<<endl;
}
void List::disproom(LinkList* p) //显示学生宿舍信息
{
cout<<"宿舍地址是: "<<p->ro.room_addr;
cout<<"宿舍号码是: "<<p->ro.room_num;
cout<<"宿舍电话是: "<<p->ro.room_tel;
}
void List::menu()
{
cout<<endl<<endl;
cout<<"*********************************************************"<<endl;
cout<<" 1: 编辑个人档案"<<endl;
cout<<" 2: 编辑学科成绩"<<endl;
cout<<" 3: 编辑宿舍信息"<<endl;
cout<<" 4: 显示个人档案"<<endl;
cout<<" 5: 显示学科成绩"<<endl;
cout<<" 6: 显示宿舍信息"<<endl;
cout<<" 7: 显示该学生所有信息"<<endl;
cout<<" 8: 主菜单"<<endl;
cout<<" 9: 返回上一级菜单"<<endl;
cout<<"*********************************************************"<<endl;
}
List::~List()
{
LinkList *pa=head, *pb;
if(pa!=NULL)
{
pb=pa->next;
if(pb==NULL)
free(pa);
else
{
while(pb!=NULL)
{
free(pa);
pa=pb;
pb=pb->next;
}
free(pa);
}
}
}
class Odararor //定义一个操作类
{
List L1;
public:
void Loop(); //主循环
void display(); //显示菜单
};
void Odararor::display()
{
cout<<endl<<endl;
cout<<"**************************** 学生管理系统 **************************"<<endl;
cout<<" 1: 添加一个学生信息"<<endl;
cout<<" 2: 删除一个学生信息"<<endl;
cout<<" 3: 显示所有学生的姓名"<<endl;
cout<<" 4: 按学生的姓名查找"<<endl;
cout<<" 5: 按学生的学号查找"<<endl;
cout<<" 6: 按姓名对单个学生进行编辑"<<endl;
cout<<" 7: 主菜单"<<endl;
cout<<" 8: 保存数据"<<endl;
cout<<" 0: 退出系统"<<endl;
cout<<"********************************************************************"<<endl;
}
void Odararor::Loop()
{
List L1; //List 对象
char ch[20];
LinkList *p, *head;
int i; //存放节点序号
p=L1.load(); //初始化:从外部读入数据创建链表
head=p;
display();
while(1)
{
cout<<endl<<endl;
cout<<"请输入选择(主菜单--> 7 ): "<<endl;
cin>>ch;
system("cls");
if(L1.check(ch, "1"))
{
p=L1.insnode(0);
head=p;
system("cls");
cout<<endl;
cout<<"************** 添加一个学生信息 ******************"<<endl;
cout<<"下面输入个人档案: "<<endl;
L1.editdata(p);
cout<<"下面输入学科成绩: "<<endl;
L1.editscore(p);
cout<<"下面输入宿舍信息: "<<endl;
L1.editroom(p);
}
if(L1.check(ch, "2"))
{
system("cls");
cout<<endl;
cout<<"************** 删除一个学生信息 ******************"<<endl;
L1.dispname();
cout<<"请输入学生姓名: "<<endl;
cin>>ch;
i=L1.find2(ch);
L1.delnode(i);
cout<<endl<<ch<<" 已经被删除!";
}
if(L1.check(ch, "3"))
{
system("cls");
cout<<endl;
cout<<"************** 显示所有学生姓名 ******************"<<endl;
cout<<"文件中有"<<L1.listlen()<<"条记录!"<<endl;
L1.dispname();
}
if(L1.check(ch, "4"))
{
system("cls");
cout<<endl;
cout<<"*************** 按学生姓名查找 ******************"<<endl;
cout<<"请输入要查找学生的姓名:";
cin>>ch;
p=L1.find(ch);
L1.dispnode(p);
}
if(L1.check(ch, "5"))
{
system("cls");
cout<<endl;
cout<<"************** 按学生学号查找 ******************"<<endl;
cout<<"请输入要查找学生的学号: "<<endl;
cin>>ch;
p=L1.find3(ch);
L1.dispnode(p);
}
if(L1.check(ch, "6"))
{
char c[10];
system("cls");
cout<<endl;
cout<<"************** 按姓名对单个学生进行编辑 ******************"<<endl;
L1.dispname();
cout<<"请输入学生姓名: "<<endl;
cin>>c;
p=L1.find(c);
system("cls");
cout<<endl<<endl;
cout<<"*********************************************************"<<endl;
cout<<" 1: 编辑个人档案"<<endl;
cout<<" 2: 编辑学科成绩"<<endl;
cout<<" 3: 编辑宿舍信息"<<endl;
cout<<" 4: 显示个人档案"<<endl;
cout<<" 5: 显示学科成绩"<<endl;
cout<<" 6: 显示宿舍信息"<<endl;
cout<<" 7: 显示该学生所有档案"<<endl;
cout<<" 8: 主菜单"<<endl;
cout<<" 9: 返回上一级菜单"<<endl;
cout<<"*********************************************************"<<endl;
while(1)
{
cout<<endl<<endl;
cout<<"请输入选择(主菜单--> 8 ): "<<endl;
cin>>c;
system("cls");
if(L1.check(c, "1"))
{
system("cls");
cout<<endl;
cout<<"************** 编辑个人档案 ******************"<<endl;
L1.editdata(p);
}
else if(L1.check(c, "2"))
{
system("cls");
cout<<endl;
cout<<"************** 编辑学科成绩 ******************"<<endl;
L1.editscore(p);
}
else if(L1.check(c, "3"))
{
system("cls");
cout<<endl;
cout<<"************** 编辑宿舍信息 ******************"<<endl;
L1.editroom(p);
}
else if(L1.check(c, "4"))
{
system("cls");
cout<<endl;
cout<<"************** 显示个人档案 ******************"<<endl;
L1.dispdata(p);
}
else if(L1.check(c, "5"))
{
system("cls");
cout<<endl;
cout<<"************** 显示学科成绩 ******************"<<endl;
L1.dispscore(p);
}
else if(L1.check(c, "6"))
{
system("cls");
cout<<endl;
cout<<"************** 显示宿舍信息 ******************"<<endl;
L1.disproom(p);
}
else if(L1.check(c, "7"))
{
system("cls");
L1.dispnode(p);
}
else if(L1.check(c, "8"))
{
system("cls");
L1.menu();
}
else if(L1.check(c, "9"))
{
display();
break; //用 break 跳出本循环,不要用 return ,return 是退出程序
}
}
}
if(L1.check(ch, "7"))
{
display();
}
if(L1.check(ch, "8")) //保存数据
{
FILE *fp;
if((fp=fopen("student.txt", "w"))==NULL)
{
cout<<"打开文件失败"<<endl;
return;
}
int i;
char t[255];
sprintf(t, "The Length Of Link: %d\n", L1.listlen()); //将 L1.listlen() 赋予字符串中的数字
fputs(t, fp);
strcpy(t, "\n");
fputs(t, fp);
p=L1.findnode(1); //将链表头指针赋予 p
for(i=0; i<L1.listlen(); i++)
{
fputs(p->name, fp); //输出姓名
fputs(p->number, fp); //输出学号
fputs(p->da.birthday, fp); //输出生日
fputs(p->da.sex, fp); //输出性别
fputs(p->da.JD, fp); //输出家庭电话
fputs(p->da.SJ, fp); //输出手机号码
fputs(p->da.address, fp); //输出地址
fputs(p->da.XL, fp); //输出学历
fputs(p->sc.computer, fp); //输出计算机成绩
fputs(p->sc.english, fp); //输出英语成绩
fputs(p->sc.maths, fp); //输出数学成绩
fputs(p->sc.physics, fp); //输出物理成绩
fputs(p->ro.room_addr, fp); //输出宿舍地址
fputs(p->ro.room_num, fp); //输出宿舍号码
fputs(p->ro.room_tel, fp); //输出宿舍电话
fputs(t, fp);
p=p->next;
}
p=head;
fclose(fp);
}
else if(L1.check(ch, "0"))
return;
}
return;
}
void main()
{
Odararor O1;
O1.Loop();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -