学生选课系统C语言课程设计知识分享.docx

上传人:b****8 文档编号:10226623 上传时间:2023-02-09 格式:DOCX 页数:18 大小:63.12KB
下载 相关 举报
学生选课系统C语言课程设计知识分享.docx_第1页
第1页 / 共18页
学生选课系统C语言课程设计知识分享.docx_第2页
第2页 / 共18页
学生选课系统C语言课程设计知识分享.docx_第3页
第3页 / 共18页
学生选课系统C语言课程设计知识分享.docx_第4页
第4页 / 共18页
学生选课系统C语言课程设计知识分享.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

学生选课系统C语言课程设计知识分享.docx

《学生选课系统C语言课程设计知识分享.docx》由会员分享,可在线阅读,更多相关《学生选课系统C语言课程设计知识分享.docx(18页珍藏版)》请在冰豆网上搜索。

学生选课系统C语言课程设计知识分享.docx

学生选课系统C语言课程设计知识分享

西安理工大学C语言课程设计任务:

题目:

学生选修课程系统设计

功能:

假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。

试设计一选修课程系统。

分步实施:

1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;

2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上

3、完成上述添加、查找(课程编号、课程名称、课程性质等)、修改等功能。

4、进一步要求:

学生选修课程(可选项)

要求:

1、用C语言实现程序设计;

2、利用结构体数组实现信息的数据结构设计;

3、系统的各个功能模块要求用函数的形式实现;

4、界面友好(良好的人机交互),程序加必要的注释。

课程设计实验报告要求:

1、预习报告:

题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。

2、实验总结报告:

流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。

源程序代码:

#defineN20/*宏定义最多课程数,即结构体数组长度*/

#include

#include

#include

structxkxt

{

intnum;/*课程编号*/

charname[20];/*课程名称*/

charkind[10];/*课程性质*/

intstime;/*总学时*/

intttime;/*授课学学时*/

intetime;/*实验或上机学时*/

floatscore;/*学分*/

intterm;/*开课学时*/

}x[N];

intsize1,size2;

voidnewbuild()/*新建课程信息函数*/

{

FILE*fp;

inti;

fp=fopen("xk.txt","wb");/*打开文件并判断是否打开*/

for(i=0;i

if(fwrite(&x[i],sizeof(structxkxt),1,fp)!

=1)

{printf("\n文件写入错误\n");

exit(0);

}

else

{if(i==0)

{printf("\n你输入的内容为:

\n");

printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

}

printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

}

fclose(fp);

}

voidadd()/*添加课程信息函数*/

{

FILE*fp;

inti;

if((fp=fopen("xk.txt","ab"))==NULL)/*打开文件并判断是否打开*/

{printf("\n不能打开此文件\n");

exit(0);

}

for(i=0;i

if(fwrite(&x[i],sizeof(structxkxt),1,fp)!

=1)

{printf("\n文件写入错误\n");

exit(0);

}

else

{if(i==0)

{printf("\n你输入的内容为:

\n");

printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

}

printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

}

fclose(fp);

}

voidsearch()/*查找课程信息函数*/

{FILE*fp;

inti,n;

intnum;

charname[20];

charkind[10];

if((fp=fopen("xk.txt","rb"))==NULL)/*打开文件并判断是否打开*/

{printf("\n不能打开此文件\n");

exit(0);

}

printf("\n全部内容为:

\n");

printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

for(i=0;fread(&x[i],sizeof(structxkxt),1,fp)!

=0;i++)/*写入文件并在屏幕输出*/

{printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

}

printf("\n请输入你要按哪个类型查找:

1,课程编号;2,课程名称;3,课程性质。

\n");

do/*根据类型查找课程*/

{scanf("%d",&n);

switch(n)

{case1:

printf("\n请输入课程编号:

\n");scanf("%d",&num);

for(i=0;i<20;i++)

if(num==x[i].num)

{printf("\n你要查找的课程信息为:

\n");

printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

break;

}

break;

case2:

printf("\n请输入课程名称:

\n");scanf("%s",name);

for(i=0;i<20;i++)

if(strcmp(name,x[i].name)==0)

{printf("\n你要查找的课程信息为:

\n");

printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

break;

}

break;

case3:

printf("\n请输入课程性质:

\n");scanf("%s",kind);

for(i=0;i<20;i++)

if(strcmp(kind,x[i].kind)==0)

{printf("\n你要查找的课程信息为:

\n");

printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

break;

}

break;

default:

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

\n");

}

}

while(n<1||n>3);/*实现重新输入的功能*/

if(i==20)

printf("\n无法找到所对应的课程,请重新查找。

\n");

fclose(fp);

}

voidmodify()/*修改课程信息函数*/

{FILE*fp;

intflag=0,size=0,n,i;

intnum[2],num1;

charname[2][20],name1[20];

charkind[2][10],kind1[10];

intstime[2];

intttime[2];

intetime[2];

floatscore[2];

intterm[2];

if((fp=fopen("xk.txt","rb"))==NULL)/*打开文件并判断是否打开*/

{printf("\n不能打开此文件\n");

exit(0);

}

printf("\n原来内容为:

\n");

printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

for(i=0;fread(&x[i],sizeof(structxkxt),1,fp)!

=0;i++)/*写入文件并在屏幕输出*/

{printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

}

fclose(fp);

printf("\n请先按以下三种方式确定你要修改的课程:

1,课程编号;2,课程名称;3,课程性质。

\n");

do/*根据类型查找课程*/

{scanf("%d",&n);

switch(n)

{case1:

printf("\n请输入课程编号:

\n");scanf("%d",&num1);

for(i=0;i<20;i++)

if(num1==x[i].num)

{printf("\n你要查找的课程信息为:

\n");

printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

break;

}

break;

case2:

printf("\n请输入课程名称:

\n");scanf("%s",name1);

for(i=0;i<20;i++)

if(strcmp(name1,x[i].name)==0)

{printf("\n你要查找的课程信息为:

\n");

printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

break;

}

break;

case3:

printf("\n请输入课程性质:

\n");scanf("%s",kind1);

for(i=0;i<20;i++)

if(strcmp(kind1,x[i].kind)==0)

{printf("\n你要查找的课程信息为:

\n");

printf("\n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

break;

}

break;

default:

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

\n");

}

}

while(n<1||n>3);/*实现重新输入的功能*/

if(i==20)

{printf("\n无法找到所对应的课程,请重新修改。

\n");

return;

}

printf("\n请输入你要修改课程信息的编号:

\n1,课程编号;2,课程名称;3,课程性质;4,总学时;5,授课学学时;\n6,实验或上机学时;7,学分;8,开课学时。

\n");

do

{if(flag)/*判断是否是重新输入*/

printf("\n输入有误,请重新输入你要修改课程信息的编号:

\n");

scanf("%d",&n);

switch(n)

{case1:

printf("\n请输入要修改的课程编号:

\n");

scanf("%d",&num[0]);

printf("\n请输入修改后的课程编号:

\n");

scanf("%d",&num[1]);

flag=1;

if(num[0]==x[i].num)

{x[i].num=num[1];

flag=0;

}

break;

case2:

printf("\n请输入要修改的课程名称:

\n");

scanf("%s",&name[0]);

printf("\n请输入修改后的课程名称:

\n");

scanf("%s",&name[1]);

flag=1;

if(strcmp(x[i].name,name[0])==0)

{strcpy(x[i].name,name[1]);

flag=0;

}

break;

case3:

printf("\n请输入要修改的课程性质:

\n");

scanf("%s",&kind[0]);

printf("\n请输入修改后的课程性质:

\n");

scanf("%s",&kind[1]);

flag=1;

if(strcmp(x[i].kind,kind[0])==0)

{strcpy(x[i].kind,kind[1]);

flag=0;

}

break;

case4:

printf("\n请输入要修改的课程总学时:

\n");

scanf("%d",&stime[0]);

printf("\n请输入修改后的课程总学时:

\n");

scanf("%d",&stime[1]);

flag=1;

if(stime[0]==x[i].stime)

{x[i].stime=stime[1];

flag=0;

}

break;

case5:

printf("\n请输入要修改的课程授课学学时:

\n");

scanf("%d",&ttime[0]);

printf("\n请输入修改后的课程授课学学时:

\n");

scanf("%d",&ttime[1]);

flag=1;

if(ttime[0]==x[i].ttime)

{x[i].ttime=ttime[1];

flag=0;

}

break;

case6:

printf("\n请输入要修改的课程实验或上机学时:

\n");

scanf("%d",&etime[0]);

printf("\n请输入修改后的课程实验或上机学时:

\n");

scanf("%d",&etime[1]);

flag=1;

if(etime[0]==x[i].etime)

{x[i].etime=etime[1];

flag=0;

}

break;

case7:

printf("\n请输入要修改的课程学分:

\n");

scanf("%f",&score[0]);

printf("\n请输入修改后的课程学分:

\n");

scanf("%f",&score[1]);

flag=1;

if(score[0]==x[i].score)

{x[i].score=score[1];

flag=0;

}

break;

case8:

printf("\n请输入要修改的课程开课学期:

\n");

scanf("%d",&term[0]);

printf("\n请输入修改后的课程开课学期:

\n");

scanf("%d",&term[1]);

flag=1;

if(term[0]==x[i].term)

{x[i].term=term[1];

flag=0;

}

break;

}

}

while(flag);

for(i=0;i<20;i++)/*统计总的课程数*/

if(x[i].term)

size++;

fp=fopen("xk.txt","wb");/*打开文件并判断是否打开*/

for(i=0;i

if(fwrite(&x[i],sizeof(structxkxt),1,fp)!

=1)

printf("\n文件写入出错\n");

fclose(fp);

if((fp=fopen("xk.txt","rb"))==NULL)/*打开文件并判断是否打开*/

{printf("\n不能打开此文件\n");

exit(0);

}

printf("\n修改后的全部内容为:

\n");

printf("*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*\n");

for(i=0;i

printf("%5d%10s%8s%8d%10d%14d%9.1f%8d\n",x[i].num,

x[i].name,x[i].kind,x[i].stime,x[i].ttime,

x[i].etime,x[i].score,x[i].term);

fclose(fp);

}

voidmain()

{

intn,i;

do

{printf("\n***************************欢迎使用学生选修课程系统***************************\n\n");

printf("\t\t\t请输入实现功能的编号\n\t\t\t*\t1,新建;\t*\n\t\t\t*\t2,添加;\t*\n\t\t\t*\t3,查找;\t*\n\t\t\t*\t4,修改;\t*\n\t\t\t*\t0,退出。

\t*\n");

printf("\n你选择的是:

");

scanf("%d",&n);

switch(n)/*实现新建、添加、查找、修改功能*/

{

case0:

break;

case1:

printf("\n请输入要输入的课程数目:

");

scanf("%d",&size1);

printf("\n请输入所有课程的信息:

\n*******************************************************************************\n");

for(i=0;i

{

if(i)

printf("\n请再输入下一门课的信息:

\n\n");

printf("请输入课程编号:

");

scanf("%d",&x[i].num);

printf("\n请输入课程名称:

");

scanf("%s",x[i].name);

printf("\n请输入课程性质:

");

scanf("%s",x[i].kind);

printf("\n请输入课程总学时:

");

scanf("%d",&x[i].stime);

printf("\n请输入课程授课学学时:

");

scanf("%d",&x[i].ttime);

printf("\n请输入课程实验或上机学时:

");

scanf("%d",&x[i].etime);

printf("\n请输入课程学分:

");

scanf("%f",&x[i].score);

printf("\n请输入课程开课学期:

");

scanf("%d",&x[i].term);

}

newbuild();break;

case2:

printf("\n请输入要输入的课程数目:

");

scanf("%d",&size2);

printf("\n请输入所有课程的信息:

\n*******************************************************************************\n");

for(i=0;i

{

if(i)

printf("\n请再输入下一门课的信息:

\n\n");

printf("\n请输入课程编号:

");

scanf("%d",&x[i].num);

printf("\n请输入课程名称:

");

scanf("%s",x[i].name);

printf("\n请输入课程性质:

");

scanf("%s",x[i].kind);

printf("\n请输入课程总学时:

");

scanf("%d",&x[i].stime);

printf("\n请输入课程授课学学时:

");

scanf("%d",&x[i].ttime);

printf("\n请输入课程实验或上机学时:

");

scanf("%d",&x[i].etime);

printf("\n请输入课程学分:

");

scanf("%f",&x[i].score);

printf("\n请输入课程开课学期:

");

scanf("%d",&x[i].term);

}

add();break;

case3:

search();break;

case4:

modify();break;

default:

printf("\n输入有误,请重新输入!

\n");

}

}

while(n);/*实现循环输入*/

printf("******************************谢谢使用本系统,再见******************************\n");

}

运行示例:

##################按提

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1