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

📄 cpp1.cpp

📁 学生基本信息管理系统 用于课程设计 语言:C
💻 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 + -