2019C语言课程设计

四,学生选修课程系统设计
假定有n门课程,每门课程有:课程编号,课程名称,课程性质(公共课、必修课、选修课),总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。试设计一选修课程系统,使之能提供以下功能:
1、系统以菜单方式工作
2、课程信息录入功能(课程信息用文件保存)--输入
3、课程信息浏览功能--输出
4、课程信息查询功能--算法
查询方式
按学分查询
按课程性质查询
5、学生选修课程情况(可选项)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
struct lessons
{
 char num[20];
 char name[20];
 char kind[10];
 char total_time[10];
 char teaching_time[10];
 char experimental_time[10];
 char score[5];
 char term[10];
 struct lessons *next;
}lessons[10];
struct students
{
 char name[20];
 char cname[20];
 char num[20];
}stu[10];
int main()
{
 void menu();
 void input();
 void disply();
 void  search();
 void slook();
 FILE *fp1, *fp2;
 int a;         //功能选择需要的号码
 system("cls");
 system("color 8f");
 system("cls");
 struct lessons *head = NULL;
 if ((fp1 = fopen("record.txt", "r")) == NULL)
 {
  fp2 = fopen("record.txt", "w");  //如果不存在record.txt就创建一个
  fclose(fp2);
 }
 Loop:menu();
 printf("选择你需要操作的功能号码:\n");
 scanf("%d", &a);
 getchar();
 switch (a)
 {
 case 0:exit(0); break;
 case 1:input(); break;
 case 2:disply(); break;
 case 3:search(); break;
 case 4:slook(); break;
 default:printf("Enter error!!\n");
 }
 printf("请按ENTER返回功能操作菜单\n");
 getchar();
 goto Loop;
 system("pause");
}
void menu()//菜单函数
{
 printf("欢迎使用课程选修系统!\n将为您提供以下服务:\n");
 printf("1.课程信息的录入;\n");
 printf("2.课程信息浏览;\n");
 printf("3.查询课程信息;\n");
 printf("4.学生的选修情况查询;\n");
 printf("0.退出系统;\n");
}
void input()
{
 system("cls");
 int i, j, m, n, k;
 printf("**************欢迎使用课程信息录入功能!**************** \n");
 FILE *fp1, *fp2;
 struct lessons *head = NULL;
 if ((fp1 = fopen("record.txt", "r")) == NULL)
 {
  fp2 = fopen("record.txt", "w");  //如果不存在record.txt就创建一个
  fclose(fp2);
 }
 printf("请问要输入几个课程信息: \n");
 scanf("%d", &m);
 printf("请问要输入几个学生选修信息,并且每个学生选几门课: \n");
 scanf("%d\t%d", &n, &k);
 if ((fp2 = fopen("record.txt", "w")) != NULL)
 {
  for (i = 0; i < m; i++)
  {
   printf("\n请输入课程编号:\n");
   scanf("%s", lessons[i].num);
   printf("请输入课程名称:\n");
   scanf("%s", lessons[i].name);
   printf("请输入课程性质:\n");
   scanf("%s", lessons[i].kind);
   printf("请输入总学时:\n");
   scanf("%s", lessons[i].total_time);
   printf("请输入授课学时:\n");
   scanf("%s", lessons[i].teaching_time);
   printf("请输入实验或上机学时:\n");
   scanf("%s", lessons[i].experimental_time);
   printf("请输入学分:\n");
   scanf("%s", lessons[i].score);
   printf("请输入开课学期:\n");
   scanf("%s", lessons[i].term);
   printf("\n请输入学生姓名:\n");
   scanf("%s", stu[i].name);
   printf("\n请输入学生学号:\n");
   scanf("%s", stu[i].num);
   printf("\n请输入每名学生分别所选的%d门课程:\n", k);
   for (j = 0; j < k; j++)
    scanf("%s", stu[i].cname);
  }
 }
 printf("录入成功!祝您使用愉快!!\n");
 fclose(fp2);
 getchar();
 system("pause");
}
void disply()   //课程信息浏览
{
 int i; FILE *fp2;
 printf("**************欢迎使用课程信息浏览功能!**************** \n");
 if ((fp2 = fopen("record.txt", "r")) == NULL)
  printf("无课程信息\n");
 else
 {
  fprintf(fp2, "课程编号\t课程名称\t课程性质\t总学时\t授课学时\t实验或上机学时\t学分\t开课学期\n");
  for (i = 0; i < 10; i++)
   printf("\n %s\t%s\t%s\t%s\t%s\t%s\t%s\t%s \n", lessons[i].num, lessons[i].name, lessons[i].kind, lessons[i].total_time,
    lessons[i].teaching_time, lessons[i].experimental_time, lessons[i].score, lessons[i].term);
 }
 getchar();
 fclose(fp2);
 system("pause");
}
void  search()  //课程信息查询功能
{
 int i = 0, d = 0, e = 0, j = 0, k;
 struct lessons a;
 system("cls");
 printf("**************欢迎使用课程信息查询功能!**************** \n");
 printf("请选择查询方式:\n0.退出\n1.按学分查询\n2.按课程性质查询\n");
 scanf("%d", &k);
 if (k >= 0 && k <= 2)
 {
  if (k == 0)
   return;
  if (k == 1)
  {
   printf("请输入学分:\n");
   scanf("%s", a.score);
   for (i = 0; i < 10; i++)
   {
   if (strcmp(a.score, lessons[i].score) == 0)
     printf("课程编号\t课程名称\t课程性质\t总学时\t授课学时\t实验或上机学时\t学分\t开课学期\n");
    printf("\n %s\t%s\t%s\t%s\t%s\t%s\t%s\t%s \n", lessons[i].num, lessons[i].name, lessons[i].kind, lessons[i].total_time,
     lessons[i].teaching_time, lessons[i].experimental_time, lessons[i].score, lessons[i].term);
   }
   printf("祝您学习愉快!!\n");
  }
  if (k == 2)
  {
   printf("请输入课程性质:\n");
   scanf("%s", a.kind);
   for (i = 0; i < 10; i++)
   {
    if (strcmp(a.kind, lessons[i].kind) == 0)
     printf("课程编号\t课程名称\t课程性质\t总学时\t授课学时\t实验或上机学时\t学分\t开课学期\n");
    printf("\n %s\t%s\t%s\t%s\t%s\t%s\t%s\t%s \n", lessons[i].num, lessons[i].name, lessons[i].kind, lessons[i].total_time,
     lessons[i].teaching_time, lessons[i].experimental_time, lessons[i].score, lessons[i].term);
   }
   printf("祝您学习愉快!!\n");
  }
 }
 system("pause");
}
void slook()//学生选修课程信息查询功能
{
 int s, i, j, k;
 struct students a;
 system("cls");
 printf("**************欢迎使用学生课程选修情况查询功能!**************** \n");
 printf("请输入每个学生需要选几门课: \n");
 scanf("%d", &k);
 printf("请选择课程选修查询方法:\n0.退出系统\n1.使用姓名查询\n2.使用学号查询\n");
 scanf("%d", &s);
 if (s >= 0 && s <= 2)
 {
  if (s = 0)
   return;
  if (s = 1)
  {
   printf("请输入学生姓名:\n");
   scanf("%s", a.name);
   for (i = 0; i < 10; i++)
   {
    if (strcmp(a.name, stu[i].name) == 0)
    {
     for (j = 0; j < k; j++)
      printf("%s\t", stu[i].cname);
    }
   }
   printf("祝您学习愉快!\n");
  }
  if (s == 2)
  {
   printf("请输入学生学号:\n");
   scanf("%s", a.num);
   for (i = 0; i < 10; i++)
   {
    if (strcmp(a.num, stu[i].num) == 0)
    {
     for (j = 0; j < k; j++)
      printf("%s\t", stu[i].cname);
    }
   }
  }
 }
 system("pause");
}

不足之处,请多指教!

  • 10
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值