精华内容
下载资源
问答
  • 主要为大家详细介绍了C语言实现学生选课系统的完整版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 通过c语言设计学生选课系统,完成选课、退选、浏览、修改课程信息等功能
  • 使用c语言编写的选课系统. 有登录密码,管理员,普通账户的区别。可对选课录入,选课修改,录入学生选课,修改学生选课,查看学生选课,查看已选课程等功能,保存数据可读与写入。
  • 废话不多说,这里有一个C语言实现的学生选课系统代码,分享给大家,具体如下:#include#includeint N1,N2,kk1,kk2,kk3;struct couse * head1;struct student * head2;struct couse//课程信息结构体{int num1;char ...

    好久没玩过C语言了,上一次还是在大二的时候。。。废话不多说,这里有一个C语言实现的学生选课系统代码,分享给大家,具体如下:

    #include

    #include

    int N1,N2,kk1,kk2,kk3;

    struct couse * head1;

    struct student * head2;

    struct couse//课程信息结构体

    {

    int num1;

    char name1[20];

    int score;

    int nelepeo;

    //课程已选人数

    int Melepeo;

    //课程人数上限

    struct couse * next;

    }

    ;

    struct student//学生信息结构体

    {

    int num2;

    char name2[20];

    int nelenum[50];

    //已选课程编号

    int nelen;

    //已选课程数量

    struct student * next;

    }

    ;

    void Ms()

    {

    for (kk1=0;kk1<1100;kk1++)

    for (kk2=0;kk2<1200;kk2++)

    for (kk3=0;kk3<1200;kk3++);

    }

    void keyboardc()//录入课程子函数(从键盘录入)

    {

    struct couse *p1,*p2;

    N1=0;

    p1=p2=(struct couse*)malloc(sizeof(struct couse));

    printf("课程编号\t课程名称\t学分\t课程人数上限\n");

    scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);

    p1->nelepeo=0;

    head1=NULL;

    while(p1->num1!=0)

    {

    N1=N1+1;

    if(N1==1)head1=p1; else p2->next=p1;

    p2=p1;

    p1=(struct couse * )malloc(sizeof(struct couse));

    scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);

    p1->nelepeo=0;

    }

    p2->next=NULL;

    }

    void filec()//录入键盘子函数(从文件录入)

    {

    FILE * fp;

    char filepath[20];

    struct couse *p1,*p2;

    N1=0;

    printf("输入要读入的文件路径:");

    getchar();

    gets(filepath);

    if((fp=fopen(filepath,"r"))==NULL)

    {

    printf("找不到%s文件!\n",filepath);

    exit(0);

    }

    p1=p2=(struct couse*)malloc(sizeof(struct couse));

    fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);

    head1=NULL;

    while(!feof(fp))

    {

    N1=N1+1;

    if(N1==1)head1=p1; else p2->next=p1;

    p2=p1;

    p1=(struct couse * )malloc(sizeof(struct couse));

    fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);

    }

    p2->next=NULL;

    }

    void inputc()//录入课程主函数

    {

    int i;

    printf("\t\t\t录入课程信息\n");

    printf("\n1.从键盘录入\n");

    printf("2.从文件录入\n");

    printf("3.返回主菜单\n");

    printf("请选择(1~3):\n");

    scanf("%d",&i);

    switch(i)

    {

    case(1):keyboardc();

    break;

    case(2):filec();

    break;

    case(3):break;

    }

    }

    void insertc(struct couse *incouse)//课程管理子函数(增加课程)

    {

    struct couse *p0,*p1,*p2;

    p1=head1;

    p0=incouse;

    if(head1==NULL)

    {

    head1=p0;

    p0->next=NULL;

    } else

    {

    while((p0->num1 > p1->num1) && (p1->next!=NULL))

    {

    p2=p1;

    p1=p1->next;

    }

    if(p0->num1 <= p1->num1)

    {

    if(head1==p1) head1=p0; else p2->next=p0;

    p0->next=p1;

    } else

    {

    p1->next=p0;

    p0->next=NULL;

    }

    }

    N1=N1+1;

    }

    void delc(int num1)//课程管理子函数(删除课程)

    {

    struct couse *p1,*p2;

    if(head1==NULL)

    {

    printf("\n没有课程,无法删除!\n");

    goto end;

    }

    p1=head1;

    while(num1!=p1->num1 && p1->next!=NULL)

    {

    p2=p1;

    p1=p1->next;

    }

    if(num1==p1->num1)

    {

    if(p1==head1) head1=p1->next; else p2->next=p1->next;

    printf("已删除该编号课程!\n");

    N1=N1-1;

    } else printf("无该编号的课程!\n");

    end:;

    }

    void managementc()//课程管理主函数

    {

    struct couse * incouse;

    int i,num1;

    printf("\t\t\t课程管理\n");

    printf("1.新增课程\n");

    printf("2.删除课程\n");

    printf("3.返回主菜单\n");

    printf("请选择(1~3):\n");

    scanf("%d",&i);

    switch(i)

    {

    case(1):

    {

    incouse=(struct couse *)malloc(sizeof(struct couse));

    printf("课程编号\t课程名称\t学分\t课程人数上限\n");

    scanf("%d%s%d%d",&incouse->num1,incouse->name1,&incouse->score,&incouse->Melepeo);

    incouse->nelepeo=0;

    insertc(incouse);

    break;

    }

    case(2):

    {

    printf("请输入要删除课程的编号:\n");

    scanf("%d",&num1);

    delc(num1);

    break;

    }

    case(3):break;

    }

    }

    void keyboards()//录入学生信息子函数(从键盘录入)

    {

    int i;

    struct student *p1,*p2;

    N2=0;

    p1=p2=(struct student *)malloc(sizeof(struct student));

    printf("学生学号\t学生姓名\n");

    scanf("%d%s",&p1->num2,p1->name2);

    p1->nelen=0;

    for (i=0;i<20;i++) p1->nelenum[i]=0;

    head2=NULL;

    while(p1->num2!=0)

    {

    N2=N2+1;

    if(N2==1)head2=p1; else p2->next=p1;

    p2=p1;

    p1=(struct student * )malloc(sizeof(struct student));

    scanf("%d%s",&p1->num2,p1->name2);

    p1->nelen=0;

    for (i=0;i<20;i++) p1->nelenum[i]=0;

    }

    p2->next=NULL;

    }

    void files()//录入学生信息子函数(从文件录入)

    {

    int i=0;

    FILE * fp;

    char filepath[20];

    struct student *p1,*p2;

    N2=0;

    printf("输入要读入的文件路径:");

    getchar();

    gets(filepath);

    if((fp=fopen(filepath,"r"))==NULL)

    {

    printf("找不到%s文件!\n",filepath);

    exit(0);

    }

    p1=p2=(struct student*)malloc(sizeof(struct student));

    fread(p1,sizeof(struct student),1,fp);

    head2=NULL;

    while(!feof(fp))

    {

    i=0;

    N2=N2+1;

    if(N2==1)head2=p1; else p2->next=p1;

    p2=p1;

    p1=(struct student * )malloc(sizeof(struct student));

    fread(p1,sizeof(struct student),1,fp);

    }

    p2->next=NULL;

    }

    void inputs()//录入学生信息主函数

    {

    int i;

    printf("\t\t\t录入学生信息\n");

    printf("\n1.从键盘录入\n");

    printf("2.从文件录入\n");

    printf("3.返回主菜单\n");

    printf("请选择(1~3):\n");

    scanf("%d",&i);

    switch(i)

    {

    case(1):keyboards();

    break;

    case(2):files();

    break;

    case(3):break;

    }

    }

    void inserts(struct student * incouse)//学生信息管理子函数(填加学生信息)

    {

    struct student *p0,*p1,*p2;

    p1=head2;

    p0=incouse;

    if(head2==NULL)

    {

    head2=p0;

    p0->next=NULL;

    } else

    {

    while((p0->num2 > p1->num2) && (p1->next!=NULL))

    {

    p2=p1;

    p1=p1->next;

    }

    if(p0->num2 <= p1->num2)

    {

    if(head2==p1) head2=p0; else p2->next=p0;

    p0->next=p1;

    } else

    {

    p1->next=p0;

    p0->next=NULL;

    }

    }

    N2=N2+1;

    }

    void dels(int num2)//学生信息管理子函数(删除学生信息)

    {

    struct student *p1,*p2;

    if(head2==NULL)

    {

    printf("\n没有该学生信息,无法删除!\n");

    goto end;

    }

    p1=head2;

    while(num2!=p1->num2 && p1->next!=NULL)

    {

    p2=p1;

    p1=p1->next;

    }

    if(num2==p1->num2)

    {

    if(p1==head2) head2=p1->next; else p2->next=p1->next;

    printf("已删除该学生信息!\n");

    N2=N2-1;

    } else printf("无该学号的学生!\n");

    end:;

    }

    void managements()//学生信息管理主函数

    {

    struct student * incouse;

    int i,num2;

    printf("\t\t\t学生信息管理\n");

    printf("1.新增学生信息\n");

    printf("2.删除学生信息\n");

    printf("3.返回主菜单\n");

    printf("请选择(1~3):\n");

    scanf("%d",&i);

    switch(i)

    {

    case(1):

    {

    incouse=(struct student *)malloc(sizeof(struct student));

    incouse->nelen=0;

    incouse->nelenum[0]=0;

    printf("学生学号\t学生姓名\n");

    scanf("%d%s",&incouse->num2,incouse->name2);

    inserts(incouse);

    break;

    }

    case(2):

    {

    printf("请输入要删除学生的学号:\n");

    scanf("%d",&num2);

    dels(num2);

    break;

    }

    case(3):break;

    }

    }

    void elect(struct student * s)//选课

    {

    struct couse * p;

    int num1,i;

    printf("请输入要选课的编号:\n");

    scanf("%d",&num1);

    for (i=0;s->nelenum[i]!=0;i++);

    s->nelenum[i]=num1;

    (s->nelen)++;

    p=head1;

    while(p->num1!=num1) p=p->next;

    (p->nelepeo)++;

    }

    void cheak()//学生选课子函数(查询可选课程)

    {

    char e;

    struct couse * c;

    struct student * s;

    int num2,i,j=0,t=0;

    printf("请输入你的学号:");

    scanf("%d",&num2);

    s=head2;

    while(s->num2!=num2 && s->next!=NULL) s=s->next;

    if(s->num2!=num2)

    {

    printf("不存在你的信息,请进入主菜单录入你的信息!\n");

    goto end;

    }

    c=head1;

    printf("你的可选课程编号:\n");

    while(c!=NULL)

    {

    for (t=0,i=0;s->nelenum[i]!=0;i++)

    {

    if(c->num1==s->nelenum[i]) t=1;

    }

    if(t==0 && (c->nelepeo!=c->Melepeo))

    {

    printf("%d\n",c->num1);

    j++;

    }

    c=c->next;

    }

    if(j==0)

    {

    printf("你已选完所有课程,无法再多选!\n");

    goto end;

    }

    printf("选课(y/n)?:\n");

    getchar();

    e=getchar();

    i=0;

    while(e=='y')

    {

    elect(s);

    printf("继续选课(y/n)?:\n");

    getchar();

    e=getchar();

    }

    end:;

    }

    void back(struct student * p)//退课

    {

    struct couse * p1;

    int num1,i,j;

    printf("请输入你要退掉的课程编号:\n");

    scanf("%d",&num1);

    p1=head1;

    while(p1->num1!=num1) p1=p1->next;

    for (i=0;p->nelenum[i]!=num1;i++);

    for (j=i;p->nelenum[j]!=0;j++) p->nelenum[j]=p->nelenum[j+1];

    p->nelenum[--j]=0;

    (p1->nelepeo)--;

    printf("退课成功!\n");

    }

    void hcheak()//学生选课子函数(查询已选课程)

    {

    char c;

    struct couse * p0;

    struct student * p;

    int num2,i,f=0;

    printf("请输入学号:\n");

    scanf("%d",&num2);

    p=head2;

    while(p->num2!=num2 && p!=NULL) p=p->next;

    if(p==NULL)

    {

    printf("不存在你的信息,请回主菜单录入信息:\n");

    goto end;

    }

    printf("已选课程编号:\n");

    if(p->nelenum[0]==0)

    {

    printf("你还没选课!\n");

    goto end;

    }

    for (i=0;p->nelenum[i]!=0;i++)

    {

    printf("%d\n",p->nelenum[i]);

    p0=head1;

    while(p0->num1!=p->nelenum[i]) p0=p0->next;

    f=f+p0->score;

    }

    printf("总学分:%d\n",f);

    printf("是否进行退课(y/n)?");

    getchar();

    c=getchar();

    while(c=='y')

    {

    back(p);

    printf("继续退课(y/n)?");

    getchar();

    c=getchar();

    (p->nelen)--;

    }

    end:;

    }

    void elective()//学生选课主函数

    {

    int i;

    printf("\t\t\t学生选课\n");

    printf("1.查询可选课程\n");

    printf("2.查询已选课程\n");

    printf("3.返回主菜单\n");

    printf("请输入(1~3):\n");

    scanf("%d",&i);

    switch(i)

    {

    case(1):cheak();

    break;

    case(2):hcheak();

    break;

    case(3):break;

    }

    }

    void listc()//输出课程信息

    {

    struct couse * p;

    p=head1;

    printf("课程编号 课程名称 学分 课程已选人数 课程人数上限\n");

    while(p!=NULL)

    {

    printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);

    p=p->next;

    }

    }

    void lists()//输出学生信息

    {

    struct student * p;

    p=head2;

    printf("学生学号 学生姓名 已选课程数量\n");

    while(p!=NULL)

    {

    printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen);

    p=p->next;

    }

    }

    void intoc()//存储课程信息

    {

    FILE * fp;

    struct couse * p;

    char filepath[30];

    printf("输入课程信息要保存的文件路径:");

    getchar();

    gets(filepath);

    if((fp=fopen(filepath,"w"))==NULL)

    {

    printf("\n保存失败!");

    exit(0);

    }

    p=head1;

    while(p!=NULL)

    {

    fprintf(fp,"%d %s %d %d %d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);

    p=p->next;

    }

    fclose(fp);

    printf("课程信息已保存在%s中!\n",filepath);

    }

    void intos()//存储学生信息

    {

    FILE * fp;

    struct student * p;

    char filepath[30];

    printf("输入学生信息要保存的文件路径:");

    getchar();

    gets(filepath);

    if((fp=fopen(filepath,"w"))==NULL)

    {

    printf("\n保存失败!");

    exit(0);

    }

    p=head2;

    while(p!=NULL)

    {

    fwrite(p,sizeof(struct student),1,fp);

    p=p->next;

    }

    fclose(fp);

    printf("学生信息已保存在%s中!\n",filepath);

    }

    void into()//存储信息

    {

    int i;

    printf("1.存储课程信息\n");

    printf("2.存储学生信息\n");

    printf("3.返回主菜单\n");

    printf("请输入(1~3)\n");

    scanf("%d",&i);

    switch(i)

    {

    case(1):intoc();

    break;

    case(2):intos();

    break;

    case(3):break;

    }

    }

    void store()//信息主函数

    {

    int i;

    printf("\t\t系统信息查看及存储\n");

    printf("1.查看课程信息\n");

    printf("2.查看学生信息\n");

    printf("3.存储信息\n");

    printf("4.返回主菜单\n");

    printf("请输入(1~4):\n");

    scanf("%d",&i);

    switch(i)

    {

    case(1):listc();

    break;

    case(2):lists();

    break;

    case(3):into();

    break;

    case(4):break;

    }

    }

    int main()//主函数

    {

    int i;

    start:

    printf("\n\t\t\t欢迎使用学生选课系统!\n");

    printf("菜单:\n");

    printf("1.录入课程信息\n");

    printf("2.课程管理\n");

    printf("3.录入学生信息\n");

    printf("4.学生信息管理\n");

    printf("5.学生选课\n");

    printf("6.系统信息查看及存储\n");

    printf("7.退出系统\n");

    printf("\n请输入菜单选项(1~7):\n");

    scanf("%d",&i);

    if(i<1 || i>7)

    {

    printf("输入错误,请重输:\n");

    goto start;

    }

    switch(i)

    {

    case(1):

    {

    system("cls");

    inputc();

    goto start;

    break;

    }

    case(2):

    {

    system("cls");

    managementc();

    goto start;

    break;

    }

    case(3):

    {

    system("cls");

    inputs();

    goto start;

    break;

    }

    case(4):

    {

    system("cls");

    managements();

    goto start;

    break;

    }

    case(5):

    {

    system("cls");

    elective();

    goto start;

    break;

    }

    case(6):

    {

    system("cls");

    store();

    goto start;

    break;

    }

    case(7):

    {

    system("cls");

    printf("感谢使用本系统!\n\n再见!\n");

    }

    }

    return(0);

    }

    总结

    以上就是本文关于C语言实。现的学生选课系统代码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:C/C++ 编译器优化介绍等。如有不足之处,欢迎留言指出。

    展开全文
  • 基于C语言学生选课系统

    万次阅读 多人点赞 2017-03-30 14:51:16
    鉴于C语言实现的通讯录,为了巩固C语言的基础知识,试着写一个简单的学生选课系统。 思路比较简单: 1.回滚显示各种提示信息或操作信息 2.链表操作。 代码中有管理员部分功能没有实现,学生和老师的功能基本实现...

    鉴于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]返回主页面
    【请选择】
    展开全文
  • 顺序储存结构 课程设计 c语言 学生选课系统 功能 浏览 修改 选课
  • 第一部分:课程设计名称、目的、要求... 第二部分:程序总体设计思路........... 第三部分:程序功能划分、图示及流程图. 第四部分:程序设计数据、运行结果..... 第五部分:程序的优缺点............... 第六部分:心得...
  • C语言学生选课系统

    2012-12-19 22:50:37
    C语言实现的学生选课系统,可用于课程设计以及大学实践作业等
  • 题目一学生选课管理系统 目录 第一部分课程设计名称目的要.求 第二部分程总序体设计思路 第三部分程序功能划分示图及流程图 第四部分程设序计数据运行结果 第五部分程序优的缺点 第六部分心得体.会. 第七部分录附源...
  • C语言学生选课管理系统》由会员分享,可在线阅读,更多相关《C语言学生选课管理系统(37页珍藏版)》请在人人文库网上搜索。1、山东工商学院 信电学院 高级语言程序设计课程设计报告 高级语言程序设计课程设计报告...

    《C语言学生选课管理系统》由会员分享,可在线阅读,更多相关《C语言学生选课管理系统(37页珍藏版)》请在人人文库网上搜索。

    1、山东工商学院 信电学院 高级语言程序设计课程设计报告 高级语言程序设计课程设计报告题目: 学生选修课程管理系统 、专 业 :电气工程及其自动化班 级 : 电气131班学 号 : 13055118, 13055126, 13055116姓 名 :李峥 邬倩 李少文 指导教师 : 马 加 庆 日 期: 2014 年 6月 16日至 2013 年6 月 20 日山东工商学院信电学院山东工商学院 信电学院 高级语言程序设计课程设计报告 1、程序基本功能要求系统以菜单方式工作,因而要提供键盘式选择菜单以实现功能选择;由于要登陆界面,因而要提供密码输入的操作,并支持密码修改;课程信息要用文件保存,因而要提。

    2、供文件的输入输出操作;由于要浏览信息,所以要提供显示功能;要实现查询功能,故要提供查找操作;由于学生要选课,所以要提供选课操作,并浏览学生的选课情况。(1). 信息输入模块从键盘输入课程信息、学生选课信息和密码,写入文件中。(2). 信息浏览模块先从文件中读数据,然后再显示。(3). 信息查询模块通过菜单选择查询字段,可以按照课程编号、课程名称、课程性质、开课学期、学分对课程信息文件进行查找,查找算法可以选择基本查找、二分查找等算法。可以在学生选课信息文件中查询该学生的选课情况!(4). 登录密码模块支持密码登录,要求密码输入时为暗码且登录三次错误退出系统!(5)修改密码模块支持密码修改。(6。

    3、)选课模块输入要选的课程编号,打开文件,找到相匹配的课程信息,输出该组信息,并支持浏览。2、总体设计(功能模块说明,如函数功能、参数说明,函数调用关系描述等,并注明各模块的具体成员分工)本程序分为管理员模块和学生端模块。管理员模块可以进行课程信息的输入、浏览和查询。学生端模块不仅可以进行信息的浏览、查询还可进行学生选课及选课情况浏览,并且支持密码的修改!#include /标准输入输出头文件#include#include#include #define size 2 struct course /课程信息的结构体char code10;char name10;char type10;char。

    4、 total10;char cla10;char experi10;char credict10;char term10;coursize;struct student /学生信息结构体char number10;char course10;char code10;student2=1001;void main() /主函数void save() /存入文件FILE*fp; /定义指向一个文件的指针void input_infor() /输入信息 void look_infor() /浏览信息 void menu_1() /菜单一void menu_2() /菜单二void menu_3() 。

    5、/菜单三void change_code() /修改密码 void search() /课程信息查询void put_infor() / 从文件中导出信息void choose() /选课void course() /学生选课情况浏览3、详细设计(各模块程序设计组成框图、流程图)(小四字体) 主程序流程进入主菜单1.管理员界面2.学生端界面1.课程信息输入2.信息浏览3.信息查询4.退出系统1.信息浏览5.修改秘密6.退出系统4.学生选课情况浏览2.信息查询3.学生选课打开文件输入信息输入信息结束关闭文件存入文件打开文件浏览信息 读取信息显示信息关闭文件结束查询信息模块查询方式按课程编号查找按。

    6、课程开课学期查找退出查找按课程名称查找按课程类型查找按课程学分查找1. 输入课程编号2. 打开文件3. 输出信息4. 关闭文件1.输入课程名称2.打开文件3.输出信息4.关闭文件1.输入课程类型2.打开文件3.输出信息4.关闭文件1.输入课程学分2.打开文件3.输出信息4.关闭文件1.输入开课学期2.打开文件3.输出信息4.关闭文件输入选课编号选课模块输出信息另存为file4.txt文件关闭文件结束结束继续修改请输入1.返回主菜单输入2.把输入的新密码保存入file1.txt 中YES输入原密码密码修改 输入新密码判断输入的的原密码是否与文件中存储的密码相同NO4、程序运行结果(截图)1、进入。

    7、主菜单界面2、管理员登陆界面3、管理员界面4、输入课程信息界面5、查询信息界面6、课程信息查询界面7、按照课程编号查询8、按照课程名称查询9、按照课程类型查询10、按照课程学分查询11、按照课程的开学学期查询12、学生端登录界面13、学生端菜单界面15、学生端的信息浏览16、学生端的信息查询17、学生选课页面18、学生选课结果查询19、密码修改界面5、源程序代码(代码中注明每段代码的完成人)#include /李少文#include#include#include#define size 2struct coursechar code10;char name10;char type10;cha。

    8、r total10;char cla10;char experi10;char credict10;char term10;coursize;struct studentchar number10;char course10;char code10;student2=1001;void save() /存入文件 FILE*fp; /定义指向一个文件的指针int i;if(fp=fopen(F:filefile.txt,wb)=NULL)printf(无法打开此文件n);exit(0);for(i=0;i1)system(cls);printf(nnError! You only have %d。

    9、 times! Enter again:n,i-1);i-;goto loop5;else system(cls);printf(nnnnyou have Enter 3 times!n);/输入密码超过了3次!printf(*nnnn);exit(0); /自动退出 case 2: system(cls);loop4: printf(nnnn 请登录:n);printf( *);printf(nnnnn 请输入你的学号:);scanf(%s,student1.number);printf(nnnnn 请输入你的密码:);if(fp=fopen(F:filefile1.txt,rb)=NULL。

    10、)printf(errorn);exit(0);fread(&student0.code,sizeof(struct student),1,fp);fclose(fp);x=0;while(student1.codex=getch()!=r)if(student1.codex=b)printf(b b);x-;else putchar(*);x+;student1.codex=0;if(strcmp(student1.code,student0.code)=0) system(cls);loop3: menu_3();printf(nn请输入你的操作:n);scanf(%d,&n);syste。

    11、m(cls);switch(n)case 1:look_infor();goto loop3;case 2:search();goto loop3;case 3:choose();goto loop3;case 4:course();goto loop3;case 5:change_code();goto loop3;case 6:system(cls);printf(nnnnn 谢 谢 使 用 该 系 统 !n *nnn);exit(0);elseif(i1)system(cls);printf(nnError! You only have %d times! Enter again:n,i。

    12、-1);i-;goto loop4;else system(cls);printf(nnnnnnyou have Enter 3 times!n);/输入密码超过了3次!printf(*nnnnnn);exit(0); /自动退出case 3:system(cls);printf(nnnnn 谢 谢 使 用 该 系 统 !n *nnn);exit(0);6、个人体会这次课程设计,使我收获良多。首先在这次的小组合作中,我们组内相互讨论,相互学习,让我受益匪浅;其次这一个周的时间我们大家都在一个很好的氛围中学习,写代码和调试程序,使我们在实践中更好的掌握了C语言这门课程;另外这也是一个磨砺自己的过。

    13、程,五天全在机房中对着代码和程序度过,对于我自己的耐心和毅力来说也是一种考验。同时这次的课程设计实验可以说是我们开学以来学习C语言的一次大检验,自己亲自动手写一个几百行的程序还是第一次,在动手的过程中发现问题,解决问题,是一个很好的学习途径,绝对比直接从课本上读取知识要影响深刻。有问题问组员,查资料,不断的查缺补漏,解决了程序运行错误的同时也丰富了自己的知识。我们编的程序是学生选修课程管理系统,当然还有其他组编的其他程序,都是与生活学习息息相关的,看以看出来C语言在我们的生活中还是扮演着很重要的角色。在如今这个快速信息化的时代里学好C语言类的编程技术是十分重要的。 最后我想说的是,刚开始我们都以为这是一个不可能完成的任务,我觉得这超出了我们所学的范围,这完全在我的能力之外,因为我们根本无从下手。但是事实上三天半的时候我们就完成了任务,以为我们第一天上午就动手写代码了。其实整个过程并没有那么难,只需要一个开头,然后一步一步走下去就成功了。当然中间的曲折坎坷只是独自体会了!有了这次成功的设计,给了我极大的信心,在以后的学习中会更加认真,努力!7、指导教师评语课程设计成绩:指导教师签字。

    展开全文
  • 学生选课系统要求具备以下功能: 1.系统以菜单方式工作 2.浏览所有的课程信息 3.浏览所有的学生选课情况 4.任意学生信息的查询和修改功能 5.学生选课功能(学生选课时要判断课程是否已经选满,同时还要判断学生...
  • 学生选课系统c语言C语言课程设计报告学生选课系统加源代码
  • c语言-实现学生选课系统

    千次阅读 多人点赞 2020-05-13 19:15:09
    1.本文使用C语言写的一个简单项目,学生的选课系统,主要实现对学生和课程信息管理,实现系统的管理学生和课程选课...学生选课系统源代码实现 #include<stdio.h> #include<stdlib.h> int N1,N2,kk1,kk2,

    1.本文使用C语言写的一个简单项目,学生的选课系统,主要实现对学生和课程信息管理,实现系统的管理学生和课程选课退课等信息!

    2.主要实现功能菜单:
           1.录入课程信息
           2.课程管理
           3.录入学生信息
           4.学生信息管理
           5.学生选课
           6.系统信息查看及存储
    

    源代码:

    学生选课系统源代码实现
    
    #include<stdio.h> 
    #include<stdlib.h>
    int N1,N2,kk1,kk2,kk3;
    struct couse * head1;
    struct student * head2;
    struct couse//课程信息结构体
    {
        int num1;
        char name1[20];
        int score;
        int nelepeo;//课程已选人数
        int Melepeo;//课程人数上限
        struct couse * next;
    };
    struct student//学生信息结构体
    {
        int num2;
        char name2[20];
        int nelenum[50];//已选课程编号
        int nelen;//已选课程数量
        struct student * next;
    };
    void Ms()
    {
        for(kk1=0;kk1<1100;kk1++)
                    for(kk2=0;kk2<1200;kk2++)
                        for(kk3=0;kk3<1200;kk3++);
    }
    void keyboardc()//录入课程子函数(从键盘录入)
    {
    struct couse *p1,*p2;
    N1=0;
    p1=p2=(struct couse*)malloc(sizeof(struct couse));
    printf("课程编号\t课程名称\t学分\t课程人数上限\n");
    scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
    p1->nelepeo=0;
    head1=NULL;
    while(p1->num1!=0)
    {
        N1=N1+1;
        if(N1==1)head1=p1;
        else p2->next=p1;
        p2=p1;
        p1=(struct couse * )malloc(sizeof(struct couse));
        scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
        p1->nelepeo=0;
    }
    p2->next=NULL;
    }
    void filec()//录入键盘子函数(从文件录入)
    {
        FILE * fp;
        char filepath[20]; 
        struct couse *p1,*p2;
        N1=0;
        printf("输入要读入的文件路径:");
        getchar();
        gets(filepath); 
        if((fp=fopen(filepath,"r"))==NULL) 
        { 
            printf("找不到%s文件!\n",filepath); 
            exit(0); 
        } 
        p1=p2=(struct couse*)malloc(sizeof(struct couse));
        fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
        head1=NULL;
        while(!feof(fp))
        {
            N1=N1+1;
            if(N1==1)head1=p1;
            else p2->next=p1;
            p2=p1;
            p1=(struct couse * )malloc(sizeof(struct couse));
            fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
        } 
        p2->next=NULL;
    }
    void inputc()//录入课程主函数
    {
        int i;
        printf("\t\t\t录入课程信息\n");
        printf("\n1.从键盘录入\n");
        printf("2.从文件录入\n");
        printf("3.返回主菜单\n");
        printf("请选择(1~3):\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):keyboardc();break;
        case(2):filec();break;
        case(3):break;
        }
    }
    void insertc(struct couse *incouse)//课程管理子函数(增加课程)
    {
        struct couse *p0,*p1,*p2;
        p1=head1;
        p0=incouse;
        if(head1==NULL)
        {
            head1=p0;
            p0->next=NULL;
        }
        else
        {
            while((p0->num1 > p1->num1) && (p1->next!=NULL))
            {
                p2=p1;
                p1=p1->next;
            }
            if(p0->num1 <= p1->num1)
            {
                if(head1==p1) head1=p0;
                else p2->next=p0;
                p0->next=p1;
            }
            else
            {
                p1->next=p0;
                p0->next=NULL;
            }
        }
        N1=N1+1;
    }
    void delc(int num1)//课程管理子函数(删除课程)
    {
        struct couse *p1,*p2;
        if(head1==NULL)
        {
            printf("\n没有课程,无法删除!\n");
            goto end;
        }
        p1=head1;
        while(num1!=p1->num1 && p1->next!=NULL)
        {
            p2=p1;
            p1=p1->next;
        }
        if(num1==p1->num1)
        {
            if(p1==head1) head1=p1->next;
            else p2->next=p1->next;
            printf("已删除该编号课程!\n");
            N1=N1-1;
        }
        else printf("无该编号的课程!\n");
        end:;
    }
    void managementc()//课程管理主函数
    {
        struct couse * incouse;
        int i,num1;
        printf("\t\t\t课程管理\n");
        printf("1.新增课程\n");
        printf("2.删除课程\n");
        printf("3.返回主菜单\n");
        printf("请选择(1~3):\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):
            {
                incouse=(struct couse *)malloc(sizeof(struct couse));
                printf("课程编号\t课程名称\t学分\t课程人数上限\n");
                scanf("%d%s%d%d",&incouse->num1,incouse->name1,&incouse->score,&incouse->Melepeo);
                incouse->nelepeo=0;
                insertc(incouse);
                break;
            }
        case(2):
            {
                printf("请输入要删除课程的编号:\n");
                scanf("%d",&num1);
                delc(num1);
                break;
            }
        case(3):break;
        }
    }
    void keyboards()//录入学生信息子函数(从键盘录入)
    {
        int i;
        struct student *p1,*p2;
        N2=0;
        p1=p2=(struct student *)malloc(sizeof(struct student));
        printf("学生学号\t学生姓名\n");
        scanf("%d%s",&p1->num2,p1->name2);
        p1->nelen=0;
        for(i=0;i<20;i++) p1->nelenum[i]=0;
        head2=NULL;
        while(p1->num2!=0)
        {
            N2=N2+1;
            if(N2==1)head2=p1;
            else p2->next=p1;
            p2=p1;
            p1=(struct student * )malloc(sizeof(struct student));
            scanf("%d%s",&p1->num2,p1->name2);
            p1->nelen=0;
            for(i=0;i<20;i++) p1->nelenum[i]=0;
        }
        p2->next=NULL;
    }
    void files()//录入学生信息子函数(从文件录入)
    {
        int i=0;
        FILE * fp;
        char filepath[20]; 
        struct student *p1,*p2;
        N2=0;
        printf("输入要读入的文件路径:");
        getchar();
        gets(filepath); 
        if((fp=fopen(filepath,"r"))==NULL) 
        { 
            printf("找不到%s文件!\n",filepath); 
            exit(0); 
        } 
        p1=p2=(struct student*)malloc(sizeof(struct student));
        fread(p1,sizeof(struct student),1,fp);
        head2=NULL;
        while(!feof(fp))
        {
            i=0;
            N2=N2+1;
            if(N2==1)head2=p1;
            else p2->next=p1;
            p2=p1;
            p1=(struct student * )malloc(sizeof(struct student));
            fread(p1,sizeof(struct student),1,fp);
        } 
        p2->next=NULL;
    }
    void inputs()//录入学生信息主函数
    {
        int i;
        printf("\t\t\t录入学生信息\n");
        printf("\n1.从键盘录入\n");
        printf("2.从文件录入\n");
        printf("3.返回主菜单\n");
        printf("请选择(1~3):\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):keyboards();break;
        case(2):files();break;
        case(3):break;
        }
    }
    void inserts(struct student * incouse)//学生信息管理子函数(填加学生信息)
    {
        struct student *p0,*p1,*p2;
        p1=head2;
        p0=incouse;
        if(head2==NULL)
        {
            head2=p0;
            p0->next=NULL;
        }
        else
        {
            while((p0->num2 > p1->num2) && (p1->next!=NULL))
            {
                p2=p1;
                p1=p1->next;
            }
            if(p0->num2 <= p1->num2)
            {
                if(head2==p1) head2=p0;
                else p2->next=p0;
                p0->next=p1;
            }
            else
            {
                p1->next=p0;
                p0->next=NULL;
            }
        }
        N2=N2+1;
    }
    void dels(int num2)//学生信息管理子函数(删除学生信息)
    {
        struct student *p1,*p2;
        if(head2==NULL)
        {
            printf("\n没有该学生信息,无法删除!\n");
            goto end;
        }
        p1=head2;
        while(num2!=p1->num2 && p1->next!=NULL)
        {
            p2=p1;
            p1=p1->next;
        }
        if(num2==p1->num2)
        {
            if(p1==head2) head2=p1->next;
            else p2->next=p1->next;
            printf("已删除该学生信息!\n");
            N2=N2-1;
        }
        else printf("无该学号的学生!\n");
        end:;
    }
    void managements()//学生信息管理主函数
    {
        struct student * incouse;
        int i,num2;
        printf("\t\t\t学生信息管理\n");
        printf("1.新增学生信息\n");
        printf("2.删除学生信息\n");
        printf("3.返回主菜单\n");
        printf("请选择(1~3):\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):
            {
                incouse=(struct student *)malloc(sizeof(struct student));
                incouse->nelen=0;
                incouse->nelenum[0]=0;
                printf("学生学号\t学生姓名\n");
                scanf("%d%s",&incouse->num2,incouse->name2);
                inserts(incouse);
                break;
            }
        case(2):
            {
                printf("请输入要删除学生的学号:\n");
                scanf("%d",&num2);
                dels(num2);
                break;
            }
        case(3):break;
        }
    }
    void elect(struct student * s)//选课
    {
        struct couse * p;
        int num1,i;
        printf("请输入要选课的编号:\n");
        scanf("%d",&num1);
        for(i=0;s->nelenum[i]!=0;i++);
        s->nelenum[i]=num1;
        (s->nelen)++;
        p=head1;
        while(p->num1!=num1) p=p->next;
        (p->nelepeo)++;
    }
    void cheak()//学生选课子函数(查询可选课程)
    {
        char e;
        struct couse * c;
        struct student * s;
        int num2,i,j=0,t=0;
        printf("请输入你的学号:");
        scanf("%d",&num2);
        s=head2;
        while(s->num2!=num2 && s->next!=NULL) s=s->next;
        if(s->num2!=num2)
        {
            printf("不存在你的信息,请进入主菜单录入你的信息!\n");
            goto end;
        }
        c=head1;
        printf("你的可选课程编号:\n");
        while(c!=NULL)
        {
            for(t=0,i=0;s->nelenum[i]!=0;i++)
            {
                if(c->num1==s->nelenum[i]) t=1;
            }
            if(t==0 && (c->nelepeo!=c->Melepeo))
            {
                printf("%d\n",c->num1);
                j++;
            }
            c=c->next;
        }
        if(j==0) 
        {
            printf("你已选完所有课程,无法再多选!\n");
            goto end;
        }
        printf("选课(y/n)?:\n");
        getchar();
        e=getchar();
        i=0;
        while(e=='y')
        {
            elect(s);
            printf("继续选课(y/n)?:\n");
            getchar();
            e=getchar();
        }
        end:;
    }
    void back(struct student * p)//退课
    {
        struct couse * p1;
        int num1,i,j;
        printf("请输入你要退掉的课程编号:\n");
        scanf("%d",&num1);
        p1=head1;
        while(p1->num1!=num1) p1=p1->next;
        for(i=0;p->nelenum[i]!=num1;i++);
        for(j=i;p->nelenum[j]!=0;j++) p->nelenum[j]=p->nelenum[j+1];
        p->nelenum[--j]=0;
        (p1->nelepeo)--;
        printf("退课成功!\n");
    }
    void hcheak()//学生选课子函数(查询已选课程)
    {
        char c;
        struct couse * p0;
        struct student * p;
        int num2,i,f=0;
        printf("请输入学号:\n");
        scanf("%d",&num2);
        p=head2;
        while(p->num2!=num2 && p!=NULL) p=p->next;
        if(p==NULL)
        {
            printf("不存在你的信息,请回主菜单录入信息:\n");
            goto end;
        }
        printf("已选课程编号:\n");
        if(p->nelenum[0]==0)
        {
            printf("你还没选课!\n");
            goto end;
        }
        for(i=0;p->nelenum[i]!=0;i++) 
        {
            printf("%d\n",p->nelenum[i]);
            p0=head1;
            while(p0->num1!=p->nelenum[i]) p0=p0->next;
            f=f+p0->score;
        }
        printf("总学分:%d\n",f);
        printf("是否进行退课(y/n)?");
        getchar();
        c=getchar();
        while(c=='y')
        {
            back(p);
            printf("继续退课(y/n)?");
            getchar();
            c=getchar();
            (p->nelen)--;
        }
        end:;
    }
    void elective()//学生选课主函数
    {
        int i;
        printf("\t\t\t学生选课\n");
        printf("1.查询可选课程\n");
        printf("2.查询已选课程\n");
        printf("3.返回主菜单\n");
        printf("请输入(1~3):\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):cheak();break;
        case(2):hcheak();break;
        case(3):break;
        }
    }
    void listc()//输出课程信息
    {
        struct couse * p;
        p=head1;
        printf("课程编号  课程名称  学分  课程已选人数  课程人数上限\n");
        while(p!=NULL)
        {
            printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
            p=p->next;
        }
    }
    void lists()//输出学生信息
    {
        struct student * p;
        p=head2;
        printf("学生学号  学生姓名  已选课程数量\n");
        while(p!=NULL)
        {
            printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen);
            p=p->next;
        }
    }
    void intoc()//存储课程信息
    {
        FILE * fp;
        struct couse * p;
        char filepath[30]; 
        printf("输入课程信息要保存的文件路径:");
        getchar();    
        gets(filepath); 
        if((fp=fopen(filepath,"w"))==NULL) 
        { 
            printf("\n保存失败!"); 
            exit(0); 
        }
        p=head1;
        while(p!=NULL)
        {
            fprintf(fp,"%d %s %d %d %d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
            p=p->next;
        }
        fclose(fp); 
        printf("课程信息已保存在%s中!\n",filepath); 
    }
    void intos()//存储学生信息
    {
        FILE * fp;
        struct student * p;
        char filepath[30]; 
        printf("输入学生信息要保存的文件路径:");
        getchar();    
        gets(filepath); 
        if((fp=fopen(filepath,"w"))==NULL) 
        { 
            printf("\n保存失败!"); 
            exit(0); 
        }
        p=head2;
        while(p!=NULL)
        {
            fwrite(p,sizeof(struct student),1,fp);
            p=p->next;
        }
        fclose(fp); 
        printf("学生信息已保存在%s中!\n",filepath); 
    }
    void into()//存储信息
    {
        int i;
        printf("1.存储课程信息\n");
        printf("2.存储学生信息\n");
        printf("3.返回主菜单\n");
        printf("请输入(1~3)\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):intoc();break;
        case(2):intos();break;
        case(3):break;
        }    
    }
    void store()//信息主函数
    {
        int i;
        printf("\t\t系统信息查看及存储\n");
        printf("1.查看课程信息\n");
        printf("2.查看学生信息\n");
        printf("3.存储信息\n");
        printf("4.返回主菜单\n");
        printf("请输入(1~4):\n");
        scanf("%d",&i);
        switch(i)
        {
        case(1):listc();break;
        case(2):lists();break;
        case(3):into();break;
        case(4):break;
        }
    }
    int main()//主函数
    {
        int i;
        start:
        printf("\n\t\t\t欢迎使用学生选课系统!\n");
        printf("菜单:\n");
        printf("1.录入课程信息\n");
        printf("2.课程管理\n");
        printf("3.录入学生信息\n");
        printf("4.学生信息管理\n");
        printf("5.学生选课\n");
        printf("6.系统信息查看及存储\n");
        printf("7.退出系统\n");
        printf("\n请输入菜单选项(1~7):\n");
        scanf("%d",&i);
        if(i<1 || i>7)
        {
            printf("输入错误,请重输:\n");
            goto start;
        }
        switch(i)
        {
        case(1):
            {
                system("cls");
                inputc();
                goto start;
                break;
            }
        case(2):
            {
                system("cls");
                managementc();
                goto start;
                break;
            }
        case(3):
            {
                system("cls");
                inputs();
                goto start;
                break;
            }
        case(4):
            {
                system("cls");
                managements();
                goto start;
                break;
            }
        case(5):
            {
                system("cls");
                elective();
                goto start;
                break;
            }
        case(6):
            {
                system("cls");
                store();
                goto start;
                break;
            }
        case(7):
            {
                system("cls");
                printf("感谢‘鹏鹏写代码’的源代码,感谢你使用本系统!\n\n再见!\n");
            }
        }
        return(0);
    }
    
    
    项目运行结果展示:
    

    在这里插入图片描述
    希望对小白有所帮助,大神多多指教!

    展开全文
  • 学生选课管理系统设计(C语言).doc》由会员分享,可免费在线阅读全文,更多与《学生选课管理系统设计(C语言)(最终版)》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、tf(quot\n\n\t课程名字:%s\...
  • 海量资源欢迎共阅 武汉理工大学华夏学院 课程设计报告书 课程名称 C 课程设计 题目学生选课系统程序设计 系名 信息工程系 专业班级 姓名 学号 指导教师 : 成绩 2016年 3 月 4日 课程设计任务书 学生姓名专业班级 ...
  • c语言学生选课系统设计#include#include#includestruct stu{int num;char name[20];char kind[20];int lhours;int rhours;int crdit;int score;int term;}s[1000],t;int input(struct stu s[]);int openfile(struct ...
  • 最简单的c语言编程实例 利用数组、函数、结构体 无存储功能
  • C语言编写的选课系统

    2013-01-19 00:46:26
    这是本人的C语言期末大作业(高人勿喷),由于是在VS2010下编写的,整个工程文件太大,只上传了源码和需要的文件! 程序说明:主界面分为管理员登陆,学生登陆和帮助,学生信息、课程信息和管理员信息都是从本地...
  • 学生选课系统设计.doc》由会员分享,可免费在线阅读全文,更多与《(学生选课系统设计)(最终版)》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、选完所有课程,无法再多选!\nquot);gotoend...
  • 本文实例为大家分享了C语言实现学生选课管理系统的具体代码,供大家参考,具体内容如下 这是我们大一C语言课程设计的最终作品,涉及文件读写操作、链表的一系列操作。 源代码由头文件all.h、主函数文件main.cpp以及...
  • 学生选课管理系统学生选课管理系学生选课学生选课管理系统管理系统学生选课管理系统学生学生选课管理系统选课管理系统
  • 该程序更清晰化,更人性化,使人易于理解,便于读懂,该程序实现了管理员和学生对课程信息的各个操作
  • 这是我们大一C语言课程设计的最终作品,涉及文件读写操作、链表的一系列操作。源代码由头文件all.h、主函数文件main.cpp以及功能函数文件student.cpp、manager.cpp、common.cpp组成。涉及的文件读写操作需要先手动...
  • 2014级C语言学生选课系统报告课程设计(论文)题目: 学生选修课管理系统设计 学生姓名:邓康言学 号 级: 计软所在院部: 广西科技大学指导教师: 2015 年6 月学生选修课管理系统设计学生选修课管理系统设计摘要C语言...
  • c语言 选课系统设计

    2010-12-24 09:39:28
    这是一个用C语言编写的学生选课系统程序,可供c语言课程设计用!
  • 这是一个用C语言编写的数据结构课程设计,题目是学生选课系统C言版,报告和源代码都在其中,报告中各方面分析的都比较详细,值得分享。
  • 课程设计报告课程设计题目:学生选课管理系统学 号 姓 名:李唐松专 业:软件工程班 级: 091107指导老师:谢小林2009年1月5*实验题目:学分管理程序*实验时间与地点:2009年1月7日星期*实验目的:1综合运用所学的C语言...
  • 我是一个刚学计算机的小白,这是我们的期末课程设计c语言打的,我是稀里糊涂过的,只是想要混过课设的可以拿去混一下,应该没啥问题,直接用dev就能完整运行,代码是全的
  • 在这里和大家分享一个用C语言做的一个学生选课系统程序源代码。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 769
精华内容 307
关键字:

c语言设计学生选课系统

c语言 订阅