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

📄 c++学生管理系统(原创).txt

📁 用c编写的小程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
C++学生管理系统(原创)
评论/浏览(157/1482)发表时间:2007年3月11日 15时32分 

 
/*这个程序是 面向过程 的,经过很多朋友的要求,我把它改成 面向对象和多文件 的实现 (不是下面的程序,下面这是是以前写的,因为现在的程序是多文件实现的,所有代码不在这里发 ),如果需要的朋友,请留下你的信箱,我会第一时间发到你的信箱里面.*/ 

/*这个程序是利用链表实现的,现在发在我的QQ空间,希望给那些有需要的人,因为时间关系,里面没有注释,看不懂我可以解释,2个编译器试过,可以正确运行,如果还有什么错误,请多多指出.*/ 
/*如果大家觉得这个程序不错的话,留下言,谢谢了.还有最近用MFC写了一个向这样的程序.要的在下面写上信箱,我发给你们.*/ 

#include<iostream> 
#include<fstream> 
#include<string> 
#include <iomanip> 
#include<windows.h> 
#include<ctime> 
using namespace std; 

const int NAME_NUM=30; 


struct student 
{ 
char  name[NAME_NUM]; 
    float num; 
float chinaNum; 
float englishNum; 
float mathNum; 
float average; 
float result; 
int   pos; 
student *next; 
}; 

void Print(student *head);     
void InsertFront(student* &head, student *pNew); 
void InsertRear(student* &head, student *pNew); 
student* Find(student *head, char *findStr, char type); 
student* Read(); 
void Write(student* head); 
void ShowList(student* head); 
int GetLength(student* head); 
void Delete(student* &head, char *delStr,int delNum); 
void FindMaxOrMin(student *head,char type,char maxOrMin); 
void Reword(student *pStd); 
void Sort(student *&head, char type,char maxOrMin); 
void Count(student *&head); 
void DeleteAll(student *&head); 
bool Enter(char type); 
void SetTitle(bool isLoad); 
void AboutMe(); 
void ChaXun(string str,student *head); 
void PaiMing(string str, student* head); 
void ShanChu(string str, student *&head); 
void XianShi(string str, student *head); 
void XuiGai(string str, student *&head); 
void ZengJia(string str, student* &head); 
int Run(); 


bool Enter(char type) 
{ 
ofstream out("Password.pwd",ios::app); 
ifstream in("Password.pwd"); 
     
string s[2]; 
int num=0; 

string zhangHao; 
string miMa; 
while(!in.eof()) 
{ 
in>>s[num]; 
num++; 
if(num==2) 
{ 
break; 
} 
} 
if(s[0].compare("")==0 || type=="2" ) 
{ 

if(s[0].compare("")==0 && type!="2") 
{ 
cout<<"你是第一次使用本程序,请设置帐号和密码."<<endl; 
} 
else 
{ 
bool isLoad=false; 
isLoad=Enter("1"); 
if(isLoad==true) 
{ 
cout<<"修改用户."<<endl; 
out.close(); 
out.open("Password.pwd",ios::trunc); 
} 
else 
{ 
cout<<"你输入的密码错误."<<endl; 
cout<<"你不是管理员不能修改密码."<<endl; 
                return false; 
} 
} 
cout<<"请输入您的新帐号: "; 
cin>>s[0]; 
cout<<"请输入您的新密码: "; 
cin>>s[1]; 

string s1,s2; 
for(int i=0; i<s[0].size(); i++) 
{ 
s1+=char(int(s[0][i])+11); 
} 

for( i=0; i<s[1].size(); i++) 
{ 
s2+=char(int(s[1][i])+11); 
} 
s[0]=s1; 
s[1]=s2; 
for( i=0; i<=1; i++) 
{ 
out<<s[i]<<" "; 
} 
out.close(); 
} 

    string s1,s2; 

for(int i=0; i<s[0].size(); i++) 
{ 
s1+=char(int(s[0][i])-11); 
} 

for( i=0; i<s[1].size(); i++) 
{ 
s2+=char(int(s[1][i])-11); 
} 

cout<<"请输入您的帐号: "; 
cin>>zhangHao; 
    cout<<"请输入您的密码: "; 
    cin>>miMa; 

if(zhangHao.compare(s1)==0 && miMa.compare(s2)==0) 
{ 
return true; 
} 
else 
{ 
return false; 
} 
return false; 
}       
   

发表评论共157条评论,第1页/共11页 上一页下一页 長髮為伱而留 
 
 
 
  
 引用删除1楼  長髮為伱而留 
  评论时间:2007年3月11日 15时33分 
void Print(student *head)
{
 student *pHead=head;
 int num=strlen(head->name);
 while(head)
 {
  if(num<strlen(head->name))
  {
   num=strlen(head->name);
  }
  head=head->next;
 }
 head=pHead;
 cout<<setw(num)<<head->name<<setw(8)
  <<head->num<<setw(10)<<head->chinaNum
  <<setw(10)<<head->mathNum<<setw(10)
  <<head->englishNum<<setw(8)<<head->result
  <<setw(8)<<head->average<<setw(5)<<head->pos<<endl; 
}

void ShowList(student* head)
{

 cout<<"姓名:"<<setw(8)<<"座号:"<<setw(10)
  <<"语文分数:"<<setw(10) <<"数学分数:"
  <<setw(10)<<"英语分数:"<<setw(8)<<"总分数:"
  <<setw(8)<<"平均分:"<<setw(6)<<"名次:"<<endl<<endl; 
 while(head)
 {
  
  Count(head);
  
  Print(head);
  
  head=head->next;
 }
 cout<<endl;
}

void Write(student* head)
{
 ofstream out("Student.dat",ios::trunc);
 
 while(head)
 {
  
  Count(head);
  
  out.write((char*)head,sizeof(student));
  head=head->next;
 }
 out.close();
}

student* Read()
{
 ifstream in("Student.dat");
 student *head;
 student *pP;
 student *pEn*;
 **=new student;
 
 pEnd=hea*=**;
 
 
 student *pS=new student;
 memset(pS->name,0,NAME_NUM);
 in.read((char*)pS,sizeof(student));
 
 if(strcmp(pS->name,"\0")==0)
 {
  return NULL;
 }
 
    strcpy(pP->name,pS->name);   
 pP->num=pS->num;             
    pP->chinaNum=pS->chinaNum;
    pP->englishNum=pS->englishNum;
 pP->mathNum=pS->mathNum;
 
 while(!in.eof())
 { 
  in.read((char*)pS,sizeof(student));
  pEnd->next=pP;
  pEn*=**;
  pP=new student;
  
  strcpy(pP->name,pS->name);   
  pP->num=pS->num;             
  pP->chinaNum=pS->chinaNum;
  pP->englishNum=pS->englishNum;
  pP->mathNum=pS->mathNum;
  
 }
 
 pEnd->next=NULL;
 delete pP;
 return head;   
}

student* Find(student *head,char *findStr, char type)
{
/*参数说明: 
type=='1' 按 名字   查找 
type=='2' 按 座号   查找 
type=='3' 按 语文   查找 
type=='4' 按 数学   查找
type=='5' 按 英语   查找
type=='6' 按 总分   查找
type=='7' 按 平均分 查找
type=='8' 按 排名   查找  //没有实现  
 */
    bool isFind=false;
 student *firstStd=NULL;
    
 cout<<"姓名:"<<setw(8)<<"座号:"<<setw(10)
  <<"语文分数:"<<setw(10) <<"数学分数:"
  <<setw(10)<<"英语分数:"<<setw(8)<<"总分数:"
  <<setw(8)<<"平均分:"<<setw(5)<<"名次:"<<endl<<endl; 
 
 while(head)
 {
  if(type=='1')
  {
   if(strcmp(head->name,findStr)==0)  
   {
    if(firstStd==NULL)
    {
     firstStd=head;
    }
    Print(head);
    
    isFind=true;  
    if(head->next==NULL)
    {
     return firstStd;
    }
   }
  }
  else if(type=='2')
  {
            if(int(head->num)==int(atof(findStr)))  
   {
    if(firstStd==NULL)
    {
     firstStd=head;
    }
    Print(head);
    
    isFind=true;  
    if(head->next==NULL)
    {
     return firstStd;
    }
   }
  }
  else if(type=='3')
  {
            if(int(head->chinaNum)==int(atof(findStr))) 
   {
    if(firstStd==NULL)
    {
     firstStd=head;
    }
    Print(head);
    
    isFind=true;  
    if(head->next==NULL)
    {
     return firstStd;
    }
   }
  }
  else if(type=='4')
  {
            if(int(head->mathNum)==int(atof(findStr))) 
   {
    if(firstStd==NULL)
    {
     firstStd=head;
    }
    Print(head);
    
    isFind=true;  
    if(head->next==NULL)
    {
     return firstStd;
    }
   }
  }
  else if(type=='5')
  {
            if(int(head->englishNum)==int(atof(findStr)))  
   {
    if(firstStd==NULL)
    {
     firstStd=head;
    }
    Print(head);
    
    isFind=true;  
    if(head->next==NULL)
    {
     return firstStd;
    }
   }
  }
  
  else if(type=='6')
  {
            if(int(head->result)==int(atof(findStr)))  
   {
    if(firstStd==NULL)
    {
     firstStd=head;
    }
    Print(head);
    
    isFind=true;  
    if(head->next==NULL)
    {
     return firstStd;
    }
   }
  }
  else if(type=='7')
  {
            if(int(head->average)==int(atof(findStr))) 
   {
    if(firstStd==NULL)
    {
     firstStd=head;
    }
    Print(head);
    
    isFind=true;  
    if(head->next==NULL)
    {
     return firstStd;
    }
   }
  }
  
  else if(type=='8')
  {
            if(int(head->pos)==int(atof(findStr)))   
   {
    if(firstStd==NULL)
    {
     firstStd=head;
    }
    Print(head);
    
    isFind=true;  
    if(head->next==NULL)
    {
     return firstStd;
    }
   }
  }
  head=head->next;
 }
    if(isFind==false)
 {
  cout<<"找不到你要找的记录."<<endl;
  return NULL;
 }
 return firstStd;
}  
  
長髮為伱而留 
 
 
 
  
 引用删除2楼  長髮為伱而留 
  评论时间:2007年3月11日 15时33分 
void InsertRear(student* &head,student *pNew)
{
 student *pEnd,*pHead,*pS=new student;
 
 if(head==NULL)
 {
  InsertFront(head,pNew);
  return ;
 }
 pHead=head;
 while(head)
 {
  pEnd=head;
  if(head->next==NULL)
  {
   break;
  }
  
  head=head->next;
 }
 
    strcpy(pS->name,pNew->name); 
 pS->num=pNew->num;       
    pS->chinaNum=pNew->chinaNum;
    pS->englishNum=pNew->englishNum;
 pS->mathNum=pNew->mathNum;
    pS->next=NULL;
 
 pEnd->next=pS;
 head=pHead;
 
 
}

void InsertFront(student* &head, student *pNew)
{
 student *pHead=new student;
 strcpy(pHead->name,pNew->name);  
 pHead->num=pNew->num;         
 pHead->chinaNum=pNew->chinaNum;
    pHead->englishNum=pNew->englishNum;
 pHead->mathNum=pNew->mathNum;
 pHead->next=head;
 head=pHead;
}

int GetLength(student *head)
{
 int len=0;
  while(head)
  {
   len++;
   head=head->next;
  }
  return len;
}

void Delete(student* &head, char *delStr,int delNum)
{
 student* pDel,*pNew,*pHead;
    bool isFind=false;
 
 pHead=head;
 if(strcmp(head->name,delStr)==0)
 {
  pNew=head->next;
  delete head;
  head=pNew;
  if(delNum==2)
  {
   cout<<endl<<"因为要删除的记录在前面,所有只删除第一记录."<<endl;
  }
  return ;
 }
 
 while(head->next)
 {
  if(delNum==2)
  {
   if(strcmp(head->next->name,delStr)==0)
   {
    pNew=head->next->next;
    pDel=head->next;
    delete pDel;
    head->next=pNew;
    head=pHead; 
    isFind=true;
   }  
   
        }
  else
  {
   if(strcmp(head->next->name,delStr)==0)
   {
    pNew=head->next->next;
    pDel=head->next;
    delete pDel;
    head->next=pNew;
    head=pHead; 
    return ;
   }
  }
  head=head->next;
 }
    head=pHead; 
 
 if(isFind==false)
 {
  cout<<"找不到你要删除的记录."<<endl;
 }
 else
 {
  cout<<"删除记录成功."<<endl;
 }
}

void FindMaxOrMin(student *head,char type,char maxOrMin)
{
/*参数说明: 
type=='1' 按 语文   查找 
type=='2' 按 数学   查找
type=='3' 按 英语   查找
type=='4' 按 总分   查找
type=='5' 按 平均分 查找
type=='6' 按 排名   查找   
 */
 
 int maxNum;
 student *pHead=head;
 if(type=='1')
 {
  maxNum=int(head->chinaNum); 
 }
 else if (type=='2')
 {
  maxNum=int(head->mathNum); 
 }
 else if (type=='3')
 {
  maxNum=int(head->englishNum);
 }
 else if (type=='4')
 {
  maxNum=int(head->result);
  
 }
 else if (type=='5')
 {
  maxNum=int(head->average);
  
 }
 else if (type=='6')
 {
  maxNum=head->pos;
 }
 else 
 {
  cout<<"你输入错误,请重新输入."<<endl;
  return ;
 }
 
 while(head)
 {
  if(maxOrMin=='1')
  {
   if(type=='1')
   {
    
    if(maxNum<int(head->chinaNum))
    {
     maxNum=int(head->chinaNum);
    }
   }
   else if (type=='2')
   {
    if(maxNum<int(head->mathNum))
    {
     maxNum=int(head->mathNum);
    }
   }
   else if (type=='3')
   {
    
    if(maxNum<int(head->englishNum))
    {
     maxNum=int(head->englishNum);
    }
   }
   else if (type=='4')
   {
    if(maxNum<int(head->result))
    {
     maxNum=int(head->result);
    }
   }
   else if (type=='5')
   {
    if(maxNum<int(head->average))
    {
     maxNum=int(head->average);
    }
   }
   else if (type=='6')
   {
    if(maxNum<head->pos)
    {
     maxNum=head->pos;
    }
   }
  }
  else
  {
   if(type=='1')
   {
    
    if(maxNum>int(head->chinaNum))
    {
     maxNum=int(head->chinaNum);
    }
   }
   else if (type=='2')
   {
    if(maxNum>int(head->mathNum))
    {
     maxNum=int(head->mathNum);
    }
   }
   else if (type=='3')
   {
    
    if(maxNum>int(head->englishNum))
    {
     maxNum=int(head->englishNum);
    }
   }
   else if (type=='4')
   {
    if(maxNum>int(head->result))
    {
     maxNum=int(head->result);
    }
   }
   else if (type=='5')
   {
    if(maxNum>int(head->average))
    {
     maxNum=int(head->average);
    }
   }
   else if (type=='6')
   {
    if(maxNum>head->pos)
    {
     maxNum=head->pos;
    }
   }
  }
  head=head->next;
 }
 
    head=pHead;
 
 cout<<"姓名:"<<setw(8)<<"座号:"<<setw(10)
  <<"语文分数:"<<setw(10) <<"数学分数:"
  <<setw(10)<<"英语分数:"<<setw(8)<<"总分数:"
  <<setw(8)<<"平均分:"<<setw(5)<<"名次:"<<endl<<endl; 
 
 while(head)
 {
  if(type=='1')
  {
   if(int(head->chinaNum)==maxNum)
   {
    Print(head);
   }
  }
  else if (type=='2')
  {
   if(int(head->mathNum)==maxNum)
   {
    Print(head);
   }
  }
  else if (type=='3')
  {
   if(int(head->englishNum)==maxNum)
   {
    Print(head);
   }
  }
  else if (type=='4')
  {
   if(int(head->result)==maxNum)
   {
    Print(head);
   }
  }
  else if (type=='5')
  {
   if(int(head->average)==maxNum)
   {
    Print(head);
   }
  }
  else if (type=='6')
  {
   if(head->pos==maxNum)
   {
    Print(head);
   }
  }
  
  head=head->next;
 }
 
}  
  
長髮為伱而留 
 
 
 
  
 引用删除3楼  長髮為伱而留 
  评论时间:2007年3月11日 15时34分 
void Reword(student *pStd)
{
 
 if(pStd!=NULL)
 {

⌨️ 快捷键说明

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