学生管理系统
详细设计说明书
编写说明
标题:详细设计说明书
类别:文档
密级:内部
编辑软件: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开始执行。
大体上有两个部分把
1 存储信息的数据库部分
2 管理信息的程序部分
将学生信息,老师信息,通讯录的信息设计成数据库中的表
将各种信息之间的关系转化成程序逻辑
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
#include<string.h>
#define LEN sizeof(struct student)
#define FORMAT "%-8d%-15s%-12.1lf%-12.1lf%-12.1lf%-12.1lfn"
#define DATA stu[i].num,stu[i].name,stu[i].elec,stu[i].expe,stu[i].requ,stu[i].sum
struct student
{ int num
char name[15]
double elec
double expe
double requ
double sum
}
struct student stu[50]
void in()
void show()
void order()
void del()
void modify()
void menu()
void insert()
void total()
void search()
void main()
{ int n
menu()
scanf("%d",&n)
while(n)
{ switch(n)
{ case 1: in()break
case 2: search()break
case 3: del()break
case 4: modify()break
case 5: insert()break
case 6: order()break
case 7: total()break
case 8: show()break
default:break
}
getch()
menu()
scanf("%d",&n)
}
}
void in()
{ int i,m=0
char ch[2]
FILE *fp
if((fp=fopen("data.txt","a+"))==NULL)
{
printf("can not openn")
return
}
while(!feof(fp))
{
if(fread(&stu[m] ,LEN,1,fp)==1)
m++
}
fclose(fp)
if(m==0)
printf("No record!n")
else
{
system("cls")
show()
}
if((fp=fopen("data.txt","wb"))==NULL)
{
printf("can not openn")
return
}
for(i=0i<mi++)
fwrite(&stu[i] ,LEN,1,fp)
printf("please input(y/n):")
scanf("%s",ch)
while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("number:")
scanf("%d",&stu[m].num)
for(i=0i<mi++)
if(stu[i].num==stu[m].num)
{
printf("the number is existing,press any to continue!")
getch()
fclose(fp)
return
}
printf("name:")
scanf("%s",stu[m].name)
printf("elective:")
scanf("%lf",&stu[m].elec)
printf("experiment:")
scanf("%lf",&stu[m].expe)
printf("required course:")
scanf("%lf",&stu[m].requ)
stu[m].sum=stu[m].elec+stu[m].expe+stu[m].requ
if(fwrite(&stu[m],LEN,1,fp)!=1)
{
printf("can not save!")
getch()
}
else
{
printf("%s saved!n",stu[m].name)
m++
}
printf("continue?(y/n):")
scanf("%s",ch)
}
fclose(fp)
printf("OK!n")
}
void show()
{ FILE *fp
int i,m=0
fp=fopen("data.txt","rb")
while(!feof(fp))
{
if(fread(&stu[m] ,LEN,1,fp)==1)
m++
}
fclose(fp)
printf("number name elective experiment required sumtn")
for(i=0i<mi++)
{
printf(FORMAT,DATA)
}
}
void menu()
{
system("cls")
printf("nnnnn")
printf("tt|---------------------STUDENT-------------------|n")
printf("tt|t 0. exit |n")
printf("tt|t 1. input record |n")
printf("tt|t 2. search record |n")
printf("tt|t 3. delete record |n")
printf("tt|t 4. modify record |n")
printf("tt|t 5. insert record |n")
printf("tt|t 6. order |n")
printf("tt|t 7. number |n")
printf("tt|t 8. show |n")
printf("tt|-----------------------------------------------|nn")
printf("tttchoose(0-8):")
}
void order()
{ FILE *fp
struct student t
int i=0,j=0,m=0
if((fp=fopen("data.txt","r+"))==NULL)
{
printf("can not open!n")
return
}
while(!feof(fp))
if(fread(&stu[m] ,LEN,1,fp)==1)
m++
fclose(fp)
if(m==0)
{
printf("no record!n")
return
}
if((fp=fopen("data.txt","wb"))==NULL)
{
printf("can not openn")
return}
for(i=0i<m-1i++)
for(j=i+1j<mj++)
if(stu[i].sum<stu[j].sum)
{ t=stu[i]stu[i]=stu[j]stu[j]=t}
if((fp=fopen("data.txt","wb"))==NULL)
{ printf("can not openn")return}
for(i=0i<mi++)
if(fwrite(&stu[i] ,LEN,1,fp)!=1)
{
printf("%s can not save!n")
getch()
}
fclose(fp)
printf("save successfullyn")
}
void del()
{FILE *fp
int snum,i,j,m=0
char ch[2]
if((fp=fopen("data.txt","r+"))==NULL)
{ printf("can not openn")return}
while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++
fclose(fp)
if(m==0)
{
printf("no record!n")
return
}
printf("please input the number:")
scanf("%d",&snum)
for(i=0i<mi++)
if(snum==stu[i].num)
break
printf("find the student,delete?(y/n)")
scanf("%s",ch)
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
for(j=ij<mj++)
stu[j]=stu[j+1]
m--
if((fp=fopen("data.txt","wb"))==NULL)
{ printf("can not openn")return}
for(j=0j<mj++)
if(fwrite(&stu[j] ,LEN,1,fp)!=1)
{ printf("can not save!n")
getch()}
fclose(fp)
printf("delete successfully!n")
}
void search()
{ FILE *fp
int snum,i,m=0
char ch[2]
if((fp=fopen("data.txt","rb"))==NULL)
{ printf("can not openn")return}
while(!feof(fp)) if(fread(&stu[m],LEN,1,fp)==1) m++
fclose(fp)
if(m==0) {printf("no record!n")return}
printf("please input the number:")
scanf("%d",&snum)
for(i=0i<mi++)
if(snum==stu[i].num)
{ printf("find the student,show?(y/n)")
scanf("%s",ch)
if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
{
printf("number name elective experiment required sumtn")
printf(FORMAT,DATA)
break
}
}
if(i==m) printf("can not find the student!n")
}
void modify()
{ FILE *fp
int i,j,m=0,snum
if((fp=fopen("data.txt","r+"))==NULL)
{ printf("can not openn")return}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1) m++
if(m==0) {printf("no record!n")
fclose(fp)
return
}
show()
printf("please input the number of the student which do you want to modify!n")
printf("modify number:")
scanf("%d",&snum)
for(i=0i<mi++)
if(snum==stu[i].num)
break
printf("find the student!you can modify!n")
printf("name:")
scanf("%s",stu[i].name)
printf("elective:")
scanf("%lf",&stu[i].elec)
printf("experiment:")
scanf("%lf",&stu[i].expe)
printf("required course:")
scanf("%lf",&stu[i].requ)
printf("modify successful!")
stu[i].sum=stu[i].elec+stu[i].expe+stu[i].requ
if((fp=fopen("data.txt","wb"))==NULL)
{ printf("can not openn")return}
for(j=0j<mj++)
if(fwrite(&stu[j] ,LEN,1,fp)!=1)
{ printf("can not save!") getch() }
fclose(fp)
}
void insert()
{ FILE *fp
int i,j,k,m=0,snum
if((fp=fopen("data.txt","r+"))==NULL)
{ printf("can not openn")return}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1) m++
if(m==0) {printf("no record!n")
fclose(fp)
return
}
printf("please input position where do you want to insert!(input the number)n")
scanf("%d",&snum)
for(i=0i<mi++)
if(snum==stu[i].num)
break
for(j=m-1j>ij--)
stu[j+1]=stu[j]
printf("now please input the new information.n")
printf("number:")
scanf("%d",&stu[i+1].num)
for(k=0k<mk++)
if(stu[k].num==stu[i+1].num)
{
printf("the number is existing,press any to continue!")
getch()
fclose(fp)
return
}
printf("name:")
scanf("%s",stu[i+1].name)
printf("elective:")
scanf("%lf",&stu[i+1].elec)
printf("experiment:")
scanf("%lf",&stu[i+1].expe)
printf("required course:")
scanf("%lf",&stu[i+1].requ)
stu[i+1].sum=stu[i+1].elec+stu[i+1].expe+stu[i+1].requ
if((fp=fopen("data.txt","wb"))==NULL)
{ printf("can not openn")return}
for(k=0k<=mk++)
if(fwrite(&stu[k] ,LEN,1,fp)!=1)
{ printf("can not save!") getch() }
fclose(fp)
}
void total()
{ FILE *fp
int m=0
if((fp=fopen("data.txt","r+"))==NULL)
{ printf("can not openn")return}
while(!feof(fp))
if(fread(&stu[m],LEN,1,fp)==1)
m++
if(m==0) {printf("no record!n")fclose(fp)return}
printf("the class are %d students!n",m)
fclose(fp)
}
去年的时候曾经用VF做过点名系统....不过现在都忘记了......一开始的时候也是什么都不懂,而且交作业只有两周的时间,后来老师讲课指导了两周,就做完了......其实不是很难的,虽然我不能帮你做,但是想告诉你不要害怕,慢慢的听课慢慢咨询老师就会啦~
#include <stdio.h>
struct Student
{
int num
char name[20]
float score[3]
float avg
}stus[30]
void Add(float*)
void List()
void Asc()
void Desc()
void Display()
void main()
{
int s
float xxx
while(1)
{
printf("Students System:n")
printf("1. Add Studentn")
printf("2. Student listn")
printf("3. Display the before Threen")
printf("4. Display the last three NUmn")
printf("5. Display the averagen")
printf("6. Exitn")
printf("Please input select:t")
scanf("%d",&s)
switch(s)
{
case 1:
Add(&xxx)
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("Select Wrong!n")
break
}
}
}
void Add(float* p)
{
int i,k
float sum
char c
for(i=0i<30i++)
{
printf("Input the num %d student Information:n",i+1)
printf("Num:")
scanf("%d",&stus[i].num)
printf("Name:")
fflush(stdin)
scanf("%s",stus[i].name)
printf("Please the before three chenji:n")
sum=0
for(k=0k<3k++)
{
printf("%d:",k+1)
scanf("%f",p)
stus[i].score[k]=*p
sum+=stus[i].score[k]
}
stus[i].avg=sum/3
printf("Is go on?")
fflush(stdin)
scanf("%c",&c)
if(c=='n' || c=='N')
return
}
}
void List()
{
int i,j=0
printf("NumtNametChenji1tChenji2tChenji3tAveragen")
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("NumtNametaveragen")
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
}
}
在楼上的这位基础上稍候修改了一下,因为其在TC中不能正常编译.......
以上就是关于如何测试一个学生管理系统——写测试用例·全部的内容,如果了解更多相关内容,可以关注,你们的支持是我们更新的动力!
版权声明:我们致力于保护作者版权,注重分享,被刊用文章【教务管理系统测试怎么写】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;
工作时间:8:00-18:00
客服电话
电子邮件
beimuxi@protonmail.com
扫码二维码
获取最新动态