学生学籍系统软件工程报告 完成态.doc_第1页
学生学籍系统软件工程报告 完成态.doc_第2页
学生学籍系统软件工程报告 完成态.doc_第3页
学生学籍系统软件工程报告 完成态.doc_第4页
学生学籍系统软件工程报告 完成态.doc_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档软件工程课程设计报告课题名称 _ 学生学籍管理系统_ 院 系 信息工程学院 专 业 计算机科学与技术(嵌入式)成 员 _ 吴森 杨坤 宋晨光 班 级 2015级 计嵌班 学 号 宋晨光 201541014 杨 坤 201541016 吴 森 201541018 序 言学生学籍管理系统是常见的一种管理系统,包括学生的学号、姓名、院系、专业、班级、年龄、性别、民族、出生日期和籍贯信息。由于目前的学生学籍管理系统并不十分完善,在高等学校的教务管理工作中,学生信息的网上查询都是十分复杂、棘手的工作。遵从以往的工作方式,该工作的工作量大,管理繁琐,既耗人力,又耗物力;如今面对大量的学生数据、报表,手工处理方式已经很难跟上现代化的步伐。随着计算机技术及网络通讯技术的飞速发展,许多学校已经有了较好的计算机应用甚至网络硬件建设基础。因此为提高学校管理工作的现代化、科学化水平,保证信息处理的即时化、准确化,开发一套对学生学籍进行管理的软件是极其重要的,而且是必需的。 本系统正是为解决这一问题而设计的,大大减少了以往学生管理工作的工作量,提高了工作效率,适应时代的步伐。II欢迎下载。1、可行性分析1.1问题描述随着高校规模的不断增加,学生人数的增加,学校对学生管理的难度也越来越大,而学校对学生的管理,其实主要是对学生信息的管理,所以,学生信息管理是高校管理中很重要的一部分,它关系到整个高校的现代化程度。现代科技的发展,尤其是软件行业的发展使得很多的管理工作都由计算机来完成,这样不仅能节省人力和物力,而且能够得到一些对决策起重要作用的信息。而高校作为一个人数比较多的单位,也需要开发出相应的软件对学生学籍进行适当的管理。只有管好学生才能更进一步的做强教育。现在很多高校都在使用计算机对学生学籍进行管理,运用计算机来管理学生学籍,从而取代了人工管理模式下由于各种原因出现管理漏洞的可能性,因而减少了工作人员的难度性,提高了工作效率。我们在现行系统初步调查的基础上提出了新系统目标,即新系统建立后所要求达到的运行指标,这是系统开发和评价的依据。1.2可行性分析研究1.2.1技术可行性技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬、软件配置能否满足开发者需要等。根据客户提出的系统功能、性能及实现系统的各项约束条件,根据新系统目标来衡量所需的技术是否具备,本系统是一个数据库管理和查询的系统,现有的技术以较为成熟,硬件、软件的性能要求、环境条件等各项条件良好,估计利用现有技术条件应完全可以达到该系统的功能目标。同时,考虑给予的开发期限也较为充裕,预计系统是可以在规定期限内完成开发。1.2.2经济可行性主要是对开发学籍管理系统的高校资金进行评价,一方面是估算开发它的支出费用,其中包括设备购置费、软件开发费、管理和维护费、人员工资和培训费等。另一方面是估算学籍管理系统这个软件可能取得的收益中可以用钱来衡量的那部分。并对目前的软件市场进行调查,所做软件是否有很大的销售市场和相当规模的用户群。所做软件的开发成本与客户提出的要求是否可达到双方都满意。并且,分析系统开发是否会对其它产品或利润带来一定影响。经过调查我们了解到,现在很多高校都在寻找功能更加齐全的管理系统来取代旧系统,而且这个软件带来的收益远远超过它的开发所花费的代价。经过对上述几个方面的调查研究和分析,我们得出高校这个软件的市场前景是相当客观的,在经济角度来说,开发学生学籍管理是可行的。1.2.3操作可行性主要是了解高校学籍管理的相关人员对开发信息系统是否支持,现有高校学籍管理制度和方法是否科学,规章制度是否齐全,原始数据是否正确等。高校学籍管理人员积极支持该系统开发,使新系统能够充分的发挥作用;系统界面友好美观,操作简单易行,易于理解,功能更加齐全。由于管理人员已经在使用旧系统,对计算机的简单操作已经非常熟悉,所以操作者经过短时间的培训就可以使用高校学籍管理系统。1.3结论意见经过认真地全面地可行性研究,系统基本上做到了在技术、经济、运行、法律上的可行。因此,相信在按照计划上实施的前提下,全系统的设计将会按时、高质量完成。所以,系统研制和开发是可以马上进行的。2、需求分析2.1任务需求分析经需求分析,所得本系统所实现的基本功能,如图1思维图所示: 图1 学生学籍管理系统上图为本系统所完成功能的一个基本信息图。用户可通过本软件,对学生的在校情况信息有一个清晰的了解,帮助用户查询和修改学生的相关信息,从而对学生实现信息化的管理。经分析先给出该系统的系统流程图,如图2所示:添加信息修改信息查询信息该系统主要包括学生基本信息模块。系统要实现基本信息录入、修改、删除、保存和查询等功能:信息的输入,包括学生基本信息。信息的修改、删除。根据要求,查询符合条件的各类信息。2.2数据流图该系统数据流图如图3所示:该系统数据流图如图3所示:2.3实体联系E-R图根据对数据流图和数据字典的分析,我们可以确定该应用中的实体,属性和实体之间的关系,并画出如下所示的E-R图。图4学生实体图3、概要设计3.1总体结构设计经需求分析,所得本系统所实现的基本功能,如图5思维图所示学生学籍管理系统 学生信息管理系统管理 洗修改信息查询信息 添加信息查询用户修改用户添加用户 图5 总体结构图上图为本系统所完成功能的一个基本信息图。用户可通过本软件,对学生的在校情况信息有一个清晰的了解,帮助用户查询和修改学生的相关信息,从而对学生实现信息化的管理。3.2概要数据模型设计本系统的实体有:学生实体和专业实体。学生实体具体的描述E-R图如图6所示 性别学号学生姓名班级籍贯 图6 学生实体E-R图专业实体具体描述如图7所示专业号人数专业名专业院系 图7 专业实体E-R图学生学籍管理系统的整体E-R图如图8所示学号姓名专业号属于院系学生专业性别人数专业名名名籍贯班级 图8 总体E-R图 4、详细设计4.1系统的主要功能及实现根据上面的需求分析,设计好数据库系统,然后开发前台应用程序。所开发的前台界面要求用户可方便操作,同时很好的完成每一个窗口所实现的功能。进入系统主页后,用户登录,登录成功选择角色,若是管理员,有学籍管理、课程管理。学籍管理包括增加和删除以及修改学籍信息,课程管理具体包括增加、删除和修改课程信息。接下来的操作有修改密码、查看个人信息、查看课程信息。具体的学生学籍管理系统总体流程图。如图9所示。开始系统主页用户登录成功学生管理员学生NY查看成绩查看课程信息修改密码查看个人信息课程管理学籍管理删除修改删除增加修改增加退出系统结束图9总体流程图用户登录后输入用户名和密码并选择角色,进入学生学籍管理系统。具体流程图如图10所示开始输入用户名、密码选择登录角色用户密码正确角色判定更新登录信息、初始化用户信息成功登录到指定页面 图10 用户登录流程图进入学生学籍管理系统后,若是管理员,则其有学籍管理或课程管理。管理员权限具体流程图如图11所示。管理员学籍管理课程管理修改删除增加修改删除增加 图11管理员权限流程图用户进入学生学籍管理系统后,若是学生登录,有修改密码,查看个人信息,查看课程信息等功能学生查看课程信息查看个人信息修改密码 图12 学生权限流程图5.项目编码#includestdio.h#includeconio.h#includestdlib.h#includestring.h#define N 1000/N为可输入的学生总人数,可根据需要更改#define M 2/M为宏定义的(在创建密码函数中)可建立的登陆用户个数,可更改struct student/定义学生信息结构体数组char num9; /学号char name20; /姓名char depar15; /院系char zhuanye15; /专业char classes5;/班级char age3; /年龄char sex4; /性别char nation5;/民族char birth9; /出生日期char add10; /籍贯;struct code/定义密码结构体数组char name20;char code7;coM,s0;/确认是否新创建密码文件模块int code()FILE *fp;if(fp=fopen(学生学籍管理系统_code.txt,rt)=NULL)printf(密码文件不存在,请输入新的用户名及密码:n);/若不存在此密码文件,则提示用户创建密码printf(请输入任意键继续!);getch();system(cls);return 1;/无密码文件返回1elsereturn 0;/已有密码文件返回0/新创建初始密码void code_input()FILE *fp;int i;if(fp=fopen(学生学籍管理系统_code.txt,wt)=NULL);/当建立密码文件成功时,进入for循环for(i=0;iM;i+)/M为宏定义的可建立的登陆用户个数,可更改printf(请录入第%d个用户名:,i+1);/创建不同的用户名及密码scanf(%s,);printf(请录入第%d个密码(最多6位):,i+1);scanf(%s,coi.code);printf(n);fwrite(&coi,sizeof(struct code),1,fp);/将密码保存进文件中fclose(fp);getch();system(cls);/用户登陆验证模块int enter(char name120,char code16)FILE *fp;int flog=0;int i;fp=fopen(学生学籍管理系统_code.txt,rt);/打开存放密码的文件for(i=0;i=M)/当比较完成后,都没有符合条件的用户名与密码,则直接跳出程序printf(*您无权进入此管理系统!*);fclose(fp);getch();exit(1);/从文件读入数据int read_file(struct student stu)FILE *sp;int i=0;system(cls);if(sp=fopen(学生学籍管理系统_学生信息.txt,rt)=NULL)/读文件,若文件不存在,则需要创建一个新的文件(文件创建在save_file函数中完成)printf(n学生学籍管理系统_学生信息文件不存在,请创建!n);getch();system(cls);return 0;while(fread(&stui,sizeof(struct student),1,sp)=1)/判断文件是否处在结束位置if(stui.num=0)/若文件内容为空,则跳出循环break;else/若文件内容不为空,i自加1。i+;/i为文件内结构体数组的数量fclose(sp);return i;/返回i值,代表文件中学生的人数/保存学生信息(保存在文件中)void save_file(struct student stu,int sum)FILE *sp;int i;if(sp=fopen(学生学籍管理系统_学生信息.txt,wb)=NULL)/若不存在此TXT文档,则创建;printf(读文件错误!n);/创建不成功,返回menu函数;return;for(i=0;isum;i+)if(fwrite(&stui,sizeof(struct student),1,sp)!=1)/保存文件,sum为现有总学生人数,若未保存成功,提示写文件错误!;printf(写文件错误!n);fclose(sp);return;/创建并录入信息int found(struct student stu)int i=0,x;system(cls);printf(请输入要录入的学生的个数:n);scanf(%d,&x);if(x=0)return 0;do/输入信息printf(n请录入第%d个学生的信息:n,i+1);printf(请录入学号:);scanf(%s,stui.num);printf(n请录入姓名:);scanf(%s,);printf(n请录入院系:);scanf(%s,stui.depar);printf(n请录入专业:);scanf(%s,stui.zhuanye);printf(n请录入班级:);scanf(%s,stui.classes);printf(n请录入性别:);scanf(%s,stui.sex);printf(n请录入年龄:);scanf(%s,stui.age);printf(n请录入出生日期(yyyymmdd):);scanf(%s,stui.birth);printf(n请录入民族:);scanf(%s,stui.nation);printf(n请录入籍贯:);scanf(%s,stui.add);i+;system(cls);while(i=x(用户要求创建学生的人数)时,跳出输入信息的for循环;save_file(stu,x);/保存学生信息致文件printf(录入完毕,请按任意键返回);getch();return i;/返回创建学生的人数/修改学生信息void modify(struct student stu,int sum)int i,item,a=1;/i控制数组下标,item控制子菜单的选择char s18;FILE *sp;system(cls);read_file(stu,sum);/读函数doprintf(nnn请输入你要修改的学号:n);scanf(%s,s1);/要修改的学生学号for(i=0;isum;i+)/查找此学生if(strcmp(stui.num,s1)=0)/若找到该生,输出该生的信息printf(该学生学号:%sn,stui.num);printf(该学生姓名:%sn,);printf(该学生院系:%sn,stui.depar);printf(该学生专业:%sn,stui.zhuanye);printf(该学生班级:%sn,stui.classes);printf(该学生性别:%sn,stui.sex);printf(该学生年龄:%sn,stui.age);printf(该学生出生日期:%sn,stui.birth);printf(该学生民族:%sn,stui.nation);printf(该学生籍贯:%sn,stui.add);a=0;/找到该生,a=0;break;/出for循环if(a=1)/若没有找到该生,a=1,输出提示语句printf(nn该学号不存在!请重新输入学号:n);while(a);/当a=0,即没有找到该生,则继续循环重新输入学生学号printf(t*n);printf(t你选择你要修改的选项:n);printf(t1.*修改姓名n);printf(t2.*修改年龄n);printf(t3.*修改性别n);printf(t4.*修改出生日期n);printf(t5.*修改籍贯n); printf(t6.*修改院系名称n);printf(t7.*修改专业名称n);printf(t8.*修改班级n);printf(t9.*修改民族n);printf(t0.*退出菜单n);printf(t*n);while(1)printf(nt请选择你要进行的操作:);scanf(%d,&item);/item控制子菜单的选择 switch(item) case 1:/修改姓名printf(t请输入新的姓名:);scanf(%s,);printf(nnn修改成功!n);save_file(stu,sum);break; case 2:/修改年龄printf(t请输入新的年龄:);scanf(%s,stui.age); printf(nnn修改成功!n);save_file(stu,sum);break; case 3:/修改性别printf(t请输入新的性别:);scanf(%s,stui.sex);printf(nnn修改成功!n);save_file(stu,sum);break; case 4:/修改出生日期printf(t请输入新的出生年月(yyyy.mm):);scanf(%s,stui.birth); printf(nnn修改成功!n);save_file(stu,sum);break; case 5:/修改籍贯 printf(t请输入新的籍贯:); scanf(%s,stui.add); printf(nnn修改成功!n); save_file(stu,sum); break; case 6:/修改院系 printf(t请输入新的院系:); scanf(%s,stui.depar); printf(nnn修改成功!n); save_file(stu,sum); break; case 7:/修改专业 printf(t请输入新的专业名称:); scanf(%s,stui.zhuanye); printf(nnn修改成功!n); save_file(stu,sum); break; case 8:/修改班级 printf(t请输入新的班级:); scanf(%s,stui.classes); printf(nnn修改成功!n); save_file(stu,sum); break;case 9:/修改民族 printf(t请输入新的民族名称:); scanf(%s,stui.nation); printf(nnn修改成功!n); save_file(stu,sum); break; case 0: return;/不修改,退出 default:printf(t请在0到9之间选择:);/若输入的值不在09,则提示/查询学生信息void seek(struct student stu,int sum) int i,item,flag;/i控制数组下标,item控制子菜单的选择,flag为判断条件 char s111; system(cls); while(1) system(cls); printf(nntt-n); printf(tt 1.按学号查询n); printf(tt 2.按姓名查询n); printf(tt 3.退出本菜单n); printf(tt-n); printf(tt 请选择子菜单编号:); scanf(%d,&item);/选择子菜单 flag=0; switch(item) case 1:/按学号进行查找 printf(tt请输入要查询的学生的学号:); scanf(%s,s1); for(i=0;isum;i+) if(strcmp(stui.num,s1)=0)/判断学号是否存在 /输出 flag=1;printf(该学生学号:%sn,stui.num);printf(该学生姓名:%sn,);printf(该学生院系:%sn,stui.depar);printf(该学生专业:%sn,stui.zhuanye);printf(该学生班级:%sn,stui.classes);printf(该学生性别:%sn,stui.sex);printf(该学生年龄:%sn,stui.age);printf(该学生出生日期:%sn,stui.birth);printf(该学生民族:%sn,stui.nation);printf(该学生籍贯:%sn,stui.add); getch(); if(flag=0)/当上一个if条件不成立,flag=0,学生学号不存在,输出提示; printf(nnntt该学号不存在!n); getch(); break; case 2:/按姓名进行查找 printf(nntt请输入要查询的学生的姓名:); scanf(%s,s1); for(i=0;isum;i+) if(strcmp(,s1)=0)/判断姓名是否存在 /输出 flag=1; printf(该学生学号:%sn,stui.num);printf(该学生姓名:%sn,);printf(该学生院系:%sn,stui.depar);printf(该学生专业:%sn,stui.zhuanye);printf(该学生班级:%sn,stui.classes);printf(该学生性别:%sn,stui.sex);printf(该学生年龄:%sn,stui.age);printf(该学生出生日期:%sn,stui.birth);printf(该学生民族:%sn,stui.nation);printf(该学生籍贯:%sn,stui.add);getch(); if(flag=0)/当上一个if条件不成立,flag=0,学生姓名不存在,输出提示; printf(nnntt该姓名不存在!n); getch(); break; case 3: system(cls); return; default:printf(nnntt请在1-3之间选择n);/若输入的值不在13,则提示 getch(); /删除某学生信息int del(struct student stu,int sum) int i,j,flag=0; char s19; system(cls); printf(nntt请输入要删除学生的学号:); scanf(%s,s1);for(i=0;isum;i+)if(strcmp(stui.num,s1)=0)/判断学号是否存在 flag=1;/该学号存在,用后一个数组覆盖此数组,循环,即可删除 for(j=i;jsum-1;j+) stuj=stuj+1; if(flag=0)/该学号不存在 printf(nntt该学号不存在!n); getch(); if(flag=1)/删除成功,输出提示 printf(nnntt删除成功n); getch(); sum-;/删除成功,sum自-1; save_file(stu,sum);/保存return sum;/返回删除后存在的学生人数 /显示打印已有学生信息 void show(struct student stu,int sum) int i; system(cls); printf(nntt 所有学生的信息为:n); for(i=0;isum;i+)/for循环打印信息 printf(学号:%st,stui.num);printf(姓名:%st,);printf(院系:%st,stui.depar);printf(专业:%st,stui.zhuanye);printf(班级:%st,stui.classes);printf(性别:%st,stui.sex);printf(年龄:%st,stui.age);printf(出生日期:%st,stui.birth);printf(民族:%st,stui.nation);printf(籍贯:%snn,stui.add);printf(按任意键返回); getch();system(cls);/添加学生信息int insert(struct student stu,int sum)int i,j,flag,m;FILE *sp;system(cls);printf(t请输入要添加的学生的个数:);scanf(%d,&m);read_file(stu);/在添加前读文件do flag=1;i=sum;/此时i表示数组下标,添加学生,保存到当前已有数组的下一个,sum为总数,stui表示第sum+1个人while(flag)flag=0;printf(nn 请输入第 %d 个学生的学号:,i+1);scanf(%s,stui.num); for(j=0;ji;j+)/判断此学号是否存在if(strcmp(stui.num,stuj.num)=0) printf(nnn该学号已有,请重新输入!n);flag=1; break;/*如果该学号已有则立刻对出该层for循环*/ printf(n 请输入第 %d 个学生的姓名:,i+1); scanf(%s,); printf(n 请输入第 %d 个学生的院系:,i+1); scanf(%s,stui.depar); printf(n 请输入第 %d 个学生的专业:,i+1); scanf(%s,stui.zhuanye); printf(n 请输入第 %d 个学生的班级:,i+1); scanf(%s,stui.classes); printf(n 请输入第 %d 个学生的性别:,i+1); scanf(%s,stui.sex); printf(n 请输入第 %d 个学生的年龄:,i+1); scanf(%s,stui.age); printf(n 请输入第 %d 个学生的出生日期:,i+1); scanf(%s,stui.birth); printf(n 请输入第 %d 个学生的民族:,i+1); scanf(%s,stui.nation); printf(n 请输入第 %d 个学生的籍贯:,i+1); scanf(%s,stui.add); if(flag=0) i=i; i+; while(isum+m);/当下标i小于sum+m时,循环继续,stusum+m指向添加全部学生后所用数组的下一个单元 sum+=m;/添加完毕后,学生总人数变为sum+m; printf(nnnnnnnntttt 录入完毕!); save_file(stu,sum);/保存 getch(); system(cls); return sum;/返回添加完成后现有的学生人数 /对学生信息排序 void rank(struct student stu,int sum) int i,j;FILE *sp;struct student s1; system(cls); for(i=0;isum-1;i+)/对学生信息按照学号用 选择排序法 进行排序 for(j=i+1;j0)/小者换到stui s1=stui;stui=stuj;stuj=s1; printf(nntt 所有学生的信息为:n); for(i=0;isum;i+)/打印排好后的学生信息 printf(学号:%st,stui.num);printf(姓名:%st,);printf(院系:%st,stui.depar);printf(专业:%st,stui.zhuanye);printf(班级:%st,stui.classes);printf(性别:%st,stui.sex);printf(年龄:%st,stui.age);printf(出生日期:%st,stui.birth);printf(民族:%st,stui.nation);printf(籍贯:%snn,stui.add);printf(按任意键返回); getch(); system(cls);/对班级的学生人数进行统计void count(struct student stu,int sum)int i,count=0;char s15,s25,s35;system(cls); printf(tt请输入你要统计学生人数的学院:);scanf(%s,s1);printf(tt请输入你要统计学生人数的专业:);scanf(%s,s2);printf(tt请输入你要统计学生人数的班级:);scanf(%s,s3);for(i=0;isum;i+)if(strcmp(s1,stui.depar)=0&strcmp(s2,stui.zhuanye)=0&strcmp(s3,stui.classes)=0)/判断条件count+;/count为符合条件的学生人数printf(%s学院%s专业%s班级的学生人数为:%d人,s1,s2,s3,count);getch();/菜单函数void menu() int choice,sum;struct student stuN;sum=read_file(stu);/sum为现已存入文件中学生的人数dosystem(cls);printf(nnn);printf(tt *欢迎进入*n);printf(tt*学生学籍管理系统*nnn);printf(ttt 1.创建学生信息n);printf(ttt 2.修改学生信息n);printf(ttt 3.查询学生信息n);printf(ttt 4.删除学生信息n);printf(ttt 5.添加学生信息n);printf(ttt 6.保存学生信息n);printf(ttt 7.显示已录入学生信息n);printf(ttt 8.对学生信息排序n);printf(ttt 9.统计学生信息n);printf(ttt 0.退出程序n);printf(ttt 请选择您要执行的操作(09):);scanf(%d,&choice);switch(choice)case 1:sum=found(stu);break;/sum=创建后所存储的学生人数case 2:modify(stu,sum);break;/修改case 3:seek(stu,sum);break;/查询case 4:sum=del(stu,sum);break;/sum=删除学生后所存储的学生人数case 5:sum=insert(stu,sum);break;/sum=添加学生后所存储的学生人数case 6:save_file(stu,sum);break;/保存文件c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论