赞
踩
- #include <stdio.h>
- #include <string.h>
-
- int allChoose(); // 总菜单
- int teacher(); // 教师端
- int student(); // 学生端
- int output(int m, int n); // 课程信息输出函数
- int input(); // 1.课程信息录入
- int allOutput(); // 2.全部课程显示
- int search(); // 3.课程信息查询
- int change(); // 4.课程信息修改
- int choose(); // 5.选修课程选择
- int information(); // 6.学生课程信息查看
- int back(); // 返回总菜单功能
-
- struct course
- { // 建立结构体
- int number;
- char name[20], nature[16];
- int totalTime, time1, time2;
- float credit;
- char term[10];
- int t; // 用于标记是否被学生选择
- } classList[10]; // 最多录入10个课程
-
- int i = 0; // 使结构体添加从classList[0]开始
-
- int main()
- {
- printf("+++++++++++++++++学生选修课程系统++++++++++++++++++++++++\n");
- allChoose();
- }
-
- /*身份选择*/
- int allChoose()
- {
- int n = 0;
- printf("请选择端口:\n");
- printf("1.教师端\n");
- printf("2.学生端\n");
- printf("3.退出系统\n");
- printf("请输入数字(1/2/3):");
- L1:
- scanf("%d", &n);
- if (n == 1)
- teacher();
- else if (n == 2)
- {
- if (i == 0)
- {
- printf("\n请先通过教师端录入课程!\n\n");
- allChoose();
- }
- else
- student();
- }
- else if (n == 3) // 退出系统
- {
- printf("退出成功!");
- return 0;
- }
- else
- {
- printf("输入错误,请重新输入:");
- rewind(stdin); // 清空缓冲区的内容,防止将其他型变量输入给int型n出现错误
- goto L1;
- }
- return 0;
- }
-
- /*教师端*/
- int teacher()
- {
- int flag;
- printf("\n---->教师端<-----\n");
- printf("请选择要执行的操作:\n");
- printf("1.课程信息录入\n");
- printf("2.课程信息修改\n");
- printf("3.返回端口选择\n");
- printf("请选择(数字1/2/3):");
- L2:
- scanf("%d", &flag);
- switch (flag)
- { // 输入的数字决定应该执行的函数
- case 1:
- input();
- break; // 1.课程信息录入
- case 2:
- change();
- break; // 2.课程信息修改
- case 3:
- printf("\n");
- allChoose();
- break; // 3.返回端口选择
- default:
- {
- printf("错误输入,请重新输入:");
- rewind(stdin);
- goto L2;
- }
- }
- return 0;
- }
-
- /*学生端*/
- int student()
- {
- int n;
- printf("\n---->学生端<-----\n");
- printf("1.全部课程显示\n");
- printf("2.课程信息查询\n");
- printf("3.选修课程选择\n");
- printf("4.学生课程信息\n");
- printf("5.返回端口选择\n");
- printf("请选择(数字1/2/3/4/5):");
- L3:
- scanf("%d", &n);
- switch (n)
- {
- case 1:
- allOutput();
- break; // 1.全部课程显示
- case 2:
- search();
- break; // 2.课程信息查询
- case 3:
- choose();
- break; // 3.选修课程选择
- case 4:
- information();
- break; // 4.学生课程信息查看
- case 5:
- printf("\n");
- allChoose();
- break; // 3.返回端口选择
- default:
- {
- printf("错误输入,请重新输入:");
- rewind(stdin);
- goto L3;
- }
- }
- return 0;
- }
-
- /*1.课程信息录入*/
- int input()
- {
- int n = 0;
- printf("\n1.课程信息录入\n");
- printf("添加新的课程:\n");
- printf("输入课程编号:");
- scanf("%d", &classList[i].number); // 课程编号
- printf("输入课程名称:");
- scanf("%s", classList[i].name); // 课程名称
- printf("输入课程性质:");
- scanf("%s", classList[i].nature); // 课程性质
- printf("输入总学时:");
- scanf("%d", &classList[i].totalTime); // 总学时
- printf("输入授课学时:");
- scanf("%d", &classList[i].time1); // 授课学时
- printf("输入实验/上机学时:");
- scanf("%d", &classList[i].time2); // 实验/上机学时
- printf("输入学分:");
- scanf("%f", &classList[i].credit); // 学分
- printf("输入开课学期:");
- scanf("%s", classList[i].term); // 开课学期
- classList[i].t = 0; // 默认t为0,即未被学生选择
- printf("录入成功!\n");
- i++;
- back(); // 返回总菜单
- return 0;
- }
-
- /*课程信息输出函数*/
- int output(int m, int n)
- {
- for (m = m; m < n; m++) // 循环输出目标课程
- {
- printf("课程编号:%d|名称:%s |性质:%s |总学时:%d|授课学时:%d|实验/上机学时:%d|学分:%.1f|开课学期:%s\n", classList[m].number, classList[m].name, classList[m].nature, classList[m].totalTime, classList[m].time1, classList[m].time2, classList[m].credit, classList[m].term);
- }
- return 0;
- }
-
- /*2.全部课程显示*/
- int allOutput()
- {
- printf("\n2.全部课程显示\n");
- output(0, i); // 控制output中for循环次数使全部课程显示
- printf("显示成功!\n");
- back(); // 返回总菜单
- return 0;
- }
-
- /*3.课程信息查询*/
- int search()
- {
- int m, num, j;
- char name[20], nature[16];
- printf("\n3.课程信息查询\n");
- L4:
- printf("请输入要查询的方式(1.课程编号/2.课程名称/3.课程性质):");
- scanf("%d", &m);
- if (m == 1) // 1.课程编号查询
- {
- printf("1.根据课程编号查询\n");
- printf("请输入课程编号:");
- scanf("%d", &num);
- for (j = 0; j < i; j++)
- {
- if (num == classList[j].number) // 将a与已有课程的编号number比较
- output(j, j + 1); // 控制输出函数只输出classList[j]的信息
- }
- }
- else if (m == 2) // 2.课程名称查询
- {
- printf("2.根据课程名称查询\n");
- printf("请输入课程名称:");
- scanf("%s", name);
- for (j = 0; j < i; j++)
- {
- if (!strcmp(name, classList[j].name)) // 将a与已有课程的名字name比较
- output(j, j + 1); // 控制输出函数只输出classLists[j]的信息
- }
- }
- else if (m == 3) // 3.课程性质查询
- {
- printf("3.根据课程性质查询\n");
- printf("请输入课程性质:");
- scanf("%s", nature);
- for (j = 0; j < i; j++)
- {
- if (!strcmp(nature, classList[j].nature)) // 将a与已有课程的性质nature比较
- output(j, j + 1); // 控制输出函数只输出classList[j]的信息
- }
- }
- else // 当输入的数字不是1/2/3时重新输入
- {
- printf("错误输入,请重新输入!\n");
- rewind(stdin);
- goto L4;
- }
- back(); // 返回总菜单
- return 0;
- }
-
- /*4.课程信息修改*/
- int change()
- {
- int j, n;
- printf("\n4.课程信息修改\n");
- output(0, i); // 控制output中for循环次数使全部课程显示,便于选择修改的课程
- printf("\n请输入要修改的课程编号:");
- scanf("%d", &n);
- for (j = 0; j < i; j++)
- {
- if (n == classList[j].number) // 将n与已有课程的编号number比较
- {
- output(j, j + 1); // 控制输出函数只输出class[j]的信息
- break;
- }
- }
- printf("输入新的课程编号:");
- scanf("%d", &classList[j].number); // 新的课程编号
- printf("输入新的课程名称:");
- scanf("%s", classList[j].name); // 新的课程名称
- printf("输入新的课程性质:");
- scanf("%s", classList[j].nature); // 新的课程性质
- printf("输入新的总学时:");
- scanf("%d", &classList[j].totalTime); // 新的总学时
- printf("输入新的授课学时:");
- scanf("%d", &classList[j].time1); // 新的授课学时
- printf("输入新的实验/上机学时:");
- scanf("%d", &classList[j].time2); // 新的实验/上机学时
- printf("输入新的学分:");
- scanf("%f", &classList[j].credit); // 新的学分
- printf("输入新的开课学期:");
- scanf("%s", classList[j].term); // 新的开课学期
- classList[j].t = 0; // t依然为0,即未被学生选择
- printf("修改成功!\n");
- back(); // 返回总菜单
- return 0;
- }
-
- /*5.选修课程选择*/
- int choose()
- {
- int j, n = 0, k;
- printf("\n2.选修课程显示\n");
- output(0, i); // 控制output中for循环次数使全部课程显示
- printf("请输入要选择的课程编号:");
- scanf("%d", &n);
- for (j = 0; j < i; j++)
- {
- if (n == classList[j].number)
- {
- if (classList[j].t == 1) // 如果t=1说明该课程已经选择
- printf("课程已选");
- else
- {
- classList[j].t = 1; // 用t=1等于表示学生已选
- printf("课程%d选择成功\n", n);
- break;
- }
- }
- }
- back(); // 返回总菜单
- return 0;
- }
-
- /*6.学生课程信息查看*/
- int information()
- {
- int j;
- printf("\n4.学生课程信息\n");
- printf("-->已选课程<--\n");
- for (j = 0; j < i; j++)
- {
- if (classList[j].t == 1) // 判断结构体中t是否为1
- output(j, j + 1); // 控制输出函数只输出class[j]的信息
- }
- printf("显示成功!\n");
- back(); // 返回总菜单
- return 0;
- }
-
- /*返回总菜单*/
- int back()
- {
- int t = 0;
- printf("\n");
- printf("返回总菜单(请输入1):");
- L5:
- scanf("%d", &t);
- if (t == 1)
- allChoose(); // 返回总菜单
- else
- {
- rewind(stdin);
- printf("错误输入,请重新输入:");
- goto L5;
- }
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。