




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目:教务管理系统 专 业:计算机科学与技术 姓 名: 学 号: 指导教师:李 晓 虹2015 年 1 月 10 日课程设计报告模块内容要求:1.系统需求分析1.1 系统要求该系统使用Visual Basic 6.0语言进行整体系统设计,且拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库。且该系统使用Access来建立数据库,Access多用于中小型企业以及人数相对不是较大的学校来设计中小型数据库。一般学校的教务系统数据库用Access来设计完全能达到要求。并通过调查,要求系
2、统需要有一些简单的要求,由于操作人员的计算机知识普遍较差,要求系统要有良好的人机界面,让操作人员一目了然。鉴于该系统的使用对象为两大部分即教务处管理员和各班主任,要求有较好的权限管理。因为原始数据修改简单方便,支持相对权限管理者可以直接修改数据。方便的数据查询,支持多条件查询。在相应的权限下,管理者删除数据方便简单,数据稳定性较好。1.2需求分析本系统的用户主要是教务处管理员和各班级班主任,通过该系统管理员可以对教师或学生的档案信息进行查看和查询,并且还可以对教师和学生的档案信息、成绩信息进行修改、增加或删除等操作,这样在一定程度上做到教务管理信息的安全性,从而使教务管理工作顺利的进行。教务管
3、理中总是需要面对大量的录入信息如学生个人档案信息、教师个人档案信息、学生班级基本信息、学生基本成绩信息、学生成绩查询,教师档案的查询修改等。因此需要信息进行及时管理更新,及时了解各个管理环节中信息的变更,力求提高管理效率。由于本系统管理的对象较为单一,并且都是在校教师学生,况且每个数据内容具有较强的关联性,涉及的计算过程不是很复杂。本系统力求使系统功能界面操作简洁明了,功能齐全且易于非计算机人员操作。根据学校教务管理系统需要实现的一些目标来分析,该系统将数据库的设计可以抽象为简单的六大类基本的数据表,即:总体教师档案信息表、总体学生档案信息表、学校所开设的各年级的班级及班级号信息表、各班级学生
4、信息表、各班级学生成绩信息表、各年级开设的课程管理信息表。2.总体设计1.1 Visual Basic 6.0简介Visual Basic 6.0(VB)2是一种由微软公司开发的包含协助开发环境的事件驱动编程语言,是一种我们常用的编程开发工具。从任何标准来说,VB都是世界上使用人数最多的语言不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言,简单点来说就是微软为了更好的让人们学习编程,应用Basic 开发语言的一套工具。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序
5、员可以轻松的使用VB提供的组件快速建立一个应用程序。VB把过往的纯代码编程过度到可视化编程,将一些经常要使用到的功能以一个个的控件的形式出现,例如 Label(标签)、TextBox(文本框)等等(都是本系统所用到的)。利用VB的数据访问特性,用户可以对包括Microsoft SQL Server、Access和其他企业数据库在内的大部分数据库格式创建数据库和前端应用程序,以及可调整的服务器端部件。利用ActiveX(TM)技术,VB可使用如Microsoft Word、Microsoft Excel及其他Windows应用程序提供的功能,甚至可直接使用VB专业版和企业版创建的应用程序对象。V
6、B 的程序可以包含一个或多个窗体,或者是一个主窗体和多个子窗体 ,让用户用起来一目了然。它具有清晰地图形界面,不需编写大量代码去描述界面元素的外观和位置 。本系统所设计的页面可以让用户清晰地看出所有管理的功能,让他们简单轻松地去完成复杂的教务管理工作。2.2教务管理系统总体设计图3.详细设计代码:#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>#include <set>#include <map>#include &l
7、t;list>#include <stack>#include <queue>#include <time.h>#include <cmath>using namespace std;/* 快速模匹配*/void getnext(char *p,int *next) int j,k; j=0;k=-1; next0=-1; while(j<strlen(p)-1) if(k=-1|pk=pj) j+;k+; nextj=k; else k=nextk; int KMP(char *s,char *p) int i,j; i=j=0;
8、int next100; getnext(p,next); while(i<strlen(s) if(j=-1|si=pj) i+;j+; else j=nextj; if(j=strlen(p)return i-j; return -1;class Course public: int grade; int regular_grade,exeperiment_grade,exam_paper_grade; char id10,name20; double caculateRecord();/计算综合成绩 double caculateCredit();/计算实际所得学分;/* 计算某一
9、科的综合成绩*/double Course:caculateRecord() double res; if(exeperiment_grade=-1)res=regular_grade*0.3+exam_paper_grade*0.7; else res=regular_grade*0.15+exeperiment_grade*0.15+exam_paper_grade*0.7; return res;/* 计算某一刻所得的学分*/double Course:caculateCredit() double cre,rec; rec=caculateRecord(); if(rec>90)
10、cre=grade; else if(rec>=80.0&&rec<90.0)cre=grade*0.8; else if(rec>=70.0&&rec<80.0)cre=grade*0.75; else if(rec>=60.0&&rec<70.0)cre=grade*0.6; else cre=0; return cre;class Student Course cou;/学生所选的课程 char id10,name20;/学号/姓名 int cmdid;/指令代号 int cnt;/所修课程数 char
11、phonenum18,roomnum18,sex18;/电话号码、寝室号、性别public: double credit;/学生的总学分 double totalRecord;/综合成绩 void tips();/提示内容 void executeCmd();/执行命令函数 void getCmd(string cmd);/获取命令参数函数 void query();/查询功能函数 void caculateGrade();/计算成绩 void delStu();/删除学生功能函数 void refresh();/更新数据函数 void Sort(bool cmdnum);/排序功能函数 vo
12、id Update(); void Exit();/* 功能使用提示*/void Student:tips() cout<<"-"<<endl; cout<<"学籍管理系统操作指令介绍n" cout<<" 数据录入功能:Updaten" cout<<" 查询功能:n 基本情况查询:An 成绩查询:Bn"<< " 删除功能:n 先键入del然后输入学生学号/姓名即可n"<< " 排序功能:n 升序输入:u
13、pn 降序输入:down"<<endl; cout<<"输入EOF表示退出此系统"<<endl; cout<<"-"<<endl;/* 退出系统*/void Student:Exit() system("exit");/* 数据写入功能*/void Student:Update() Student stu100; Student tempstu; FILE *file; int cnt=0; file =fopen("B.txt","r
14、+"); while(1) fscanf(file,"%st%st%st%dt%dt%dt%dt",id,cou.id,,&cou.grade,&cou.regular_grade,&cou.exeperiment_grade,&cou.exam_paper_grade);/ strcpy(stucnt.id,id);/ strcpy(stucnt.cou.id,cou.id);/ strcpy(,);/ stucnt.cou.regular_grade=cou.regu
15、lar_grade;/ stucnt.cou.exam_paper_grade=cou.exam_paper_grade;/ stucnt.cou.exeperiment_grade=cou.exeperiment_grade;/ stucnt.cou.grade=cou.grade;/ cnt+; if(feof(file)break; printf("按照指定的格式输出学生信息n"); scanf("%s%s%s%d%d%d%d",tempstu.id,tempstu.cou.id,,&tempstu.cou.
16、grade,&tempstu.cou.regular_grade,&tempstu.cou.exeperiment_grade,&tempstu.cou.exam_paper_grade); stucnt=tempstu; fprintf (file, "%s %s %s %d %d %d %dn",stu0.id,stu0.cou.id,,stu0.cou.grade,stu0.cou.regular_grade,stu0.cou.exeperiment_grade,stu0.cou.exam_paper_grade);
17、/ fclose(file);/* 将获取的命令返回给cmdid,并根据cmdid的不同取值、 执行相应的命令*/void Student:getCmd(string cmd) if(cmd0='A')cmdid = 1;/查询基本情况 else if(cmd0='B')cmdid = 2;/查询成绩 else if(cmd1='e')cmdid = 3;/删除学生 else if(cmd0='u')cmdid = 4;/升序排列 else if(cmd1='o')cmdid = 5;/降序排列 else if(c
18、md0='E'&&cmd1='O'&&cmd2='F')cmdid=6; else if(cmd0='U')cmdid=7;/数据录入/* 查询功能的实现*/void Student:query() char info100; int tmp=-1; printf("输入学生的学号或宿舍号,查询学生信息或宿舍信息n"); scanf("%s",id); printf("n"); FILE *file; file=fopen("A.
19、txt","r"); if(file=NULL)perror("Error opening"); else while(tmp=-1) fgets(info,100,file); tmp=KMP(info,id); if(tmp=0) puts(info); else if(tmp>=10&&tmp<=26) puts(info); tmp=-1; if(feof(file)break; fclose(file); cout<<"-"<<endl;/* 计算成绩*/void
20、 Student:caculateGrade() credit=0.0; cnt=0; printf("输入学生学号n"); char ids10; int tmp1=-1,tmp2=-1; double tmpRecord,tmpCredit; scanf("%s",ids); printf("n"); FILE *file1,*file2; file1=fopen("A.txt","r"); file2=fopen("B.txt","r"); if(f
21、ile1!=NULL&&file2!=NULL) while(tmp1=-1) fscanf(file1,"%st%st%st%st%st",id,name,sex,roomnum,phonenum); if(ids1=id1) tmp1=0; printf("学 号:%s 姓 名:%sn",ids,name);while(tmp2=-1)fscanf(file2,"%st%st%st%dt%dt%dt%dt",id,cou.id,,&cou.grade,&cou.regular_gra
22、de,&cou.exeperiment_grade,&cou.exam_paper_grade);if(ids1=id1) cnt+; tmpRecord=cou.caculateRecord(); tmpCredit=cou.caculateCredit(); printf("课程编号:%s 课程名称:%8s 综合成绩:%.2lf 实得学分: %.2lfn",cou.id,,tmpRecord,tmpCredit); credit+=tmpCredit;if(feof(file2)break;printf("共修:%d科,实得总学
23、分为: %.2lfn",cnt,credit); /* 删除某一个学生*/void Student:delStu() char ids10; Student stu100,stu0100; printf("输入要删除的学生的学号n"); scanf("%s",ids); FILE *file1,*file2,*file3,*file4; file3=fopen("A.txt","w"); file4=fopen("B.txt","w"); file1=fopen(&
24、quot;A.txt","r"); file2=fopen("B.txt","r+"); int cnt=0,cnt1=0; if(file1!=NULL&&file2!=NULL) while(1) fscanf(file1,"%st%st%st%st%st",id,name,sex,roomnum,phonenum); if(ids1!=id1) strcpy(stu0cnt1.id,id); strcpy(,name); strcpy(stu0cnt1.se
25、x,sex); strcpy(stu0cnt1.roomnum,roomnum); strcpy(stu0cnt1.phonenum,phonenum); cnt1+; if(feof(file1)break; fclose(file1); if(remove("A.txt")!=0) printf("ahgjagkajgn"); for(int i=0;i < cnt1;i +) fprintf(file3,"%s %6s %s %s %sn",stu0i.id,,stu0i.sex,stu0i.roomn
26、um,stu0i.phonenum); fclose(file3); while(1) fscanf(file2,"%st%st%st%dt%dt%dt%dt",id,cou.id,,&cou.grade,&cou.regular_grade,&cou.exeperiment_grade,&cou.exam_paper_grade); if(ids1!=id1) strcpy(stucnt.id,id); strcpy(stucnt.cou.id,cou.id); strcpy(,
27、); stucnt.cou.regular_grade=cou.regular_grade; stucnt.cou.exam_paper_grade=cou.exam_paper_grade; stucnt.cou.exeperiment_grade=cou.exeperiment_grade; stucnt.cou.grade=cou.grade; cnt+; if(feof(file2)break; if(remove("B.txt")!=0)printf("ahgkjagan"); for(int i=0;i<cnt;i+) fprintf
28、(file4, "%s %s %s %d %d %d %dn",stui.id,stui.cou.id,,stui.cou.grade,stui.cou.regular_grade,stui.cou.exeperiment_grade,stui.cou.exam_paper_grade); fclose(file4); /* 排序功能:首先按照实际学分进行排序,实际学分相等的话,按照综合成绩进行排序 cmp1采用从小到大进行排序,cmp2采用从打到小进行排序*/bool cmp1(Student a,Student b) return (a.cre
29、dit=b.credit)?a.totalRecord<b.totalRecord:a.credit<b.credit;bool cmp2(Student a,Student b) return (a.credit=b.credit)?(a.totalRecord>b.totalRecord):a.credit>b.credit;/* 学生成绩或学分的升降序排列,cmdnum为true是从大到小,为false是从小到大进行排列*/void Student:Sort(bool cmdnum) FILE* file; file =fopen("B.txt"
30、;,"r"); Student stu100; int cnt=0; while(1) fscanf(file,"%st%st%st%dt%dt%dt%dt",id,cou.id,,&cou.grade,&cou.regular_grade,&cou.exeperiment_grade,&cou.exam_paper_grade); /stucnt.id=id; strcpy(stucnt.id,id); strcpy(stucnt.cou.id,cou.id); strcpy(stucnt.cou.nam
31、e,); stucnt.totalRecord=cou.caculateRecord(); stucnt.credit=cou.caculateCredit(); cnt+; if(feof(file)break; if(cmdnum)sort(stu,stu+cnt,cmp2); else sort(stu,stu+cnt,cmp1); printf("排序后结果为:n"); for(int i=0;i<cnt;i+) printf("学号:%s 编号:%s 名称:%8s 综合成绩:%.2lf 实得学分:%.2lf 名次:%dn",stui.id,stui.cou.id,,stui.totalRecord,stui.credit,i+1); cout<<"-"<<endl;/* 执行命令函数*/void Student:executeCmd() switch(cmdid) case 1: quer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年教育课程设置与2025年创新教学模式评价体系构建报告
- 《公差配合与技术测量》课件-第4章 表面粗糙度及其检测(公差配合与技术测量)
- 快时尚品牌如何应对时尚零售行业模式变革中的产品创新与市场定位策略研究与应用策略报告
- Unit+3+Family+matters+Understanding+Ideas外研版高中英语(2019)必修第一册
- 新课标公开课Unit1 Happy Holiday Section B 1a-1d课件+内嵌视频-2025-2026学年新人教版八年级英语上册
- 河北省雄安新区雄安十校2024-2025学年高一下学期7月期末考试历史试卷
- 太空养鱼题目及答案
- 题目及答案100题
- 养殖服务管理办法
- 兼业代理管理办法
- 呋喃西林溶液的毒理学研究
- 2023-2024学年安徽省合肥一中高一(下)期末物理试卷(含答案)
- DL∕T 806-2013 火力发电厂循环水用阻垢缓蚀剂
- 第一届全国技能大赛机电一体化项目“专业技术规范”
- 防止电力建设事故三十条措施题库附有答案
- 《幼儿游戏与指导》 课程标准
- TMK工作总结模板
- 提高销售信心与自信心的培训
- 收纳整理培训课件
- 输液港及护理课件
- 干细胞临床研究质量管理手册
评论
0/150
提交评论