学生选课系统详细设计说明书.docx
《学生选课系统详细设计说明书.docx》由会员分享,可在线阅读,更多相关《学生选课系统详细设计说明书.docx(16页珍藏版)》请在冰豆网上搜索。
学生选课系统详细设计说明书
1引言2
1.1编写目的2
1.2背景2
1.3定义2
1.4参考资料2
2程序系统的结构2
3程序1(标识符)设计说明3
3.1程序描述12
3.2功能12
3.3性能12
3.4输人项113
3.5输出项113
3.6算法113
3.7流程逻辑113
3.8接口113
3.9存储分配13
3.10注释设计13
3.11限制条件13
3.12测试计划13
3.13尚未解决的问题114
4程序2(标识符)设计说明114
详细设计说明书
1引言
1.1编写目的
为了更好的描述软件结构以及系统各组成成分之间的相互关系,因此撰写详
细设计说明书。
1.2背景
a•待开发的软件系统的名称:
大连交通大学学生选课系统;
b•本系统主要为方便广大学选课,避免选课高峰期选不上等问题;
c.本系统的受益人为:
老师、学生和系统管理人员。
1.3定义
详见概要设计说明书。
1.4参考资料
【1】张海藩,软件工程导论【M】北京:
清华大学出版社2008年2月第五版
【2】王珊、萨师煊,数据库系统概论【M】北京:
高等教育出版社2006年5月第四版
2程序系统的结构
该详细设计只针对学生信息管理中的信息查询和信息维护两个子功能作说明,其程序流程图如下:
结束
图4-1学生信息查询模块程序流程图
Y
图4-2学生信息管理模块程序流程图
3程序1(标识符)设计说明
#include
#include
intN1,N2,kk1,kk2,kk3;
structcouse*headl;
structstudent*head2;
structcouse//课程信息结构体
{
intnuml;
charname1[20];
intscore;
intnelepeo;//课程已选人数
intMelepeo;//课程人数上限
structcouse*next;
};
structstudent//学生信息结构体
{
intnum2;
charname2[20];
intnelenum[50];〃已选课程编号
intnelen;〃已选课程数量
structstudent*next;
};
voidMs()
{
for(kk1=0;kk1<1100;kk1++)
for(kk2=0;kk2<1200;kk2++)for(kk3=0;kk3<1200;kk3++);
}
voidkeyboardc()〃录入课程子函数(从键盘录入)
{
structcouse*p1,*p2;
2=0;
p1=p2=(structcouse*)malloc(sizeof(structcouse));
printf("课程编号\t课程名称\t学分\t课程人数上限\n");
scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
head仁NULL;
while(p1->num1!
=0)
{
2=N1+1;
if(N1==1)head1=p1;
elsep2->next=p1;
p2=p1;
p1=(structcouse*)malloc(sizeof(structcouse));
scanf("%d%s%d%d",&p1->num1,p1->namel,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
}
p2->next=NULL;
}
voidfilec()//录入键盘子函数(从文件录入)
{
FILE*fp;
char[20];
structcouse*p1,*p2;
2=0;
printf("输入要读入的文件路径:
”);
getchar();
gets();
if((fp=fopen(,"r"))==NULL)
{
printf("找不到%s文件!
\n",);
exit(0);
}
p1=p2=(structcouse*)malloc(sizeof(structcouse));
fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->namel,&p1->score,
&p1->nelepeo,&p1->Melepeo);
head仁NULL;
while(!
feof(fp))
{
2=N1+1;
if(N1==1)head1=p1;
elsep2->next=p1;
p2=p1;
p1=(structcouse*)malloc(sizeof(structcouse));
fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->namel,&p1->score,&p1->nelepeo,&p1->Melepeo);
}
p2->next=NULL;
}
voidinputc()〃录入课程主函数
{
inti;
printf("\t\t\t录入课程信息\n”);
printf("\n1.从键盘录入\n");
printf("2.从文件录入\n”);
printf("3.返回主菜单\n”);printf("请选择(1~3):
\n”);scanf("%d",&i);
switch(i)
{
case
(1):
keyboardc();break;case
(2):
filec();break;case(3):
break;
}
}
voidinputs()〃录入学生信息主函数{
inti;
printf("\t\t\t录入学生信息\n");
printf("\n1.从键盘录入\n");
printf("2.从文件录入\n”);
printf("3.返回主菜单\n”);printf("请选择(1~3):
\n”);
scanf("%d",&i);
switch(i)
{
case
(1):
keyboards();break;case
(2):
files();break;case(3):
break;
}
}
voidelective。
//学生选课主函数
{
inti;
printf("\t\t\t学生选课\n");
printf("1.查询可选课程\n”);
printf("2.查询已选课程\n”);
printf("3.返回主菜单\n”);printf("请输入(1~3):
\n");
scanf("%d",&i);
switch(i)
{
case
(1):
cheak();break;case
(2):
hcheak();break;case(3):
break
}
}
voidlistc()//输出课程信息
{
structcouse*p;
p=head1;
printf(”课程编号课程名称学分课程已选人数课程人数上限\n”);
while(p!
=NULL)
{
printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);p=p->next;
}
}
voidlists()//输出学生信息
{
structstudent*p;
p=head2;
printf("学生学号学生姓名已选课程数量\n");
while(p!
=NULL)
{
printf("%-4d%10s%6d\n",p->num2,p->name2,p->nelen);
p=p->next;
}
}
voidintoc()//存储课程信息
{
FILE*fp;
structcouse*p;
char[30];
printf("输入课程信息要保存的文件路径:
”);
getchar();
gets();
if((fp=fopen(,"w"))==NULL)
{
printf("\n保存失败!
");
exit(0);
}
p=head1;
while(p!
=NULL)
{
fprintf(fp,"%d%s%d%d%d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
fclose(fp);
printf("课程信息已保存在%s中!
\n",);
}
voidintos()//存储学生信息
{
FILE*fp;
structstudent*p;
char[30];
printf("输入学生信息要保存的文件路径:
”);
getchar();
gets();
if((fp=fopen(,”w"))==NULL)
{
printf("\n保存失败!
");
exit(0);
}
p=head2;
while(p!
=NULL)
{
fwrite(p,sizeof(structstudent),1,fp);p=p->next;
}
fclose(fp);
printf("学生信息已保存在%s中!
\n",);
}
voidinto()//存储信息
inti;
printf("1.存储课程信息\n");
printf("2.存储学生信息\n");
printf("3.返回主菜单\n”);
printf(”请输入(1~3)\n");
scanf("%d",&i);
switch(i)
{
case
(1):
intoc();break;
case
(2):
intos();break;
case(3):
break;
}
}
voidstore()〃信息主函数
{
inti;
printf("\t\t系统信息查看及存储\n");
printf("1.查看课程信息\n");
printf("2.查看学生信息\n");
printf("3.存储信息\n”);
printf("4.返回主菜单\n”);
printf("请输入(1~4):
\n”);
scanf("%d",&i);
switch(i)
{
case
(1):
listc();break;
case
(2):
lists();break;
case(3):
into();break;
intmain()/主函数
{
inti;
sta比
!
\n");
printf("\n\t\t\t欢迎使用学生选课系统
printf("菜单:
\n");
printf("1.录入课程信息\n");
printf("2.课程管理\n”);
printf("3.录入学生信息\n");
printf("4.学生信息管理\n");
printf("5.学生选课\n”);
printf("6.系统信息查看及存储\n");
printf("7.退出系统\n”);
printf("\n请输入菜单选项(1~7):
\n");
scanf("%d",&i);
if(i<1||i>7)
{
printf("输入错误,请重输:
\n");gotostart;
}
switch(i)
{
case
(1):
{
system("cls");
inputc();
gotostart;
case
(2):
{
system("cls");managementc();gotostart;break;
}
case(3):
{
system("cls");inputs();gotostart;break;
}
case(4):
{
system("cls");managements();gotostart;break;
}
case(5):
{
system("cls");
elective();
gotostart;
case(6):
{
system("cls");
store();
gotostart;
break;
}
case(7):
{
system("cls");
printf(”感谢使用本系统!
\n\n再见!
\n");
}
}
return(O);
}
3.1程序描述
该程序能够较全面的实现学生选课系统,另还能进行学生信息管理和成绩查询等等。
3.2功能
录入课程信息、课程管理、录入学生信息、学生信息管理、学生选课、系统信息查看及存储、退出系统
3.3性能
详见上文程序
3.4输人项
输入数字、字母等
3.5输出项
输出所选课程、学生成绩、学生信息等。
3.6算法
无
3.7流程逻辑
无。
3.8接口
1、用户接口
2、内部接口
3、外部接口
3.9存储分配
无
3.10注释设计
无
3.11限制条件
无
3.12测试计划
3.13尚未解决的问题
由于同时运行的人数过多的时候,会导致该系统反应过慢或者无法正常工作,所以在运行本系统之前应该规定同时运行的人数。
4程序2(标识符)设计说明
无