C语言课程设计实现选课系统

  • 格式:docx
  • 大小:14.80 KB
  • 文档页数:6

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>typedef struct SUBJECT //临时保存课程信息{char c_name[10]; //名称char time[10]; //上课时间char didian[10]; //上课地点};typedef struct STUDENT //临时保存选课信息{int no; ///学号char s_name[10]; //名字char cla[10]; //班级char c_name[10]; //所选课程名称};#define SIZE_SUB sizeof(SUBJECT) //定义常量保存课程结构的大小#define SIZE_STU sizeof(STUDENT) //定义常量保存学生结构的大小void search_stu_no(); //按学号查询选课状态void insert_stu();//保存学生选课信息void search_stu_name();// 按名字查询选课状态void insert_sub();//录入课程信息void search_sub_name();//按课程名称查询void print_all_sub();//显示所有选修课程信息int main(){int i;for(;;){printf("\t\t*********************************\n");printf("\t\t************学生选课系统***********\n");printf("\t\t*********************************\n");printf("1.---------------增加选修课程:\n");printf("2.---------------显示所有选修课程:\n");printf("3.---------------按课程名称查询:\n");printf("4.---------------开始选课:\n");printf("5.---------------按学号查询选课记录:\n");printf("6.---------------按姓名查询选课记录:\n");printf("7.---------------退出系统:\n");printf("\n\n请选择功能:");scanf("%d",&i);switch(i){case 1:{system("cls");insert_sub();}break;case 2:{system("cls");print_all_sub();}break;case 3:{system("cls");search_sub_name();}break;case 4:{system("cls");insert_stu();}break;case 5:{system("cls");search_stu_no();}break;case 6:{system("cls");search_stu_name();}break;case 7:{return 0;}}}system("pause");return 0;}void search_stu_no() //按学号查询{FILE *fp;fp = fopen("student.txt","rb");STUDENT student[30];int no;printf("请输入需要查询的学号:");scanf("%d",&no);printf("学号\t\t姓名\t\t班级\t\t选课\n");for(int i = 0;fread(&student[i],SIZE_STU,1,fp)!= 0;i++){if(!feof(fp)){if(no == student[i].no){printf("%d \t\t%s \t\t %s\t %s\n",student[i].no,student[i].s_name,student[i].cla,student[i].c_name );}}else{printf("没有此学生的选课记录\n");}}fclose(fp);system("pause");system("cls");}void insert_stu(){STUDENT student;printf("请输入学号:");scanf("%d",&student.no);printf("请输入姓名:");scanf("%s",&student.s_name);printf("请输入班级:");scanf("%s",&student.cla);printf("请输入所选课程名称:");scanf("%s",&student.c_name);FILE *fp;fp = fopen("student.txt","ab");if(fp == NULL){printf("无法打开文件\n");}else{fwrite(&student,SIZE_STU,1,fp); //以二进制写入文件中fclose(fp);printf("选课成功:\n");system("pause"); //美化作用,是程序暂停system("cls"); // 实现清屏}}void search_stu_name(){FILE *fp;fp = fopen("student.txt","rb");STUDENT student[30];char name[10];printf("请输入需要查询的姓名:");scanf("%s",name);printf("学号\t\t姓名\t\t班级\t\t选课\n");for(int i = 0;fread(&student[i],SIZE_STU,1,fp)!= 0;i++){if(!strcmp(name,student[i].s_name)){printf("%d \t\t%s \t\t %s\t %s\n",student[i].no,student[i].s_name,student[i].cla,student[i].c_name );}else{printf("没有选课记录\n");}}fclose(fp);}void insert_sub(){SUBJECT subject;FILE *fp;fp = fopen("subject.txt","ab");printf("请输入课程名称:");scanf("%s",&subject.c_name);printf("请输入开课时间:");scanf("%s",&subject.time);printf("请输入上课地点:");scanf("%s",&subject.didian);if(fp == NULL){printf("无法打开文件\n");}else{fwrite(&subject,SIZE_SUB,1,fp); //以二进制写入文件中fclose(fp);printf("\n\n************课程已增加***********:\n");system("pause"); //美化作用,是程序暂停system("cls"); // 实现清屏}}void search_sub_name(){FILE *fp;fp = fopen("subject.txt","rb");SUBJECT subject[30];char name[10];printf("请输入需要查询的课程名称:");scanf("%s",name);printf("课程名称\t上课地点\t上课时间:\n");for(int i = 0;fread(&subject[i],SIZE_SUB,1,fp)!= 0;i++) //读取文件内所有信息{if(!feof(fp)) //判断文件指针是否到达文件末尾{if(!strcmp(name,subject[i].c_name)) //字符串比较,判断是否相等{printf("%s \t\t %s \t %s\n",subject[i].c_name,subject[i].didian,subject[i].time);}}else{printf("没有该课程信息\n");}}fclose(fp);system("pause");system("cls");}void print_all_sub() //显示所有课程信息{FILE *fp;fp = fopen("subject.txt","rb");SUBJECT subject[30];printf("课程名称\t上课地点\t上课时间:\n");for(int i = 0;fread(&subject[i],SIZE_SUB,1,fp)!= 0;i++) //如果没有到达文件末尾则始终读取{printf("%s \t\t %s \t %s\n",subject[i].c_name,subject[i].didian,subject[i].time);}fclose(fp);system("pause");system("cls");}。