选课系统课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:学生选课系统设计
一、需求分析
根据所学知识,编写指定题目的C语言程序,并规范地完成课程设计报告。通过课程设计,加深对《C语言程序设计》和《数据结构》课程所学知识的理解,熟练掌握和巩固C语言的基本知识和语法规范,包括:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);库函数应用等;复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等),熟练掌握和巩固三种基本的数据结构(线性结构、树形结构、图形结构)的逻辑结构、存储结构以及相关运算和应用。
具体要求如下:
采取模块化方式进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。学生也可根据自己对题目的理解增加新的功能模块。系统以菜单界面方式工作,运行界面友好,演示程序以用户和计算机的对话方式进行。程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试数据无误,容错性强。编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等);
假设某学期共有5门课,每门课程有四项基本信息:课程编号、课程名称、学分和选课人数。学生可自行选课,假设该学期共有8个学生,学生有学号、姓名、所选课程三种基本信息,学生选课要满足每门课最多只能有3个学生选修,每个学生最多只能选2门课,试设计一个学生选课系统。
学生选课系统要求具备以下功能:
1.系统以菜单方式工作
2.浏览所有的课程信息
3.浏览所有的学生选课情况
4.任意学生信息的查询和修改功能
5.学生选课功能(学生选课时要判断课程是否已经选满,同时还要判断学生是否已经选了2门课,若学生满足选课条件才能选课,注意同一门课一个学生只能选一次)
二、概要设计
1.本程序中用到的所有数据类型的定义及含义
数据类型:一维数组
struct course
{ int num;
char subject[10];
int mark;
int count;
}cour[5]={{1,"C++",3,0},
{2,"MATLAB",3,0},
{3,"Math",5,0},
{4,"English",4,0},
{5,"Chinese",3,0}
}; ------------课程信息
struct student
{ long num;
char name[10];
char order1[10];
char order2[10];
}stu[8]={{20074001,"guo","NULL","NULL"}, {20074002,"yu","NULL","NULL"},
{20074003,"su","NULL","NULL"},
{20074004,"hua","NULL","NULL"},
{20074005,"du","NULL","NULL"},
{20074006,"su","NULL","NULL"},
{20074007,"liu","NULL","NULL"},
{20074008,"xu","NULL","NULL"},
}; ------------------学生信息
其余int, char等数据类型在各模块有不同含义,比较简单,不做赘
述。
2.主程序的流程以及各程序模块的功能要求及各自之间的层次(调
用)关系
a)void scan_1(struct course *p)
调用储存课程信息的结构体数组,输出所有课程信息
b)void scan_2(struct student *p)
调用储存学生信息的结构体数组,输出所有学生信息
c)void modify(struct student *p,struct course cour[5])
分别调用储存课程信息和学生信息的结构体数组,输出任意一
个学生的信息,并可以修改学生信息
d)void select(struct student *p,struct course cour[5])
分别调用储存课程信息和学生信息的结构体数组,为任意一个学生
进行选课
e)void menu()
菜单函数
f)void main()
主函数
三、详细设计
#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "stdlib.h"
#include "windows.h"
struct course // 定义存储课程信息的结构体
{ int num; //课程号
char subject[10]; //课程名
int mark; //学分
int count; //已选人数
}cour[5]={{1,"C++",3,0},
{2,"MATLAB",3,0},
{3,"Math",5,0},
{4,"English",4,0},
{5,"Chinese",3,0}
};
void scan_1(struct course *p) //所有课程信息的浏览功能
{ system("cls");
printf(" 课程信息如下: \n");
for(p=cour;p printf("课程号--%d 科目--%7s 学分--%d 已选人数--%d\n\n",p- >num,p->subject,p->mark,p->count); } struct student // 定义存储学生信息的结构体 { long num; //学号 char name[10]; //姓名 char order1[10]; //所选课程1 char order2[10]; //所选课程2 }stu[8]={{20074001,"guo","NULL","NULL"}, {20074002,"yu","NULL","NULL"}, //选课为空显示"NULL" {20074003,"su","NULL","NULL"}, {20074004,"hua","NULL","NULL"}, {20074005,"du","NULL","NULL"}, {20074006,"su","NULL","NULL"},