📄 student- system.txt
字号:
学生成绩管理系统,C++源代码
"operater.cpp"
#include "operater.h"
void Operater::welcome()
{
cout<<endl<<endl<<endl<<endl<<endl<<endl;
cout<<" 欢 迎 进 入 学 生 信 息 系 统 "<<endl<<endl<<endl<<endl;
cout<<" 制作人:***"<<endl<<endl<<endl<<endl;
cout<<" 请输入密码或输入A退出:\n\n\n ";
}
void Operater::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<<"0: 退出系统"<<endl;
cout<<"********************************************************************"<<endl;
}
void Operater::Loop()
{
List L1; //List 对象
char ch[20];
nodetype *p, *head;
int i; //存放节点序号
p=L1.load(); //初始化:从外部读入数据创建链表
head=p;
display();
while(1)
{
cout<<endl<<endl;
cout<<"请输入选择(帮助选项--> 6 ): "<<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.editperson(p);
cout<<"下面输入学科成绩: "<<endl;
L1.editscore(p);
cout<<"下面输入联系方式: "<<endl;
L1.edittelephone(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);
}
if(L1.check(ch, "3"))
{
system("cls");
cout<<endl;
cout<<"************** 显示所有学生姓名 ******************"<<endl;
L1.dispname();
}
if(L1.check(ch, "4"))
{
system("cls");
cout<<endl;
cout<<"************** 根据姓名显示单个学生所有信息 ******************"<<endl;
L1.dispname();
cout<<"请输入学生姓名: "<<endl;
cin>>ch;
p=L1.find(ch);
L1.dispnode(p);
}
if(L1.check(ch, "6"))
{
display();
}
if(L1.check(ch, "7")) //保存数据
{
FILE *fp;
if((fp=fopen("student.txt", "w"))==NULL)
{
cout<<"打开文件失败"<<endl;
return;
}
int i;
char t[255];
//将 L1.listlen() 赋予字符串中的数字
sprintf(t, "The Length Of Link: %d\n", 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->address, fp); //输出地址
fputs(p->birthday, fp); //输出生日
fputs(p->pe.num, fp); //输出学号
fputs(p->sc.english, fp); //输出英语成绩
fputs(p->sc.vc, fp); //输出C++成绩
fputs(p->sc.math, fp); //输出数学成绩
fputs(p->sc.vb, fp); //输出vb成绩
fputs(p->pe.name, fp); //输出姓名
fputs(p->pe.sex, fp); //输出性别
fputs(p->pe.GJ, fp); //输出国籍
fputs(p->pe.MZ, fp); //输出民族
fputs(p->pe.XL, fp); //输出学历
fputs(p->te.SJ, fp); //输出手机
fputs(p->te.JD, fp); //输出家庭电话
fputs(p->te.XD, fp); //输出学校电话
fputs(t, fp);
p=p->next;
}
p=head;
fclose(fp);
}
if(L1.check(ch, "5"))
{
char c[20];
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<<"请输入选择(帮助选项--> 6 ): "<<endl;
cin>>c;
system("cls");
if(L1.check(c, "1"))
{
system("cls");
cout<<endl;
cout<<"************** 编辑个人信息 ******************"<<endl;
L1.editperson(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.edittelephone(p);
}
else if(L1.check(c, "4"))
{
system("cls");
cout<<endl;
cout<<"************** 显示个人信息 ******************"<<endl;
L1.dispperson(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.disptelephone(p);
}
else if(L1.check(c, "7"))
{
system("cls");
cout<<endl;
cout<<"7: 显示该学生所有信息"<<endl;
L1.dispnode(p);
}
else if(L1.check(c, "8"))
{
cout<<"8: 帮助菜单"<<endl;
cout<<endl;
system("cls");
L1.help();
}
else if(L1.check(c, "9"))
{
cout<<"9: 返回上一级菜单"<<endl;
cout<<endl;
display();
break; //用 break 跳出本循环,不要用 return ,return 是退出程序
}
}
}
else if(L1.check(ch, "0"))
return;
}
return;
}
"operater.h"
#include <iostream.h> // cin 及 cout
#include <string.h> // strcpy(): 字符串复制
#include <stdlib.h> // system("cls")
#include <stdio.h> // 文件操作
#include "list.h" // 我们要创建类 List 的对象和节点指针,所以要把类的头文件包含进来
class Operater
{
List L1;
public:
void welcome();//欢迎登录界面
void display();//显示菜单
void Loop(); //主循环
};
"List.cpp"
#include "list.h"
List::List()
{
head = NULL;
}
bool List::check(char *a, char *b) //对比两个字符串是否相等
{
int i;
int j=strlen(b);
for(i=0; i<j; i++)
{
if(*a==*b)
{
a++;
b++;
}
else
return 0;
}
return 1;
}
nodetype* List::creatlist (int n) //创建链表
{
nodetype *h=NULL, *s, *t;
int i=1;
for(int j=0; j<n; j++)
{
if(i==1) //创建第一个节点
{
h=(nodetype*)malloc(sizeof(nodetype));
h->next=NULL;
t=h;
}
else //创建其余节点
{
s=(nodetype*)malloc(sizeof(nodetype));
s->next=NULL;
t->next=s;
t=s; //t 始终指向生成的单链表的最后一个节点
}
i++;
}
head=h;
return h;
}
void List::readstr(FILE *f,char *string)
{
do
{
// 先读入一行文本
fgets(string, 255, f); //fgets(): 从文件 f 读入长度为 255-1 的字符串
// 并存入到 string 中
} while ((string[0] == '/') || (string[0] == '\n'));
return;
}
nodetype* List::load()
{
FILE *fp;
nodetype *p;
char c[255];
int num;
if((fp=fopen("student.txt", "r"))==NULL)
{
cout<<"打开文件失败"<<endl;
return 0;
}
readstr(fp, c);
sscanf(c, "The Length Of Link: %d", &num); //获取链表长度
p=creatlist(num); //创建链表
for(int i=0; i<num; i++)
{
readstr(fp, c);
strcpy(p->address, c);
readstr(fp, c);
strcpy(p->birthday, c);
readstr(fp, c);
strcpy(p->pe.num, c);
readstr(fp, c);
readstr(fp, c);
strcpy(p->sc.vc, c);
readstr(fp, c);
strcpy(p->sc.english, c);
readstr(fp, c);
strcpy(p->sc.math, c);
readstr(fp, c);
strcpy(p->sc.vb, c);
strcpy(p->pe.name, c);
readstr(fp, c);
strcpy(p->pe.sex, c);
readstr(fp, c);
strcpy(p->pe.GJ, c);
readstr(fp, c);
strcpy(p->pe.MZ, c);
readstr(fp, c);
strcpy(p->pe.XL, c);
readstr(fp, c);
strcpy(p->te.SJ, c);
readstr(fp, c);
strcpy(p->te.JD, c);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -