目录
设计任务与要求:
(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;
}