C语言编写简单教务系统

c语言链表结构编写简单学生教务系统:

#include<windows.h>
#include<string.h>
#include<conio.h>
//定义学生结构体 
typedef struct 
{
    char number[15];
    char name[5];
    double regular_score;
    double final_score;
    double total_score;

}Student;
//定义学生链表结点
typedef struct tagNode
{
    Student stu;//数据域 
    struct tagNode *pNext;//指针域 

}Node;

Node *head=NULL;



void Print_Menu()
{
    printf("================================================\n");
    printf("==============欢迎来到教务系统==================\n");
    printf("================================================\n");
    printf("================请选择功能======================\n");
    printf("=\t\t1、录入学生信息\t\t\t=\n");
    printf("=\t\t2、查询学生信息\t\t\t=\n");
    printf("=\t\t3、显示学生信息\t\t\t=\n");
    printf("=\t\t4、修改学生信息\t\t\t=\n");
    printf("=\t\t5、删除学生信息\t\t\t=\n");
    printf("=\t\t0、退出程序系统\t\t\t=\n");
    printf("================================================\n");
    
    return;
}
//录入学生信息
void Enter_Students()
{
    //清屏
    system("CLS");
    printf("==============================================\n");
    printf("==============欢迎使用学生教务系统============\n");
    printf("==============================================\n");
    printf("===============录入学生信息功能===============\n");
    printf("==============================================\n");
    printf("\n请依次输入学生的信息:\n\n|学生学号   \t|姓名   |平时成绩|   |期末成绩|   |总评成绩|\n") ;
    
    Node *node=(Node*)malloc(sizeof(Node));
    node->pNext=NULL;
    
    if(head==NULL)
    {
       head=node;
    }else
    {
        Node *p=head;
        while(p!=NULL && p->pNext!=NULL){
            p=p->pNext;
        }
        p->pNext=node;
    }
    scanf("%s  %s  %lf  %lf  %lf",node->stu.number,node->stu.name,&node->stu.regular_score,&node->stu.final_score,&node->stu.total_score);
    
    printf("\n学生信息录入系统成功!\n"); 
    
    return;
} 
//查询学生信息
Node *Inquire_Students()
{
    system("CLS");
    printf("==============================================\n");
    printf("==============欢迎使用学生教务系统============\n");
    printf("==============================================\n");
    printf("===============查询学生信息功能===============\n");
    printf("==============================================\n");
    char number[15];
    
    printf("\n请输入要查询的学生的学号:\n");
    
    scanf("%s",number);
    
    Node  *p=head;
    printf("\n|学生学号\t|姓名\t|平时成绩\t|期末成绩\t|总评成绩\t|\n");
    
    while(p!=NULL)
    {
        int ptr=_stricmp(p->stu.number,number);
        if(ptr==0)//找到学生信息 
        {
            return p; 
        }//否则将指针往后移遍历整个while 
        else
        {
            p=p->pNext;
        }}
    //遍历完也没找到的话返回没有找到
        if(p==NULL){
        return NULL;}
    
    return NULL;    
 } 
 //显示学生信息 
 void Display_Students()
 {
    system("CLS");
    printf("==============================================\n");
    printf("==============欢迎使用学生教务系统============\n");
    printf("==============================================\n");
    printf("===============显示学生信息功能===============\n");
    printf("==============================================\n");
    
    Node *p;
    p=head;
    printf("\n|学生学号\t|姓名\t|平时成绩\t|期末成绩\t|总评成绩\t|\n");
    if(p==NULL)
    {
        printf("未找到该学生信息!!\n"); 
    }
    while(p!=NULL)
    {
       
        printf("%s\t  %s\t  %0.2lf\t  %0.2lf\t  %0.2lf\t\n",p->stu.number,p->stu.name,p->stu.regular_score,p->stu.final_score,p->stu.total_score);
        p=p->pNext;
    }
    
    printf("=============================================\n");
 }
 //删除学生信息
 void Delete_Students()
 {
    system("CLS");
    printf("==============================================\n");
    printf("==============欢迎使用学生教务系统============\n");
    printf("==============================================\n");
    printf("===============删除学生信息功能===============\n");
    printf("==============================================\n");
    char number[15];
    printf("请输入要删除的学生信息的学号:\n");
    scanf("%s",number);
    
    Node *p=head;
    Node *p1=NULL;//定义的临时指针
     
    int ptr =_stricmp(head->stu.number,number);
    if(ptr==0)
    {
        p1=head;
        head=head->pNext;
        free(p1);
        printf("删除学生信息成功!!\n");
     } 
    
    while(p->pNext!=0)
    {
        int ptr =_stricmp(head->stu.number,number);
        if(ptr==0)
        {
            p1=p->pNext;
            p->pNext=p->pNext->pNext;
            free(p1);
            printf("删除学生信息成功!!\n");
            
         }
        p=p->pNext;
     }
     if(p==NULL)
     {
        printf("未找到该学生信息!\n");
     }
    
}
//修改学生信息
void Modify_Students()
{
    system("CLS");
    printf("==============================================\n");
    printf("==============欢迎使用学生教务系统============\n");
    printf("==============================================\n");
    printf("===============修改学生信息功能===============\n");
    printf("==============================================\n");
    char number[15];
    printf("\n请输入需要修改学生信息的学号:\n");
    scanf("%s",number);
    
    Node *p=head;
    
    while(p!=NULL)
    {
        int ptr =_stricmp(head->stu.number,number);
        if(ptr==0)
        {
            //显示需要修改的学生信息
            printf("====================================\n");
            printf("%s\t   %s\t   %0.2lf\t   %0.2lf\t   %0.2lf\t\n",p->stu.number,p->stu.name,p->stu.regular_score,p->stu.final_score,p->stu.total_score); 
            printf("====================================\n");
            printf("请修改学生信息:\n");
            scanf("%s  %s  %lf  %lf  %lf",p->stu.number,p->stu.name,&p->stu.regular_score,&p->stu.final_score,&p->stu.total_score);
            printf("修改学生信息成功!\n");
            break; 
        }
        p=p->pNext;
    } 
    if(p==NULL)
    {
        printf("为找到该学生信息!\n");
     } 
     
 } 
  
 int main(int argc,char *argv[])
{
    while(1)
    {
        system("CLS");
        Print_Menu();
        char ch;
        ch=_getch();
        switch(ch)
        {
            case '1':
                Enter_Students();
                break;
            case '2':{
                
                Node* pNode=Inquire_Students();
                if(pNode!=NULL){
                    printf("%s\t   %s\t   %0.2lf\t   %0.2lf\t   %0.2lf\t\n",pNode->stu.number,pNode->stu.name,pNode->stu.regular_score,pNode->stu.final_score,pNode->stu.total_score);
                }else{
                    printf("未找到该学生信息!请确认学生信息!\n");
                }
                 break; }
            case '3':
                Display_Students();
                break;
            case '4':
                Modify_Students();
                break;
            case '5':
                Delete_Students();
                break;
            case '0':
                printf("欢迎下次使用!\n");
                break;
            default:
                printf("您输入的数字有误,请选择功能!\n");
                break;
            
        }
        system("PAUSE");
        }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容