首页 > 代码库 > c++大作业--学籍管理系统--

c++大作业--学籍管理系统--

1.题目描述

学籍管理系统:
根据信息管理系统的业务流程、要求以及所要实现的目标,完成以下功能:
(1)建立学生档案的管理和维护。实现计算机自动化管理体制。
(2)建立学生成绩管理机制,在计算机的支持下快速的完成学生成绩的查询和修改。
(3)建立课程设置管理,在计算机的支持下实现课程的添加、修改。
(4)建立班级设置管理,在计算机的支持下实现班级的添加、删除和修改。
(5)实现系统的权限设置管理,保证系统安全性。(登录密码输错3次不允许登录)

(6)使用姓名学号查找学生信息。

(7)将学生信息保存在文件中。
2.分析思路

使用类来储存学生信息,实现学生信息的管理修改。

3. 输入:

1,密码的设置输入及登录输入。

2,功能选择的输入。

3,学生信息输入

void sr()                   //////初始化输入学生信息 
   {  
       cout<<"请输入姓名"; 
       cin>>xm; 
        cout<<"请输入入学日期中间用空格隔开"; 
        time.shuru(); 
               ll=shurupanduan(time.year,time.month,time.day);
               if(ll==0)
                       time.shuru();  
       cout<<"请输入班级"; 
       cin>>bj; 
        cout<<"请输入课程(5门)中间用空格隔开"; 
       for(int i=0;i<5;i++) 
              {
                     cin>>kc[i];
                     for(intj=0;j<i;j++)
                     {
                            while(kc[i]==kc[j])
                            {
                                   cout<<"您已经选过该课程请重新输入"<<endl;
                                   cin>>kc[i];
                            }
                     }
              }


4.输出:

1,学生信息的输出。

2,学生信息的文件储存。

5.程序代码:

#include<iostream> 
#include <string> 
#include<conio.h>
#include<iomanip> 
#include<time.h>
# include<fstream>
void bangzhu();
void bcxx(int);
void dqsj();
bool pdxhcf(int,int);
int shurupanduan(int,int,int);
int runnian(int );
using namespace std; 
  struct sj 
   {
 
  intyear,month,day;                            ////////时间结构体 
 void shuru() 
 {cin>>year>>month>>day; 
 } 
  }; 
 class student                                 ////////////学生类 
 { 
 
        
 public : 
         string xm,kc[5]; 
   int bj,xh,cj[5],ll; 
   sj time;
       voidsrxhh()
       {
              cout<<"请输入学号";
       cin>>xh;
       }
   
   void sr()                   //////初始化输入学生信息 
   {  
       cout<<"请输入姓名"; 
       cin>>xm; 
        cout<<"请输入入学日期中间用空格隔开"; 
        time.shuru(); 
               ll=shurupanduan(time.year,time.month,time.day);
               if(ll==0)
                       time.shuru();  
       cout<<"请输入班级"; 
       cin>>bj; 
        cout<<"请输入课程(5门)中间用空格隔开"; 
       for(int i=0;i<5;i++) 
              {
                     cin>>kc[i];
                     for(intj=0;j<i;j++)
                     {
                            while(kc[i]==kc[j])
                            {
                                   cout<<"您已经选过该课程请重新输入"<<endl;
                                   cin>>kc[i];
                            }
                     }
              }
       system("cls");
       } 
         void chengji()                        ///////成绩录入 
         {
                       int i; 
              for(i=0;i<5;i++) 
              {
                         cout<<"请输入"<<kc[i]<<"的成绩"<<endl; 
                cin>>cj[i];
                       } 
         } 
                  void chengjisc()                         ///////成绩输出 
         {
                            inti; 
             for(i=0;i<5;i++) 
              {
                              cout<<kc[i]<<"  "; 
                  cout<<cj[i]<<' ';
                       } 
         } 
 
 }; 
   void cxkb(student t)
       {
              intn;
      cout<<"继续查询课程表请输入1,结束请输入0"<<endl;
     cin>>n;
   if(n==1)
    for(int i=0;i<5;i++)
     cout<<t.kc[i]<<' ';
       }
  string mima()               ////////初始化设置密码 
   {
          cout<<"****************************学籍管理系统*********************************"<<endl;
              dqsj();
          cout<<"请设置密码:"; 
    string mm1,mm2; 
   char ch; 
    while ((ch=_getch())!=13) 
       { 
   mm1+=ch; 
   cout<<"*"; 
       } 
    cout<<endl; 
   cout<<"请再次确认密码:"; 
   while ((ch=_getch())!=13) 
       { 
  mm2+=ch; 
  cout<<"*"; 
       } 
    system("cls"); 
 if(mm1==mm2) 
 return mm1; 
 else 
  mima(); 
  } 
int denglu(string mm)              /////////登陆程序 
{ 
              cout<<"****************************学籍管理系统*********************************"<<endl;
              dqsj();
   cout<<"请输入登陆密码:"; 
   string mm1,mm2,mm3; 
   char ch; 
 while ((ch=_getch())!=13)  
 { 
 mm1+=ch; 
 cout<<"*"; 
 }   
 system("cls");
      cout<<"****************************学籍管理系统*********************************"<<endl;
       dqsj();
   if(mm==mm1) 
       return 1; 
   else 
    {
              cout<<"密码错误,您还有两次机会,请重试"; 
      while ((ch=_getch())!=13) 
          { 
        mm2+=ch; 
         cout<<"*"; 
          } 
        system("cls"); 
    if(mm==mm2) 
       return 1; 
   else 
    {
              cout<<"密码错误,您还有一次机会,请重试"; 
       while ((ch=_getch())!=13) 
              { 
         mm3+=ch; 
           cout<<"*"; 
              } 
        system("cls"); 
    if(mm==mm3) 
       return 1; 
   else 
    {
              cout<<"密码错误,请明天再试"; 
       return 0;
       } 
       } 
       } 
} 
student chazhaoxg(student t)  //信息修改
{cout<<"修改姓名请输入1,修改入学时间请输入2,修改班级请输入3."<<endl; 
cout<<"修改课程请输入4,修改成绩请输入5"; 
int a,i; 
string xk;
cin>>a; 
switch(a) 
{
case 1:cin>>t.xm;break; 
case2:cin>>t.time.year>>t.time.month>>t.time.day;break; 
case 3:cin>>t.bj;break; 
case 4:for(i=0;i<5;i++)cin>>t.kc[i];break; 
case 5:
       cout<<"请输入课程名"<<endl;
       cin>>xk;for(i=0;i<5;i++)
       {
              if(t.kc[i]==xk)
              {cout<<"请输入成绩"<<endl;
              cin>>t.kc[i];
              }
       }break; 
      } 
 
return t; 
 
} 
void shuchuxinxi(student t)  //输出学生信息
{ 
   cout<<t.xh<<' '<<t.xm<<''<<t.time.year<<t.time.month<<t.time.day<<t.bj<<''; 
} 
student stu[500];
   int main()                       ////主函数.................. 
    {
              intn=0,i,xh; 
   string mm,xm;  //密码  
   mm=mima();  //密码设置
   i=denglu(mm); 
   if(i) 
   {  
   int a;
       system("cls");
       while(1) 
       {
                     cout<<"****************************学籍管理系统*********************************"<<endl;
          dqsj();
                bangzhu();
                cin>>a;
          system("cls");
          cout<<"****************************学籍管理系统*********************************"<<endl;
          dqsj();
              if(a==0) 
       break; 
       else 
       { 
           switch(a) 
                     {
                     case1:
                     stu[n].srxhh();     
                            while(!pdxhcf(n,stu[n].xh))
                            {
                                   cout<<"已存在该学生请重新输入"<<endl;
                                   stu[n].srxhh();
                     }
                            stu[n].sr(),n++;
                            break; 
           case 2: 
                            for(i=0;i<n;i++)
                            {
                                   cout<<stu[i].xh<<'';
                                   cout<<stu[i].xm<<endl;
                            }
                            break; 
           case 3:
                            cout<<"请输入学号 ";
                            cin>>xh;
                            for(i=0;i<n;i++)
                                   if(stu[i].xh==xh)
                                          stu[i]=chazhaoxg(stu[i]);break; 
           case 6:
                            cout<<"请输入学号 ";
                            cin>>xh;
                            for(i=0;i<n;i++)
                                   if(stu[i].xh==xh)
                                          stu[i].chengji();break;
                     case7:
                            cout<<"请输入学号 ";
                            cin>>xh;
                            for(i=0;i<n;i++)
                                   if(stu[i].xh==xh)
                                          stu[i].chengjisc();
                                   break;
                     case4: 
                            cout<<"请输入学号 ";
                            cin>>xh;
                            for(i=0;i<n;i++)
                                   if(stu[i].xh==xh)
                                   {
                                          shuchuxinxi(stu[i]);
                                          cxkb(stu[i]);
                                   }break;
                     case5: 
                            cout<<"请输入姓名 ";
                            cin>>xm;
                            for(i=0;i<n;i++)
                                   if(stu[i].xm==xm)
                                   {shuchuxinxi(stu[i]);
                                   cxkb(stu[i]);
                                   }break;
       case 9:bangzhu();break;
              case8:bcxx(n);break;
              }
              } 
 
    }
       } 
return 0; 
   } 
void bangzhu()                         //操作指令提示 
{ cout<<"请输入以下指令"<<endl<<endl;  
     
   cout<<"    1.添加学生              "; 
    
   cout<<"    2.输出所有学生          "<<endl;
       cout<<"============================"; 
   cout<<"============================"<<endl; 
   cout<<"    3.输入学号修改学生信息  "; 
    
   cout<<"    4,用学号查找学生信息   "<<endl;
       cout<<"============================"; 
   cout<<"============================"<<endl;
       cout<<"    5,用姓名查找学生信息   " ; 
    
   cout<<"    6,成绩输入              "<<endl;
       cout<<"============================";  
   cout<<"============================"<<endl;
       cout<<"    7,成绩查询              "; 
   
       cout<<"    8,保存学生信息"<<endl;
       cout<<"============================"; 
   cout<<"============================"<<endl;
   cout<<"    9.菜单                  "; 
    
   cout<<"    0.结束本程序            "<<endl ;
       cout<<"============================"; 
   cout<<"============================"<<endl; 
} 
int shurupanduan(int a,int b,int c=1)   //判断输入年月日是否正确 
{int l=1,q,ll; 
if(a<=0||b<=0||b>12||c<0) 
{l=0; 
cout<<"您的输入有误请重新输入"<<endl;}
 
switch(b) 
{
case 1:q=31;break; 
case 2:q=28;break; 
case 3:q=31;break; 
case 5:q=31;break; 
case 7:q=31;break; 
case 8:q=31;break; 
case 10:q=31;break; 
case 12:q=31;break; 
case 4:q=30;break; 
case 6:q=30;break; 
case 9:q=30;break; 
case 11:q=30;break;
} 
ll=runnian(a);
if(ll)
q++;
if(c>q) 
{
       l=0; 
   cout<<"您的输入有误请重新输入"<<endl;}  
   return l;
} 
 
int runnian(int a) //判断是是否为闰年 
{
       intl=0; 
   if((a%4==0&&a%100!=0)||(a%400==0)) 
  l=1; 
 return l; 
} 
void bcxx(int n)
{
       cout<<"请输入文本名称和后缀名:";  
char s[20]; 
cin>>s;  
ofstream outfile(s,ios::out); 
       inti=0;
       studentt;
       outfile<<"          学号"<<"  姓名"<<" 出生日期"<<" 班级"<<endl;
       for(i=0;i<n;i++)
       {
              t=stu[i];
             
 
              outfile<<fixed<<setw(12)<<t.xh<<''<<fixed<<setw(6)<<t.xm<<' '
                     <<fixed<<setw(7)<<t.time.year<<t.time.month<<t.time.day<<""
                     <<fixed<<setw(4)<<t.bj<<''; 
       }
 
}
void dqsj()    //输出现在时间以及当前月份日历 
{  
time_t t = time(NULL);  
struct tm  *local = localtime(&t);  
int year = local -> tm_year + 1900;  
int month = local -> tm_mon + 1;  
int day = local -> tm_mday; 
int hour = local -> tm_hour;  
int minute = local -> tm_min;  
int second = local -> tm_sec;
cout <<"当前时间: "<<"   "<<year<<"年"<<month<<"月"<<day<<"日"<<'';
cout <<endl<<"                "<<hour<<":"<<minute<<":"<<second<<endl<<endl; 
}
bool pdxhcf(int n,int a)//判断学号是否重复
{
       booll=1;
       inti;
       for(i=0;i<n;i++)
       {
              if(a==stu[i].xh)
              {
                     l=0;
              break;
              }
       }
       returnl;
}


 

6.程序运行结果截图

重复课程不允许选择。

可以将学生信息保存到文件

可以使用姓名和学号查询学生信息

可以实现成绩的输入和修改