已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1目 录摘 要2第1章 绪论3第2章 系统分析42.1设计目的42.2需求分析42.3、系统模块的实现5第3章 数据库设计63.1. 设计原则63.2 数据库组成63.1 面向对象数据库设计方法6第4章 系统设计74.1 登录界面设计74.2菜单设计11第五章总结与展望41致 谢42 摘 要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。学生管理系统是典型的信息管理系统 (MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我采用微软公司的Microsoft Visual C+ 6.0.中的c语言平台开发,后台建立在文件的读取基础上,尤其是数据窗口能方便而简洁操纵数据库的智能化对象,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成高可行性系统。通过对计算机硬件和软件方面的了解,来论证本系统的解决方案。另外对学校等领域进行调研和分析,参照相关各种资料进行数据库编程实践。在指导老师的大力帮助下,基本上完成了设计任务书的要求。用户模块和管理员模块。对于用户模块来说,只能浏览属于本用户(学生)的相关信息;而管理员模块,则可以添加、查询、修改、删除、查看所有学生的信息,并且可以对班级信息、课程信息、学生成绩和教师信息进行简单的管理。关键字:MIS 数据库 C语言 模块 Microsoft Visual C+ 6.0.第1章 绪论1.1设计思想本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改 、增加、删除,针对这些要求设计了学生信息管理系统本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改 、增加、删除,针对这些要求设计了学生信息管理系统1.2 数据库种类选择C语言中可以调用数据库,但是想到数据库的复杂性,我们采用C语言用的文件的读取,与存储,用文件把数据存入记事本用,在调用记事本用的数据,记事本就相当于一个数据库,完成数据的存储与读取。1.3 程序语言简介1、C语言把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。2、结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。15 3、C语言功能齐全:具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。15 4、C语言适用范围大:适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,优于其它高级语言,有一些大型 应用软件也是用C语言编写的。15 5、C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C+在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C+的教训,取消了指针操作,也取消了C+改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C+/C。一般而言,C,C+,java被视为同一系的语言,它们长期占据着程序使用榜的前二名。第2章 系统分析2.1 设计目的作为C课程结课设计,验证自身的学习效果,同时希望利用所学的基本知识和技能,进行简单程序设计。希望通过项目实践,熟悉巩固所学知识,以使自身达到熟练掌握C的基本知识和技能,基本掌握面向过程程序开发的基本思路和方法,了解C语言的文件读取和储存开发基本知识,为今后的进一步深入学习,奠定基础。2.2 需求分析学生管理系统的开发目的是为了实现学生课程、学籍的信息化管理。本系统需要完成的功能有:学籍基本信息、班级信息、课程基本信息、学生成绩信息以及系统管理员才具有的教师管理和用户管理。1. 学籍基本信息:可对学生基本信息进行添加、删除、修改、查找等功能,学籍基本信息有:学号、姓名、性别、出生日期、民族、电话、政治面貌、健康情况、身高、专业、班级、籍贯、毕业学校、家庭住址、特长、备注等属性。2. 班级信息:可对班级信息进行添加、删除、修改、查找和报表输出等功能,班级信息:班级名,年级、专业、辅导员、备注属性。3. 课程基本信息:可对课程进行添加、删除、修改、查找和报表输出等功能,课程基本信息:科目编号、课程名称、修课性质、考核性质、开课学期、开课单位、专业名称等属性。4. 学生成绩信息:可对每一个学生成绩信息进行添加、删除、修改、查找和报表输出等功能,学生成绩信息有:学号、专业名称、科目编号、成绩属性。5. 系统用户表:可对系统设置权限,分为老师和学生权限,分别完成不同的工作,成绩属性有:用户名、密码、权限属性。2.3 系统模块的实现在系统中包括以下功能:学籍基本信息、班级信息、课程基本信息、学生成绩息系统用户表。系统各模块关系如图所示: 第3章 数据库设计3.1 设计原则1.密码管理:学生修改学生查询密码;教师可以修改查询密码。2.每个教师可以查看所有学生的成绩,包括每门课程的成绩、每门课程的平均成绩、每个分数段的成绩。3.学生根据自己的学号查询本人的成绩。4.教师可以登记、修改、查询自己所讲授课程的学生的成绩、该课程的总分、平均成绩、各分数段成绩人数统计、不及格学生的名单、成绩等等。3.2 数据库组成数据表3个: 学生表(5个字段: xh, xm, xb, csrq, bj),其中有各班学生的记录 课程表(4个字段:kch,kcm, js, xf),其中有课程的记录; 成绩表(3个字段:xh, kch, cj),其中有学生成绩的记录。登录表(2个字段,tt,ss)有用户名, 密码3.1 面向对象数据库设计方法1)考虑对象的静态和动态属性对象属性决定了数据库或包含具有相同类型对象的表的内容。2)描述数据实体及其属性包含所有静态属性的单个对象被称作数据实体。每个单独的数据实体必须唯一,这样可以与其他实体区分。包含在数据实体中的对象的性质被称作为属性。(attribute)3)用方法来说明对象的行为关系数据库对象的行为决定了数据对象参与事务的特征。事务的发生对应着事件,通过使用响应事件的方法来实现事务。4)在单个表中合并不同实体可以在单个表中包含不同对象类型的说明,只要可以按照相同方式描述属性和行为,以及区分不同对象类型即可。第4章 系统设计4.1 登录界面设计(1)功能描述登录界面是学生信息管理系统的入口,它可以使学生、教师和管理员以不同权限登录管理系统。其结构如图6所示: 图6 登录界面结构图 (2)源代码设计登录界面是利用C技术的窗口创建工具生成登录窗体void langing() int password1,i,t,aa=1,bb,y; char teacher25; system(cls); printf(nn); printf(*欢迎进入学生管理系统*); while(1) printf(请选择你的身份:老师-1,学生-0n);scanf(%d,&i);if(i=0|i=1) break;printf(输入的代号不正确,请重新输入n); printf(这是第1次输入n); for(aa=1;aa+)printf(请输入你的账号:);scanf(%s,teacher0);printf(请输入你的密码:); for ( y=0; y80; y+) teacher1y = getch(); /*逐次赋值,但不回显*/ if(teacher1y=b)/important,e printf(b); putch( ); printf(b); y-; continue; if (teacher1y = x0d)/*回车则终止循环*/ teacher1y=0; break; printf(*); /*以星号代替字符个数*/printf(n); load1(debark,fname2); if( i=1&strcmp(teacher0,debark0.password)=0&strcmp(teacher1,debark0.user)=0 )printf(是否修改密码1-修改,任意键-不修改n);scanf(%d,&password1);if(password1=1) correct1(); printf(请选择要完成的操作:1-学籍信息 2-班级基本信息 3-课程基本信息 4-学生成绩信息n); scanf(%d,&differentiate); switch(differentiate) case 1: menu ();break;case 2: menu2();break;case 3: menu3();break;case 4: menu4();break; else for(t=1;t=1&n=1&n=1&n=1&n=7) switch(n)case 1: import4(StuGrade,30);break; case 2: display4(StuGrade);break;case 3:search4(StuGrade,Global4);break;case 4:del4(StuGrade,Global4);break;case 5:insert4(StuGrade,20);break;case 6:correct4();break;case 7:langing();break;case 8:out();break; 下面的输入信息、显示、查找信息、删除、添加、修改、返回主菜单、退出的代码如下void save(aa f,char fn100)/保存数据 int i; FILE *fp; if(fp=fopen(fn,wb)=NULL) printf(文件打开失败!系统将结束,欢迎再次使用n);exit(0); for(i=0;iGlobal;i+) fwrite(&fi,sizeof(aa),1,fp); fclose(fp); printf(保存成功!n); printf(按任意键将继续); getch();void save1(bb f,char fn100)/保存数据 int i; FILE *fp; if(fp=fopen(fn,wb)=NULL) printf(文件打开失败!系统将结束,欢迎再次使用n);exit(0); for(i=0;i6;i+) fwrite(&fi,sizeof(bb),1,fp); fclose(fp); printf(保存成功!n); printf(按任意键将继续n); getch();void save2(cc f,char fn100)/保存数据 int i; FILE *fp; if(fp=fopen(fn,wb)=NULL) printf(文件打开失败!系统将结束,欢迎再次使用n);exit(0); for(i=0;iGlobal2;i+) fwrite(&fi,sizeof(cc),1,fp); fclose(fp); printf(保存成功!n); printf(按任意键将继续n); getch();void save3(dd f,char fn100)/保存数据 int i; FILE *fp; if(fp=fopen(fn,wb)=NULL) printf(文件打开失败!系统将结束,欢迎再次使用n);exit(0); for(i=0;iGlobal3;i+) fwrite(&fi,sizeof(dd),1,fp); fclose(fp); printf(保存成功!n); printf(按任意键将继续n); getch();void save4(ee f,char fn100)/保存数据 int i; FILE *fp; if(fp=fopen(fn,wb)=NULL) printf(文件打开失败!系统将结束,欢迎再次使用n);exit(0); for(i=0;iGlobal4;i+) fwrite(&fi,sizeof(ee),1,fp); fclose(fp); printf(保存成功!n); printf(按任意键将继续n); getch();/从文件中提取数据 void load(aa f,char fn100)/下载数据 int i=0; FILE *fp; if(fp=fopen(fn,rb)=NULL) printf(文件打开失败!系统将结束,欢迎再次使用n); exit(0); for(i=0;i6;i+) if(fread(&studenti,sizeof(aa),1,fp)!=1)/1.用于接收数据的地址(指针)(buffer) /2.单个元素的大小(size) :单位是字节而不是位,例如读取一个int型数据就是4个字节 /3.读取size个字节的次数(count) /4.提供数据的文件指针(stream) fclose(fp); Global=i; return; fclose(fp); void load1(bb f,char fn100)/下载数据 int i=0; FILE *fp; if(fp=fopen(fn,rb)=NULL) printf(文件打开失败!系统将结束,欢迎再次使用n); exit(0); for(i=0;i20;i+) if(fread(&debarki,sizeof(bb),1,fp)!=1)/1.用于接收数据的地址(指针)(buffer) /2.单个元素的大小(size) :单位是字节而不是位,例如读取一个int型数据就是4个字节 /3.读取size个字节的次数(count) /4.提供数据的文件指针(stream) fclose(fp); Global1=i; return; fclose(fp);void load2(cc f,char fn100)/下载数据 int i=0; FILE *fp; if(fp=fopen(fn,rb)=NULL) printf(文件打开失败!系统将结束,欢迎再次使用n); exit(0); for(i=0;i20;i+) if(fread(&ClassInfoi,sizeof(cc),1,fp)!=1)/1.用于接收数据的地址(指针)(buffer) /2.单个元素的大小(size) :单位是字节而不是位,例如读取一个int型数据就是4个字节 /3.读取size个字节的次数(count) /4.提供数据的文件指针(stream) fclose(fp); Global2=i; return; fclose(fp);void load3(dd f,char fn100)/下载数据 int i=0; FILE *fp; if(fp=fopen(fn,rb)=NULL) printf(文件打开失败!系统将结束,欢迎再次使用n); exit(0); for(i=0;i20;i+) if(fread(&di,sizeof(dd),1,fp)!=1)/1.用于接收数据的地址(指针)(buffer) /2.单个元素的大小(size) :单位是字节而不是位,例如读取一个int型数据就是4个字节 /3.读取size个字节的次数(count) /4.提供数据的文件指针(stream) fclose(fp); Global3=i; return; fclose(fp); void load4(ee f,char fn100)/下载数据 int i=0; FILE *fp; if(fp=fopen(fn,rb)=NULL) printf(文件打开失败!系统将结束,欢迎再次使用n); exit(0); for(i=0;i20;i+) if(fread(&StuGradei,sizeof(ee),1,fp)!=1)/1.用于接收数据的地址(指针)(buffer) /2.单个元素的大小(size) :单位是字节而不是位,例如读取一个int型数据就是4个字节 /3.读取size个字节的次数(count) /4.提供数据的文件指针(stream) fclose(fp); Global4=i; return; fclose(fp); /输出到显示器上void shuchu(aa student) int i,c; for(i=0;iGlobal;i+) c=i+1; printf(第%d个学生的信息n,c); printf( 学号:%sn 姓名: %sn 性别: %sn 出生日期: %sn 民族: %sn 电话: %sn 政治面貌: %sn 健康情况: %sn 身高: %sn 专业: %sn 班级: %sn 籍贯: %sn 毕业学校: %sn 家庭住址: %sn 特长: %sn 备注: %sn, studenti.ID,,studenti.sex, studenti.birthdate ,studenti.notion, studenti.telephone,studenti.politics,studenti.healthy, studenti.height,fession, studenti.classes,studenti.native,studenti.school,studenti.home,studenti.speciality,studenti.remark); void shuchu2(cc ClassInfo) int i,c; for(i=0;iGlobal2;i+) c=i+1; printf(第%d个学生的信息n,c); printf( 班级名:%sn 年级: %sn 专业: %sn 辅导员: %sn 备注: %sn, ClassInfoi.class_name,ClassInfoi.grade,ClassInfoi.major, ClassInfoi.instructor,ClassInfoi.remark); void shuchu3(dd a) int i,c; for(i=0;iGlobal3;i+) c=i+1; printf(第%d个学生的信息n,c); printf( 科目编号:%sn 课程名称: %sn 修课性质: %sn 考核性质: %sn 开课学期: %sn 开课单位: %sn 专业名称: %sn , ai.a1,ai.a2,ai.a3, ai.a4 ,ai.a5, ai.a6,ai.a7); void shuchu4(ee a) int i,c; for(i=0;iGlobal4;i+) c=i+1; printf(第%d个学生的信息n,c); printf( 学号:%sn 专业名称: %sn 科目编号: %sn 成绩: %sn , StuGradei.ID_1,StuGradei.a7_1,StuGradei.a1_1, StuGradei.result); /把数据输入到文件中void import(aa f,int n)/输出 int number,i,c,t; printf(要输入的信息的个数n); scanf(%d,&number); printf(注:输入汉字用CTrl+空格 ) n); for(i=0;inumber;i+) t=i+1; printf(请输入第%d个学籍的信息n,t); printf(学号: ); scanf(%s,&studenti.ID); printf(姓名: ); scanf(%s,&); printf(性别: ); scanf(%s,&studenti.sex); printf(出生日期: ); scanf(%s,&studenti.birthdate) ; printf(民族: ); scanf(%s,&studenti.notion); printf(电话: ); scanf(%s,&studenti.telephone); printf(政治面貌: ); scanf(%s,&studenti.politics); printf(健康情况: ); scanf(%s,&studenti.healthy); printf(身高: ); scanf(%s,&studenti.height); printf(专业: ); scanf(%s,&fession); printf(班级: ); scanf(%s,&studenti.classes); printf(籍贯: ); scanf(%s,&studenti.native); printf(毕业学校: ); scanf(%s,&studenti.school); printf(家庭住址: ); scanf(%s,&studenti.home); printf(特长: ); scanf(%s,&studenti.speciality); printf(备注: ); scanf(%s,&studenti.remark); printf(是否保存:是-Y,不保存任意键n); Global=i; c=getchar(); c=getchar(); if(c=Y) printf(您的信息将保存到名为friend的文件中n); save(student,fname1); void import2(cc f,int n)/输出 int number,i,c,t; printf(要输入的信息的个数n); scanf(%d,&number); printf(注:输入汉字用CTrl+空格 ) n); for(i=0;inumber;i+) t=i+1; printf(请输入第%d个班级的信息n,t); printf(班级名: ); scanf(%s,&ClassInfoi.class_name); printf(年级: ); scanf(%s,&ClassInfoi.grade); printf(专业: ); scanf(%s,&ClassInfoi.major); printf(辅导员: ); scanf(%s,&ClassInfoi.instructor) ; printf(备注: ); scanf(%s,&ClassInfoi.remark); printf(是否保存:是-Y,不保存任意键n); Global2=i; c=getchar(); c=getchar(); if(c=Y) printf(您的信息将保存到名为friend的文件中n); save2(ClassInfo,fname3); void import3(dd f,int n)/输出 int number,i,c,t; printf(要输入的信息的个数n); scanf(%d,&number); printf(注:输入汉字用CTrl+空格 ) n); for(i=0;inumber;i+) t=i+1; printf(请输入第%d个课程的信息n,t); printf(科目编号: ); scanf(%s,&di.a1); printf(课程名称: ); scanf(%s,&di.a2); printf(修课性质: ); scanf(%s,&di.a3); printf(考核性质: ); scanf(%s,&di.a4) ; printf(开课学期: ); scanf(%s,&di.a5); printf(开课单位:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论