大一下课设—

一、需求分析
1、系统概述:
本程序为教务信息管理系统,通过输入学生的相关信息,对数据进行处理和统计,并按需要输入统计处理后的数据到文件中。
系统主要分三类:一类是学生系统,一类是教师系统,一类是管理员系统。
系统的功能如下:
(1)录入如下信息:
学生基本信息:如学号、姓名、性别、年龄、宿舍号码、电话号码等。
课程基本信息:课程编号、课程名称、考试成绩、平时成绩、综合成绩、学分、重修否等。如果重修,需要考虑重修学期、重修成绩,并且要考虑多次重修的情况。
(2)录入选课信息。
(3)录入学生成绩。
(3)按班统计学生选课情况及考试成绩。
(4)按课程统计学生名单及考试成绩。
(5)统计并输出每个同学已修学分及不及级课程。
(6)学生选课。
(7)增加学生。
(8)管理员可修改学生及教职工密码

2、系统运行环境:
(1)硬件环境: CPU:奔腾 3 以上
内存:1G 以上
显卡:集成显卡
硬盘:10M 以上

  (2)软件环境: 操作系统:windows 95 以上 

DOS 系统支持中文输出

3、功能需求描述:
(1)登录模块:
每个使用这个系统的用户都拥有一个初始密码,建议初次登陆修改密码。学号作为每个学生的唯一登录凭证,教工号作为每个教师的唯一登录凭证。登陆模块就是为了验证账户的真实性而设,只有账户名与其设定的密码匹配时才允许登录并使用这个系统的功能。
(2)普通功能窗口模块:
用户登录成功后会进入一个界面,是本系统的基础。在这个模块中用户可以选择进入其他的模块(即使用相应的功能)、退出登录。
(3)高级功能窗口模块:
高级功能即管理员功能,管理员登录后有多项高级功能,例如:录入选课信息,录入学生成绩,按班统计学生选课情况及考试成绩,按课程统计学生名单及考试成绩,统计并输出每个同学已修学分及不及级课程,无条件修改学生及教职工密码等等…

(4)安全设置模块:
由于我们所有学生及教职工的初始登录密码都一样,所以我们要求所有人在初次登陆之后都要进行修改密码这一项操作,也是为了保障我们所有用户的信息安全。
(5)帮助模块:
这一模块将会给予初次使用的一些用户在操作上的一些帮助,同时会将一些数据的类型限制包括学分成绩等信息的算法公示出来,方便大家使用。
(6)选课模块:
这一模块将会提供给学生选择自己的课程,同时会显示可选课程的编号,方便大家选择。

二、总体设计
1、总体开发思想:
(1)主要的数据结构:
在用户信息存储方面,我们采用了链表的方式来存储学生数据。头结点不保存任何数
据,其余的节点均存储了一位学生的信息,还存储了找到下一个学生所需的指针。最后一个
节点的指针域为 NULL,如图。

(2)数据存贮方式:
本程序中的大部分数据存储在几大结构体组成的链表或线性表中。在学生数据部分,我们采用了链表的存储方式。除头结点之外,链表的每一个节点都是一个学生的个人信息。在课程数据部分,我们同样采用了链表的存储方式。在student结构体中,存储了一个学生的个人基本信息;在course结构体中,存储了一门课程的基本信息;在teacher结构体中,储存了教师的一些基本信息。
在文件操作部分,我们选择将数据写入txt文件里。利用文件操作中的格式化输入可以很好地修改并更新用户的信息,例如:学生所选课程,学生教师的密码等等…如图。

(3)使用的语言: C\C++语言

2、系统模块结构图:

3、模块设计:以下为各个功能模块的流程图

三、功能实现
1、主要函数:函数名及参数含义;

(1)链表模块主要函数:COU *loadcou();//加载课程信息 COU *saveteapw(COU *head);//保存教工密码信息 COU *addlesson();//录入课程信息 COU *savelesson(COU *head);//保存课程信息 STU *loadstu();//加载学生信息 STU *loadstupw();//加载学生密码信息 STU *addstu();//增加学生信息 STU *addstuscore();//录入学生成绩 STU *choosecou(char id[]);//选课功能 STU *savestu(STU *head);//保存信息 STU *savestupw(STU *head);//保存密码信息 int tlogin();//教师登录 int slogin();//学生登录 int mlogin();//管理员登录 void start();//开始界面 void stushow(char id[]);//学生功能界面 void teashow(char id[]);//教师功能界面 void manshow();//管理员功能界面 void printfcou();//显示课程信息 void manchangepw();//管理员修改学生或老师密码 void classsta();//按班统计学生选课情况及考试成绩 void lesssta();//按课程统计学生名单及考试成绩 void faillesson();//统计并输出每个同学已修学分及不及级课程 void help();//显示帮助2、使用界面
(1)欢迎/退出画面:

(2)密码输入界面:

(3)各菜单界面:
学生菜单:

教师菜单:

管理员菜单:

(4)选课功能界面:

(5)按班统计学生选课情况及考试成绩:

(6)按课程统计学生名单及考试成绩:

(7)统计输出每个同学已修学分及不及格课程:
(8)录入课程信息:

(9)

(10)增加学生:

四、总结
在刚开始拿到教务系统这个题目时,其实感觉有些压力吧,因为这与我们的生活息息相关,我们在日常生活中就会经常使用到教务系统,所以顿时就给自己形成了无形的压力。刚开始起步的时候由于可能第一次自己设计一款软件有些不习惯,会犯一些语法上的错误。在写文件的时候甚至会将地址符漏掉从而导致程序崩溃。其实只要当你把基础打好,熟悉文件操作这一块的语法,就不会有多大的问题,理解非常重要。那么在中期其实也遇到了相当多的一些困难,那么此时就需要足够的耐心来进行下去。当你知道有错误时,就要回过头来反复地检查,去发现错误。所以我认为编程其实是一个培养人的耐心的过程。
编程同时还是一个会让人变得更加严谨的过程,它会使人的思维变得更加缜密。因为你要严格执行语法,这样计算机才会正确地运行。只有一步一步踏实地走,将每一步走好,才能将一个庞大的工程完成。我觉得这样是我们的专业名字“软件工程”的奥义所在。我发现编程还能使人的思维更加活跃,因为很多想法其实是在开发过程中才逐渐诞生的。最后,当我编完整个程序,并让他流畅的运行起来时,我突然感受到之前在开发过程中遇到的困难都不算什么了。成就感充斥着全身每一个细胞,我相信这也是编程的魅力所在。希望自己能在编程这条路上不断地走下去。

你可能感兴趣的:(大一下课设—)