目 录
一.实验要求·······································3 二.总体设计·······································3 1.总体框图·······································3 2.程序功能·······································3 3.模块关系·······································4 三.详细设计·······································4 1.运行环境·······································4 2.界面设计·······································4 3.课程信息设计···································5 4.学生信息设计···································6 5.选课设计·······································7 6.运行程序·······································8 四.测试与调试····································34
一.实验要求
选课管理
学生信息管理,学生选课管理(学生选课学分总数有一定范围),学生可以对课程进行查询、浏览,选完课后可以退选、重选,并可以按学号、姓名、课程名进行查询、统计。 (要求:1.源文件采用多文件的工程结构2.数据存储采用文件形式3.标准的C输入输出4.功能完善,适当的注释,5.关于文件的内容需要自学)
二.总体设计 1.总体框图
主模模块 显示课程信息模块 查询模块 增加模块 删除模块 修改模块 选课模块 显示选课情况模块
2.程序功能
1)输入密码进入系统。 2)查看所有课程的信息
3)输入一门课程的课程编号,从当前课程中进行查找,如果找到则显示该课 程的相关信息,如果没有找到则给出提示信息
4)添加一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程 编号的课程,如果存在则提示重新输入,否则将该课程按照顺序插入到相应位置 5)删除一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程编号的课程,如果存在则将该课程删除,否则给出提示信息,提示该课程不存在 6)对课程信息进行修改。
7)选修一门课程,需要给出学号和课程编号,如果课程编号不存在则重新输 入,直到输入正确为止,并将学号和相应的课程编号存入 8)查看所选课程 3.模块关系
根据提示输入学号和密码进入系统。通过主函数模块进入各个其它函数的模块,然后达到对课程信息的查看、增加、删除、修改和选课的功能,在这些模块中又调用其它小模块(如:排序模块)。本程序主要有:主函数模块、显示课程信息模块、查询模块、 增加模块、删除模块、修改模块、选课模块、显示选课情况模块等八个模块组成。 三.详细设计
1.运行环境:V-C++ 2.界面设计 菜单选择:
选1:进入课程信息界面
选2:进入学生信息界面 选3:进入选课界面
选4:退出,并保存相关记录到文件里 3.课程信息 菜单选择:
选1:进入课程信息浏览,先看是否有记录,无则退出到课程信息界面,有则显示出来.
选2:进入课程信息录入,录入课程编号,先看是否重复,若有重复,则提示错误,进行下次输入,无则输出一条记录,并添加记录到表.
选3:进入课程信息修改,录入课程编号,看是否在表中有这条记录,无则提示错误,有则提示修改记录的相关信息.
选4:进入课程信息删除,录入要删除的课程编号,看是否在表中有这条记录,无则提示错误,有则提示显示记录的相关信息,再提示是否确实要删除记录,要则删除.
选5:进入课程信息查询,进行选择是按学号查询或学分查询,不管哪种方式,都查询一下表中有相关的记录,没有则重新选择,有刚显示相关记录. 选6: 退出课程信息界面.
4.学生信息 菜单选择:
选1:进入学生信息浏览,先看是否有记录,无则退出到学生信息界面,有则显示出来.
选2:进入学生信息录入,录入学生编号,先看是否重复,若有重复,则提示错误,进行下次输入,无则输出一条记录,并添加记录到表.
选3:进入学生信息修改,录入学生编号,看是否在表中有这条记录,无则提示错误,有则提示修改记录的相关信息.
选4:进入学生信息删除,录入要删除的学生编号,看是否在表中有这条记录,无则提示错误,有则 提示显示记录的相关信息,再提示是否确实要删除记录,要则删除.
选5:进入学生信息查询,进行选择是按学号查询或学分查询,不管哪种方式,都查询一下表中有相关的记录,没有则重新选择,有刚显示相关记录. 选6: 退出学生信息界面. 5.选课 菜单选择:
选1:进入选课信息浏览,先看是否有记录,无则退出到选课信息界面,有则显示出来.
选2:进入学生选课,录入学生编号,先看是否重复,若有重复,则提示错误,进行下次输入,无则进行选课提示,输入选课的编号,再看是否输入的编号是否存在,无则重新输入,有则看是否选了这门课,没有就选上,进行重复选择.
选3: 进入学生退选,录入学生编号,先看是否重复,若有重复,则提示错误,进行下次输入,无则进行选课提示,输入退选课程的编号,再看是否输入的编号是否存在,无则重新输入,有则看是否选了这门课,没有就提示错误信息,若有就进行退选.再进行重复选择。 选6: 退出选课界面 6.运行程序 //头文件 //头文件
#include
#include
#include
struct course //某个学生所学的课程中的某一个 {
char cname[20]; //课程名称 float grade; //课程成绩
course *Next; //指向下一个课程的指针 }; //学生类 class student {
public: student()
{ }
root = NULL;
const maxcourse = 5; factcourse = 0;
void readname(char N[] ); //读入学生的姓名 void getname(char N[]); //得到学生的姓名
void wrecourse(char N[],float score); //要据课程名写入学生课程的成绩 float average(); //学生课程的平均成绩
void addcourse(char N[],float g); //给学生增加一门课 int findcourse(char N[]); //查找是否已有此课程,如果有返回1,如果没有返回0 int retfactcourse()
{ return factcourse;
} //得到所学的课程数目 course *retroot() { }
return root; //利用键表将所有的课程保存起来
int retmaxcourse() {
return 5; //得到最多可学的课程数目 }
void clrroot() //清零 {
root = NULL;
factcourse = 0; } private: