欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)教務(wù)管理系統(tǒng)

 更新時間:2022年03月17日 17:29:55   作者:「已注銷」  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)教務(wù)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)教務(wù)管理系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

目前已完成教師管理系統(tǒng)部分,學(xué)生管理系統(tǒng)待完成:

實現(xiàn)效果如圖:

主界面:

教師端——注冊賬號

進(jìn)入教師管理系統(tǒng)

文件的保存

代碼如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*教師應(yīng)用結(jié)構(gòu)體*/
typedef struct Teacher
{
?? ?char name[10];//學(xué)生姓名
?? ?char iD[10];//學(xué)生學(xué)號
?? ?float score;//學(xué)生成績
}teacher;
/*教師鏈表結(jié)點*/
typedef struct
{
?? ?teacher data;
?? ?struct Teacher* next;
}Tutor;
/*教師系統(tǒng)賬號*/
typedef struct manager
{
?? ?char manAcc[10];?? ?//賬號
?? ?char manPassw[10];?? ?//密碼
?? ?struct manager* next;
}Manager;
Manager* managerHead;

/*函數(shù)聲明*/
void mainMenu();//主菜單
void studentPort();//學(xué)生端
/*---------------------------------------------------------*/
/* ? ? ? ? ? ? ? ? 教師管理系統(tǒng)函數(shù) ? ? ? ? ? ? ? ? ? ? ? */
/*---------------------------------------------------------*/
void showTeacherPort();//教師端
void teacherRegister();//教師端賬號注冊
void teacherLogin();//教師端登錄
int Password_Text_Find();//密碼驗證
Manager* Manager_check();//賬號核對
void teacherPort();//教師端
void tutorMenu();//教師管理菜單
void teacherFunction();//教師端功能應(yīng)用
void insertStudentData();//學(xué)生信息錄入
void showStudentData();//學(xué)生信息展示
void searchStudentData();//學(xué)生信息查詢
void changeStudentData();//學(xué)生信息修改
Tutor* deleteStudentData();//學(xué)生信息刪除

/*---------------------------------------------------------*/
/* ? ? ? ? ? ? ? ? 教師鏈表的初始化 ? ? ? ? ? ? ? ? ? ? ? ?*/
/*---------------------------------------------------------*/
Tutor* initTeacherList();//鏈表初始化
Tutor* createNode();//創(chuàng)建結(jié)點

/*---------------------------------------------------------*/
/* ? ? ? ? ? ? ? ? 文件的讀寫操作 ? ? ? ? ? ? ? ? ? ? ? ? ?*/
/*---------------------------------------------------------*/
void readInfoFromFile();
void writeInfoToFile();


int main(void)
{?? ?

?? ?int choice = 0;
?? ?while (1)
?? ?{
?? ??? ?mainMenu();//主菜單
?? ??? ?printf("\t請輸入選擇:");
?? ??? ?scanf("%d", &choice);
?? ??? ?switch (choice)
?? ??? ?{
?? ??? ?case 1:
?? ??? ??? ?teacherPort();
?? ??? ??? ?break;
?? ??? ?case 2:
?? ??? ??? ?studentPort();
?? ??? ??? ?break;
?? ??? ?case 3:
?? ??? ??? ?printf("您已退出系統(tǒng)!\n");
?? ??? ??? ?system("pause");
?? ??? ??? ?exit(0);
?? ??? ?default:
?? ??? ??? ?printf("您的輸入有誤,請重新輸入!\n");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?system("pause");
?? ??? ?system("cls");
?? ?}
}
/*主菜單*/
void mainMenu()
{
?? ?system("color f0");
?? ?printf("-------------------------------------------------\n");
?? ?printf("*歡迎使用教務(wù)管理系統(tǒng)*\n");
?? ?printf("\t1.教師端\n");
?? ?printf("\t2.學(xué)生端\n");
?? ?printf("\t3.退出系統(tǒng)\n");
?? ?printf("-------------------------------------------------\n");
}
/*學(xué)生端*/
void studentPort()
{
?? ?system("cls");
?? ?system("color b0");
?? ?printf("\n\n\n\n\n\n\n\t\t\t\t學(xué)生端暫時未寫,有興趣可以接著寫?。?!\n\n\n\n\n\n\n\n");
}
/*教師端*/
void showTeacherPort()
{
?? ?system("CLS");
?? ?printf("\n\n\n\t\t\t\t 教師端");
?? ?printf("\n\t\t\t---------------------------------\n\n");
?? ?printf("\t\t\t\t1)注冊\n");
?? ?printf("\t\t\t\t2)登錄\n");
?? ?printf("\t\t\t\t0)返回\n");
?? ?printf("\n\t\t\t---------------------------------\n\n");
}
/*教師管理菜單*/
void tutorMenu()
{
?? ?system("cls");
?? ?system("color 70");
?? ?printf("-------------------------------------------------\n");
?? ?printf("*歡迎進(jìn)入教師端*\n");
?? ?printf("\t1.學(xué)生信息錄入\n");
?? ?printf("\t2.學(xué)生信息展示\n");
?? ?printf("\t3.學(xué)生信息查詢\n");
?? ?printf("\t4.學(xué)生信息修改\n");
?? ?printf("\t5.學(xué)生信息刪除\n");
?? ?printf("\t6.學(xué)生數(shù)據(jù)保存\n");
?? ?printf("\t0.返回主菜單\n");
?? ?printf("-------------------------------------------------\n");
}
/*教師端賬號注冊*/
void teacherRegister()
{
?? ?Manager* p = (Manager*)malloc(sizeof(Manager));
?? ?p->next = NULL;
?? ?printf("請輸入注冊賬號:");
?? ?scanf("%s", p->manAcc);
?? ?printf("請輸入賬號密碼:");
?? ?scanf("%s", p->manPassw);
?? ?
?? ?if (managerHead == NULL)
?? ?{
?? ??? ?managerHead = p;
?? ?}
?? ?else
?? ?{
?? ??? ?p->next = managerHead;
?? ??? ?managerHead = p;
?? ?}
?? ?printf("注冊成功!\n");
}
/*核對賬號*/
Manager* Manager_check(char* Manager_num)
{
?? ?Manager* t = managerHead;
?? ?while (t)?
?? ?{
?? ??? ?if (strcmp(Manager_num, t->manAcc) != 0)
?? ??? ?{
?? ??? ??? ?t = t->next;
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?return t;
?? ?}
?? ?return t;
}
/*密碼驗證*/
int Password_Text_Find(char* Password)
{
?? ?char password_tem[20]="";
?? ?int tem = 0;
?? ?int n = 0; ? ?//檢測輸入次數(shù)
?? ?while (n != 3)?
?? ?{
?? ??? ?scanf("%s", password_tem);
?? ??? ?if (strcmp(password_tem, Password) == 0) {
?? ??? ??? ?tem = 1;
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?else?
?? ??? ?{
?? ??? ??? ?n++;
?? ??? ??? ?printf("\n\t\t輸入錯誤,請重新輸入,你還有%d次機(jī)會:", 3 - n);
?? ??? ?}
?? ?}
?? ?return tem;
}
/*教師端登錄*/
void teacherLogin()
{
?? ?char ID[10];
?? ?Manager* t;
?? ?printf("請輸入賬號:");
?? ?scanf("%s",ID);
?? ?t = Manager_check(ID);
?? ?if (!t)
?? ?{
?? ??? ?printf("\t\t抱歉,賬號不存在\n");
?? ??? ?system("pause");
?? ??? ?return;
?? ?}
?? ?printf("請輸入密碼:");
?? ?if (Password_Text_Find(t->manPassw) == 0)
?? ?{
?? ??? ?printf("\n\t\t已經(jīng)錯誤輸入密碼三次,將退出登錄系統(tǒng)···\n");
?? ??? ?system("pause");
?? ??? ?return;
?? ?}?? ?
?? ?printf("\t\t登錄成功···\n");
?? ?system("pause");
?? ?teacherFunction();
}
/*教師端*/
void teacherPort()
{
?? ?while (1)
?? ?{
?? ??? ?showTeacherPort();
?? ??? ?char ch = getch();
?? ??? ?switch(ch)
?? ??? ?{
?? ??? ?case '1':
?? ??? ??? ?teacherRegister();
?? ??? ??? ?break;
?? ??? ?case '2':
?? ??? ??? ?teacherLogin();
?? ??? ??? ?break;
?? ??? ?case '0':
?? ??? ??? ?return;
?? ??? ?default:
?? ??? ??? ?printf("\t\t輸入錯誤,請重新輸入\n");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?system("pause");
?? ??? ?system("cls");
?? ?}
}
/*教師端應(yīng)用功能*/
void teacherFunction()
{
?? ?Tutor* T = initTeacherList();
?? ?teacher data;
?? ?int choice = 0;
?? ?readInfoFromFile(T);
?? ?while (1)
?? ?{
?? ??? ?tutorMenu();//教師菜單
?? ??? ?printf("\t請輸入選擇:");
?? ??? ?scanf("%d", &choice);
?? ??? ?switch (choice)
?? ??? ?{
?? ??? ?case 1:
?? ??? ??? ?printf("\t1.學(xué)生信息錄入\n");
?? ??? ??? ?printf("學(xué)生姓名:");
?? ??? ??? ?scanf("%s", data.name);
?? ??? ??? ?printf("學(xué)生學(xué)號:");
?? ??? ??? ?scanf("%s", data.iD);
?? ??? ??? ?printf("學(xué)生成績:");
?? ??? ??? ?scanf("%f", &data.score);
?? ??? ??? ?insertStudentData(T, data);//錄入學(xué)生信息?? ??? ??? ?
?? ??? ??? ?break;
?? ??? ?case 2:
?? ??? ??? ?showStudentData(T);
?? ??? ??? ?break;
?? ??? ?case 3:
?? ??? ??? ?searchStudentData(T);
?? ??? ??? ?break;
?? ??? ?case 4:
?? ??? ??? ?changeStudentData(T);
?? ??? ??? ?break;
?? ??? ?case 5:?? ??? ??? ?
?? ??? ??? ?T=deleteStudentData(T);
?? ??? ??? ?break;
?? ??? ?case 6:
?? ??? ??? ?writeInfoToFile(T);
?? ??? ??? ?break;
?? ??? ?case 0:
?? ??? ??? ?return;
?? ??? ?default:
?? ??? ??? ?printf("您的輸入有誤,請重新輸入!\n");
?? ??? ??? ?break;
?? ??? ?}
?? ??? ?system("pause");
?? ??? ?system("cls");
?? ?
?? ?}
}
/*教師鏈表初始化*/
Tutor* initTeacherList()
{
?? ?Tutor* headNode = (Tutor*)malloc(sizeof(Tutor));
?? ?headNode->next = NULL;
?? ?return headNode;
}
/*創(chuàng)建結(jié)點*/
Tutor* createNode(teacher data)
{
?? ?Tutor* newNode = (Tutor*)malloc(sizeof(Tutor));
?? ?newNode->data = data;
?? ?newNode->next = NULL;
?? ?return newNode;
}
/*學(xué)生信息錄入*/
void insertStudentData(Tutor* headNode,teacher data)
{
?? ?Tutor* newNode = createNode(data);
?? ?/*頭接法*/
?? ?newNode->next = headNode->next;
?? ?headNode->next = newNode;
?? ?printf("\t錄入成功!\n");
}
/*學(xué)生信息展示*/
void showStudentData(Tutor* headNode)
{
?? ?Tutor* P = headNode->next;
?? ?printf("姓名\t學(xué)號\t成績\t\n");
?? ?while (P)
?? ?{
?? ??? ?printf("%s\t%s\t%f\n", P->data.name, P->data.iD, P->data.score);
?? ??? ?P = P->next;
?? ?}
}
/*學(xué)生信息查詢-按學(xué)號*/
void searchStudentData(Tutor* headNode)
{
?? ?Tutor* P = headNode->next;
?? ?char ID[10] = " ";

?? ?printf("請輸入查找的學(xué)生學(xué)號:");
?? ?scanf("%s", ID);

?? ?while (P)
?? ?{
?? ??? ?if (strcmp(P->data.iD, ID) != 0)
?? ??? ?{
?? ??? ??? ?P = P->next;
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?printf("姓名\t學(xué)號\t成績\n");
?? ??? ??? ?printf("%s\t%s\t%f\n", P->data.name, P->data.iD, P->data.score);
?? ??? ??? ?return;
?? ??? ?}
?? ?}
?? ?printf("\t目前不存在該學(xué)生信息!\n");
?? ?return;
}
/*學(xué)生信息修改*/
void changeStudentData(Tutor* headNode)
{
?? ?Tutor* P = headNode->next;
?? ?char ID[10] = " ";

?? ?printf("請輸入修改的學(xué)生學(xué)號:");
?? ?scanf("%s", ID);

?? ?while (P)
?? ?{
?? ??? ?if (strcmp(P->data.iD, ID) != 0)
?? ??? ?{
?? ??? ??? ?P = P->next;
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?else
?? ??? ?{?? ??? ?
?? ??? ??? ?printf("\t請進(jìn)行修改\n");
?? ??? ??? ?printf("學(xué)生姓名:");
?? ??? ??? ?scanf("%s", P->data.name);
?? ??? ??? ?printf("學(xué)生學(xué)號:");
?? ??? ??? ?scanf("%s", P->data.iD);
?? ??? ??? ?printf("學(xué)生成績:");
?? ??? ??? ?scanf("%f", &P->data.score);
?? ??? ??? ?printf("已完成修改!\n");
?? ??? ??? ?return;
?? ??? ?}
?? ?}
?? ?printf("\t目前不存在該學(xué)生信息!\n");
?? ?return;
}
/*學(xué)生信息刪除*/
Tutor* deleteStudentData(Tutor* headNode)
{
?? ?Tutor* head= headNode;
?? ?Tutor* node= head->next;
?? ?char ID[10] = " ";
?? ?
?? ?if (headNode->next == NULL)
?? ?{
?? ??? ?printf("\t當(dāng)前數(shù)據(jù)為空!\n");
?? ??? ?return headNode;
?? ?}?? ?
?? ?printf("請輸入要刪除的學(xué)生學(xué)號:");
?? ?scanf("%s", ID);
?? ?while (node!=NULL)
?? ?{
?? ??? ?if (strcmp(node->data.iD, ID) != 0)
?? ??? ?{
?? ??? ??? ?head = node;
?? ??? ??? ?node = node->next;
?? ??? ??? ?continue;
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?head->next = node->next;
?? ??? ??? ?free(node);
?? ??? ??? ?printf("\t刪除成功!\n");
?? ??? ??? ?return headNode;
?? ??? ?}
?? ?}

?? ?printf("\t未找到該學(xué)生的相關(guān)信息!\n");
?? ?return headNode;
}
//文件讀操作
void readInfoFromFile(Tutor* headNode)
{
?? ?FILE* fp;
?? ?struct Teacher data;
?? ?fp = fopen("1.txt", "r");
?? ?if (fp == NULL)
?? ?{
?? ??? ?fp = fopen("1.txt", "w+");
?? ?}

?? ?//2.讀文件
?? ?fscanf(fp, "姓名\t學(xué)號\t成績\n");//fscanf--格式化讀取數(shù)據(jù)
?? ?while (fscanf(fp, "%s\t%s\t%f\n", data.name, data.iD, &data.score) != EOF)
?? ?{
?? ??? ?insertStudentData(headNode, data);
?? ?}
?? ?fclose(fp);
}
//文件寫操作
void writeInfoToFile(Tutor* headNode)
{
?? ?FILE* fp;
?? ?fp = fopen("1.txt", "w");
?? ?Tutor* pMove = headNode->next;
?? ?fprintf(fp, "姓名\t學(xué)號\t成績\n"); //fprintf--寫入格式化數(shù)據(jù)
?? ?while (pMove)
?? ?{
?? ??? ?fprintf(fp, "%s\t%s\t%f\n", ?pMove->data.name,pMove->data.iD, pMove->data.score);
?? ??? ?pMove = pMove->next;
?? ?}

?? ?fclose(fp);
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++?QT實現(xiàn)文件壓縮和解壓縮操作

    C++?QT實現(xiàn)文件壓縮和解壓縮操作

    這篇文章主要為大家詳細(xì)介紹了C++?QT如何實現(xiàn)壓縮文件、文件夾和解壓縮的操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2022-11-11
  • C++小游戲tankwar之界面繪制的詳細(xì)過程

    C++小游戲tankwar之界面繪制的詳細(xì)過程

    最近沒有項目做,空閑了下來,于是寫了個c++小游戲來打發(fā)時間,下面通過本文基于圖文并茂的形式給大家介紹C++小游戲tankwar之界面繪制的詳細(xì)過程,感興趣的朋友一起看看吧
    2021-05-05
  • C++編程面向?qū)ο笕腴T全面詳解

    C++編程面向?qū)ο笕腴T全面詳解

    這篇文章主要為大家介紹了C++面向?qū)ο笕腴T的全面詳解,文章較長非常全面建議收藏閱讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • 利用C++實現(xiàn)矩陣的相加/相稱/轉(zhuǎn)置/求鞍點

    利用C++實現(xiàn)矩陣的相加/相稱/轉(zhuǎn)置/求鞍點

    利用C++實現(xiàn)矩陣的相加/相稱/轉(zhuǎn)置/求鞍點。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • Qt自定義控件實現(xiàn)儀表盤

    Qt自定義控件實現(xiàn)儀表盤

    這篇文章主要為大家詳細(xì)介紹了Qt如何自定義控件實現(xiàn)儀表盤,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C++模板元編程實現(xiàn)選擇排序

    C++模板元編程實現(xiàn)選擇排序

    這篇文章主要介紹了C++模板元編程實現(xiàn)選擇排序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C語言詳細(xì)講解指針數(shù)組的用法

    C語言詳細(xì)講解指針數(shù)組的用法

    在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個字符串,使字符串處理更加方便、靈活
    2022-05-05
  • C++實現(xiàn)掃雷小游戲(控制臺版)

    C++實現(xiàn)掃雷小游戲(控制臺版)

    這篇文章主要為大家詳細(xì)介紹了C++實現(xiàn)控制臺版的掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C++?OpenCV實現(xiàn)物體尺寸測量示例詳解

    C++?OpenCV實現(xiàn)物體尺寸測量示例詳解

    本文主要介紹了利用OpenCV對物體的尺寸進(jìn)行測量,即先定位到待測物體的位置,然后測量物體的寬高。感興趣的同學(xué)可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)
    2022-01-01
  • C語言 用while循環(huán)求和的平均值操作

    C語言 用while循環(huán)求和的平均值操作

    這篇文章主要介紹了C語言 用while循環(huán)求和的平均值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論