学生选课系统---C语言课程设计知识分享
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安理工大学C语言课程设计任务:
题目:学生选修课程系统设计
功能:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息。试设计一选修课程系统。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话界面,确定函数个数;
2、建立一个文件,将每条记录信息写入文件中并能显示于屏幕上
3、完成上述添加、查找(课程编号、课程名称、课程性质等)、修改等功
能。
4、进一步要求:学生选修课程(可选项)
要求:1、用C语言实现程序设计;
2、利用结构体数组实现信息的数据结构设计;
3、系统的各个功能模块要求用函数的形式实现;
4、界面友好(良好的人机交互),程序加必要的注释。
课程设计实验报告要求:
1、预习报告:题目、课程设计任务、数据结构、程序的总体设计(算法)、模块划分。
2、实验总结报告:流程图、主要源程序代码(需打印)、测试情况及调试中问题与解决方案、小结等。
源程序代码:
#define N 20 /*宏定义最多课程数,即结构体数组长度*/
#include
#include
#include
struct xkxt
{
int num; /*课程编号*/
char name[20]; /*课程名称*/
char kind[10]; /*课程性质*/
int stime; /*总学时*/
int ttime; /*授课学学时*/
int etime; /*实验或上机学时*/
float score; /*学分*/
int term; /*开课学时*/
}x[N];
int size1,size2;
void newbuild() /*新建课程信息函数*/
{
FILE *fp;
int i;
fp=fopen("xk.txt","wb"); /*打开文件并判断是否打开*/
for(i=0;i if(fwrite(&x[i],sizeof(struct xkxt),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); } void add() /*添加课程信息函数*/ { FILE *fp; int i; if((fp=fopen("xk.txt","ab"))==NULL) /*打 开文件并判断是否打开*/ {printf("\n不能打开此文件\n"); exit(0); } for(i=0;i if(fwrite(&x[i],sizeof(struct xkxt),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); } void search() /*查找课程信息函数*/ {FILE *fp; int i,n; int num; char name[20]; char kind[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(struct xkxt),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) {case 1: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; case 2: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; case 3: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,