收藏 分销(赏)

学生学籍管理系统的设计报告.doc

上传人:快乐****生活 文档编号:2470984 上传时间:2024-05-30 格式:DOC 页数:18 大小:288.54KB 下载积分:8 金币
下载 相关 举报
学生学籍管理系统的设计报告.doc_第1页
第1页 / 共18页
学生学籍管理系统的设计报告.doc_第2页
第2页 / 共18页


点击查看更多>>
资源描述
学生学籍管理系统的设计报告 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 18 个人收集整理 勿做商业用途 学生学籍管理系统的设计报告 一、需求分析 信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,学籍管理系统软件将会为教学办公室带来了极大的方便. 学籍管理的繁索给具有强烈时间观念的人员带来了诸多不便,教学办公室缺少一种完善的学籍管理软件,为了对学生档案的管理方便,开发人员完成了全面的调查与分析,同时与目标用户进行了多次深入沟通,并在次基础上着手开发《学籍管理系统》软件。 二、概要设计 软件适用于教育界,对学生的学籍可以随时输入、输出、查找、修改。 1、功能需求 ① 能够游览学生学籍的所有信息 ② 能够制定招生计划并能进行学生注册登记管理 ③ 能够通过学生的一个信息找到个人学籍的相关信息(例如:知道学生的姓名能够找到该学生的所有有关的学籍信息) ④ 通过一条信息找到与之匹配的信息(例如:查询同一专业的所有人员) ⑤ 相关人员能对包含学生的学籍信息进行管理(因为学生有关情况不是固定不变的所以一旦学生信息发生改变就要对原有信息进行诸如添加,删除,修改等的操作) ⑥ 必须能对学生有关信息进行相关统计计算(例如:评定各项奖项,德育考评等) ⑦ 需要提供打印功能(能对要打印的各项内容都能进行打印服务) ⑧ 对毕业生进行档案管理 ⑨ 能提供条形码进行刷卡服务 2、性能需求 数据精确度:查询时应保证查全率,所有相应域包含查询关键字的记录都应能查到 时间特性:一般操作的响应时间应在1-2秒内,对软磁盘和打印机及条形码刷卡服务响应时间也应在可接受的时间内完成。 适应性:对前面提到的运行环境要求不应存在困难. 三、详细说明 本系统的主要任务是实现对学校教导处的学生信息管理、成绩管理、课程管理及相关查询。其主要功能包括: 1、学生信息管理功能 班级管理:提供给班主任进行本班学生的信息更新、删除。 添加学生:以班级为单位,进行学生入库。其中分为单个添加和成批添加.单个添加学生供数量较少的学生信息入库;成批添加可以从现存的学生信息EXCEL文件中成批录入到数据库中. 删除学生.当学生毕业后,学生信息转移备份数据库中,系统的基本数据库中需要删除学生信息。该功能主要进行成批地删除学生信息,如连续学号区段的多位学生信息删除,整个班级的删除,所有学生信息的删除。 新生管理。本部分的功能主要有新生导入、分班、及设置学号。新生导入实现从现存的EXCEL新生名单中录入学生信息。分班功能实现按新生的报考专业、成绩及性别进行分班.设置学号实现自动为各班学生编发学号。 学生信息备份。在学生信息删除前,将其按班级为单位保存到备份数据库。    2.学生成绩管理功能 分数录入:以班级为单位,录入各科目的期中、期末、总评成绩。 总分及名次:计算指定班级学生的总分及名次。 补考成绩录入:修改总评成绩,以决定最终补考人数。 成绩备份:为指定班级及指定的学期数的学生成绩保存到备份数据库中。 3、课程信息管理功能 课程管理:提供本学期各年级各专业所开课程名称的录入、修改、删除。它是 学生成绩管理的基础:用以保证数据库中一致性原则。 4、查询功能. 学生信息查询:根据用户的要求,查询学生数据库的所有可能的信息,其中包括成绩查询。 备份成绩查询:按班级为单位查询备份数据库的学生信息,补考情况。  四、软件编码本文为互联网收集,请勿用作商业用途本文为互联网收集,请勿用作商业用途 #include<iostream> #include〈string> #include〈iomanip〉 #include<fstream> using namespace std; #define NULL 0 class student { public: long num; string name; string dizhi,dihua,banji; student *next; }; int n; //链结点的个数 student *head,*stu; ///////////////////////////////////////////////////////////////////// student *creat(void) //创建动态链表 返回以各指向链表头的指针 { student *head; student *p1,*p2; n=0; p1=p2=new student; //开辟新单元,用P1 P2指向 cout〈<”按顺序输入学生的学号,姓名,地址,电话,班级,输入0 * * * *就停止录入(*为任意字符)” <<endl; cin〉〉p1—〉num>>p1—>name〉〉p1-〉dizhi>〉p1—>dihua〉>p1->banji; head=NULL; while(p1->num!=0) //循环输入的作用 {n=n+1; if(n==1)head=p1; else p2-〉next=p1; p2=p1; p1=new student; //开辟新单元, cin>>p1-〉num〉>p1—>name〉>p1—〉dizhi〉>p1->dihua〉>p1—〉banji; //输入数据 } p2—>next=NULL; //p2指向最后 return(head); } ///////////////////////////////////////////作为二进制储存和读出二进制文件 void write_read() {student *p; student stud[100]; n=0; for(p=head;p!=NULL;p=p—〉next) { stud[n]。dizhi=p-〉dizhi; stud[n].dihua=p—〉dihua; stud[n]。banji=p-〉banji; stud[n].name=p->name; stud[n]。num=p-〉num; n++; } ofstream outfile(”student.dat”,ios::binary); if(!outfile) { cerr〈〈”open error。.。."〈〈endl; abort(); } for(int i=0;i〈n;i++) outfile。write((char*)&stud[i],sizeof(stud[i])); outfile。close(); ifstream infile("student。dat”,ios::binary); if(!infile) { cerr〈<"open error..。。”〈〈endl; abort(); } for(int j=0;j<n;j++) infile.read((char*)&stud[i],sizeof(stud[i])); infile.close(); for(int k=0;k<n;k++) { cout<<"姓名: ”<<stud[k].name〈<endl; cout<〈"学号: "〈<stud[k]。num<〈endl; cout〈〈"地址 : "〈<stud[k]。dizhi〈<endl; cout〈<"电话: ”<<stud[k]。dihua<〈endl; cout〈〈”班级: "<〈stud[k].banji〈〈endl〈<endl〈<endl; } } ///////////////////////////////////////////////////////////////图形的输出 void exit() { cout<<” ┃ \n” ” ┃ \n" " ┏━━━━┻━━━━┓ \n” " ┃ ┃ \n" " ┏━━━━┻━━━━━━━━━┻━━━━┓\n” " ┃ ^^^^^谢谢使用^^^^^^^ ┃\n" " ┃ ┃\n” " ┃ 偷得浮生半日闲 ┃\n” ” ┃ ┃\n" ” ┃ ┃\n” ” ┗━━━━━━━━━━━━━━━━━━━┛\n”; } ///////////////////////////////////////////////////////////////////////////////////////////////////// void print(student *head) //输出链表 {student *p; cout〈<" 学生信息表 "<〈endl; p=head; if(head!=NULL) cout<<” ”〈<endl; cout〈<" 学号 姓名 地址 电话 班级 "〈<endl; cout〈<” "〈〈endl; if(head!=NULL) do { cout〈〈setw(12)<〈p—〉num 〈〈setw(14)<〈p-〉name <〈setw(10)<〈p—>dizhi 〈<setw(10)〈〈p-〉dihua <〈setw(10)<〈p-〉banji 〈〈endl; cout〈<” "〈〈endl; p=p—〉next; }while(p!=NULL); } ////////////////////////////////////////////////////////////////////////删除链表 student *del(student *head,long num) {student *p1,*p2; if(head==NULL) {cout〈<"此为空表"<〈endl;return(head);} p1=head; while(num!=p1->num && p1—>next!=NULL) {p2=p1;p1=p1->next;} if(num==p1-〉num) {if(p1==head)head=p1-〉next; else p2->next=p1->next; cout〈〈”删除”〈<num<<endl; n=n-1;} else cout<〈"没有该同学数据!"<〈num〈<endl; return(head); cout<〈endl<<endl; } ///////////////////////////////////////////////////////////////////////////// 链表的舔加 student *insert(student *head,student *stud) {student *p0,*p1,*p2; p1=head; //P1指向第一个节点 p0=stud; //要插入的节点 if(head==NULL) {head=p0;p0—>next=NULL;} //是P0指向节点作为头 else {while((p0->num〉p1—〉num)&&(p1—>next!=NULL)) {p2=p1; p1=p1—>next;} if(p0—>num〈=p1->num) {if(head==p1)head=p0; else p2-〉next=p0; p0—>next=p1; } else {p1—>next=p0;p0—〉next=NULL;} //差 如节点之后 } n=n+1; //节点+1 return(head); cout<〈endl〈〈endl; } ///////////////////////////////////////////////////////////////////////查找学生 void find() {student *p; int a; cout<<”请输入想要找的学生的学号”〈<endl; cin>>a; for(p=head;p!=NULL;p=p—>next) { if(a==p—〉num) { cout〈〈" ”〈<endl; cout〈<” 学号 姓名 地址 地话 班级 "〈<endl; cout〈<” "<<endl; cout〈<setw(12)<〈p—〉num 〈<setw(14)〈<p—〉name <<setw(10)〈<p->dizhi 〈<setw(10)〈<p->dihua <<setw(10)〈〈p->banji <〈endl; cout<<” ”〈<endl; break; } else continue; } } ///////////////////////////////////////////////////////////////////////////////删除和添加的链表的多次执行的实现 void list() { int a; long del_num; student *creat(void);//输入学生数据 student *cunt_put(student *); student *del(student *,long); student *insert(student *,student *); void print(student *); cout〈<" "<〈endl〈〈endl<〈endl; head=creat(); print(head); //输出全部结点 cout<〈”如果要删除学生资料请输入1,如果需要添加请输入2"<〈endl; cin〉〉a; if(a==1) { cout〈〈"输入要删除学号"<<endl; cin〉>del_num; while(del_num!=0 ) { head=del(head,del_num); print(head); //调用输出函数 cout〈〈”是否继续删除:是(输入学号),不是(输入0)"〈<endl; cin>〉del_num; } } cout<<”,往下执行就按任意数字"<<endl; cin>>a; if (a==2) //操作选择 { cout<<"输入要添加的就输入学号"<〈endl; stu=new student; //开创新的空间 cin>>stu-〉num>>stu->name>〉stu->dizhi〉>stu-〉dihua〉>stu—〉banji; //输入数据 while(stu—〉num!=0) //可以循环删除,删除多个 { head=insert(head,stu); //调用添加函数 print(head); //调用输出函数 cout<<"如果需要添加请输入学号,无需添加输入0 * * * *就停止录入(*为任意字符)”<〈endl; stu=new student; cin〉〉stu-〉num>>stu—〉name〉〉stu-〉dizhi〉>stu->dihua〉〉stu->banji; } } cout〈〈endl〈〈endl; } /////////////////////////////////////////////////////////////////////////调用各个函数 void swich() { int a; list();//删除和添加调用 cout〈<”退出软件输入9 直接查看学生资料输入10”<<endl; cin〉>a; if(a==9) exit(); if(a=10) { for(int u=0;;u++) { cout〈〈” 0按学号查某个学生的数据 1查看成绩表 3退出系统且读取二进制文件 "〈〈endl; int t; cin〉>t; if(t==1) { print(head);continue; } if(t==3) { exit(); break; } if(t==0) { find();continue; } } } cout〈<”读取二进制文件如下"<<endl<〈endl<<endl; write_read(); } ////////////////////////////////////////////////////////密码实现 void mima() { int n,m=1988825; for(int j=0;;j++) { cout<〈”这是我的地盘,请输入密码:"〈〈endl; cin>〉n; if(m==n) { cout<<”恭喜你猜对了!!!”<〈endl; swich(); break; } else { cout〈<”内有怪物,生人勿进!”<<endl; continue; } } } //////////////////////////////////////////////////主函数 int main() { mima(); return 0; } 五、测试文档 1、集成测试 集成测试将测试每一个部件之间的工作是否正常。在这个阶段,我们假设所有的单元已通过开发人员个人在单元测试阶段测试全部通过,没有任何错误。 集成测试包括以下内容: 连续集成测试 数据库测试 数据整合测试 2、功能测试 功能测试环境 操作系统:windows 98 内存:128M 网络环境:校园网 本功能测试共分为: 系统功能测试 测试是否可以正常添加用户和修改密码,系统正常退出 测试是否可以正常对班级进行管理,学生的单个或成批添加,删除以及新生信息的导入和学生信息备份 测试成绩管理中是否可以进行分数录入,汇总及排名和成绩备份等操作 测试课程信息模块中针对课程管理,老师和课程的关系之间操作是否正常 测试是否可以正常查询学生,老师和成绩 3、 链接测试 这一部分将测试系统各模块之间的超链接跳转是否正确 4、 文档测试         本章主要内容为: 测试文档是否包括全部内容 测试软件功能描述与其他功能有没有冲突 查看软件功能描述是否是原来系统分析和需求 查看文档内容在特定的情况和进度下,以现有人力,物力和资源能否实现 5、负载测试 这一部分将测试正常情况下系统性能和用户数目之间的关系 本章主要内容为: 查看在多个用户同时使用本系统时是否正常 6、极限测试 这一部分将测试所有极端的情况,如速度非常快的情况下和速度非常慢的情况下,以及所有其它的极端情况。 本章主要内容为: 网络资源极限测试 综合极限测试本文为互联网收集,请勿用作商业用途文档为个人收集整理,来源于网络 六、其它 简单的说明学籍管理系统数据库各数据表的结构如下。 (1)数据库名:student。 (2)student表(学生信息表)如表1-1所示。 表1—1 student表(学生信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 sno char 8 NOT NULL 是 学生学号 sname char 8 NOT NULL 学生姓名 sex char 2 NULL 学生性别 native char 20 NULL 籍贯 birthday smalldate 4 NULL 学生出生日期 dno char 6 NULL 学生所在院系编号(外键) spno char 8 NULL 专业代码(外键) classno char 4 NULL 班级号 entime smalldate 4 NULL 学生入校时间 home varchar 40 NULL 学生家庭住址 tel varchar 40 NULL 学生联系电话 (3)course表(课程信息表)如表1—2所示。 表1-2 course表(课程信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 cno char 10 NOT NULL 是 课程编号 spno char 8 NULL 专业代码(外键) cname char 20 NOT NULL 课程名称 ctno tinyint 1 NULL 课程类型编号(外键) experiment tinyint 1 NULL 实验时数 lecture tinyint 1 NULL 授课学时 semester tinyint 1 NULL 开课学期 credit tinyint 1 NULL 课程学分 (4)student_course表(学生选课成绩表)如表1—3所示。 表1-3 student_course表(学生选课成绩表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 sno char 8 NOT NULL 是 学生学号 tcid smallint 2 NOT NULL 是 上课编号 score tinyint 1 NULL 学生成绩 注意:上课编号tcid是指teacher_course(教师上课课表)中的tcid,而不是course表(课程信息表)中的课程编号cno。 (5)teacher表(教师信息表)如表1-4所示。 表1—4 teacher表(教师信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 tno char 8 NOT NULL 是 教师编号 tname char 8 NOT NULL 教师姓名 sex char 2 NULL 教师性别 birthday smalldate 4 NULL 教师出生日期 dno char 6 NULL 教师所在院系编号(外键) pno tinyint 1 NULL 教师职务或职称编号 home varchar 40 NULL 教师家庭住址 zipcode char 6 NULL 邮政编码 tel varchar 40 NULL 联系电话 email varchar 40 NULL 电子邮件 (6)department表(院系信息表)如表1-5所示。 表1—5 department表(院系信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 dno char 6 NOT NULL 是 院系编号 dname char 20 NOT NULL 院系名称 header char 8 NULL 院系负责人 addr varchar 40 NULL 院系办公地址 del varchar 40 NULL 联系电话 (7)user表(用户信息表)如表1-6所示。 表1-6 user表(用户信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 usrno char 8 NOT NULL 是 用户名 usrpwd char 8 NULL 密码 usrrights int 4 NOT NULL 操作权限 (8)speciality表(专业信息表)如表1-7所示. 表1-7 speciality表(专业信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 spno char 8 NOT NULL 是 专业代码 dno char 6 NOT NULL 院系编号(外键) spname char 20 NOT NULL 专业名称 (9)class表(班级信息表)如表1—8所示。 表1—8 class表(班级信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 classno char 4 NOT NULL 是 班级号 spno char 8 NOT NULL 是 专业代码 header char 8 NULL 班负责人 (10)teacher_course表(教师上课课表)如表1-9所示。 表1-9 teacher_course表(教师上课课表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 tcid smallint 2 NOT NULL 是 上课编号 tno char 8 NULL 教师编号(外键) spno char 8 NULL 专业代码(外键) classno char 4 NULL 班级号 cno char 10 NOT NULL 课程编号(外键) semester char 6 NULL 学期 schoolyear char 10 NULL 学年 classtime varchar 40 NULL 上课时间 classroom varchar 40 NULL 上课地点 weektime tinyint 1 NULL 每周课时数 (11)change表(学籍变更信息表)如表1—10所示。 表1—10 change表(学籍变更信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 changeid smallint 2 NOT NULL 是 记录号 sno char 8 NOT NULL 学生学号(外键) change char 1 NOT NULL 变更代码(外键) rectime datetime 8 NOT NULL 记录时间 description varchar 100 NULL 描述 (12)reward表(奖励记录信息表)如表1-11所示。 表1-11 reward表(奖励记录信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 rewardid smallint 2 NOT NULL 是 记录号 sno char 8 NOT NULL 学生学号(外键) 续表 字段名称 类 型 宽 度 允许空值 主 键 说 明 levels char 1 NOT NULL 级别代码(外键) rectime datetime 8 NOT NULL 记录时间 description varchar 100 NULL 描述 (13)punishment表(处罚记录信息表)如表1-12所示。 表1-12 punishment表(处罚记录信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 punishmentid smallint 2 NOT NULL 是 记录号 sno char 8 NOT NULL 学生学号(外键) levels char 1 NOT NULL 级别代码(外键) rectime datetime 8 NOT NULL 记录时间 enable char 1 NOT NULL 是否生效(T-是 F-否) description varchar 100 NULL 描述 (14)change_code表(学籍变更信息表)如表1-13所示。 表1—13 change_code表(学籍变更信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 code char 1 NOT NULL 是 变更代码 description varchar 100 NULL 描述 (15)reward_levels表(奖励记录信息表)如表1-14所示. 表1—14 reward_levels表(奖励记录信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 code char 1 NOT NULL 是 代码 description varchar 100 NULL 描述 (16)punishment_levels表(处罚记录信息表)如表1—15所示. 表1-15 punishment_levels表(处罚记录信息表) 字段名称 类 型 宽 度 允许空值 主 键 说 明 code char 1 NOT NU
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服