当前位置:编程学习 > C/C++ >>

编程高手进!!悬赏100 用C++解决

一个大学教师和学生管理程序
(1)教师包括编号(a),姓名(c),职称(d)和教研室数据(b)的数据输入输出; (2)大学生包括编号(m),姓名( s),性别(t),班号(n),英语(e),高等数学(f)和数据结构(g)三门课程成绩输入输出和计算机平均分(ave);
(3)研究生包括编号,姓名,性别,班号,指导教师和研究方法数据输入输出;
(4)博士后数据的输入输出;博士后既是教师也是研究生.(用派生,继承的方法可以做)
(5)对人员信息的修改删除。
答案:#include<stdio.h>
#include<malloc.h>
typedef struct
{char name[10];
int number;
char sex[20];
char age[20];
}stu;
typedef struct
{stu *elem;
int length;
}sqlist;
int found(sqlist l,int x)
{int i;
for(i=0;i<l.length;i++)
if(l.elem[i].number==x) break;
if(i==l.length)
{ printf("无此学生重新输入学号\n");return -1;}
else return i;}
void add(sqlist &l)
{int x,i;
printf("增加多少名学生\n");
scanf("%d",&x);
l.elem=(stu*)realloc(l.elem,sizeof(stu)*(l.length+x));
for(i=l.length;i<x+l.length;i++)
{printf("\n输入学生学号、性别、年龄、姓名:");
scanf("%d",&l.elem[i].number);
scanf("%s",l.elem[i].sex);
scanf("%s",l.elem[i].age);
scanf("%s",l.elem[i].name);
}        
l.length=l.length+x;}
void del(sqlist &l)
{int x,i,j=1;
stu *p;
while(j)
{printf("输入学号:\n");
scanf("%d",&x);
i=found(l,x);
if(i==-1)
continue;
for(p=l.elem+i;p<l.elem+l.length-1;p++)
*p=*(p+1);
l.length--;
printf("输入0退出删除系统,其他继续\n");
scanf("%d",&j);}}
void change(sqlist &l)
{int i,j=1,x;
while(j)
{printf("输入学号:\n");
scanf("%d",&x);
i=found(l,x);
if(i==-1)
continue;
printf("输入新学生学号、性别、年龄、姓名:\n");
scanf("%d",&l.elem[i].number);
scanf("%s",l.elem[i].sex);
scanf("%s",l.elem[i].age);
scanf("%s",l.elem[i].name);
printf("输入0退出修改系统,其他继续\n");
scanf(" %d",&j);}}
void display(sqlist l)
{int i;
printf("学号    姓名    性别    年龄\n");   
for(i=0;i<l.length;i++)
{printf("%d     ",l.elem[i].number);
  printf("%s     ",l.elem[i].name);
  printf("%s     ",l.elem[i].sex);
  printf("%s     ",l.elem[i].age);
  printf("\n");
}

}
void main()
{sqlist l;
int i,j,k=1,m;
  printf("初始化,输入学生个数:\n");
scanf("%d",&m);
l.elem=(stu*)malloc(sizeof(stu)*m);
l.length=m;
printf("请输入%d个学生信息:\n",m);
for(i=0;i<m;i++)
{printf("\n输入学生学号、性别、年龄、姓名:");
scanf("%d",&l.elem[i].number);
scanf("%s",l.elem[i].sex);
scanf("%s",l.elem[i].age);
scanf("%s",l.elem[i].name);
}

while(k)
{printf("\n____________________ \n");
  printf("|  1---增加学生信息  |\n");
  printf("|  2---删除学生信息  |\n");
  printf("|  3---修改学生信息  |\n");
  printf("|  4---显示学生信息  |\n");
  printf("|  0---退出          |\n");
  printf("| ___________________|");
  scanf(" %d",&j);
switch (j)
{ case 1:add(l);break;
  case 2:del(l);break;
  case 3:change(l);break;
  case 4:display(l);break;
  default: k=0;}
}
}

上一个:C,C++算不算编程的一部分?
下一个:C++ 编程实现a,b,c 三个数中的最大数和最小数。(要求用条件表达式完成,不允许用if~else语句)

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,