国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

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

2020-01-26 13:32:03
字體:
來源:轉載
供稿:網友

鑒于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]返回主頁面
【請選擇】

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 墨竹工卡县| 陵川县| 会宁县| 鄢陵县| 循化| 阜新市| 芮城县| 乌什县| 西吉县| 益阳市| 大厂| 石渠县| 镇康县| 米泉市| 罗江县| 泰州市| 永济市| 黄陵县| 修水县| 阿拉善右旗| 安丘市| 阳城县| 遂平县| 龙州县| 略阳县| 新津县| 军事| 双辽市| 嵊州市| 顺昌县| 锡林浩特市| 灵山县| 建平县| 沙雅县| 南汇区| 海南省| 社旗县| 桂平市| 宜君县| 桂平市| 宿州市|