用c++ 写一个学生管理系统,不要那种低级的哦~~~谢谢 10

1.数据结构:基类,派生类学生类和老师类、管理员类,系统类,MYSQL_C++_API类;2.权限说明:a.学生可以管理个人信息b.老师可以管理个人信息和管理所有学生c.... 1.数据结构:基类,派生类学生类和老师类、管理员类,系统类,MYSQL_C++_API类;
2.权限说明:a.学生可以管理个人信息
b.老师可以管理个人信息和管理所有学生
c.管理员可以管理所有学生和所有老师的全部信息;
3.数据保存:a.本地以文件形式保存一份;
b.远程服务器以数据库保存一份;
4.其他:尽可能使用模板库和范型算法
展开
 我来答
吉祥二进制
高粉答主

2016-04-14 · 科技改变生活,生活改变科技。
吉祥二进制
采纳数:33926 获赞数:84580

向TA提问 私信TA
展开全部
/*好吧,其实你可以上网看看,那么多的,你可以自己修改下*/
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student   
{
 char name[20];
 long int num;
 char sex[4];
 int age;
 char address[30];
 double tele_num;
 char aihao[20];
 struct student *next;
};//定义一个结构题
int TOTAL_NUM = 0;//学生总数
struct student *head = NULL;
void welcome (); //欢迎界面
void mainmenu (); //主界面
void record (); //记录数据
void insert(struct student *stu); //插入数据
void display(struct student *stu); //显示一个学生的信息
void displayAll (); //显示所有学生的信息
void query_by_num (); //按学号查询学生信息
void readData (); //读取文件里学生的信息
void writeData (); //向文件写入学生信息
void freeAll (); //清空链表内容
void del (); //删除学生信息
void change (); //更改学生信息
void devise (struct student *p); //选择更改内容
int main (void)
{
    welcome ();
 //显示主菜单
    mainmenu ();
 return 0;
}
//显示欢迎信息
void welcome ()
{
    printf ("+----------------------------------------------------+\n");
    printf ("|                                                    |\n");
    printf ("|  欢迎使用网络工程学院信息安全092班学生信息管理系统 |\n");
    printf ("|                                                    |\n");
    printf ("+----------------------------------------------------+\n");
}
//系统主菜单
void mainmenu ()
{
    int choice;
    choice = -1;
    readData ();
 printf ("\n温馨提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n");
    do
    {
        printf ("\n\n\n");
        printf ("\t\t\t--------------------------------------------\n");
  printf ("\t\t\t+        信息安全092班学生信息管理系统      |\n");  
  printf ("\t\t\t--------------------------------------------\n");               
  printf ("\t\t\t+        [1]----录入学生信息                |\n");
  printf ("\t\t\t+        [2]----浏览学生信息                |\n");
  printf ("\t\t\t+        [3]----查询学生信息                |\n");
  printf ("\t\t\t+        [4]----删除学生信息                |\n");
  printf ("\t\t\t+        [5]----修改学生信息                |\n");
  printf ("\t\t\t+        [0]----退出系统                    |\n");
  printf ("\t\t\t+*·*·*·*·*·*·*·*·*·*·*·*·*·*·*|\n");
  printf ("\t\t\t--------------------------------------------\n");
        printf ("请输入您的选择:");
        scanf ("%d", &choice);
        switch (choice)
        {
            case 0:
    writeData ();
    freeAll ();
                exit (0);
   case 1:
                record ();
                break;
   case 2:
                displayAll ();
                break;
   case 3:
                query_by_num ();
                break;  
   case 4:
                del ();
                break; 
   case 5:
                change ();
                break; 
            default:
                printf ("\n无效选项!");
                break;
        }
    }
    while (choice != 0);
}
//录入学生信息
void record ()

 struct student *p0;   
 
 p0 = (struct student *)malloc(LEN);
 printf ("请输入学生的姓名:");
 scanf ("%s",p0->name);    
 printf ("请输入学生的学号:");
 scanf ("%ld",&p0->num);
 printf ("请输入学生的性别:");
 scanf ("%s",p0->sex);
 printf ("请输入学生的年龄:");
 scanf ("%d",&p0->age);
 printf ("请输入学生的地址:");
 scanf ("%s",p0->address);
 printf ("请输入学生的电话:");
 scanf ("%lf",&p0->tele_num);
  printf ("请输入学生的爱好:");
 scanf ("%s",p0->aihao);
    
 insert (p0);
 printf ("该学生的信息为:\n");
  printf ("-------------------------------------------------------------------------------\n");
 printf ("姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
 display (p0);
}
void insert (struct student *stu)
{
 struct student *p0, *p1, *p2;
 
 p1 = head;
 p0 = stu;
 
 if (head == NULL)
 {
  head = p0;
  p0->next = NULL;
 }
 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;
  }  
 } 
 TOTAL_NUM++;
}
void display (struct student *p)
{
 printf ("%s\t%ld\t%d\t%s\t%s\t\t%.0f\t%s\n", p->name, p->num, p->age, p->sex, p->address, p->tele_num, p->aihao);
}
//浏览学生信息
void displayAll()
{
 struct student *p;
 printf("学生总数:%d\n", TOTAL_NUM);
 p = head; 
 if (head != NULL)
 { 
  printf("\n姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
  printf("-------------------------------------------------------------------------------\n");
  do
  {
   display(p);
   p = p->next;
  }
  while(p != NULL);
 } 
 printf ("\n");
}
//按学号查询学生信息
void query_by_num ()
{
 int num;
 struct student *p1;
 printf("请输入学生的学号:");
 scanf("%ld", &num);
 if(head==NULL)
 {
  printf("无学生记录!\n");
  return;
 } 
 p1 = head;
 while (num!=p1->num && p1->next!=NULL)
 p1 = p1->next; 
 if (num == p1->num)
 { 
  printf ("姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n");
  printf ("-------------------------------------------------------------------------------\n");
  display (p1);
 } 
 else
 printf ("没有该学生记录,请核对!");
}
//写入文件
void writeData ()
{
 FILE*  fp;//文件指针 
 struct student *p;
    fp = fopen("1.txt", "w");
    if (!fp)
    {
  printf("文件打开错误!");
  return;
    }
 fprintf(fp,"%d\n", TOTAL_NUM);
    for(p = head; p!= NULL; p= p->next)
    {
        fprintf(fp,"%s\t%ld\t%s\t%d\t%s\t%.0f\t%s\n", p->name, p->num, p->sex, p->age, p->address, p->tele_num, p->aihao);
    }
    fclose (fp); 
}
void freeAll ()
{
 struct student *p1, *p2;
 p1 = p2=head; 
 while(p1)
 {
  p2=p1->next;
  free (p1);
  p1 = p2;
 } 
}
//读取文件
void readData ()
{
 FILE*  fp;//文件指针 
 struct student *p1, *p2; 
    fp = fopen("1.txt", "r");
    if (!fp)
    {
  printf("文件打开错误!");
        return;
    }
 
 fscanf(fp,"%d\n", &TOTAL_NUM);
 head = p1 = p2 = (struct student *)malloc(LEN);
 fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n", p1->name, &p1->num, p1->sex, &p1->age, p1->address, &p1->tele_num, p1->aihao);
 while(!feof(fp))
 {
  p1 = (struct student *)malloc(LEN);
  fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n", p1->name, &p1->num, p1->sex, &p1->age, p1->address, &p1->tele_num, p1->aihao);
  p2->next = p1;
  p2 = p1;
 }
 p2->next = NULL;
 fclose(fp);
}
//删除学生信息
void del ()
{
 struct student *p1, *p2;
 long int num;
 
 if (head == NULL)
 {
  printf("无学生记录!\n");
  return;
 }
 printf("请输入您要删除的学生的学号:");
 scanf("%ld", &num);
 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;
  free(p1);
  TOTAL_NUM--;
 }
 else
 printf("没有该学生记录,请核对!\n");
}
//修改学生信息
void change ()
{
 struct student *p1, *p2;
 long int num;
 if (head == NULL)
 {
  printf ("无学生记录!\n");
  return;
 }
 printf ("请输入您要修改的学生的学号:");
 scanf ("%ld", &num);
 p1 = head; 
 while (num != p1->num && p1->next != NULL)
 {
  p2 = p1;
  p1 = p1->next;  
 }
 if(num == p1->num)
 devise (p1); 
 else
 printf("没有该学生记录,请核对!\n");
}
void devise (struct student *p)
{
 int choice;
    choice = -1;
    do
    {
        printf("请选择您要修改的学生的信息内容:\n");
        printf("+----------------------+\n");        
        printf("| 姓名          请按 1 |\n");
        printf("| 学号          请按 2 |\n");
  printf("| 性别          请按 3 |\n");
  printf("| 年龄  请按 4 |\n");
  printf("| 地址          请按 5 |\n");
  printf("| 电话          请按 6 |\n");
  printf("| 爱好  请按 7 |\n");
  printf("| 取消          请按 0 |\n");
        printf("+----------------------+\n");
        printf("请输入您的选择:");
        scanf("%d", &choice);
       
        switch (choice)
        {
            case 0:
    return;
            case 1:
                printf("请输入新姓名:");
    scanf("%s", p->name);
                break;
            case 2:
                printf("请输入新学号:");
    scanf("%d", &p->num);
                break; 
   case 3:
                printf("请输入新性别:");
    scanf("%s", p->sex);
                break;
   case 4:
                printf("请输入新年龄:");
    scanf("%s", &p->age);
                break; 
   case 5:
                printf("请输入新地址:");
    scanf("%s", p->address);
                break; 
   case 6:
                printf("请输入新电话:");
    scanf("%lf", &p->tele_num);
                break; 
   case 7:
                printf("请输入新爱好:");
    scanf("%s", p->aihao);
                break; 
            default:
                printf("\n无效选项!");
                break;
        }
    }
    while(choice != 0);
}
追问
大哥,我想用类class 派生类,还有模板,范型算法写,这个struct 的有点低级,我找了不少这样的,对我没什么帮助啊!还是谢谢啦
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式