Skip to content

Sidney-L/Information-Management-System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

设计报告——学生选课系统 一、系统总体设计 1.开发环境及运行环境: 开发环境: Dev c++ , 标准的C输入输出, PC机 运行环境:Windows 7操作系统, PC机

2.流程及模块: 为了实现实习所要求的选课系统的功能,我们认为选课系统的用户分为学生用户和教师用户两个用户群体。学生用户方面主要有选课模块,查询课程模块,已选课程及个人信息查询模块三个模块。而教师用户方面则有选课管理模块,课程管理模块,以及教师信息管理模块三个模块。

该系统主要实现学生的选课,退课,个人信息查询与修改,查询课程信息以及老师的开课,删课,修改课程信息,查询选课情况和学生的部分信息,个人信息查询与修改。

3.架构设计: 用户层(执行架构PC机操作系统)直接访问数据层4个数据文件(执行架构操作系统)

4.接口定义: 文件指针按文件内容命名,传递给子函数的变量按变量内容命名,各功能函数按时限功能命名。统一了各函数文件指针名,各函数内部变量之间做到尽量名称不重复。

5.数据结构: 系统需要处理的信息有: 学生信息,包含学号、院系、专业、姓名、性别、电话、密码、邮箱

教师信息, 包含工号、院系、姓名、邮件、密码

课程信息,课程编号、课程名称、学分、学时、课程性质(必修选修)、开课教师、上课时间(起止时间及具体时间段)、上课地点、限制人数、课程简介、教材信息

学生已选课程信息,包含学生学号,姓名,课程编号

以上信息均以txt外部文件的形式储存在可执行程序相同路径下。每个学生,教师,课程的基本信息分行储存,不同条目中间以一个或多个分隔符隔开。

程序运行过程中通过内部文件指针访问这些文件,并将读取到的信息储存在程序内定义的结构数组中,数组中每个结构对应文件的一行信息。

二、模块详细设计 classelectf(int) 学生选课函数: 输入课程编号; 打开文件“课程信息.txt”; 用while循环读取文件内信息,确认总课程数量; 用while读取文件内信息,存入结构; 用for循环检验课程id是否存在,存在则用search=0记录; 用if检验search,判断id是否存在; 不存在,则提示; 存在,则打开“学生选课表.txt”文件; 读取文件中学生选课的信息,存入结构,并进行三次判断:1、此学生已经选择课程数量2、此课程已报名人数3、此学生已选课程是否与此课程时间冲突; 若判断均通过,则选课成功; 有一个判断未通过则选课失败; 将更新后的结构写入对应文件;

persclassinf(int) 教师查询个人开课信息函数 打开文件"教师信息.txt"; While循环读取文件,确定教师人数; While循环读取文件,将教师信息存入结构; 对比id,提取教师姓名; 打开文件“课程信息.txt”; 用while循环读取文件内信息,确认总课程数量; 用while读取文件内信息,存入结构; 比对教师姓名和课程信息中的教师姓名; 若有相同的,则打印对应的课程信息; 若没有相同的,则打印未开设课程;

orderclassinf(int) 统计选课信息函数 打开文件"教师信息.txt"; While循环读取文件,确定教师人数; While循环读取文件,将教师信息存入结构; 对比id,提取教师姓名; 打开文件“课程信息.txt”; 用while循环读取文件内信息,确认总课程数量; 用while读取文件内信息,存入结构; 比对教师姓名和课程信息中的教师姓名; 存在几个对应的姓名,则令变量count3等于几; 并打印count3和对应的课程; 若不存在对应的姓名,则打印未开设课程;

classSearchStuinf()按课程名查询学生信息函数 输入希望查询的课程名; 打开文件“课程信息.txt”; 用while循环读取文件内信息,确认总课程数量; 用while读取文件内信息,存入结构; 对比输入的课程名和机构中的课程名; 若没有相同的则打印输入有误; 若又相同的; 则打开文件"学生选课表.txt"; While循环读取文件,确定总选课量; While循环读取文件,将学生选课信息存入结构; 对比学生选课信息中的课程id; 打印选此课程的学生数量和学生信息;

addClass(int) 课程添加函数 打开文件"教师信息.txt"; While循环读取文件,确定教师人数; While循环读取文件,将教师信息存入结构; 对比id,提取教师姓名; 打开文件“课程信息.txt”; 用while循环读取文件内信息,确认总课程数量; 用while读取文件内信息,存入结构; 用for确定教师开课数目; 若开课数目为3门,则打印超过开课数目限制; 若小于3门,则按提示输入新课程信息; 进行课程信息输入的判断; 若判断全部成功则开始新课成功; 将更新后的结构写入对应文件;

modiclassinf(int) 修改课程信息函数 输入想要修改的课程的编号; 打开文件“课程信息.txt”; 用while循环读取文件内信息,确认总课程数量; 用while读取文件内信息,存入结构; 对比是否存在输入的编号; 若不存在则打印没有该条课程信息; 若存在则; 打开文件"教师信息.txt"; While循环读取文件,确定教师人数; While循环读取文件,将教师信息存入结构; 对比id,提取教师姓名; 对比此门课程的开设老师姓名; 若不同则无法修改; 若相同则根据是否有人选课,判断可修改内容; 按提示修改; 进行课程信息输入的判断; 若判断全部成功则修改课程成功; 将更新后的结构写入对应文件;

deleteclass(int) 教师删课函数 输入想要修改的课程的编号; 打开文件“课程信息.txt”; 用while循环读取文件内信息,确认总课程数量; 用while读取文件内信息,存入结构; 对比是否存在输入的编号; 若不存在则打印没有该条课程信息; 若存在则; 打开文件"教师信息.txt"; While循环读取文件,确定教师人数; While循环读取文件,将教师信息存入结构; 对比id,提取教师姓名; 对比此门课程的开设老师姓名; 若不同则无法修改; 根据课程信息判断是否有学生选此门课; 若有则无法删除此门课程; 若无则删除此门课程; 将更新后的结构写入对应文件;

autodelete()自动删除人数不足课程函数 读取系统时间; 判断系统时间是否在截止时间之前; 若在截止时间之前,则不删除; 若超出截止时间则删除人数小于30人的课程(30人要求文件编译量较大,所以在代码中改成了少于2人的课程删除); 打开文件“课程信息.txt”; 用while循环读取文件内信息,确认总课程数量; 用while读取文件内信息,存入结构; 打开文件"学生选课表.txt"; While循环读取文件,确定总选课量; While循环读取文件,将学生选课信息存入结构; 删除对应的信息; 将更新后的结构写入对应文件;

classSearchClassinf()按课程名查询课程信息函数 输入想要查询的课程名; 打开文件“课程信息.txt”; 用while循环读取文件内信息,确认总课程数量; 用while读取文件内信息,存入结构; 对比输入的课程名是否存在; 若不存在则打印输入课程有误; 若存在则打印对应的课程信息;

schoolsearchinf()按开课学院查询课程信息函数 输入想要查询的学院名; 打开文件“课程信息.txt”; 用while循环读取文件内信息,确认总课程数量; 用while读取文件内信息,存入结构; 打开文件"教师信息.txt"; While循环读取文件,确定教师人数; While循环读取文件,将教师信息存入结构; 对比输入的学院名是否存在; 对比教师名,以确定课程的学院; 若学院名不存在则打印输入学院有误; 若存在则打印对应的学院的课程信息;

nameSearchStuinf()按学生姓名查询学生信息函数 输入学生姓名; 打开文件"学生信息.txt"; While循环读取文件,确定学生人数; While循环读取文件,将学生信息存入结构; 对比输入的学生姓名和结构中学生姓名; 若存在相同姓名,则打印对应的学生信息; 若不存在,则打印没有此学生;

int student_checkin();学生登录函数 打开学生信息文件,读取学生信息存入结构数组 请求用户输入学号密码 与结构数组中对应项比对 正确则向主函数返回学号值,不正确循环请求重新输入

void class_reorder()课程排序函数 打开课程信息文件,读取课程信息到结构数组 请求用户输入选项码,分别以选课人数和课余量从大到小的重新排序后输出到显示器 文件内的顺序并不改变

void stuclass_check学生查询已选课程函数 读取课程信息,存入结构 记录课程数量和已选课程在结构中的位置 在显示器上输出这些课程信息

void stuclass_delete学生课程删除函数 读取课程信息,存入结构 记录课程数量和已选课程在结构中的位置 读取和储存系统时间 判断时间是否截止,为截止实现删课 检测已经选择的课程中是否有输入编号的课程 将更新后的信息重新写入学生文件 将更新后的信息重新写入课程文件

int teacher_checkin()教师登录函数 读取教师信息存入结构数组 比对教师工号及密码 与结构数组中对应项比对 正确则向主函数返回工号值,不正确循环请求重新输入

void teacher_information(int id)教师修改个人信息函数 从文件中读取并打印当前工号下教师信息 记录当前工号下信息存储位置 请求用户输入选项码实现修改 验证邮箱格式和密码 将更新后的信息重新写入文件

void student_information(int id)学生修改个人信息函数 从文件中读取并在显示器输出当前学号下学生信息 记录当前学号下信息存储位置 请求用户输入选项码实现修改 验证邮箱格式和密码 将更新后的信息重新写入文件

About

选课系统

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages