




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WORD43 / 43目 录摘要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摘 要随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。
2、学生管理系统是典型的信息管理系统 (MIS),其开发主要包括后台数据库的建立和维护以与前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我采用微软公司的Microsoft Visual C+ 6.0.中的c语言平台开发,后台建立在文件的读取基础上,尤其是数据窗口能方便而简洁操纵数据库的智能化对象,首先在短时间建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成高可行性系统。通过对计算机硬件和软件方面的了解,来论证本系统的解决方案。另外对学校等领域进行调研和分析,参照相关各种资料
3、进行数据库编程实践。在指导老师的大力帮助下,基本上完成了设计任务书的要求。用户模块和管理员模块。对于用户模块来说,只能浏览属于本用户(学生)的相关信息;而管理员模块,则可以添加、查询、修改、删除、查看所有学生的信息,并且可以对班级信息、课程信息、学生成绩和教师信息进行简单的管理。关键字:MIS 数据库 C语言 模块 Microsoft Visual C+ 6.0.第1章 绪论1.1设计思想本系统主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改 、增加、删除,针对这些要求设计了学生信息管理系统本系统主要用于学
4、校学生信息管理,总体任务是实现学生信息关系的系统化、规化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改 、增加、删除,针对这些要求设计了学生信息管理系统1.2 数据库种类选择C语言中可以调用数据库,但是想到数据库的复杂性,我们采用C语言用的文件的读取,与存储,用文件把数据存入记事本用,在调用记事本用的数据,记事本就相当于一个数据库,完成数据的存储与读取。1.3 程序语言简介1、C语言把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。2、结构式语言的显著特点是代码与数据的分隔化,即程
5、序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以与调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。153、C语言功能齐全:具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。154、C语言适用围大:适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,优于其它高级语言,有一些大型应用软件也是用C语言编写的。155、C语言应用指针:可以直接进行靠近硬件的
6、操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C+在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C+的教训,取消了指针操作,也取消了C+改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C+/C。一般而言,C,C+,java被视为同一系的语言,它们长期占据着程序使用榜的前二名。第2章 系统分析2.1 设计目的作为C课程结课设计,验证自身的学习效果,同时希望利用所学的基本知识和技能,进行简单程序设计。希望通过项目实践,熟悉巩
7、固所学知识,以使自身达到熟练掌握C的基本知识和技能,基本掌握面向过程程序开发的基本思路和方法,了解C语言的文件读取和储存开发基本知识,为今后的进一步深入学习,奠定基础。2.2 需求分析学生管理系统的开发目的是为了实现学生课程、学籍的信息化管理。本系统需要完成的功能有:学籍基本信息、班级信息、课程基本信息、学生成绩信息以与系统管理员才具有的教师管理和用户管理。1. 学籍基本信息:可对学生基本信息进行添加、删除、修改、查找等功能,学籍基本信息有:学号、性别、出生日期、民族、政治面貌、健康情况、身高、专业、班级、籍贯、毕业学校、家庭住址、特长、备注等属性。2. 班级信息:可对班级信息进行添加、删除、
8、修改、查找和报表输出等功能,班级信息:班级名,年级、专业、辅导员、备注属性。3. 课程基本信息:可对课程进行添加、删除、修改、查找和报表输出等功能,课程基本信息:科目编号、课程名称、修课性质、考核性质、开课学期、开课单位、专业名称等属性。4. 学生成绩信息:可对每一个学生成绩信息进行添加、删除、修改、查找和报表输出等功能,学生成绩信息有:学号、专业名称、科目编号、成绩属性。5. 系统用户表:可对系统设置权限,分为老师和学生权限,分别完成不同的工作,成绩属性有:用户名、密码、权限属性。2.3 系统模块的实现在系统中包括以下功能:学籍基本信息、班级信息、课程基本信息、学生成绩息系统用户表。系统各模
9、块关系如图所示:第3章 数据库设计3.1 设计原则1.密码管理:学生修改学生查询密码;教师可以修改查询密码。2.每个教师可以查看所有学生的成绩,包括每门课程的成绩、每门课程的平均成绩、每个分数段的成绩。3.学生根据自己的学号查询本人的成绩。4.教师可以登记、修改、查询自己所讲授课程的学生的成绩、该课程的总分、平均成绩、各分数段成绩人数统计、不与格学生的、成绩等等。3.2 数据库组成数据表3个: 学生表(5个字段: xh, xm, xb, csrq, bj),其中有各班学生的记录 课程表(4个字段:kch,kcm, js, xf),其中有课程的记录; 成绩表(3个字段:x
10、h, kch, cj),其中有学生成绩的记录。登录表(2个字段,tt,ss)有用户名, 密码3.1 面向对象数据库设计方法1)考虑对象的静态和动态属性对象属性决定了数据库或包含具有一样类型对象的表的容。2)描述数据实体与其属性包含所有静态属性的单个对象被称作数据实体。每个单独的数据实体必须唯一,这样可以与其他实体区分。包含在数据实体中的对象的性质被称作为属性。(attribute)3)用方法来说明对象的行为关系数据库对象的行为决定了数据对象参与事务的特征。事务的发生对应着事件,通过使用响应事件的方法来实现事务。4)在单个表中合并不同实体可以在单个表中包含不同对象类型的说明,只要可以按
11、照一样方式描述属性和行为,以与区分不同对象类型即可。第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) print
12、f("请选择你的身份:老师-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; y<80; y+) teacher1y = getch(); /*逐次
13、赋值,但不回显*/ 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&&str
14、cmp(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(diffe
15、rentiate) case 1: menu ();break;case 2: menu2();break;case 3: menu3();break;case 4: menu4();break; else for(t=1;t<6;t+) if( i=0&&strcmp(teacher0,debarkt.password)=0&&strcmp(teacher1,debarkt.user)=0 ) printf("是否修改密码1-修改,任意键-不修改n"); scanf("%d",&password1); if
16、(password1=1) correct1(); printf("请选择要完成的操作:1-学籍信息 2-班级基本信息 3-课程基本信息 4-学生成绩信息n"); scanf("%d",&differentiate); studentboundary(); switch(differentiate) case 1: search (student,Global);break; case 2: search2 (ClassInfo,Global2);break; case 3: search3 (d,Global3); break; case 4:
17、 search4(StuGrade,Global4);break; bb=aa+1; if(aa=3) printf("输入错误,将退出程序n"); exit(0); printf("输入有错,请重新输入,超过三次将退出,这是第%d次输入n",bb ); void main() langing();4.2菜单设计登陆成功之后就开始进入要查找的信息的窗口,分为学籍信息、班级基本信息、课程基本信息、学生成绩信息窗口,选过之后就开始进入菜单窗口,分为8个选项,分别完成为输入信息、显示、查找信息、删除、添加、修改、返回主菜单、退出。截屏如下:代码如下:void
18、menu()/菜单函数 void langing(); char n; printf("请按任意键进入系统。n"); getch(); while(1) treachboundary(); scanf("%c",&n); if(n>='1'&&n<='7') switch(n) case '1': import(student,30);break; case '2': display(student);break; case '3':sea
19、rch(student,Global);break; case '4':del(student,Global);break; case '5':insert(student,20);break; case '6':correct();break; case '7':langing(); break; case '8':out();break; void menu2()void langing(); char n; printf("请按任意键进入系统。n"); getch(); while(1)
20、treachboundary(); scanf("%c",&n); if(n>='1'&&n<='7') switch(n) case '1': import2(ClassInfo,30);break; case '2': display2(ClassInfo);break; case '3':search2(ClassInfo,Global2);break; case '4':del2(ClassInfo,Global2);break; ca
21、se '5':insert2(ClassInfo,20);break; case '6':correct2();break; case '7':langing();break; case '8':out();break; void menu3()void langing(); char n; printf("请按任意键进入系统。n"); getch(); while(1) treachboundary(); scanf("%c",&n); if(n>='1'&a
22、mp;&n<='7') switch(n) case '1': import3(d,30);break; case '2': display3(d);break; case '3':search3(d,Global3);break; case '4':del3(d,Global3);break; case '5':insert3(d,20);break; case '6':correct3();break; case '7':langing();brea
23、k; case '8':out();break; void menu4() void langing(); char n; printf("请按任意键进入系统。n"); getch(); while(1) treachboundary(); scanf("%c",&n); if(n>='1'&&n<='7') switch(n)case '1': import4(StuGrade,30);break; case '2': display4(
24、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(
25、aa f,char fn100)/保存数据 int i; FILE *fp; if(fp=fopen(fn,"wb")=NULL) printf("文件打开失败!系统将结束,欢迎再次使用n");exit(0); for(i=0;i<Global;i+) fwrite(&fi,sizeof(aa),1,fp); fclose(fp); printf("保存成功!n"); printf("按任意键将继续"); getch();void save1(bb f,char fn100)/保存数据 int i;
26、FILE *fp; if(fp=fopen(fn,"wb")=NULL) printf("文件打开失败!系统将结束,欢迎再次使用n");exit(0); for(i=0;i<6;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
27、")=NULL) printf("文件打开失败!系统将结束,欢迎再次使用n");exit(0); for(i=0;i<Global2;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("
28、文件打开失败!系统将结束,欢迎再次使用n");exit(0); for(i=0;i<Global3;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")
29、;exit(0); for(i=0;i<Global4;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
30、=0;i<6;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")=NU
31、LL) printf("文件打开失败!系统将结束,欢迎再次使用n"); exit(0); for(i=0;i<20;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 fn10
32、0)/下载数据 int i=0; FILE *fp; if(fp=fopen(fn,"rb")=NULL) printf("文件打开失败!系统将结束,欢迎再次使用n"); exit(0); for(i=0;i<20;i+) if(fread(&ClassInfoi,sizeof(cc),1,fp)!=1)/1.用于接收数据的地址(指针)(buffer) /2.单个元素的大小(size) :单位是字节而不是位,例如读取一个int型数据就是4个字节 /3.读取size个字节的次数(count) /4.提供数据的文件指针(stream) fclo
33、se(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;i<20;i+) if(fread(&di,sizeof(dd),1,fp)!=1)/1.用于接收数据的地址(指针)(buffer) /2.单个元素的大小(size) :单位是字节而不是位,例如读取一个int型数据
34、就是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;i<20;i+) if(fread(&StuGradei,sizeof(ee),1,fp)!=1)/1
35、.用于接收数据的地址(指针)(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;i<Global;i+) c=i+1; printf("第%d个学生的信息n",c); printf(" 学号:%sn : %sn 性别: %sn 出生
36、日期: %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.class
37、es,studenti.native,studenti.school,studenti.home,studenti.speciality,studenti.remark); void shuchu2(cc ClassInfo) int i,c; for(i=0;i<Global2;i+) c=i+1; printf("第%d个学生的信息n",c); printf(" 班级名:%sn 年级: %sn 专业: %sn 辅导员: %sn 备注: %sn", ClassInfoi.class_name,ClassInfoi.grade,ClassInfoi
38、.major, ClassInfoi.instructor,ClassInfoi.remark); void shuchu3(dd a) int i,c; for(i=0;i<Global3;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)
39、 int i,c; for(i=0;i<Global4;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&
40、quot;,&number); printf("(注:输入汉字用CTrl+空格 ) n"); for(i=0;i<number;i+) t=i+1; printf("请输入第%d个学籍的信息n",t); printf("学号: "); scanf("%s",&studenti.ID); printf(": "); scanf("%s",&); printf("性别: "); scanf("%
41、s",&studenti.sex); printf("出生日期: "); scanf("%s",&studenti.birthdate) ; printf("民族: "); scanf("%s",&studenti.notion); printf(": "); scanf("%s",&studenti.telephone); printf("政治面貌: "); scanf("%s",&s
42、tudenti.politics); printf("健康情况<不超过20字符>: "); scanf("%s",&studenti.healthy); printf("身高: "); scanf("%s",&studenti.height); printf("专业: "); scanf("%s",&fession); printf("班级: "); scanf("%s",&a
43、mp;studenti.classes); printf("籍贯: "); scanf("%s",&studenti.native); printf("毕业学校: "); scanf("%s",&studenti.school); printf("家庭住址: "); scanf("%s",&studenti.home); printf("特长: "); scanf("%s",&studenti.speci
44、ality); 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("要输入的信息
45、的个数n"); scanf("%d",&number); printf("(注:输入汉字用CTrl+空格 ) n"); for(i=0;i<number;i+) t=i+1; printf("请输入第%d个班级的信息n",t); printf("班级名: "); scanf("%s",&ClassInfoi.class_name); printf("年级: "); scanf("%s",&ClassInfoi.gra
46、de); printf("专业: "); scanf("%s",&ClassInfoi.major); printf("辅导员: "); scanf("%s",&ClassInfoi.instructor) ; printf("备注: "); scanf("%s",&ClassInfoi.remark); printf("是否保存:是-Y,不保存任意键n"); Global2=i; c=getchar(); c=getchar();
47、 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;i<number;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"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 7605:2025 EN Underwater acoustics - Measurement of underwater ambient sound
- 英语关于食物课件
- 英语倒装的说课课件
- 无障碍建设管理办法
- 昆虫类养殖管理办法
- 新客户稽核管理办法
- 合同管理办法法规员
- 无组织排放管理办法
- 注册师奖励管理办法
- 博士预答辩管理办法
- 《离骚》拼音及注释
- 宝钢设备大修管理办法
- 成人阻塞性睡眠呼吸暂停多学科诊疗指南主要内容
- Q-CSG1211016-2025 光伏发电站接入电网技术规范
- 社保费培训课件税务局
- 《ISO 37001-2025 反贿赂管理体系要求及使用指南》专业深度解读和应用培训指导材料之1:2范围+3术语和定义(雷泽佳编制-2025A1)
- 音乐节与音乐会策划项目可行性分析报告
- (2021年)emi滤波器设计规范
- 云硫矿业招聘试题及答案
- 心理健康b证笔试考试试题及答案
- 小学生中草药课件
评论
0/150
提交评论