跪求c语言程序设计报告,学生学籍管理系统

注意是学籍,不需要成绩包括:姓名,学号,院系,班级的输入,修改,添加,统计各班,各院人数。在线上等,谢谢。到处都找不到啊。。。。。。。。。。。。。。... 注意是学籍,不需要成绩
包括:姓名,学号,院系,班级的输入,修改,添加,统计各班,各院人数。
在线上等,谢谢。
到处都找不到啊。。。。。。。。。。。。。。
展开
 我来答
tanlihua123
推荐于2016-03-14 · TA获得超过1762个赞
知道小有建树答主
回答量:555
采纳率:0%
帮助的人:280万
展开全部
  试试看
  #include<iostream>
  #include<string>
  #include<iomanip>
  #include<fstream>
  using namespace std;
  #define NULL 0
  class student
  {
  public:
  long num;
  string name;
  string dizhi,dihua,banji;
  student *next;
  };
  int n; //链结点的个数
  student *head,*stu;
  /////////////////////////////////////////////////////////////////////
  student *creat(void) //创建动态链表 返回以各指向链表头的指针
  { student *head;
  student *p1,*p2;
  n=0;
  p1=p2=new student; //开辟新单元,用P1 P2指向
  cout<<"按顺序输入学生的学号,姓名,地址,电话,班级,输入0 * * * *就停止录入(*为任意字符)" <<endl;
  cin>>p1->num>>p1->name>>p1->dizhi>>p1->dihua>>p1->banji;
  head=NULL;
  while(p1->num!=0) //循环输入的作用
  {n=n+1;
  if(n==1)head=p1;
  else p2->next=p1;
  p2=p1;
  p1=new student; //开辟新单元,
  cin>>p1->num>>p1->name>>p1->dizhi>>p1->dihua>>p1->banji; //输入数据
  }
  p2->next=NULL; //p2指向最后
  return(head);
  }

  ///////////////////////////////////////////作为二进制储存和读出二进制文件
  void write_read()
  {student *p;
  student stud[100];
  n=0;
  for(p=head;p!=NULL;p=p->next)
  { stud[n].dizhi=p->dizhi;
  stud[n].dihua=p->dihua;
  stud[n].banji=p->banji;
  stud[n].name=p->name;
  stud[n].num=p->num;
  n++;
  }

  ofstream outfile("student.dat",ios::binary);
  if(!outfile)
  { cerr<<"open error...."<<endl;
  abort();
  }
  for(int i=0;i<n;i++)

  outfile.write((char*)&stud[i],sizeof(stud[i]));
  outfile.close();
  ifstream infile("student.dat",ios::binary);
  if(!infile)
  { cerr<<"open error...."<<endl;
  abort();
  }

  for(int j=0;j<n;j++)
  infile.read((char*)&stud[i],sizeof(stud[i]));
  infile.close();
  for(int k=0;k<n;k++)
  { cout<<"姓名: "<<stud[k].name<<endl;
  cout<<"学号: "<<stud[k].num<<endl;
  cout<<"地址 : "<<stud[k].dizhi<<endl;
  cout<<"电话: "<<stud[k].dihua<<endl;
  cout<<"班级: "<<stud[k].banji<<endl<<endl<<endl;
  }

  }
  ///////////////////////////////////////////////////////////////图形的输出
  void exit()
  {

  cout<<" ┃ \n"
  " ┃ \n"
  " ┏━━━━┻━━━━┓ \n"
  " ┃ ┃ \n"
  " ┏━━━━┻━━━━━━━━━┻━━━━┓\n"
  " ┃ ^^^^^谢谢使用^^^^^^^ ┃\n"
  " ┃ ┃\n"
  " ┃ 偷得浮生半日闲 ┃\n"
  " ┃ ┃\n"
  " ┃ ┃\n"
  " ┗━━━━━━━━━━━━━━━━━━━┛\n";

  }

  /////////////////////////////////////////////////////////////////////////////////////////////////////
  void print(student *head) //输出链表
  {student *p;
  cout<<" 学生信息表 "<<endl;
  p=head;
  if(head!=NULL)
  cout<<" "<<endl;
  cout<<" 学号 姓名 地址 电话 班级 "<<endl;
  cout<<" "<<endl;
  if(head!=NULL)
  do
  { cout<<setw(12)<<p->num
  <<setw(14)<<p->name
  <<setw(10)<<p->dizhi
  <<setw(10)<<p->dihua
  <<setw(10)<<p->banji
  <<endl;
  cout<<" "<<endl;
  p=p->next;
  }while(p!=NULL);

  }
  ////////////////////////////////////////////////////////////////////////删除链表

  student *del(student *head,long num)
  {student *p1,*p2;
  if(head==NULL)
  {cout<<"此为空表"<<endl;return(head);}
  p1=head;
  while(num!=p1->num && p1->next!=NULL)
  {p2=p1;p1=p1->next;}
  if(num==p1->num)
  {if(p1==head)head=p1->next;
  else p2->next=p1->next;
  cout<<"删除"<<num<<endl;
  n=n-1;}

  else
  cout<<"没有该同学数据!"<<num<<endl;
  return(head);
  cout<<endl<<endl;
  }
  ///////////////////////////////////////////////////////////////////////////// 链表的舔加

  student *insert(student *head,student *stud)
  {student *p0,*p1,*p2;
  p1=head; //P1指向第一个节点
  p0=stud; //要插入的节点
  if(head==NULL)
  {head=p0;p0->next=NULL;} //是P0指向节点作为头
  else
  {while((p0->num>p1->num)&&(p1->next!=NULL))
  {p2=p1; p1=p1->next;}
  if(p0->num<=p1->num)
  {if(head==p1)head=p0;
  else
  p2->next=p0;
  p0->next=p1;
  }

  else
  {p1->next=p0;p0->next=NULL;} //差 如节点之后
  }
  n=n+1; //节点+1
  return(head);
  cout<<endl<<endl;
  }
  ///////////////////////////////////////////////////////////////////////查找学生
  void find()
  {student *p;
  int a;
  cout<<"请输入想要找的学生的学号"<<endl;
  cin>>a;
  for(p=head;p!=NULL;p=p->next)
  { if(a==p->num)
  { cout<<" "<<endl;
  cout<<" 学号 姓名 地址 地话 班级 "<<endl;
  cout<<" "<<endl;
  cout<<setw(12)<<p->num
  <<setw(14)<<p->name
  <<setw(10)<<p->dizhi
  <<setw(10)<<p->dihua
  <<setw(10)<<p->banji
  <<endl;
  cout<<" "<<endl;
  break;
  }
  else
  continue;
  }
  }
  ///////////////////////////////////////////////////////////////////////////////删除和添加的链表的多次执行的实现
  void list()
  { int a;
  long del_num;
  student *creat(void);//输入学生数据
  student *cunt_put(student *);
  student *del(student *,long);
  student *insert(student *,student *);
  void print(student *);
  cout<<" "<<endl<<endl<<endl;
  head=creat();
  print(head); //输出全部结点
  cout<<"如果要删除学生资料请输入1,如果需要添加请输入2"<<endl;
  cin>>a;
  if(a==1)
  { cout<<"输入要删除学号"<<endl;
  cin>>del_num;
  while(del_num!=0 )
  { head=del(head,del_num);
  print(head); //调用输出函数
  cout<<"是否继续删除:是(输入学号),不是(输入0)"<<endl;
  cin>>del_num;
  }

  }

  cout<<",往下执行就按任意数字"<<endl;
  cin>>a;
  if (a==2) //操作选择
  { cout<<"输入要添加的就输入学号"<<endl;
  stu=new student; //开创新的空间
  cin>>stu->num>>stu->name>>stu->dizhi>>stu->dihua>>stu->banji; //输入数据
  while(stu->num!=0) //可以循环删除,删除多个
  { head=insert(head,stu); //调用添加函数
  print(head); //调用输出函数
  cout<<"如果需要添加请输入学号,无需添加输入0 * * * *就停止录入(*为任意字符)"<<endl;
  stu=new student;
  cin>>stu->num>>stu->name>>stu->dizhi>>stu->dihua>>stu->banji;
  }
  }
  cout<<endl<<endl;
  }

  /////////////////////////////////////////////////////////////////////////调用各个函数
  void swich()
  { int a;
  list();//删除和添加调用

  cout<<"退出软件输入9 直接查看学生资料输入10"<<endl;
  cin>>a;
  if(a==9)
  exit();
  if(a=10)
  { for(int u=0;;u++)
  {
  cout<<" 0按学号查某个学生的数据 1查看成绩表 3退出系统且读取二进制文件 "<<endl;
  int t;
  cin>>t;

  if(t==1)
  { print(head);continue;
  }
  if(t==3)
  { exit();
  break;
  }
  if(t==0)
  { find();continue;
  }

  }
  }
  cout<<"读取二进制文件如下"<<endl<<endl<<endl;
  write_read();
  }
  ////////////////////////////////////////////////////////密码实现
  void mima()
  { int n,m=1988825;
  for(int j=0;;j++)
  {
  cout<<"这是我的地盘,请输入密码:"<<endl;
  cin>>n;

  if(m==n)
  { cout<<"恭喜你猜对了!!!"<<endl;
  swich();
  break;
  }
  else
  {
  cout<<"内有怪物,生人勿进!"<<endl;
  continue;
  }
  }
  }
  //////////////////////////////////////////////////主函数
  int main()
  { mima();
  return 0;
  }
浪子在中东
2009-07-02 · TA获得超过415个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:65.1万
展开全部
这是跟简单的程序,我想你们学校有计算机老师吧,那么让懂计算机的几分钟就能写好的程序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ld3308
2009-07-02 · TA获得超过399个赞
知道小有建树答主
回答量:431
采纳率:0%
帮助的人:187万
展开全部
这个很多类似的啊,就像我们写单片机报告一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式