代码-急求C++2005 写的学生管理系统,不用MFC界面,求大神

问题描述

急求C++2005 写的学生管理系统,不用MFC界面,求大神

C++2005 写的学生管理系统,不用MFC界面,要有管理员和学生两种身份登陆

解决方案

#include

#include

#include

using namespace std;

typedef struct stu//定义一个结构体作为类的私有成员

{

int num;

string name;

};

class student //学生类为基类

{

protected:

stu a[100];

int i, n;

static int  d;//计算输入学生总数

public:

student();//构造函数

char menu();//菜单界面

void activity();//进行各种操作的一个平台

void input();//输入函数

void display(); //显示函数

void append();//追加函数

void searach();//查找函数

};

class teacher:public student

{

public:

teacher():student(){};

//下面几个函数是对其他函数的重定义

char menu();//增加了其他函数的菜单界面

void activity();//进行各种操作的一个平台

void mod();//修改函数

void shanchu();//删除函数

};

int student::d=0;//计数器赋值为0

student::student()//构造函数

{

cout<<"****welcome to the student`s information systerm ****"<<endl;

}

char student::menu()//学生菜单界面

{

char m;

cout<<"*********1:input the student`s information***********"<<endl;

cout<<"*********2:display the student`s information*********"<<endl;

cout<<"*********3:append the student`s information**********"<<endl;

cout<<"*********4:searach the student`s information*********"<<endl;

cout<<"*****************0:quit the systerm*****************"<<endl;

cout<<"*****************please input one number![ ]bbbb";

cin>>m;

return m;

}

char teacher::menu()//教师菜单界面

{

char m;

cout<<"*********1:input the student`s information***********"<<endl;

cout<<"*********2:display the student`s information*********"<<endl;

cout<<"*********3:append the student`s information**********"<<endl;

cout<<"*********4:searach the student`s information*********"<<endl;

cout<<"*********5:mod the student`s information*************"<<endl;

cout<<"*********6:shanchu the student`s information*********"<<endl;

cout<<"*****************0:quit the systerm*****************"<<endl;

cout<<"*****************please input one number![ ]bbbb";

cin>>m;

return m;

}

void student::activity()//学生各种操作界面

{

char k;

while(1)

{

  k=menu();

  switch (k)

{

case '1':input();break;

case '2':display();break;

  case '3':append();break;

  case '4':searach();break;

  case '0':cout<<"**********thanks  you !bye bye**********!"<<endl;return ;

  default:cout<<"you are wrong!"<<endl;

    }

}

}

void teacher::activity()//教师各种操作界面

{

char k;

while(1)

{

  k=menu();

  switch (k)

{

case '1':input();break;

case '2':display();break;

     case '3':append();break;

     case '4':searach();break;

     case '5':mod();break;

     case '6':shanchu();break;

     case '0':cout<<"**********thanks  you !bye bye**********!"<<endl;return ;

     default:cout<<"you are wrong!"<<endl;

    }

}

}

void student:: input()//输入函数

{

cout<<"please input one counter about student numbers!"<<endl;

cin>>n;

for(i=0;i<n;i++)

{ cout<<"the student`s num is :"<<endl;

 cin>>a[i].num;

 cout<<"the student`s name is : "<<endl;

 cin>>a[i].name;

 d++;

}

cout<<"the work is done! "<<endl;

display();

}

void student::display()//显示函数

{

cout<<"the student`s num  :   name"<<endl;

 for(i=0;i<d;i++)

 {

cout<<"         "<<a[i].num<<"   "<<a[i].name<<endl;

 }

}

void student::append()//追加

{

int m;

cout<<"please input the counter numbers for append student~s information!"<<endl;

cin>>m;

for(i=n;i<n+m;i++)

{

cout<<"the student`s num is :"<<endl;

cin>>a[i].num;

cout<<"the student`s name is : "<<endl;

cin>>a[i].name;

d++;

}

cout<<"the work is done! "<<endl;

display();

}

void student::searach()//查找

{

int nu,g=0;

cout<<"please the student`s num"<<endl;

 cin>>nu;

 for(i=0;i<d;i++)

 {

  if(a[i].num==nu)

  {

   cout<<"the student`s num  :   name"<<endl;

  cout<<"         "<<a[i].num<<"   "<<a[i].name<<endl;

       g=1;

  }

 }

if(g==0)

cout<<"not found the student`s information!"<<endl;

cout<<"the work is done!"<<endl;

}

void teacher::mod()//修改

{

int nu;

cout<<"please input the student`s num"<<endl;

 cin>>nu;

for(i=0;i<d;i++)

{

 if(nu==a[i].num)

 {

 cout<<"the student`s num is :"<<endl;

 cin>>a[i].num;

 cout<<"the student`s name is : "<<endl;

 cin>>a[i].name;

 }

}

cout<<"the work is done! "<<d<<endl;

display();

}

void teacher::shanchu()//删除函数

{ int nu,s=-1;

cout<<"please input the student`s number!";

cin>>nu;

for(i=0;i<=d;i++)

{

if(nu==a[i].num)

{s=i;

  for(i=s+1;i<d;i++)  

  {

  a[i-1].num=a[i].num;

  a[i-1].name=a[i].name;

  }

  d--;

}

}

if(s==-1)

cout<<"not found the student`s information!"<<endl;

cout<<"the work is done! "<<endl;

display();

}

void stu()//一级菜单,进入学生操作界面

{

student  stud;

 stud.activity();

}

void teach()//一级菜单,进入教师操作界面

{

teacher t;

t.activity();

}

int main()

{

char c;

cout<<"&&&&&&welcome to the student`s information systerm&&&&&&"<<endl;

cout<<"&&&&&&&&&&&&&&&s: 学生身份&&&&&&&&&&&&&&&"<<endl;

cout<<"&&&&&&&&&&&&&&&t: 教师身份&&&&&&&&&&&&&&&"<<endl;

cout<<"please input one character for cheek the password![ ]bbb";

cin>>c;

switch(c)

{

 case 's': stu();break;

 case 't':teach();break;

 default :cout<<"you are wrong !";

}

return 0;

}

解决方案二:

 #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h> 

#define max 20 

typedef struct student    //学生
{
char sno[max]; // 学号
char sname[max];  //姓名
char sex[max];   //性别
char age[max];  //年龄
char depart[max];  //系
char classs[max];  //班
char grade[max]; //年级 

struct student* next;
} student; 

student* head; 

int LogOn()  //登录模块,已实现输入密码不回显,如果中途发现输错某几位,可退格键重输
{
char username[max],password[max];
printf("n请输入用户名:");
scanf("%s",username);
printf("n请输入密码(最多15位):"); 

//开始以不回显且支持退格方式获取输入密码
int i=0;
while((i>=0)&&(password[i++]=getch())!=13)//条件i>=0是用于限制退格的范围
{
if(password[i-1]=='b')//对退格键的处理
{
printf("%c%c%c",'b','','b');
i=i-2;
}
else
printf("*");
}
password[--i]=''; 

//已获取密码。验证用户身份
if(!strcmp(username,"zhang")&&!strcmp(password,"8147086"))
{
printf("n登录成功!");
return 1;
}
else
return 0; 

} 

void regist()
{
char ch;
student *s,*ptr;  //s用来建新结点,ptr用来暂存头结点 

do
{ 

    s=(student*)malloc(sizeof(student)); // 新建一个学生结点 

printf("n开始注册...");            //开始注册
    printf("n请输入该学生的学号:");
    scanf("%s",s->sno);
    printf("n请输入该学生的姓名:");
    scanf("%s",s->sname);
    printf("n请输入该学生的性别:");
    scanf("%s",s->sex);
       printf("n请输入该学生的年龄:");
    scanf("%s",s->age);
    printf("n请输入该学生的系:");
    scanf("%s",s->depart);
    printf("n请输入该学生所在的班:");
    scanf("%s",s->classs);
    printf("n请输入该学生所在的年级");
    scanf("%s",s->grade); 

ptr=head;
head=s;//将新结点插入队头
s->next=ptr; 

fflush(stdin);
printf("n请问是否继续注册?(Y/N)");
scanf("%c",&ch);
}while(ch=='Y'||ch=='y'); 

return;
} 

void ElePrint(char str[])  //输出单个元素
{
if(str==NULL) exit(0);
printf("%s",str);
for(unsigned int i=0;i<12-strlen(str);i++) printf(" ");//为了对齐输出,需插入一些空格
return;
} 

int LinePrint(student *ptr) //输出一行
{
if(ptr==NULL)  //检查传进来的指针
return 0; 

printf("n");
ElePrint(ptr->sno);
ElePrint(ptr->sname);
ElePrint(ptr->age);
ElePrint(ptr->sex);
ElePrint(ptr->depart);
ElePrint(ptr->classs);
ElePrint(ptr->grade); 

return 1;
} 

void print()  //输出全部学生信息
{
student *ptr=head;
printf("n学号        姓名        年龄        性别        系          班          年级        ");
while(ptr)
{
LinePrint(ptr);
ptr=ptr->next;
}
printf("n");
return;
}
void search()//查询模块
{
int method;//查询方式
char no[max],name[max],departm[max],clss[max],grades[max]; //用来接收查询关键字
while(1)
{
printf("n请选择查询方式");
    printf("n1.按学号查询");
 printf("n2.按姓名查询");
    printf("n3.按所在系查询");
    printf("n4.按所在班级查询");
    printf("n5.按所在年级查询");
printf("n6.打印全部学生信息");
    printf("n7.返回主菜单n"); 

    scanf("%d",&method); 

    student *p=head,*temp; 

    switch(method)
{
       case 1:
   printf("n请输入要查询的学号:");
   scanf("%s",no);
   while(p)
   {
   if(!strcmp(p->sno,no))
   break;
   else
   {
   temp=p;
   p=p->next;
   }
   }
   printf("n学号        姓名        年龄        性别        系          班          年级        ");
   LinePrint(p);
   break;
   case 2:
   printf("n请输入要查询的姓名:");
   scanf("%s",name);
   printf("n学号        姓名        年龄        性别        系          班          年级        ");
   while(p)
   {
   if(!strcmp(p->sname,name))
   LinePrint(p);
   p=p->next;
   }
   break;
   case 3:
   printf("n请输入学生所在的系:");
   scanf("%s",departm);
   printf("n学号        姓名        年龄        性别        系          班          年级        ");
   while(p)
   {
   if(!strcmp(p->depart,departm))
   LinePrint(p);
   p=p->next;
   }
   break;
   case 4:
   printf("n请输入学生所在的班:");
   scanf("%s",clss);
   printf("n请输入学生所在的年级:");
   scanf("%s",grades);
   printf("n学号        姓名        年龄        性别        系          班          年级        ");
   while(p)
   {
   if(!strcmp(p->classs,clss)&&!strcmp(p->grade,grades))
   LinePrint(p);
   p=p->next;
   }
   break; 

   case 5:
   printf("n请输入学生所在的年级:");
   scanf("%s",grades);
   printf("n学号        姓名        年龄        性别        系          班          年级        ");
   while(p)
   {
   if(!strcmp(p->grade,grades))
   LinePrint(p);
   p=p->next;
   }
   break; 

   case 6:
   print();
   break; 

   case 7:
   return;
   default:
   printf("很抱歉,暂无此查询方式!");
   break;
}
} 

} 

void modify()//修改学生信息
{
char num[max];
student *p=head;
printf("n请输入要修改的学生的学号:");
scanf("%s",num);
while(p)
{
if(!strcmp(p->sno,num))
break;
else
p=p->next;
}
if(p==NULL)
{
printf("n错误:没有此学生的信息!n");
return; 

}
LinePrint(p); 

printf("n请输入要修改的该学生的信息:");
printf("n1.姓名");
printf("n2.性别");
printf("n3.年龄");
printf("n4.所在的系");
printf("n5.所在的班");
printf("n6.所在的年级"); 

char name1[max],sex1[max],age1[max],depart1[max],class1[max],grade1[max];
int select;
fflush(stdin);
scanf("%d",&select);
printf("n请输入新的信息:"); 

switch(select)
{
case 1:
scanf("%s",name1);
strcpy(p->sname,name1);
break;
case 2:
scanf("%s",sex1);
strcpy(p->sex,sex1);
break;
case 3:
scanf("%s",age1);
strcpy(p->age,age1);
break;
case 4:
scanf("%s",depart1);
strcpy(p->depart,depart1);
break;
case 5:
scanf("%s",class1);
strcpy(p->classs,class1);
break;
case 6:
scanf("%s",grade1);
strcpy(p->grade,grade1);
break;
default:
printf("nError!");
break;
} 

LinePrint(p);
return;
} 

void del()// 删除某学生的信息
{
student *p=head,*temp=head,*s;
char num1[max];
printf("n请输入要删除的学生的学号:");
scanf("%s",num1);
while(p)//查找该学生所在的结点
{
if(!strcmp(p->sno,num1))
break;
else
{
temp=p;
p=p->next;
} 

}//while
if(!p)
{
printf("n不存在此学生的信息.");
return;
}
LinePrint(p);//输出该学生的信息
printf("n请问真的要删除该学生的信息吗?(Y/N)");
char ch;
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
{
s=p->next;
temp->next=s;
free(p);
printf("n已经删除该学生的信息.");
}
return;
} 

void sort() //排序模块。将学生记录按学号从小到大排列。用起泡排序算法实现
{ 

student *ptr,*s=head,*p;
int count=0,count1;
while(s)//统计链表结点个数
{
count++;
s=s->next;
} 

for(int i=1;i<count;i++)
{
ptr=head;
p=NULL;
count1=count-i; //用来控制每轮起泡排序的终点,即每次把学号最小的结点移到倒数第i个结点
while(ptr&&ptr->next&&(count1--))
{
if(strcmp(ptr->sno,ptr->next->sno)>0)
{
s=ptr->next;
ptr->next=s->next;
if(p==NULL) //ptr处于队头时
head=s;
else
p->next=s;
s->next=ptr;
p=s;
}
else
{
ptr=ptr->next;
if(p==NULL) //ptr处于队头时
p=head;
else
p=p->next;
}
}
}
return;
} 

void quit()
{
char ch;
printf("n真的要退出?(Y/N)");
fflush(stdin);
scanf("%c",&ch);
if(ch=='Y'||ch=='y')
exit(0);
return;
} 

int main()
{
int option; 

printf("nCopyright@2005 KongXinCai All rights reserved.");
printf("n欢迎使用学生信息管理系统!n"); 

//登录模块
int icheck=0;
while(icheck<3)
{
if(LogOn()==0)
icheck++;
else
break; 

}
if(icheck==3)
{
printf("n连续登录三次不成功,退出!");
exit(0);
} 

//系统界面 

while(1)
{
printf("nn请选择需要的服务:");
    printf("n1.注册");
    printf("n2.查询");
    printf("n3.修改");
    printf("n4.删除");
    printf("n5.排序");
  printf("n7.求平均");
    printf("n6.退出n"); 

scanf("%d",&option); 

switch(option)
{
case 1:
regist();
break;
case 2:
search();
break;
case 3:
modify();
break;
case 4:
del();
break;
case 5:
sort();
break;
case 6:
quit();
break;
} 

} 

return 0; 

}
时间: 2024-09-14 03:37:23

代码-急求C++2005 写的学生管理系统,不用MFC界面,求大神的相关文章

vc++-急求用VC++2005文件写的学生管理系统,不用MFC界面,DOS就可以

问题描述 急求用VC++2005文件写的学生管理系统,不用MFC界面,DOS就可以 大致三个模块,模块功能如下 第一块:登录模块及权限设置模块 (1)管理员/学生登录模块:设置/修改密码:不同类型人员的权限设置(管理员可以修改信息,学生只能查询信息) 第二块:管理员模块 (2)面向管理员的学生信息管理模块:加入学生信息:根据各种特征方便的查找学生信息:学生信息的管理: (3)面向管理员的课程及成绩管理模块:各学年所修课程及其成绩管理. 第三块:学生模块 (4)面向学生的学生信息查询模块:根据各种

很想知道在游戏中的装备合成代码是怎么写的,有喜欢研究外挂的大神吗???跪求指点一二。

问题描述 很想知道在游戏中的装备合成代码是怎么写的,有喜欢研究外挂的大神吗???跪求指点一二. 小弟最近玩个FIFA online3的腾讯游戏.比较好奇,(任何一款)游戏中的装备合成的IF,ELSE语句是如何满足概率条件的.要让一件事情按一定概率发生,是如何实现的.跪求大神指点一二. 解决方案 .直接生成一个范围内的数,不同的数对应到不同的装备

代码-学生管理系统C#窗体界面

问题描述 学生管理系统C#窗体界面 我们现在需要用C#作一个管理系统,其中会很多"botten"来实现界面的跳转,求代码. 解决方案 Form2 form2=new Form; form2. Show();this.Hide; 应该是

信息-只有C语言实现,急求用C#实现机票预订管理系统源代码及界面

问题描述 只有C语言实现,急求用C#实现机票预订管理系统源代码及界面 #include //标准输入.输出头文件 #include //包含字符串函数处理头文件 #include //包含动态存储与释放函数头文件 #define N 10000 struct air //定义结构体数组 { int num; char start[20]; char over[20]; char time[10]; int count; }s[N]; int i; int m=0; #define PRINT "

angularjs-这段代码哪里有错啊,运行结果不对啊,哪位大神解决下。

问题描述 这段代码哪里有错啊,运行结果不对啊,哪位大神解决下. <!doctype html> Hello {{ clock}}! function MyController($scope, $timeout) { var updateClock = function() { $scope.clock = new Date(); $timeout(function() { updateClock(); }, 1000); }; updateClock(); }; 运行结果如下: 解决方案 请稍

java写服务器端安卓写服务器端,两者如何进行对接,大神请进....

问题描述 java写服务器端安卓写服务器端,两者如何进行对接,大神请进.... 大神都会点开这个帖子的,所以我就开门见山了 1. java写服务器端如何返回手机安卓用户端能接受的数据形式? 2. 如何处理手机端返回的数据 3. 如何对接起来 解决方案 一切都是json,后台返回json前台解析 解决方案二: 用socket写的吗? 解决方案三: 我们公司统统用json来回传递

struct-下面实现算术优先级算法的代码怎么输不出结果?实在找不出错,请大神指导

问题描述 下面实现算术优先级算法的代码怎么输不出结果?实在找不出错,请大神指导 #include #include #define ok 1 #define ERROR 0 char an[7]={'+','-','*','/','(',')','='}; unsigned char Prior[7][7]= { // '+' '-' '*' '/' '(' ')' '=' /*'+'*/'>','>','<','<','<','>','>', /*'-'*/'&

mfc串口通信-大神! 串口通信多编辑框显示到一个编辑框!求教代码!谢谢!

问题描述 大神! 串口通信多编辑框显示到一个编辑框!求教代码!谢谢! 是这样的.串口通信中有多个发送编辑框 现在需将这多个编辑框的内容显示到一个大的(最后的,总的)发送编辑框中 现如今这段代码遇到了问题 !求大神指点 我是个初学者 解决方案 大神指点就好啦,非常感谢!

c#写的串口遇到点问题,请大神解答。。

问题描述 我做了一个按钮,添加点击事件stringstr="$ZOFF";serialPort1.write(str);但是没有效果,求大神解答一下...谢谢用send按钮发送就可以...我也不知道为什么,代码是差不多的... 解决方案 解决方案二: 你还是把send按钮里的代码贴出来吧解决方案三: stringstr="$ZOFF";byte[]str_buff=System.Text.Encoding.Default.GetBytes(str);serialPo