⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 student- system.txt

📁 学生管理系统
💻 TXT
📖 第 1 页 / 共 2 页
字号:
readstr(fp, c); 
strcpy(p->te.XD, c); 
p=p->next; 
} 
fclose(fp); 
return p; 
} 
void List::dispnode(nodetype* p) //显示一个学生的所有信息 
{ 
if(p!=NULL) 
{ 
dispperson(p); 
dispscore(p); 
disptelephone(p); 
} 
} 
void List::dispname() //显示所有学生姓名 
{ 
nodetype* p=head; 
cout<<"现有的学生: "<<endl; 
if(p==NULL) 
cout<<"没有任何学生数据"<<endl; 
while(p!=NULL) 
{ 
cout<<"姓名: "<<p->pe.name; 

p=p->next; 
} 
} 
int List::listlen() //返回链表长度 
{ 
int i=0; 
nodetype* p=head; 
while(p!=NULL) 
{ 
p=p->next; 
i++; 
} 
return i; 
} 
nodetype* List::findnode (int i) //通过查找序号返回节点的指针 
{ 
nodetype* p=head; 
int j=1; 
if( i>listlen()||i<=0 ) // i 上溢或下溢 
return NULL; 
else 
{ 
while( p!=NULL && j<i ) //查找第 i 个节点并由 p 指向该节点 
{ 
j++; 
p=p->next; 
} 
return p; 
} 
} 
nodetype* List::find(char c[]) //通过查找姓名返回节点的指针 
{ 
nodetype* p=head; 
int j=1; 
strcat(c, "\n"); //从外部读入的字符串末尾都带了一个换行符 
while( p!=NULL && !(check(c, p->pe.name))) //查找第 i 个节点并由 p 指向该节点 
{ 
j++; 
p=p->next; 
} 
return p; 
} 
int List::find2(char c[]) //通过查找姓名返回节点的序号 
{ 
nodetype* p=head; 
int j=1; 
strcat(c, "\n"); //从外部读入的字符串末尾都带了一个换行符 
while( p!=NULL && !(check(c, p->pe.name))) //查找第 i 个节点并由 p 指向该节点 
{ 
j++; 
p=p->next; 
} 
return j; 
} 
nodetype* List::insnode(int i) 
{ 
nodetype *h=head, *p, *s; 
s=(nodetype*)malloc(sizeof(nodetype)); //创建节点 s 
s->next=NULL; 
if(i==0) //i=0 时 s 作为该单链表的第一个节点 
{ 
s->next = h; 
h=s; //重新定义头节点 
} 
else 
{ 
p=findnode(i); //查找第 i 个节点,并由 p 指向该节点 
if(p!=NULL) 
{ 
s->next=p->next; 
p->next=s; 
} 
else cout<<"输入的 i 值不正确"<<endl; 
} 
head=h; 

return s; 
} 
void List::delnode(int i) //删除第 i 个节点 
{ 
nodetype *h=head, *p=head, *s; 
int j=1; 
if(i==1) //删除第一个节点 
{ 
h=h->next; 
free(p); 
} 
else 
{ 
p=findnode(i-1); //查找第 i-1 个节点,并由 p 指向这个节点 
if(p!=NULL && p->next!=NULL) 
{ 
s=p->next; // s 指向要删除的节点 
p->next=s->next; 
free(s); 
} 
else 
cout<<"输入的 i 值不正确"<<endl; 
} 
head=h; 
} 
void List::editperson(nodetype* p) 
{ 
char c[100]; 
cout<<"请输入学号: "<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->pe.num, c); 
cout<<"请输入姓名: "<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->pe.name, c); 
cout<<"请输入性别:"<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->pe.sex, c); 
cout<<"请输入生日(格式举例:2007-6-1): "<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->birthday, c); 
cout<<"请输入民族:"<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->pe.MZ, c); 
cout<<"请输入国籍:"<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->pe.GJ, c); 
cout<<"请输入学历:"<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->pe.XL, c); 

cout<<"请输入家庭住址(例如:河南洛阳市洛龙路71号"<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->address, c); 

cout<<"编辑个人信息完成!"<<endl; 

dispperson(p); 
} 
void List::editscore(nodetype* p) 
{ 
char a[50]; 

cout<<"请输入vc成绩: "<<endl; 
cin>>a; 
strcat(a, "\n"); 
strcpy(p->sc.vc, a); 

cout<<"请输入英语成绩: "<<endl; 
cin>>a; 
strcat(a, "\n"); 
strcpy(p->sc.english, a); 

cout<<"请输入数学成绩: "<<endl; 
cin>>a; 
strcat(a, "\n"); 
strcpy(p->sc.math, a); 

cout<<"请输入vb成绩: "<<endl; 
cin>>a; 
strcat(a, "\n"); 
strcpy(p->sc.vb, a); 

cout<<"编辑学科成绩完成!"<<endl; 

dispscore(p); 
} 
void List::edittelephone(nodetype* p) 
{ 
char c[50]; 
cout<<"请输入手机号码: "<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->te.SJ, c); 

cout<<"请输入家庭电话号码: "<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->te.JD, c); 

cout<<"请输入学校电话号码: "<<endl; 
cin>>c; 
strcat(c, "\n"); 
strcpy(p->te.XD, c); 

cout<<"编辑联系方式完成!"<<endl; 

disptelephone(p); 
} 
void List::dispperson(nodetype* p) 
{ 
cout<<"姓名: "<<p->pe.name; 
cout<<"性别: "<<p->pe.sex; 
cout<<"民族: "<<p->pe.MZ; 
cout<<"国籍: "<<p->pe.GJ; 
cout<<"学历: "<<p->pe.XL; 
cout<<"出生日期: "<<p->birthday; 
cout<<"家庭住址: "<<p->address; 
} 
void List::dispscore(nodetype* p) 
{ 

cout<<"vc成绩: "<<p->sc.vc; 
cout<<"英语成绩: "<<p->sc.english; 
cout<<"数学成绩: "<<p->sc.math; 
cout<<"vb成绩: "<<p->sc.vb; 
} 
void List::disptelephone(nodetype* p) 
{ 
cout<<"手机号码是: "<<p->te.SJ; 
cout<<"家庭电话是: "<<p->te.JD; 
cout<<"学校电话是: "<<p->te.XD; 
} 
void List::help() 
{ 
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() 
{ 
nodetype *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); 
} 
} 
} 
"List.h" 
// List.h: 类的所有成员都在头文件里声明 
#include <iostream.h> 
#include <malloc.h> // 用到申请内存函数 malloc() 和释放内存函数 free() 
#include <string.h> // 字符串处理 
#include <stdio.h> // 文件操作 
#include <stdlib.h> // system("cls") 

class address //家庭地址 
{ 
public: 
char city[10]; //城市 
char town[10]; //县城 
char village[10]; //乡镇 
}; 

class telephone //联系方式 
{ 
public: 
char SJ[50]; //手机 
char JD[30]; //家庭电话 
char XD[30]; //学校电话 
}; 
class person //个人信息 
{ 
public: 
char name[20]; //名字 
char num[20]; //学号 
char sex[10] ; //性别 
char MZ[16]; //民族 
char GJ[17]; //国籍 
char XL[19]; //学历 
}; 
struct score //成绩 
{ 
char english[20]; 
char vc[20]; 
char math[20]; 
char vb[20]; 
}; 

//定义节点的类型 
typedef class linknode 
{ 
public: 
char address[100]; //地址 
char birthday[100]; //出生日期 
class person pe;//个人信息 
struct score sc; 
class telephone te; //联系方式 
bool flag; 
class linknode* next; 
}nodetype; 

class List 
{ 
nodetype* head; 

public: 
List(); 
List::~List(); 

linknode* creatlist(int); //创建链表 
int listlen(); //返回链表长度 
nodetype* findnode(int); //通过查找序号返回节点的指针 
nodetype* find(char c[]); //通过查找姓名返回节点的指针 
int find2(char c[]); //通过查找姓名返回节点的序号 
nodetype* insnode(int); //插入节点 
void delnode(int); //删除节点 
nodetype* load(); //初始化:从外部读入数据 
void readstr(FILE *f,char *string); //读行函数 
bool check(char *a, char *b); //对比两个字符串是否相等 
void help(); //显示帮助菜单 

void editperson(nodetype*); //编辑个人说明 
void editscore(nodetype*); //编辑学科成绩 
void edittelephone(nodetype*); //编辑联系方式 
void dispname(); //显示所有学生姓名 
void dispnode(nodetype* p); //显示一个学生的所有信息 
void dispperson(nodetype*); //显示一个学生的个人说明 
void dispscore(nodetype*); //显示一个学生的学科成绩 
void disptelephone(nodetype*); //显示一个学生的联系方式 

}; 
"main.cpp" 
#include "operater.h" 
static char passwords[6]="12345"; 
void main() 
{ 
Operater O1; 
char pass[5]; 
do{ 
O1.welcome(); 
cin>>pass; 
if(strcmp(pass,"A")==0) 
exit(1); 
}while(strcmp(pass,passwords)!=0); 
O1.Loop(); 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -