学生学籍系统软件工程报告完成态Word文档格式.docx
《学生学籍系统软件工程报告完成态Word文档格式.docx》由会员分享,可在线阅读,更多相关《学生学籍系统软件工程报告完成态Word文档格式.docx(39页珍藏版)》请在冰豆网上搜索。
经过调查我们了解到,现在很多高校都在寻找功能更加齐全的管理系统来取代旧系统,而且这个软件带来的收益远远超过它的开发所花费的代价。
经过对上述几个方面的调查研究和分析,我们得出高校这个软件的市场前景是相当客观的,在经济角度来说,开发学生学籍管理是可行的。
1.2.3操作可行性
主要是了解高校学籍管理的相关人员对开发信息系统是否支持,现有高校学籍管理制度和方法是否科学,规章制度是否齐全,原始数据是否正确等。
高校学籍管理人员积极支持该系统开发,使新系统能够充分的发挥作用;
系统界面友好美观,操作简单易行,易于理解,功能更加齐全。
由于管理人员已经在使用旧系统,对计算机的简单操作已经非常熟悉,所以操作者经过短时间的培训就可以使用高校学籍管理系统。
1.3结论意见
经过认真地全面地可行性研究,系统基本上做到了在技术、经济、运行、法律上的可行。
因此,相信在按照计划上实施的前提下,全系统的设计将会按时、高质量完成。
所以,系统研制和开发是可以马上进行的。
2、需求分析
2.1任务需求分析
经需求分析,所得本系统所实现的基本功能,如图1思维图所示:
图1学生学籍管理系统
上图为本系统所完成功能的一个基本信息图。
用户可通过本软件,对学生的在校情况信息有一个清晰的了解,帮助用户查询和修改学生的相关信息,从而对学生实现信息化的管理。
经分析先给出该系统的系统流程图,如图2所示:
该系统主要包括学生基本信息模块。
系统要实现基本信息录入、修改、删除、保存和查询等功能:
信息的输入,包括学生基本信息。
信息的修改、删除。
根据要求,查询符合条件的各类信息。
2.2数据流图
该系统数据流图如图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.项目编码
#include"
stdio.h"
conio.h"
stdlib.h"
string.h"
#defineN1000//N为可输入的学生总人数,可根据需要更改
#defineM2//M为宏定义的(在创建密码函数中)可建立的登陆用户个数,可更改
structstudent//定义学生信息结构体数组
{
charnum[9];
//学号
charname[20];
//姓名
chardepar[15];
//院系
charzhuanye[15];
//专业
charclasses[5];
//班级
charage[3];
//年龄
charsex[4];
//性别
charnation[5];
//民族
charbirth[9];
//出生日期
charadd[10];
//籍贯
};
structcode//定义密码结构体数组
charcode[7];
}co[M],s0;
//确认是否新创建密码文件模块
intcode()
{
FILE*fp;
if((fp=fopen("
学生学籍管理系统__code.txt"
"
rt"
))==NULL)
{
printf("
密码文件不存在,请输入新的用户名及密码:
\n"
);
//若不存在此密码文件,则提示用户创建密码
请输入任意键继续!
"
getch();
system("
cls"
return1;
//无密码文件返回1
}
else
return0;
//已有密码文件返回0
}
//新创建初始密码
voidcode_input()
inti;
wt"
))==NULL);
//当建立密码文件成功时,进入for循环
for(i=0;
i<
M;
i++)//M为宏定义的可建立的登陆用户个数,可更改
{
请录入第%d个用户名:
i+1);
//创建不同的用户名及密码
scanf("
%s"
co[i].name);
请录入第%d个密码(最多6位):
co[i].code);
fwrite(&
co[i],sizeof(structcode),1,fp);
//将密码保存进文件中
fclose(fp);
getch();
system("
}
//用户登陆验证模块
intenter(charname1[20],charcode1[6])
{
intflog=0;
fp=fopen("
//打开存放密码的文件
i++)
fread(&
//读密码文件
if((strcmp(name1,co[i].name)==0))//如果输入的用户名与已存在用户名相同,再比较密码是否相同,否则进行下一个用户名的比较
{
if((strcmp(code1,co[i].code)==0))//比较此用户名下的密码是否一致
return1;
//验证成功后回到主函数
}
if(i>
=M)//当比较完成后,都没有符合条件的用户名与密码,则直接跳出程序
******您无权进入此管理系统!
!
*****"
exit
(1);
//从文件读入数据
intread_file(structstudentstu[])
FILE*sp;
inti=0;
if((sp=fopen("
学生学籍管理系统__学生信息.txt"
))==NULL)//读文件,若文件不存在,则需要创建一个新的文件(文件创建在save_file函数中完成)
\n学生学籍管理系统__学生信息文件不存在,请创建!
while((fread(&
stu[i],sizeof(structstudent),1,sp))==1)//判断文件是否处在结束位置
if(stu[i].num==0)//若文件内容为空,则跳出循环
break;
else//若文件内容不为空,i自加1。
i++;
//i为文件内结构体数组的数量
fclose(sp);
returni;
//返回i值,代表文件中学生的人数
//保存学生信息(保存在文件中)
voidsave_file(structstudentstu[],intsum)
wb"
))==NULL)//若不存在此TXT文档,则创建;
读文件错误!
//创建不成功,返回menu函数;
return;
sum;
if(fwrite(&
stu[i],sizeof(structstudent),1,sp)!
=1)//保存文件,sum为现有总学生人数,若未保存成功,提示"
写文件错误!
;
printf("
return;
//创建并录入信息
intfound(structstudentstu[])
inti=0,x;
printf("
请输入要录入的学生的个数:
scanf("
%d"
&
x);
if(x==0)
do//输入信息
\n请录入第%d个学生的信息:
请录入学号:
stu[i].num);
\n请录入姓名:
stu[i].name);
\n请录入院系:
stu[i].depar);
\n请录入专业:
stu[i].zhuanye);
\n请录入班级:
stu[i].classes);
\n请录入性别:
stu[i].sex);
\n请录入年龄:
stu[i].age);
\n请录入出生日期(yyyymmdd):
stu[i].birth);
\n请录入民族:
stu[i].nation);
\n请录入籍贯:
stu[i].add);
i++;
}while(i<
//当i>
=x(用户要求创建学生的人数)时,跳出输入信息的for循环;
save_file(stu,x);
//保存学生信息致文件
录入完毕,请按任意键返回"
//返回创建学生的人数
//修改学生信息
voidmodify(structstudentstu[],intsum)
inti,item,a=1;
//i控制数组下标,item控制子菜单的选择
chars1[8];
read_file(stu,sum);
//读函数
do
\n\n\n请输入你要修改的学号:
s1);
//要修改的学生学号
for(i=0;
i++)//查找此学生
{
if(strcmp(stu[i].num,s1)==0)//若找到该生,输出该生的信息
{
printf("
该学生学号:
%s\n"
该学生姓名:
该学生院系:
该学生专业:
该学生班级:
该学生性别:
该学生年龄:
该学生出生日期:
该学生民族:
该学生籍贯:
a=0;
//找到该生,a=0;
//出for循环
}
if(a==1)//若没有找到该生,a=1,输出提示语句
\n\n该学号不存在!
请重新输入学号:
}while(a);
//当a=0,即没有找到该生,则继续循环重新输入学生学号
\t****************\n"
\t你选择你要修改的选项:
\t1.*修改姓名\n"
\t2.*修改年龄\n"
\t3.*修改性别\n"
\t4.*修改出生日期\n"
\t5.*修改籍贯\n"
\t6.*修改院系名称\n"
\t7.*修改专业名称\n"
\t8.*修改班级\n"
\t9.*修改民族\n"
\t0.*退出菜单\n"
while
(1)
\n\t请选择你要进行的操作:
item);
///item控制子菜单的选择
switch(item)
case1:
//修改姓名
\t请输入新的姓名:
scanf("
\n\n\n修改成功!
save_file(stu,sum);
case2:
//修改年龄
\t请输入新的年龄:
case3:
//修改性别
\t请输入新的性别:
case4:
//修改出生日期
\t请输入新的出生年月(yyyy.mm):
case5:
//修改籍贯
\t请输入新的籍贯:
scanf("
save_file(stu,sum);
break;
case6:
//修改院系
\t请输入新的院系:
case7:
//修改专业
\t请输入新的专业名称:
case8:
//修改班级
\t请输入新的班级:
case9:
//修改民族
\t请输入新的民族名称:
case0:
//不修改,退出
default:
printf("
\t请在0到9之间选择:
//若输入的值不在0~9,则提示
//查询学生信息
voidseek(structstudentstu[],intsum)
inti,item,flag;
//i控制数组下标,item控制子菜单的选择,flag为判断条件
chars1[11];
\n\n\t\t------------------\n"
\t\t1.按学号查询\n"
\t\t2.按姓名查询\n"
\t\t3.退出本菜单\n"
\t\t------------------\n"
\t\t请选择子菜单编号:
//选择子菜单
flag=0;
//按学号进行查找
\t\t请输入要查询的学生的学号:
for(