📄 cpp1.cpp
字号:
//一、设计题目
// 学生基本信息管理系统
//二、主要内容
//设计一个学生基本信息管理系统程序,有数据录入、存储、显示,修改和删除功能。
//三、具体要求及应提交的材料
//1、设计一个学生类Student,包括姓名,学号,性别,籍贯,年龄,出生日期和住址,其中
// "出生日期"定义为一个"日期"类(具有属性:year(年),month(月),date(日))内嵌子对象。
//2、具有数据的录入、显示、保存、查询(按学号或姓名查询)、修改和删除功能。
//3、对Student类重载"=="运算符和"="运算符,"=="运算符判断两个Student类对象
// 的id属性是否相等;"="运算符实现Student类对象的赋值操作。
//4、对给出的程序源代码要给出各部分的详细注释。
//5、自己根据能力及需要添加相应功能模块,增强模拟系统功能。
//6、用I/O流对象引用作参数的成员函数实现文件存取,便于查询、修改和删除。 (用MFC完成也可以)
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#define STU class Student
STU *HEAD = NULL;/*链表的头指针*/
class CSheng_date
{
public:
int year;
int month;
int date;
};
//class Student1
//{
//public:
// char name1[20];
// long number1;
// char sex1;
// char jiguan1[30];
// int age1;
// CSheng_date chusheng_date1;
// char zhuzhi1[30];
//};
//class Student2
//{
//public:
// char name2[20];
// long number2;
// char sex2;
// char jiguan2[30];
// int age2;
// CSheng_date chusheng_date2;
// char zhuzhi2[30];
//};
class Student
{
public:
char name[20];
long number;
char sex;
char jiguan[30];
int age;
// CSheng_date chusheng_date;
char zhuzhi[30];
class Student *next;
// Student operator == (Student1,Student2);
// Student operator = (Student);
//public:
// Student();
// ~Student();
// void Setname(char *);
// char * Getname();
// long Getnumber();
// char * Getsex();
// char * Getjiguan();
// int Getage();
// int GetChusheng_date();
// char * Getzhuzhi();
};
//Student Student::operator ==(Student1,Student2)
//{
// Student1 S1;
// Student2 S2;
// long Snumber1,Snumber2;
// char name1[20],name2[20];
// int sex1,sex2;
// char jiguan1[30],jiguan2[30];
// int age1,age2;
// CSheng_date chusheng_date1,chusheng_date2;
// char zhuzhi1[30],zhuzhi2[30];
// return Student(S1.name1==S2.name2,S1.number1==S2.number2,S1.sex1==S2.sex2,
// S1.jiguan1==S2.jiguan2,S1.age1==S2.age2,//S1.chusheng_date1==S2.chusheng_date2,
// S1.zhuzhi1==S2.zhuzhi2);
//}
//Student Student::operator =(Student)
//{
// STU *p;
// long number;
// char name[20];
// int i=0,sex;
// char jiguan[30];
// int age;
// CSheng_date chusheng_date;
// char zhuzhi[30];
// return Student(p->number);
// return Student(p->name);
// return Student(p->sex = sex);
// return Student(p->jiguan[i]);
// return Student(p->age=age);//p->chusheng_date=chusheng_date,
// return Student(p->zhuzhi[i]);
//}
int main()
{
int FunNumber;
STU *create();
void AddStudent();
void output();
void SearchStudent();
void ChangeStudent();
void DelStudent();
cout<<"学生记录为空,输入1创建,0退出:";
cin>>FunNumber;
if (1 == FunNumber) HEAD = create();
else
{
cout<<"退出系统!";
exit(0);
}
if(NULL == HEAD) /*创建学生纪录不成功*/
{
cout<<"退出系统!";
exit(0);
}
do{
cout<<"************************"<<endl;
cout<<"|学生基本信息管理系统主菜单界面|"<<endl;
cout<<"| 1.录入学生信息 |"<<endl;
cout<<"| 2.显示学生信息 |"<<endl;
cout<<"| 3.查询学生信息 |"<<endl;
cout<<"| 4.修改学生信息 |"<<endl;
cout<<"| 5.删除学生信息 |"<<endl;
cout<<"| 6.安全退出系统 |"<<endl;
cout<<"| ->学生基本信息管理程序<- |"<<endl;
cout<<"************************"<<endl;
cout<<"请输入选择号(1--6):";
cin>>FunNumber;
switch(FunNumber)
{
case 1:
AddStudent();
break;
case 2:
output();
break;
case 3:
SearchStudent();
break;
case 4:ChangeStudent();
break;
case 5:DelStudent();
break;
case 6:
break;
default:
cout<<"输入错误!";
break;
}
}while(FunNumber!=6);
cout<<"退出系统!";
return 0;
}
STU *create()/*建立学生纪录,按学号从小到大插入学生信息*/
{
int num=0;/*学生个数*/
long Snumber = -1;
STU *p,*q,*find;
char name[20];
int i=0;
char sex;
char jiguan[30];
int age;
// CSheng_date chusheng_date,year,month,date;
char zhuzhi[30];
int Checknumber(const long);
cout<<"开始创建学生记录!";
cout<<"第"<<i+1<<"个学生:";
cout<<"请输入学号(为0时结束):";
cin>>Snumber;
while(Snumber < 0)
{
cout<<"输入错误,请输入学号(为0时结束):";
cin>>Snumber;
}
if (0 == Snumber) return NULL;
while( 0 != Snumber )
{
num++;
p = new STU;
p->number = Snumber;
cout<<"请输入姓名:";
cin>>name;
for(i=0;i<20;i++)
p->name[i] = name[i];
cout<<"请输入性别:";
cin>>sex;
p->sex = sex;
cout<<"请输入籍贯:";
cin>>jiguan;
for(i=0;i<30;i++)
p->jiguan[i]=jiguan[i];
cout<<"请输入年龄:";
cin>>age;
p->age=age;
// cout<<"请输入出生日期:";
// cin>>year>>month>>date;
// p->chusheng_date.year=year;
// p->chusheng_date.month=month;
// p->chusheng_date.date=date;
cout<<"请输入住址:";
cin>>zhuzhi;
for(i=0;i<30;i++)
p->zhuzhi[i]=zhuzhi[i];
if (1 == num)
{
q = HEAD = p;
q->next = NULL;
}
else
{
find = HEAD;
if(find->number> Snumber) /*插入头结点之前*/
{
HEAD = p;
p->next = find;
}
else
{
while((NULL != find->next) && (find->number < Snumber))
find = find->next;
if(NULL == find->next)/*插入链表尾部*/
{
q->next = p;
q = q->next;
q->next = NULL;
}
else/*插入p与p->next之间*/
{
p->next = find->next;
find->next = p;
}
}
}
cout<<"第"<<num+1<<"个学生:";
lp: cout<<"请输入学号(为0时结束):";
cin>>Snumber;
while (Snumber < 0)
{
cout<<"输入错误,请输入学号(为0时结束):";
cin>>Snumber;
}
if(0 == Checknumber(Snumber))
{
cout<<"输入错误!";
goto lp;
}
}
return HEAD;
}
void AddStudent()
{
int Checknumber(const long);
long Snumber;
STU *p,*find;
char name[20];
int i=0;
char sex;
char jiguan[30];
int age;
// CSheng_date year,month,date,chusheng_date;
char zhuzhi[30];
cout<<"请输入学号:";
cin>>Snumber;
while (Snumber <= 0)
{
cout<<"输入错误,请输入学号:";
cin>>Snumber;
}
// if (0 == Checknumber(Snumber))
// {
// cout<<"输入错误!";
// goto lp;
// }
p = new STU;
p->number = Snumber;
cout<<"请输入姓名:";
cin>>name;
for(i=0;i<20;i++)
p->name[i] = name[i];
cout<<"请输入性别:";
cin>>sex;
p->sex = sex;
cout<<"请输入籍贯:";
cin>>jiguan;
for(i=0;i<30;i++)
p->jiguan[i]=jiguan[i];
cout<<"请输入年龄:";
cin>>age;
p->age=age;
// cout<<"请输入出生日期:";
// cin>>year>>month>>date;
// p->chusheng_date.year=year;
// p->chusheng_date.month=month;
// p->chusheng_date.date=date;
cout<<"请输入住址:";
cin>>zhuzhi;
for(i=0;i<30;i++)
p->zhuzhi[i]=zhuzhi[i];
find = HEAD;
if(find->number > Snumber) /*插入头结点之前*/
{
HEAD = p;
p->next = find;
}
else
{
while((NULL != find->next) && (find->number < Snumber))
find = find->next;
if(NULL == find->next)/*插入链表尾部*/
{
find->next = p;
find = find->next;
find->next = NULL;
}
else/*插入p与p->next之间*/
{
p->next = find->next;
find->next = p;
}
}
cout<<"操作成功!"<<endl;
}
void output()
{
STU *p = HEAD;
FILE *fp;
char PutStyle,ch;
int i,len;
char StrNum[20];
// char name[20];
// char sex;
// char jiguan[30];
// int age;
// CSheng_date chusheng_date;
// char zhuzhi[30];
char filename[20];
if (NULL == HEAD )
{
cout<<"学生纪录为空,请先建立学生纪录!"<<endl;
return;
}
cout<<"输入f将输出存储在文件,输入s将输出在屏幕:";
cin>>PutStyle;
while(('f' != PutStyle) && ('s' != PutStyle))
{
cout<<"输入错误!";
cout<<"请重新输入,输入f将输出存储在文件,输入s将输出在屏幕:";
cin>>PutStyle;
}
if ('s' == PutStyle)
{
cout<<"name "<<"number "<<"sex "<<"jiguan "<<"age "<<"Chusheng_date "<<"zhuzhi ";
while(p!=NULL)
{
cout<<p->name;
cout<<p->number;
cout<<p->sex;
cout<<p->jiguan;
cout<<p->age;
// cout<<p->chusheng_date;
cout<<p->zhuzhi;
}
}
else
{
cout<<"请输入要存储信息的文件名:";
cin>>filename;
if (!(fp = fopen(filename,"w")))
cout<<"打开文件出错";
else
{
fputs(" name ",fp);
fputs(" number ",fp);
fputs(" sex ",fp);
fputs(" jiguan ",fp);
fputs(" age ",fp);
// fputs(" chusheng_date ",fp);
fputs(" zhuzhi \n",fp);
while(p!=NULL)
{
len = strlen(p->name);
for(i=1;i<=len;i++)
fputs(p->name,fp);
fputs(" ",fp);
fputs(" ",fp);
itoa(p->number,StrNum,10);
len = strlen(StrNum);
for(i=1;i<=len;i++)
fputs(StrNum,fp);
fputs(" ",fp);
fputs(" ",fp);
ch=p->sex+48;
fwrite(&ch,1,1,fp);
fputs(" ",fp);
fputs(" ",fp);
len = strlen(p->jiguan);
for(i=1;i<=len;i++)
fputs(p->jiguan,fp);
fputs(" ",fp);
// fputs(" ",fp);
// len = strlen(p->chusheng_date);
// for(i=1;i<=len;i++)
// fputs(p->chusheng_date.year,fp);
// fputs(" ",fp);
fputs(" ",fp);
len = strlen(p->zhuzhi);
for(i=1;i<=len;i++)
fputs(p->zhuzhi,fp);
fputs(" ",fp);
}
fclose(fp);
}
}
}
void SearchStudent()
{
long Snumber;
// char name[20];
// char sex;
// char jiguan[30];
// int age;
// int chusheng_date;
// char zhuzhi[30];
STU *p;
// STU *SearchNum(const long);
cout<<"请输入你要查找的学生的学号:";
cin>>Snumber;
// p = SearchNum(Snumber);
// if(NULL == p)
if(Snumber<0)
{
cout<<"该学生不存在";
return;
}
else
{
cout<<"你要查找的学生的信息如下:"<<endl;
cout<<"name "<<"number "<<"sex "<<"jiguan "<<"age "<<"chusheng_date "<<"zhuzhi ";
cout<<p->name;
cout<<p->number;
cout<<p->sex;
cout<<p->jiguan;
cout<<p->age;
// cout<<p->chusheng_date;
cout<<p->zhuzhi;
}
}
void ChangeStudent()
{
long Snumber;
// STU *SearchNum(const long);
STU *p;
// char name[20];
char changesex;
// char jiguan[30];
int changeage;
// int changechusheng_date;
// char zhuzhi[30];
int FunNumber;
cout<<"请输入你要更改的学生的学号:";
cin>>Snumber;
// p = SearchNum(Snumber);
// if(NULL == p)
if(Snumber<0)
{
cout<<"该学生不存在";
return;
}
lp: cout<<"***************************"<<endl;
cout<<"| 更改学生信息 |"<<endl;
cout<<"| 1.修改姓名 |"<<endl;
cout<<"| 2.修改性别 |"<<endl;
cout<<"| 3.修改籍贯 |"<<endl;
cout<<"| 4.修改年龄 |"<<endl;
// cout<<"| 5.修改出生日期 |"<<endl;
cout<<"| 6.修改住址 |"<<endl;
cout<<"| 0.取消操作 |"<<endl;
cout<<"***************************"<<endl;
cout<<"请输入你需要的操作:";
cin>>FunNumber;
switch(FunNumber)
{
case 1:
cout<<"请输入姓名:";
cin>>p->name;
break;
case 2:
cout<<"请输入性别:";
cin>>changesex;
p->sex = changesex;
break;
case 3:
cout<<"请输入籍贯:";
cin>>p->jiguan;
break;
case 4:
cout<<"请输入年龄:";
cin>>changeage;
p->age= changeage;
break;
// case 5:
// cout<<"请输入出生日期:";
// cin>>changechusheng_date;
// p->chusheng_date= changechusheng_date;
// break;
case 6:
cout<<"请输入住址:";
cin>>p->zhuzhi;
break;
case 0:
return;
break;
default:
cout<<"输入错误!"<<endl;
goto lp;
break;
}
cout<<"操作已成功!"<<endl;
}
void DelStudent()
{
long Snumber;
char name[20];
char sex;
char jiguan[30];
int age;
// int chusheng_date;
char zhuzhi[30];
int i;
char sure;
// STU *SearchNum(const long);
STU *p,*find = HEAD;
cout<<"请输入你要删除学生的学号:";
cin>>Snumber;
// p = SearchNum(Snumber);
// if(NULL == p)
if(Snumber<0)
{
cout<<"该学生不存在";
return;
}
else
{
cout<<"该学生的信息如下:"<<endl;
cout<<"name "<<"number "<<"sex "<<"jiguan "<<"age "<<"Chusheng_date "<<"zhuzhi ";
cout<<p->name;
cout<<p->number;
cout<<p->sex;
cout<<p->jiguan;
cout<<p->age;
// cout<<p->chusheng_date;
cout<<p->zhuzhi;
cout<<"确实要删掉吗?(y,n):";
cin>>sure;
if (('y' == sure) || ('Y' == sure))
{
if (HEAD == p) HEAD = p->next;
else
{
while(p != find->next)
find = find->next;
find->next = p->next;
}
delete p;
cout<<"操作已成功!"<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -