学生管理系统
详细设计说明书
编写说明
标题:详细设计说明书
类别:文档
密级:内部
编辑软件:Microsoft Word 2000 中文版
版本历史:
版本 作者 日期 备注
V1.01 2002/09/08 详细设计说明书
V1.0.2 2003/08/30 详细设计说明书
编写目的:
本文档详细描述组成系统的各个软件组成部分,包括每个软件模块(或类)的属性、方法、事件,各软件模块的外部接口说明,测试要点等内容。
本文档由项目组维护,供项目组使用。
第1章 引言
1.1. 项目说明
项目名称:乐山师范学院学生管理系统。
项目提出单位:乐山师范学院计算机科学系
项目开发者:乐山师范学院计算机科学系Attract工作室
项目使用部门:乐山师范学院各系科(学院)
项目建设单位:乐山师范学院计算机科学系
1.2. 项目定义
系科综合管理信息系统是为了适应现代化学校管理的需要,加快推进我校数字化校园建设、充分利用校园网,利用网络、多媒体等计算机应用技术和手段,提高办公效率、改善质量的高效管理信息系统。
学生管理系统是系科综合管理信息系统的重要组成部分。
1.3. 编写目的
本文档为“乐山师范学院系科综合管理信息系统(学生管理系统)详细设计说明书”,主要用于为实现系统的功能而进行的系统详细设计说明,详细系统各软件组成模块的实现流程、功能、接口、编译、测试要点等内容,便于对系统的编码进行指导和约束。本文档供项目组全体成员及项目组领导,单元测试人员阅读。
1.4. 参考资料
《学生管理系统_系统软件需求说明书》。
《学生管理系统_系统概要设计说明书》。
《学生管理系统_数据库设计说明书(数据库字典)》。
第3章 系统功能实现
从前面需求分析可以看出,系统功能庞杂,主要分为前台浏览器(B/S)信息发布和数据查询,后台(C/S)数据管理和处理,学生管理功能部分数据分为5类:新生相关;在校生相关;组织社团相关;毕业生相关;学生成绩综合查询相关。从使用和操作的功能上分,有三种用户:普通客户(浏览器浏览、查询);业务数据管理人员(学生工作辅导员、教务干事);系统管理员。为便于整个系统组织管理,把各个相对独立的数据或功能组织到整个大系统中来,我们把各个相对独立的功能完全独立设计,编译成独立的目标(功能)模块(single Executable),各功能模块最后被集成到一个称为虚拟桌面的控制台模块中。相应地将系统结构分为一个控制台程序和五个子系统,各子系统又分为若干各子模块。对应于每一个模块,几乎都有录入、查询、修改、删除、查看详细资料这几个功能。整个业务流程就是由这几种基本功能实现的。在这里每个模块都要用到的功能没必要在每个子模块里重复阐述,在每个子模块里只列出区别于其它子模块的功能实现。
3.1. 系统控制台模块
功能:
各子功能模块的组织和调用;
统一的登陆界面实现到数据库服务器的登陆;
显示系科主页Web的首页(主要是系科重要通知、消息等);学院通知页面;系科每周工作安排。
系统图标。
设计:
1. 登陆数据库:
输入数据库服务器名(ServerIP)、用户账号()UserID、密码(PassWord);以账号DEP_Computer0、密码DEP_Computer0登陆数据库服务器,检索系统权限表,根据权限设置相应功能模块:
①无此用户或禁止权限
Enable := False
②浏览权限
Enable := True
修改 UserID := Dep_Computer1
修改 PassWord := 1111111111111
③修改权限
Enable := True
修改 UserID := Dep_Computer2
修改 PassWord := 222222222222
2. 采用Win31下程序组、程序项的原理组织各执行模块:
登陆服务器
新生录取数据、入学报道管理
学生信息(在校)管理
学生社团管理
毕业生信息管理
学生成绩综合查询与统计
各程序组、程序项的显示分别可以是分层/树状/大图标/小图标等方式;各程序项或菜单项的名称命名为相应功能模块的目标代码文件名。
3.可执行功能模块的调用执行:通过程序项或菜单项名称获取可执行目标代码文件名,应用API函数CreateProcess开始执行。
#include <stdio.h>
struct Student
{
int num
char name[20]
float score[3]
float avg
}stus[30]
void Add()//填加学员
void List()//学员详细列表
void Asc()//显示后三名学员
void Desc()//显示前三名学员
void Display()
void main()
{
int s
while(1)
{
printf("学员管理系统:n")
printf("1、增加学员n")
printf("2、学员详细列表n")
printf("3、显示前三名n")
printf("4、显示后三名n")
printf("5、显示平均成绩n")
printf("6、退出n")
printf("请选择:")
scanf("%d",&s)
switch(s)
{
case 1:
Add()
break
case 2:
List()
break
case 3:
Desc()
Display()
break
case 4:
Asc()
Display()
break
case 5:
Display()
break
case 6:
return
break
default:
printf("选择错误!n")
break
}
}
}
void Add()
{
int i,k
float sum
char c
for(i=0i<30i++)
{
printf("请输入第%d个学员信息:n",i+1)
printf("学号:")
scanf("%d",&stus[i].num)
printf("姓名:")
fflush(stdin)
scanf("%s",stus[i].name)
printf("请输入三门课的成绩:n")
sum=0
for(k=0k<3k++)
{
printf("%d:",k+1)
scanf("%f",&stus[i].score[k])
sum+=stus[i].score[k]
}
stus[i].avg=sum/3
printf("是否继续?")
fflush(stdin)
scanf("%c",&c)
if(c=='n' || c=='N')
return
}
}
void List()
{
int i,j=0
printf("学号t姓名t成绩1t成绩2t成绩3t平均n")
for(i=0i<30i++)
{
if(stus[i].num!=0)
{
printf("%dt%st%.2ft%.2ft%.2ft%.2fn",stus[i].num,stus[i].name,stus[i].score[0],stus[i].score[1],stus[i].score[2],stus[i].avg)
}
}
}
void Asc()
{
int i,j
struct Student c
for(i=0i<30i++)
{ for(j=0j<29-ij++)
if(stus[j].avg<stus[j+1].avg)
{
c=stus[j]
stus[j]=stus[j+1]
stus[j+1]=c
}
}
}
void Desc()
{
int i,j
struct Student c
for(i=0i<30i++)
{ for(j=0j<29-ij++)
if(stus[j].avg>stus[j+1].avg)
{
c=stus[j]
stus[j]=stus[j+1]
stus[j+1]=c
}
}
}
void Display()
{
int i,d=0
printf("学号t姓名t平均n")
for(i=0i<30i++)
{
if(stus[i].num!=0)
{
printf("%dt%st%.2fn",stus[i].num,stus[i].name,stus[i].avg)
d++
}
if(d==3)
break
}
}
看看我写的这个!
#include <stdio.h>
#include <string.h>
#include <windows.h>
struct student
{
long int num
char name[20]
int age
char sex[4]
char b[30]
char p[15]
}
int n=0
struct student stu[100]
struct student *p
void lr()
void ll()
void cx()
void xg()
void sc()
void main()
{
int z
printf("+---------------------------+n")
printf("| 欢迎使用学生信息管理系统 |n")
printf("+---------------------------+n")
printf("提示:为保证您的操作得到保存,请按正常顺序退出系统^_^n")
do
{
printf("nttt--------------------------------n")
printf("ttt+主菜单|n")
printf("ttt--------------------------------n")
printf("ttt+[1]----录入学生信息 |n")
printf("ttt+[2]----浏览学生信息 |n")
printf("ttt+[3]----查询学生信息 |n")
printf("ttt+[4]----删除学生信息 |n")
printf("ttt+[5]----修改学生信息 |n")
printf("ttt+[0]----退出系统 |n")
printf("ttt--------------------------------n")
printf("请输入您的选择:")
scanf("%d", &z)
system("color 2f")
switch(z)
{
case 0 :break
case 1 :lr()break
case 2 :ll()break
case 3 :cx()break
case 4 :sc()break
case 5 :xg()break
default:printf("n无效选项!")
}
}
while(z!= 0)
}
void lr()
{
int y
if(n==0)
p=stu
do
{
printf("--------------------n")
printf("请输入学生的学号:")
scanf("%ld",&p->num)
printf("请输入学生的姓名:")
scanf("%s",p->name)
printf("请输入学生的年龄:")
scanf("%d",&p->age)
printf("请输入学生的性别:")
scanf("%s",p->sex)
printf("请输入学生的地址:")
scanf("%s",p->b)
printf("请输入学生的电话:")
scanf("%s",p->p)
n++
p++
printf("n1.继续输入.n0.输入完毕.n")
printf("请选择:")
scanf("%d",&y)
}
while(y==1)
printf("提示:输入完毕!你一共输入%d个n",n)
}
void ll()
{
int i,j
if(n!=0)
{ printf("学生总数:%dn", n)
printf("学号t姓名t年龄t性别t地址tt电话n")
printf("-----------------------------------------------------n")
for(i=0i<ni++)
printf("%ldt%st%dt%st%stt%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p)
}
else printf("提示:无学生数据,请输入数据!")
}
void cx()
{
int c
int w,i,j=0
char name[20]
if(n!=0)
{
do{printf("n")
printf("+--------------------+n")
printf("| 按学号查询 请按 1 |n")
printf("| 按姓名查询 请按 2 |n")
printf("| 取消请按 0 |n")
printf("+--------------------+n")
printf("请输入您的选择:")
scanf("%d", &c)
switch(c)
{
case 0:break
case 1:
printf("请输入学生的学号")
scanf("%ld", &w)
printf("n")
for(i=0i<ni++)
if(stu[i].num==w)
{
printf("n学号t姓名t年龄t性别t地址tt电话n")
printf("%ldt%st%dt%st%stt%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p)
j=1
}
if(j==0)
printf("提示:没有该学生记录,请核对!")
break
case 2:
printf("请输入学生的姓名:")
scanf("%s", name)
printf("n")
for(i=0i<ni++)
if(strcmp(name,stu[i].name)==0)
{
printf("n学号t姓名t年龄t性别t地址tt电话n")
j=1
printf("%ldt%st%dt%st%stt%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p)
}
if(j==0)
printf("提示:没有该学生记录,请核对!")
break
default:
printf("n提示:无效选项!")
break
}
}while(c!= 0)
}else printf("提示:无学生数据,请输入数据!")
return
}
void xg()
{
long int num
int i,j,c
if(n!=0)
{
printf("请输入您要修改的学生的学号:")
scanf("%ld", &num)
printf("n")
for(i=0i<ni++)
if(stu[i].num==num)
j=i
do{
printf("请选择您要修改的学生的信息内容:n")
printf("+----------------------+n")
printf("| 姓名 请按 1 |n")
printf("| 年龄 请按 2 |n")
printf("| 性别 请按 3 |n")
printf("| 学号 请按 4 |n")
printf("| 地址 请按 5 |n")
printf("| 电话 请按 6 |n")
printf("| 取消 请按 0 |n")
printf("+----------------------+n")
printf("请输入您的选择:")
scanf("%d", &c)
printf("n")
switch(c)
{
case 0:break
case 1:printf("请输入新姓名:")
scanf("%s",stu[j].name)
break
case 2:printf("请输入新年龄:")
scanf("%d",&stu[j].age)
break
case 3:printf("请输入新性别:")
scanf("%s",stu[j].sex)
break
case 4:printf("请输入新学号:")
scanf("%ld",&stu[j].num)
break
case 5:printf("请输入新地址:")
scanf("%s",stu[j].b)
break
case 6:printf("请输入新电话:")
scanf("%s",stu[j].p)
break
default:
printf("n无效选项!")
break
}
}while(c!= 0)
}else printf("提示:无学生数据,请输入数据!")
}
void sc()
{
long int num
int i,j,e
if(n!=0)
{
printf("学号t姓名t年龄t性别t地址tt电话n")
printf("-----------------------------------------------------n")
for(i=0i<ni++)
printf("%ldt%st%dt%st%stt%sn",stu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].b,stu[i].p)
printf("请输入您要删除的学生的学号:")
scanf("%ld", &num)
printf("n")
for(i=0i<ni++)
if(num==stu[i].num)
j=i
if(j!=(n-1))
{
for(e=i-1e<ne++,j++)
{
stu[j].num=stu[j+1].num
strcpy(stu[j].name,stu[j+1].name)
strcpy(stu[j].sex,stu[j+1].sex)
stu[j].age=stu[j+1].age
strcpy(stu[j].b,stu[j+1].b)
strcpy(stu[j].p,stu[j+1].p)
n--p--
}
}else {n--p--}
printf("提示:删除完毕!")
}elseprintf("提示:无学生数据,请输入数据!")
}
大体上有两个部分把
1 存储信息的数据库部分
2 管理信息的程序部分
将学生信息,老师信息,通讯录的信息设计成数据库中的表
将各种信息之间的关系转化成程序逻辑
先明白自己到底要什么功能,也就是明确需求。然后找一个自己熟悉的语言和数据库,然后开始概要设计和详细设计,然后建表编码。 如果你要的东西比较简单,而且单人使用,建议你可以看看Access,他不仅是数据库可以存储数据,也可以用他本身编写一个完整的系统,也很方便,他本身就提供很多控件和窗体之类的 只要您有兴趣,这是非常简单的(用Access开发),学起来不难,我记得我是在高中的时候学的这个,不需要什么理论知识,自己动手做一下就什么都明白了 如果你想采用别的开发工具来开发,那么建议你看看Delphi和VB,比较容易上手,另外给你一些源代码参考一下: http://www.delphiun.com/search.asp?keyword=%BD%CC%CE%F1%B9%DC%C0%ED&sea_type=down
以上就是关于如何测试一个学生管理系统——写测试用例·全部的内容,如果了解更多相关内容,可以关注醉学网,你们的支持是我们更新的动力!