学生选课系统---C语言课程设计_第1页
学生选课系统---C语言课程设计_第2页
学生选课系统---C语言课程设计_第3页
学生选课系统---C语言课程设计_第4页
学生选课系统---C语言课程设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西安理工大学C语言课程设计任务:题目:学生选修课程系统设计功能:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。试设计一选修课程系统。分步实施:1、 初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;2、 建立一个文件,将每条记录信息写入文件中并能显示于屏幕上3、完成上述添加、查找(课程编号、课程名称、课程性质等)、修改等功能。4、进一步要求:学生选修课程(可选项)要求:1、用C语言实现程序设计;2、利用结构体数组实现信息的数据结构设计;3、系统的各个功能模块要求用函数的形式实现;4、界面友好(良好的人机交互),程序加必要的注释。课程设计实验报告要求:1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分 。2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。源程序代码:#define N 20 /*宏定义最多课程数,即结构体数组长度*/#include#include#includestruct xkxtint num; /*课程编号*/char name20; /*课程名称*/char kind10; /*课程性质*/int stime; /*总学时*/int ttime; /*授课学学时*/int etime; /*实验或上机学时*/ float score; /*学分*/int term; /*开课学时*/xN;int size1,size2;void newbuild() /*新建课程信息函数*/FILE *fp;int i; fp=fopen(xk.txt,wb); /*打开文件并判断是否打开*/for(i=0;isize1;i+) /*写入文件并判断是否写入*/if(fwrite(&xi,sizeof(struct xkxt),1,fp)!=1)printf(n文件写入错误n);exit(0);elseif(i=0)printf(n你输入的内容为:n); printf(n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*n); printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num, ,xi.kind,xi.stime,xi.ttime,xi.etime,xi.score,xi.term);fclose(fp);void add() /*添加课程信息函数*/FILE *fp;int i;if(fp=fopen(xk.txt,ab)=NULL) /*打开文件并判断是否打开*/printf(n不能打开此文件n);exit(0);for(i=0;isize2;i+) /*写入文件并判断是否写入*/if(fwrite(&xi,sizeof(struct xkxt),1,fp)!=1)printf(n文件写入错误n); exit(0);elseif(i=0)printf(n你输入的内容为:n); printf(n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*n); printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num, ,xi.kind,xi.stime,xi.ttime,xi.etime,xi.score,xi.term);fclose(fp);void search() /*查找课程信息函数*/ FILE *fp; int i,n;int num;char name20;char kind10;if(fp=fopen(xk.txt,rb)=NULL) /*打开文件并判断是否打开*/printf(n不能打开此文件n);exit(0);printf(n全部内容为:n);printf(n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*n);for(i=0;fread(&xi,sizeof(struct xkxt),1,fp)!=0;i+) /*写入文件并在屏幕输出*/printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num,,xi.kind,xi.stime,xi.ttime,xi.etime,xi.score,xi.term);printf(n请输入你要按哪个类型查找:1,课程编号;2,课程名称;3,课程性质。n);do /*根据类型查找课程*/ scanf(%d,&n); switch(n)case 1:printf(n请输入课程编号:n);scanf(%d,&num); for(i=0;i20;i+)if(num=xi.num)printf(n你要查找的课程信息为:n);printf(n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*n); printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num, ,xi.kind,xi.stime,xi.ttime, xi.etime,xi.score,xi.term);break;break;case 2:printf(n请输入课程名称:n);scanf(%s,name); for(i=0;i20;i+)if(strcmp(name,)=0)printf(n你要查找的课程信息为:n);printf(n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*n); printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num, ,xi.kind,xi.stime,xi.ttime, xi.etime,xi.score,xi.term);break;break;case 3:printf(n请输入课程性质:n);scanf(%s,kind); for(i=0;i20;i+)if(strcmp(kind,xi.kind)=0)printf(n你要查找的课程信息为:n);printf(n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*n); printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num, ,xi.kind,xi.stime,xi.ttime, xi.etime,xi.score,xi.term);break;break;default:printf(n输入错误,请重新输入:n);while(n3); /*实现重新输入的功能*/if(i=20)printf(n无法找到所对应的课程,请重新查找。n);fclose(fp);void modify() /*修改课程信息函数*/FILE *fp;int flag=0,size=0,n,i;int num2,num1;char name220,name120;char kind210,kind110;int stime2;int ttime2;int etime2;float score2;int term2;if(fp=fopen(xk.txt,rb)=NULL) /*打开文件并判断是否打开*/printf(n不能打开此文件n);exit(0);printf(n原来内容为:n);printf(n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*n);for(i=0;fread(&xi,sizeof(struct xkxt),1,fp)!=0;i+) /*写入文件并在屏幕输出*/ printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num,,xi.kind,xi.stime,xi.ttime,xi.etime,xi.score,xi.term);fclose(fp);printf(n请先按以下三种方式确定你要修改的课程:1,课程编号;2,课程名称;3,课程性质。n);do /*根据类型查找课程*/ scanf(%d,&n); switch(n)case 1:printf(n请输入课程编号:n);scanf(%d,&num1); for(i=0;i20;i+)if(num1=xi.num)printf(n你要查找的课程信息为:n);printf(n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*n); printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num, ,xi.kind,xi.stime,xi.ttime, xi.etime,xi.score,xi.term);break;break;case 2:printf(n请输入课程名称:n);scanf(%s,name1); for(i=0;i20;i+)if(strcmp(name1,)=0)printf(n你要查找的课程信息为:n);printf(n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*n); printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num, ,xi.kind,xi.stime,xi.ttime, xi.etime,xi.score,xi.term);break;break;case 3:printf(n请输入课程性质:n);scanf(%s,kind1); for(i=0;i20;i+)if(strcmp(kind1,xi.kind)=0)printf(n你要查找的课程信息为:n);printf(n*课程编号*课程名称*课程性质*总学时*授课学学时*实验或上机学时*学分*开课学时*n); printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num, ,xi.kind,xi.stime,xi.ttime, xi.etime,xi.score,xi.term);break;break;default:printf(n输入错误,请重新输入:n);while(n3); /*实现重新输入的功能*/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)case 1:printf(n请输入要修改的课程编号:n);scanf(%d,&num0);printf(n请输入修改后的课程编号:n);scanf(%d,&num1);flag=1;if(num0=xi.num)xi.num=num1;flag=0; break; case 2:printf(n请输入要修改的课程名称:n);scanf(%s,&name0);printf(n请输入修改后的课程名称:n);scanf(%s,&name1);flag=1; if(strcmp(,name0)=0)strcpy(,name1); flag=0; break; case 3:printf(n请输入要修改的课程性质:n);scanf(%s,&kind0);printf(n请输入修改后的课程性质:n);scanf(%s,&kind1);flag=1; if(strcmp(xi.kind,kind0)=0)strcpy(xi.kind,kind1); flag=0; break; case 4:printf(n请输入要修改的课程总学时:n);scanf(%d,&stime0); printf(n请输入修改后的课程总学时:n);scanf(%d,&stime1);flag=1;if(stime0=xi.stime)xi.stime=stime1;flag=0; break;case 5:printf(n请输入要修改的课程授课学学时:n);scanf(%d,&ttime0); printf(n请输入修改后的课程授课学学时:n);scanf(%d,&ttime1);flag=1;if(ttime0=xi.ttime)xi.ttime=ttime1;flag=0; break; case 6:printf(n请输入要修改的课程实验或上机学时:n);scanf(%d,&etime0);printf(n请输入修改后的课程实验或上机学时:n);scanf(%d,&etime1);flag=1;if(etime0=xi.etime)xi.etime=etime1;flag=0; break; case 7:printf(n请输入要修改的课程学分:n);scanf(%f,&score0);printf(n请输入修改后的课程学分:n);scanf(%f,&score1);flag=1;if(score0=xi.score)xi.score=score1;flag=0; break; case 8:printf(n请输入要修改的课程开课学期:n);scanf(%d,&term0);printf(n请输入修改后的课程开课学期:n);scanf(%d,&term1);flag=1;if(term0=xi.term)xi.term=term1;flag=0; break;while(flag);for(i=0;i20;i+) /*统计总的课程数*/ if(xi.term)size+; fp=fopen(xk.txt,wb); /*打开文件并判断是否打开*/for(i=0;isize;i+) /*写入文件并判断是否写入*/if(fwrite(&xi,sizeof(struct xkxt),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;isize;i+) /*输出修改后的全部内容*/ printf(%5d%10s%8s%8d%10d%14d%9.1f%8dn,xi.num, ,xi.kind,xi.stime,xi.ttime, xi.etime,xi.score,xi.term); fclose(fp);void main()int n,i;doprintf(n*欢迎使用学生选修课程系统*nn);printf(ttt 请输入实现功能的编号nttt*t1,新建;t*nttt*t2,添加;t*nttt*t3,查找;t*nttt*t4,修改;t*nttt*t0,退出。t*n);printf(n你选择的是:);scanf(%d,&n);switch(n) /*实现新建、添加、查找、修改功能*/case 0:break;case 1: printf(n请输入要输入的课程数目:);scanf(%d,&size1);printf(n请输入所有课程的信息:n*n); for(i=0;isize1;i+) if(i)printf(n请再输入下一门课的信息:nn);printf(请输入课程编号:);scanf(%d,&xi.num); printf(n请输入课程名称:); scanf(%s,);printf(n请输入课程性质:); scanf(%s,xi.kind);printf(n请输入课程总学时:);scanf(%d,&xi.stime);printf(n请输入课

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论