学生选修课查询系统设计

目录

设计任务与要求

代码

程序演示


设计任务与要求:

(1)假定有20门课程,每门课程有课程编号、课程名称、课程性质、总学时、理论学时、实验学时、学分、开课学期等信息,设计选修课查询系统学生可查询这些课程的相关信息。
(2)系统实现的基本功能有:
a.课程信息录入模块(定义合适的结构体类型,使用文件或数组形式组织数据;录入信息如有重复应给出提示)
b.课程信息浏览模块(按课程名称查询、按学分查询、按开课学期查询等至少提供两种查询方法)
c.课程信息删除模块(按课程编号查询后将该门课程的信息删除)
d.课程信息修改模块(按课程编号查询后将该门课程的信息修改)
*e.创新(自拟)功能:程序实现的其它功能由个人自拟。

代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
typedef struct 
{
    int bianhao;
    char mingcheng[20];
    char xingzhi[20];
    int zongxueshi;
    int lilunxueshi;
    int shiyanxueshi;
    int xuefen;
    char kaikexueqi[20];
}X;
int k=0,bianhao0=0,i=0;
void dayinkecheng(X* b,int j)
{
printf("课程编号:%d\n课程名称:%s\n课程性质:%s\n总学时:%d\n理论学时:%d\n实验学时:%d\n学分:%d\n开课学期:%s\n",b[j].bianhao,b[j].mingcheng,b[j].xingzhi,b[j].zongxueshi,b[j].lilunxueshi,b[j].shiyanxueshi,b[j].xuefen,b[j].kaikexueqi);
return;
}
int shuzubijiao(char* a,char* b)
{
    for(i=0;i<20;i++)
    {
        if(a[i]!=b[i])return 0;
    }
    return 1;
}
int bianhaochaxun(X* b)
{
    int j;
    while(1)
    {
    printf("请输入课程编号(至少三位):");
    scanf(" %d",&bianhao0);
    if(bianhao0>99)break;
    else printf("输入错误,");
    }
    for(j=0;j<20;j++)
    {
        if(b[j].bianhao==bianhao0)return j;
    }
    return bianhao0;
}
void mingchengchaxun(X* b)
{
    char mingcheng0[20];
    int r=0,j=0;
    printf("\n开始按课程名称查询...\n");
    printf("请输入课程名称:");
    scanf(" %s",&mingcheng0);
    for(j=0;j<20;j++)
    {
        if(strcmp(b[j].mingcheng,mingcheng0)==0)
        {
        dayinkecheng(b,j);
        r=1;
        }
    }
    if(r==0)printf("课程未录入\n");
    printf("课程信息浏览结束,按任意键返回上一级");
    getchar();
    getchar();
    printf("\n********************************************************************\n");
}
void xuefenchaxun(X* b)
{
    int xuefen0;
    int r=0,j=0;
    printf("\n开始按学分信息查询...\n");
    printf("请输入课程学分:");
    scanf(" %d",&xuefen0);
    for(j=0;j<20;j++)
    {
        if(b[j].xuefen==xuefen0)
        {
        dayinkecheng(b,j);
        r=1;
        }
    }
    if(r==0)printf("课程未录入\n");
    printf("课程信息浏览结束,按任意键返回上一级");
    getch();
    getch();
    printf("\n********************************************************************\n");
}
void xinxiluru(X* b)
{
    printf("********************************************************************\n开始课程信息录入...\n");
    bianhao0=bianhaochaxun(b);
    if(bianhao0>=0 && bianhao0<=19)
    {
        printf("该课程已被录入,按任意键返回上一级");
        getch();
        getch();
        printf("\n********************************************************************\n");
        return;
    }
    else
    {
        b[k].bianhao=bianhao0;
    }
    printf("请输入课程名称:");
    scanf(" %s",&b[k].mingcheng);
    printf("请输入课程性质:");
    scanf(" %s",&b[k].xingzhi);
    printf("请输入总学时:");
    scanf(" %d",&b[k].zongxueshi);
    printf("请输入理论学时:");
    scanf(" %d",&b[k].lilunxueshi);
    printf("请输入实验学时:");
    scanf(" %d",&b[k].shiyanxueshi);
    printf("请输入学分:");
    scanf(" %d",&b[k].xuefen);
    printf("请输入开课学期:");
    scanf(" %s",&b[k].kaikexueqi);
    k++;
    printf("课程信息录入结束,按任意键返回上一级");
    getch();
    getch();
    printf("\n********************************************************************\n");
}
void kechengxinxiliulan(X* b)
{
    int liulan=0;
    printf("********************************************************************\n开始课程信息浏览...\n");
    printf("选择查询方式:\n    课程名称查询请按1\n    学分查询请按2\n    返回上级按任意键\n");
    scanf(" %d",&liulan);
    switch(liulan)
    {
        case 1:mingchengchaxun(b);break;
        case 2:xuefenchaxun(b);break;
        default :break;
    }
    return;
}
void kechengshanchu(X* b)
{
    printf("********************************************************************\n开始课程信息删除...\n");
    while(1)
    {
    i=bianhaochaxun(b);
    if(!(i<20&&i>=0))printf("课程编号未录入,");
    else break;
    }
    for(i;i<k;i++)b[i]=b[i+1];
    memset((void*)&b[k],0,sizeof(X));
    k-=0;
    printf("课程信息删除结束,按任意键返回上一级");
    getch();
    getch();
    printf("\n********************************************************************\n");
    return;
}
void kechengxiugai(X* b)
{
    int a=0;
    printf("********************************************************************\n开始课程信息修改...\n");
    while(1)
    {
    i=bianhaochaxun(b);
    if(!(i<20&&i>=0))printf("课程编号未录入,");
    else break;
    }
    while(1)
    {
    printf("课程编号修改请按1\n课程名称修改请按2\n课程性质修改请按3\n总学时修改请按4\n理论学时修改请按5\n实验学时修改请按6\n学分修改请按7\n开课学期修改请按8\n返回上一级请按9\n");
    scanf("%d",&a);
    switch(a)
    {
    case 1:printf("当前选中课程编号%d,请输入纠正值:",b[i].bianhao);scanf("%d",&b[i].bianhao);break;
    case 2:printf("当前选中课程名称%s,请输入纠正值:",b[i].mingcheng);scanf("%s",&b[i].mingcheng);break;
    case 3:printf("当前选中课程性质%s,请输入纠正值:",b[i].xingzhi);scanf("%s",&b[i].xingzhi);break;
    case 4:printf("当前选中总学时%d,请输入纠正值:",b[i].zongxueshi);scanf("%d",&b[i].zongxueshi);break;
    case 5:printf("当前选中理论学时%d,请输入纠正值:",b[i].lilunxueshi);scanf("%d",&b[i].lilunxueshi);break;
    case 6:printf("当前选中实验学时%d,请输入纠正值:",b[i].shiyanxueshi);scanf("%",&b[i].shiyanxueshi);break;
    case 7:printf("当前选中学分%d,请输入纠正值:",b[i].xuefen);scanf("%",&b[i].xuefen);break;
    case 8:printf("当前选中开课学期%s,请输入纠正值:",b[i].kaikexueqi);scanf("%",&b[i].kaikexueqi);break;
    case 9:break;
    default:printf("输入错误,");
    }
    if(a==9)break;
    }
    printf("课程信息修改结束,按任意键返回上一级");
    getch();
    getch();
    printf("\n********************************************************************\n");
    return;
}
int main()
{
int a=0;
X b[20]={0};
while(1)
{
printf("信息录入请按1\n课程信息浏览请按2\n课程信息删除请按3\n课程信息修改请按4\n退出系统请按5\n");
scanf("%d",&a);
switch(a)
{
    case 1:xinxiluru(b);break;
    case 2:kechengxinxiliulan(b);break;
    case 3:kechengshanchu(b);break;
    case 4:kechengxiugai(b);break;
    case 5:break;
    default:printf("输入错误,");
}
if(a==5)break;
}
return 0;
}

程序演示:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值