C语言实现教务管理系统

本文实例为大家分享了C语言实现教务管理系统的具体代码,供大家参考,具体内容如下

目前已完成教师管理系统部分,学生管理系统待完成:

实现效果如图:

主界面:

教师端——注册账号

进入教师管理系统

文件的保存

代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
/*教师应用结构体*/
typedef struct Teacher
{
    char name[10];//学生姓名
    char iD[10];//学生学号
    float score;//学生成绩
}teacher;
/*教师链表结点*/
typedef struct
{
    teacher data;
    struct Teacher* next;
}Tutor;
/*教师系统账号*/
typedef struct manager
{
    char manAcc[10];    //账号
    char manPassw[10];    //密码
    struct manager* next;
}Manager;
Manager* managerHead;

/*函数声明*/
void mainMenu();//主菜单
void studentPort();//学生端
/*---------------------------------------------------------*/
/*                 教师管理系统函数                       */
/*---------------------------------------------------------*/
void showTeacherPort();//教师端
void teacherRegister();//教师端账号注册
void teacherLogin();//教师端登录
int Password_Text_Find();//密码验证
Manager* Manager_check();//账号核对
void teacherPort();//教师端
void tutorMenu();//教师管理菜单
void teacherFunction();//教师端功能应用
void insertStudentData();//学生信息录入
void showStudentData();//学生信息展示
void searchStudentData();//学生信息查询
void changeStudentData();//学生信息修改
Tutor* deleteStudentData();//学生信息删除

/*---------------------------------------------------------*/
/*                 教师链表的初始化                        */
/*---------------------------------------------------------*/
Tutor* initTeacherList();//链表初始化
Tutor* createNode();//创建结点

/*---------------------------------------------------------*/
/*                 文件的读写操作                          */
/*---------------------------------------------------------*/
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("您已退出系统!\n");
            system("pause");
            exit(0);
        default:
            printf("您的输入有误,请重新输入!\n");
            break;
        }
        system("pause");
        system("cls");
    }
}
/*主菜单*/
void mainMenu()
{
    system("color f0");
    printf("-------------------------------------------------\n");
    printf("*欢迎使用教务管理系统*\n");
    printf("\t1.教师端\n");
    printf("\t2.学生端\n");
    printf("\t3.退出系统\n");
    printf("-------------------------------------------------\n");
}
/*学生端*/
void studentPort()
{
    system("cls");
    system("color b0");
    printf("\n\n\n\n\n\n\n\t\t\t\t学生端暂时未写,有兴趣可以接着写!!!\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("*欢迎进入教师端*\n");
    printf("\t1.学生信息录入\n");
    printf("\t2.学生信息展示\n");
    printf("\t3.学生信息查询\n");
    printf("\t4.学生信息修改\n");
    printf("\t5.学生信息删除\n");
    printf("\t6.学生数据保存\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;    //检测输入次数
    while (n != 3) 
    {
        scanf("%s", password_tem);
        if (strcmp(password_tem, Password) == 0) {
            tem = 1;
            break;
        }
        else 
        {
            n++;
            printf("\n\t\t输入错误,请重新输入,你还有%d次机会:", 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已经错误输入密码三次,将退出登录系统···\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");
    }
}
/*教师端应用功能*/
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.学生信息录入\n");
            printf("学生姓名:");
            scanf("%s", data.name);
            printf("学生学号:");
            scanf("%s", data.iD);
            printf("学生成绩:");
            scanf("%f", &data.score);
            insertStudentData(T, data);//录入学生信息            
            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;
}
/*创建结点*/
Tutor* createNode(teacher data)
{
    Tutor* newNode = (Tutor*)malloc(sizeof(Tutor));
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}
/*学生信息录入*/
void insertStudentData(Tutor* headNode,teacher data)
{
    Tutor* newNode = createNode(data);
    /*头接法*/
    newNode->next = headNode->next;
    headNode->next = newNode;
    printf("\t录入成功!\n");
}
/*学生信息展示*/
void showStudentData(Tutor* headNode)
{
    Tutor* P = headNode->next;
    printf("姓名\t学号\t成绩\t\n");
    while (P)
    {
        printf("%s\t%s\t%f\n", P->data.name, P->data.iD, P->data.score);
        P = P->next;
    }
}
/*学生信息查询-按学号*/
void searchStudentData(Tutor* headNode)
{
    Tutor* P = headNode->next;
    char ID[10] = " ";

    printf("请输入查找的学生学号:");
    scanf("%s", ID);

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

    printf("请输入修改的学生学号:");
    scanf("%s", ID);

    while (P)
    {
        if (strcmp(P->data.iD, ID) != 0)
        {
            P = P->next;
            continue;
        }
        else
        {        
            printf("\t请进行修改\n");
            printf("学生姓名:");
            scanf("%s", P->data.name);
            printf("学生学号:");
            scanf("%s", P->data.iD);
            printf("学生成绩:");
            scanf("%f", &P->data.score);
            printf("已完成修改!\n");
            return;
        }
    }
    printf("\t目前不存在该学生信息!\n");
    return;
}
/*学生信息删除*/
Tutor* deleteStudentData(Tutor* headNode)
{
    Tutor* head= headNode;
    Tutor* node= head->next;
    char ID[10] = " ";
    
    if (headNode->next == NULL)
    {
        printf("\t当前数据为空!\n");
        return headNode;
    }    
    printf("请输入要删除的学生学号:");
    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未找到该学生的相关信息!\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学号\t成绩\n");//fscanf--格式化读取数据
    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学号\t成绩\n"); //fprintf--写入格式化数据
    while (pMove)
    {
        fprintf(fp, "%s\t%s\t%f\n",  pMove->data.name,pMove->data.iD, pMove->data.score);
        pMove = pMove->next;
    }

    fclose(fp);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C++实现教师管理系统

    本文实例为大家分享了C++实现教师管理系统的具体代码,供大家参考,具体内容如下 链表模板定义:就是用这种数据类型来进行存储 #include<iostream> #ifndef NODELIST_S #define NODELIST_S template<typename T> class Node { public:     T s_Data;     Node<T>* s_Next;     Node(const T&data) :s_Data(data),

  • C++实现高校教室管理系统

    本文实例为大家分享了C++实现高校教室管理系统的具体代码,供大家参考,具体内容如下 设计目的在于,利用学习的数据结构和c语言知识,研究大学空闲教室管理系统的开发途径和应用方法.与其他学习阶段相比,大学课程相对较少,合理利用空闲教室显得尤为重要.为了让广大在校师生,在空闲时间有个教室去自习,去做自己想做的事情,因此开发一套空闲教室管理系统是势在必行的.通过高校教室管理系统,广大师生可以随时随地查看空闲教室,作为老师可以添加后台数据即默认空教室.同时,高校空闲教室管理系统设计是具有具体化,合理化性,

  • C语言实现教务管理系统

    本文实例为大家分享了C语言实现教务管理系统的具体代码,供大家参考,具体内容如下 目前已完成教师管理系统部分,学生管理系统待完成: 实现效果如图: 主界面: 教师端——注册账号 进入教师管理系统 文件的保存 代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> /*教师应用结构体*/ typedef struct Teacher {     char name[10];//学生姓名     char i

  • java Springboot实现教务管理系统

    目录 1.研究背景 2.现状与反思 3.功能截图 4.代码 4.1用户登录 4.2yml配置 4.3视图跳转 4.4拦截放行 5.总结 1.研究背景              在当今信息社会发展中中,计算机科学的飞速发展,大多数学校开始注意办公效率的发展是很关键,对学校的管理起到举足轻重的作用.基于 Internet 网络的信息服务,快速成长为现代学校中一项不可或缺的内容措施.很多校园都已经不满意商务办公管理的缓慢成长方式.学院的需求是一个功能强大的,能提供完善管理,管理信息系统的速度.社会持续

  • C语言学生成绩管理系统小设计

    本文实例为大家分享了C语言学生成绩管理系统的具体代码,供大家参考,具体内容如下 一.本设计涉及的重要C语言知识有: 1.单链表的各种操作 2.文件流的操作 3.单链表的排序 二.本设计主要以下几个模块组成 1.学生成绩添加模块 2.学生成绩删除模块 3.学生成绩修改模块 4.学生成绩检索模块 5.学生成绩显示模块(包括成绩排序) 6.学生成绩保存模块 效果图: 本设计大概5.6百行代码左右,通过这个设计,本人感觉C语言熟练了很多, 希望能对像我一样的C语言菜鸟同学会有点帮助,废话少说,咱们上代码

  • C语言学生成绩管理系统课程设计

    学生成绩管理系统是比较适合初学者的.它涵盖了c语言几乎知识.对于学了c语言的人,把这个课程设计搞好(当然自己能设计出来是要有很好的基础).不管自己能不能够完成,最重要的是能弄懂.参考其他资料,试着自己编写是不错的选择.这个课程设计也是我参照资料,自己编写的.自己适当地增加了一些功能.不过,编的不够那么专业吧. #include<stdio.h> #include<string.h> #include<stdlib.h> #define size 100 char* cl

  • C语言实现图书管理系统

    目前为止跟着学校进度学习C语言大概半年左右,基础学习只学到了指针,学得非常浅.说实话,起初对C语言的印象---只是一个学习计算机语言的敲门砖,对具体C语言如何应用等,非常迷茫.直到大一下半学期的高级语言设计课程之后,试过dos运行的图形化界面的完整小程序,才发现C语言的魅力. ok,废话不多说了,下面是我第二节课的作品----C语言的图书管理系统.一个简单的小程序.并非纯原创,是基于网络搜索到的"学生管理系统"改编而成的.通过直接浏览.修改一个完整的代码,我的收获颇丰.我认为这样比枯燥

  • C语言学生信息管理系统小项目

    本文为大家分享了C语言学生信息管理系统小项目,供大家参考,具体内容如下 /* 运行环境:我是在linux里面用gcc编译的,在windows里应该也能运行,用的一些文件库函数都是c标准库,没有用linux的系统调用(纠正一下:system("clear")这个系统调用是linux的,windows里面用system("cls") ) (1)问题描述 学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等.试设计一学生信息管理系统,使之能提供以下功

  • C语言学生学籍管理系统课程设计

    C语言学生学籍管理系统做了好长时间的,里面有点小问题,希望大佬找到并帮忙改改,注意输入密码三次错误会自动注销用户,密码123456 代码: #include<stdio.h> #include<stdlib.h> #include<string.h> #include<conio.h> struct student { char xuehao[100];//输入学号 char name[100];//输入姓名 char sex[100];//输入性别 int

  • C语言职工信息管理系统源码

    本文实例为大家分享了C语言职工信息管理系统的具体代码,供大家参考,具体内容如下 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> struct worker { char ID[20];//工号 char name[20];//姓名 char sex[5];//性别 char born[20];//生日 char edu[20];//学历 char po

  • python实现教务管理系统

    这是一个使用Python实现基于dos下面向数据库的教务管理系统,实现了管理员.教职工.学生三种不同身份的操作,可以实现的功能有:学生.教职工信息管理.不同权限的信息发布.管理各种信息等.代码约1200行,对于python初学者应该能提供一些帮助. Login.py #-*- coding:utf-8 -*- #####系统登录 import os import MySQLdb import time class Login: def __init__(self,conn): self.acco

  • C语言学生成绩管理系统源代码

    大学C语言实训课,C语言学生成绩管理系统,供大家参考,具体内容如下 #include<stdio.h> #include<string.h> #include<math.h> struct student { int num; char name[20]; float pingshi; float shiyan; float kaoshi; double zongping; }stu[4]; void main() { void a(); void b(); void

随机推荐