亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于C語言實現學生選課系統

發布時間:2020-09-03 11:41:13 來源:腳本之家 閱讀:318 作者:xiaocaidayong 欄目:編程語言

鑒于C語言實現的通訊錄,為了鞏固C語言的基礎知識,試著寫一個簡單的學生選課系統。

思路比較簡單:

1.回滾顯示各種提示信息或操作信息

2.鏈表操作。

代碼中有管理員部分功能沒有實現,學生和老師的功能基本實現,但有待加固,如果初學者可是試著去完善一下。
還可以將老師,學生的信息輸出到文件文本中,本代碼中沒有實現,但并不是很難。

代碼如下:

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

/* 總鏈表——存放所有信息 */
typedef struct Sum_Node
{
  /* 學生信息 */
  char stuNo[20][20];
  char stuName[20][20];
  char stuSex[20][20];
  /* 課程信息 */
  char CourseNum[20];
  char CourseName[20];
  char CourseTeacher[20];
  struct Sum_Node *next;
}TotalNode;

/* 鏈表管理員——暫時不需要 */
/*typedef struct Node
{
  char Num[20];
  char Name[20];
  char Sex[10];
  struct Node *next;
}Manager_Node;*/

char studentAccount[20];
char studentPassword[20];
char teacherAccount[20];
char teacherPassword[20];
char managerAccount[20];
char managerPassword[20];

/* 定義結構體指針 */
TotalNode *pTeacher;
TotalNode *pStudent;


/* 函數的聲明 */
void checkPerson_Msg(TotalNode *phead,int n);
void CreateTeacherNode(TotalNode *head);

/* 學生信息的輸出-鏈表 */
void OutStudentNode(TotalNode *head,char *Account)
{
  TotalNode *p;
  int num=0;
  int i,j;
  int flag=0;
  char Account_random[20]="";
  pStudent=pTeacher; // 學生和老師用的鏈表是同一個
  p=pStudent;

  puts("******所選課程信息******");
  puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  if(pStudent==NULL)
  {
    puts("沒有數據!");
    puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    return;
  }
  printf("請輸入所要查詢人的姓名:");
  gets(Account_random);  // 獲取所要查詢的學生姓名
  if(0 == Account_random[0])
  {  
    gets(Account_random);
  }
  while(p!=NULL)
  {
    for(j=0;j<20;j++)
    {
      if(0 == strcmp(p->stuName[j],Account_random))
      {
        printf("課程代碼:%s\t",p->CourseNum);
        printf("課程名稱:%s\t",p->CourseName);
        printf("課程老師:%s\t",p->CourseTeacher);
        for(i=0;i<20;i++)
        {
          if(p->stuNo[i][0]!='\0')
          {
            num++;
          }
        }
        printf("選課學生:%d\t",num);
        num=0; // 清0操作
        putchar('\n');
        flag=1;
      }
    }
    p=p->next;
  }
  if(0 == flag)
  {
    puts("沒有該學生選課信息!!!!");
  }
  puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  putchar('\n'); 
}

/* 學生信息的插入-鏈表 */
void InsertStudentNode(TotalNode *head,char *Account)
{
  TotalNode *p;
  int i;
  char courseCode[20]="";
  pStudent=pTeacher; // 學生和老師用的鏈表是同一個,都是鏈表頭
  p=pStudent;
  if(p==NULL)
  {
    puts("等待教師錄入選課信息,請下次再進行選擇!!");
    return;
  }
  printf("【請輸入正確的課程代碼】");
  gets(courseCode);
  if(0 == courseCode[0])
  {
    gets(courseCode);
  }
  while(p!=NULL)
  {
    if(0 == strcmp(p->CourseNum, courseCode))
    {
      for(i=0;i<20;i++)
      {  
        if(p->stuNo[i][0] == '\0')
        {
          printf("請輸入學號:");
          gets(p->stuNo[i]);
          printf("請輸入姓名:");
          gets(p->stuName[i]);
          printf("請輸入性別:");
          gets(p->stuSex[i]);
          puts("選課成功!!!!");
          return;
        }
      }
    }
    p=p->next;
  }
  puts("$$$$$$選課失敗,請重新選擇$$$$$$");

}

/* 刪除所選課程 */
void DeleteStudentNode(TotalNode *head,char *Account)
{
  char coursNo[20]="";  // 課程代碼
  char student[20]="";  // 學生姓名
  TotalNode *p;
  int i;
  int flag=0;
  pStudent=pTeacher; // 學生和老師用的鏈表是同一個,都是鏈表頭
  p=pStudent;
  if(pStudent==NULL)
  {
    puts("沒選該課程,刪除失敗!!!!");
    return;
  }

  printf("【輸入學生姓名】");
  gets(student);
  if(0 == student[0])
  {
    gets(student);
  }

  printf("【請輸入刪除的課程代碼】");
  gets(coursNo);
  if(0 == coursNo[0])
  {
    gets(coursNo);
  }
  while(p!=NULL)
  {
    if(0==strcmp(p->CourseNum,coursNo)) // 查詢所要刪除的課程代碼
    {
      for(i=0;i<20;i++)
      {
        if(0==strcmp(p->stuName[i],student))
        {
          /* 初始化清0操作 */
          p->stuNo[i][0]='\0';
          p->stuName[i][0]='\0';
          p->stuSex[i][0]='\0';
          puts("刪除成功!!!!");
          flag=1;   // 刪除標志位
        }
      }  
    }
    p=p->next;
  }
  if(0 == flag)  // 如果刪除成功標志位置1
  {
    puts("刪除失敗!!!!");
  }

}


/* 教師信息的輸出-鏈表 */
void OutTeacherNode(TotalNode *head)
{
  TotalNode *p;
  int num=0;
  int i;
  p=pTeacher;
  puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  if(pTeacher==NULL)
  {
    puts("沒有數據!");
    puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    return;
  }
  while(p!=NULL)
  {
    printf("課程代碼:%s\t",p->CourseNum);
    printf("課程名稱:%s\t",p->CourseName);
    printf("課程老師:%s\t",p->CourseTeacher);
    for(i=0;i<20;i++)
    {
      if(p->stuNo[i][0]!='\0')
      {
        num++;
      }
    }
    printf("選課學生:%d\t",num);
    num=0; // 清0操作
    putchar('\n');
    p=p->next;
  }
  puts("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
  putchar('\n'); 
}

/* 教師信息的插入-鏈表 */
void InsertTeacherNode(TotalNode *head)
{
  TotalNode *p;
  TotalNode *q;
  int i;
  p=pTeacher; // 教師鏈表的頭
  if(pTeacher==NULL)
  {
    CreateTeacherNode(head);
    puts("添加成功!");
    return;
  }
  while(p!=NULL)
  {
    if(p->next == NULL)
    {
      q=(TotalNode *)malloc(sizeof(TotalNode));
      p->next=q;
      q->next=NULL;
      for(i=0;i<20;i++)
      {
        q->stuNo[i][0]='\0';
      }
      printf("請輸入課程代碼:");
      gets(q->CourseNum);
      if(0 == *q->CourseNum)
      {
        gets(q->CourseNum);
      }
      printf("請輸入課程名稱:");
      gets(q->CourseName);
      printf("請輸入課程教師:");
      gets(q->CourseTeacher);
      puts("添加成功!");
      break;
    }
    p=p->next;
  }
  //pTeacher=head;
}

/* 教師信息的插入-鏈表 */
void CreateTeacherNode(TotalNode *head)
{
  int i;
  pTeacher=(TotalNode *)malloc(sizeof(TotalNode));
  pTeacher->next=NULL;
  for(i=0;i<20;i++)
  {
    pTeacher->stuNo[i][0]='\0';
  }
  printf("請輸入課程代碼:");
  gets(pTeacher->CourseNum);
  if(0 == *pTeacher->CourseNum)
  {
    gets(pTeacher->CourseNum);
  }
  printf("請輸入課程名稱:");
  gets(pTeacher->CourseName);
  printf("請輸入課程教師:");
  gets(pTeacher->CourseTeacher);
  //pTeacher=head;
}

/* 刪除指定數據 */
void DeleteTeacherNode(TotalNode *phead)
{
  char coursNo[20]="";  // 課程代碼
  TotalNode *p;
  TotalNode *s;
  p=pTeacher; // 教師鏈表的頭
  s=pTeacher;
  if(NULL==pTeacher)
  {
    puts("沒有課程信息!!!!");
    return;
  }
  printf("【請輸入刪除的課程代碼】");
  gets(coursNo);
  if(0 == coursNo[0])
  {
    gets(coursNo);
  }
  if(0 == strcmp(p->CourseNum,coursNo))
  {
    pTeacher=p->next;
    puts("刪除成功!!");
    return;
  }
  while(p != NULL)
  {
    if(0 == strcmp(p->CourseNum,coursNo))
    {
      s->next=p->next;
      puts("刪除成功!!");
      return;
    }
    s=p;
    p=p->next;
  }
}

/* 功能顯示 */
void display(TotalNode *phead)
{
  int n;
  while(1)
  {
    puts("=========請選擇登錄頁面=========");
    puts("[1]學生登錄");
    puts("[2]教師登錄");
    puts("[3]管理員登錄");
    puts("[4]退出系統");
    while(1)  // 循環檢查輸入的值是否正確
    {
      printf("【請選擇】");
      scanf("%d",&n);
      if(n>4 || n<1)
      {
        puts("輸入有誤,請選擇正確的選項:");
        continue;    // 輸入不正確,重新輸入
      }
      else
      {
        break; // 輸入正確,退出循環
      }
    }
    if( 1 == n ) //  學生登錄系統
    {
      puts("=========歡迎登錄學生系統=========");
      printf("請輸入賬號和密碼\n");
      checkPerson_Msg(phead,1);


    }
    if( 2 == n ) //  老師登錄系統
    {
      puts("=========歡迎登錄教師系統=========");
      printf("請輸入賬號和密碼\n");
      checkPerson_Msg(phead,2);

    }
    if( 3 == n ) //  管理員登錄系統
    {
      puts("=========歡迎登錄管理員系統=========");
      printf("請輸入賬號和密碼\n");
      checkPerson_Msg(phead,3);

    }
    if( 4 == n ) //  退出系統
    {
      puts("@@@@@@@@@歡迎下次登錄,再見!!!@@@@@@@@@");
      exit(0);    
    }
  }
}

/* 學生登錄后的操作,查詢、修改 */
void Student_Mng(TotalNode *phead, char *Account,int n)
{
  switch(n)
  {
  case 1:   // 查詢
    OutStudentNode(phead,Account);
    break;
  case 2:   // 添加
    InsertStudentNode(phead,Account);
    break;
  case 3:   // 刪除
    DeleteStudentNode(phead,Account);
    break;
  case 4: ;  // 返回主頁面,上層已經實現,此處不需要考慮
    break;
  default:
    puts("異常!");
    break;
  }
}

/* 教師登錄后的操作,查詢、修改 */
void Teacher_Mng(TotalNode *phead, char *Account,int n)
{

  switch(n)
  {
  case 1: // 查詢學生選課情況
    OutTeacherNode(phead);
    break;
  case 2: // 添加和刪除課程信息
    InsertTeacherNode(phead);
    break;
  case 3:   
    DeleteTeacherNode(phead);
    break;
  case 4:
    break; // 上層實現其功能
  default:
    puts("異常!");
    break;
  }
}

/* 管理員登錄后的操作,查詢、修改 */
void Manager_Mng(char *Account, int n)
{
  switch(n)
  {
  case 1:
    break;
  case 2:
    break;
  case 3:
    break;
  default:
    puts("異常!");
    break;
  }
}
/* 顯示各功能登錄后的信息 */
void display_Detailed(TotalNode *phead ,char *Account,int n)
{
  int in;
  switch(n)
  {
  case 1:
    while(1)
    {
      printf("=========歡迎%s同學=========\n",Account);
      puts("[1]查詢已選課程"); // 查詢自己所選的所有課程包括:課程代碼、課程名稱、任課老師
      puts("[2]添加課程");    // 增加所選課程
      puts("[3]刪除所選課程"); // 刪除所選課程
      puts("[4]返回主頁面");
      printf("【請選擇】");
      scanf("%d",&in);
      if(4 == in)
      {
        return; // 返回上層登錄頁面
      }
      Student_Mng(pStudent,Account, in);
      //puts("[4]");
    }
    break;
  case 2:
    while(1)
    {
      printf("=========歡迎%s老師=========\n",Account);
      puts("[1]查詢學生選課信息");  // 
      puts("[2]添加老師課程信息");  // 
      puts("[3]刪除老師課程信息");  //
      puts("[4]返回主頁面");
      printf("【請選擇】");
      scanf("%d",&in);
      if(4 == in)
      {
        return; // 返回上層登錄頁面
      }
      Teacher_Mng(pTeacher,Account, in);
    }
    //puts("[4]");
    break;
  case 3:
    printf("=========歡迎%s同志=========\n",Account);
    puts("[1]查詢學生所選課程信息");
    puts("[2]修改選課信息");
    puts("[3]返回主頁面");
    scanf("%d",&in);
    Manager_Mng(Account, in);
    //puts("[4]");
    break;
  default:
    puts("異常!");
    break;
  }

}

/* 驗證賬號密碼 */
void checkAccountandPassword(TotalNode *phead ,char *Account, char *Password,int n)
{
  while(1)
  {
    gets(Account);
    /**/
    if(0 == strcmp(Account,"wantin"))
    {
      while(1)
      {
        printf("請輸入密碼:");
        gets(Password);
        if(0 == strcmp(Password,"123456"))
        {
          display_Detailed(phead,Account, n);
          return;
        }
      }
    }
    else
    {
      printf("請輸入賬號:");
    }
  }
}

/* 校驗學生、教師、管理員的賬號 密碼 */
void checkPerson_Msg(TotalNode *phead , int n)
{
  switch(n)
  {
    case 1: // 學生登錄  char studentAccount[20]; char studentPassword[20]; 
      checkAccountandPassword(phead, studentAccount,studentPassword,n);
      break;
    case 2: // 教師登錄  char teacherAccount[20]; char teacherPassword[20];   
      checkAccountandPassword(phead, teacherAccount,teacherPassword,n);
      break;
    case 3: // 管理員登錄 char managerAccount[20]; char managerPassword[20];    
      checkAccountandPassword(phead, managerAccount,managerPassword,n);
      break;
    default:
      puts("異常!");
      break;
  }
}

/* */

void main()
{
  TotalNode *phead=NULL;
  display(phead);
}

大家可以根據下面的操作來幫助讀懂這段代碼。

操作結果如下:

=========請選擇登錄頁面=========
[1]學生登錄
[2]教師登錄
[3]管理員登錄
[4]退出系統
【請選擇】2
=========歡迎登錄教師系統=========
請輸入賬號和密碼
請輸入賬號:wantin
請輸入密碼:123456
=========歡迎wantin老師=========
[1]查詢學生選課信息
[2]添加老師課程信息
[3]刪除老師課程信息
[4]返回主頁面
【請選擇】2
請輸入課程代碼:123
請輸入課程名稱:C語言
請輸入課程教師:王艇
添加成功!
=========歡迎wantin老師=========
[1]查詢學生選課信息
[2]添加老師課程信息
[3]刪除老師課程信息
[4]返回主頁面
【請選擇】2
請輸入課程代碼:456
請輸入課程名稱:Java
請輸入課程教師:王艇
添加成功!
=========歡迎wantin老師=========
[1]查詢學生選課信息
[2]添加老師課程信息
[3]刪除老師課程信息
[4]返回主頁面
【請選擇】2
請輸入課程代碼:789
請輸入課程名稱:PHP
請輸入課程教師:王艇
添加成功!
=========歡迎wantin老師=========
[1]查詢學生選課信息
[2]添加老師課程信息
[3]刪除老師課程信息
[4]返回主頁面
【請選擇】1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
課程代碼:123    課程名稱:C語言  課程老師:王艇   選課學生:0
課程代碼:456    課程名稱:Java   課程老師:王艇   選課學生:0
課程代碼:789    課程名稱:PHP    課程老師:王艇   選課學生:0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=========歡迎wantin老師=========
[1]查詢學生選課信息
[2]添加老師課程信息
[3]刪除老師課程信息
[4]返回主頁面
【請選擇】4
=========請選擇登錄頁面=========
[1]學生登錄
[2]教師登錄
[3]管理員登錄
[4]退出系統
【請選擇】1
=========歡迎登錄學生系統=========
請輸入賬號和密碼
請輸入賬號:wantin
請輸入密碼:123456
=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】1
******所選課程信息******
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
請輸入所要查詢人的姓名:王艇
沒有該學生選課信息!!!!
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】3
【輸入學生姓名】王艇
【請輸入刪除的課程代碼】123
刪除失敗!!!!
=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】2
【請輸入正確的課程代碼】123
請輸入學號:110
請輸入姓名:王艇
請輸入性別:男
選課成功!!!!
=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】1
******所選課程信息******
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
請輸入所要查詢人的姓名:王艇
課程代碼:123    課程名稱:C語言  課程老師:王艇   選課學生:1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】4
=========請選擇登錄頁面=========
[1]學生登錄
[2]教師登錄
[3]管理員登錄
[4]退出系統
【請選擇】2
=========歡迎登錄教師系統=========
請輸入賬號和密碼
請輸入賬號:wantin
請輸入密碼:123456
=========歡迎wantin老師=========
[1]查詢學生選課信息
[2]添加老師課程信息
[3]刪除老師課程信息
[4]返回主頁面
【請選擇】1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
課程代碼:123    課程名稱:C語言  課程老師:王艇   選課學生:1
課程代碼:456    課程名稱:Java   課程老師:王艇   選課學生:0
課程代碼:789    課程名稱:PHP    課程老師:王艇   選課學生:0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=========歡迎wantin老師=========
[1]查詢學生選課信息
[2]添加老師課程信息
[3]刪除老師課程信息
[4]返回主頁面
【請選擇】4
=========請選擇登錄頁面=========
[1]學生登錄
[2]教師登錄
[3]管理員登錄
[4]退出系統
【請選擇】1
=========歡迎登錄學生系統=========
請輸入賬號和密碼
請輸入賬號:wantin
請輸入密碼:123456
=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】2
【請輸入正確的課程代碼】456
請輸入學號:110
請輸入姓名:王艇
請輸入性別:男
選課成功!!!!
=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】1
******所選課程信息******
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
請輸入所要查詢人的姓名:王艇
課程代碼:123    課程名稱:C語言  課程老師:王艇   選課學生:1
課程代碼:456    課程名稱:Java   課程老師:王艇   選課學生:1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】2
【請輸入正確的課程代碼】123
請輸入學號:112
請輸入姓名:王五
請輸入性別:男
選課成功!!!!
=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】1
******所選課程信息******
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
請輸入所要查詢人的姓名:王艇
課程代碼:123    課程名稱:C語言  課程老師:王艇   選課學生:2
課程代碼:456    課程名稱:Java   課程老師:王艇   選課學生:1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】1
******所選課程信息******
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
請輸入所要查詢人的姓名:王五
課程代碼:123    課程名稱:C語言  課程老師:王艇   選課學生:2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=========歡迎wantin同學=========
[1]查詢已選課程
[2]添加課程
[3]刪除所選課程
[4]返回主頁面
【請選擇】4
=========請選擇登錄頁面=========
[1]學生登錄
[2]教師登錄
[3]管理員登錄
[4]退出系統
【請選擇】2
=========歡迎登錄教師系統=========
請輸入賬號和密碼
請輸入賬號:wantin
請輸入密碼:123456
=========歡迎wantin老師=========
[1]查詢學生選課信息
[2]添加老師課程信息
[3]刪除老師課程信息
[4]返回主頁面
【請選擇】1
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
課程代碼:123    課程名稱:C語言  課程老師:王艇   選課學生:2
課程代碼:456    課程名稱:Java   課程老師:王艇   選課學生:1
課程代碼:789    課程名稱:PHP    課程老師:王艇   選課學生:0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

=========歡迎wantin老師=========
[1]查詢學生選課信息
[2]添加老師課程信息
[3]刪除老師課程信息
[4]返回主頁面
【請選擇】

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

若羌县| 庆安县| 茌平县| 泽库县| 罗甸县| 崇义县| 玉树县| 怀宁县| 加查县| 涞水县| 新丰县| 财经| 繁昌县| 墨玉县| 宁晋县| 淅川县| 怀集县| 黑水县| 昌吉市| 华阴市| 甘德县| 化隆| 宝丰县| 乐东| 澄城县| 习水县| 林芝县| 石屏县| 广东省| 广饶县| 晋中市| 岐山县| 菏泽市| 静宁县| 内乡县| 阿拉善盟| 哈密市| 临朐县| 湖口县| 澳门| 句容市|