学生选课系统(详细设计说明书)

学生选课系统(详细设计说明书)
学生选课系统(详细设计说明书)

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-2学生信息管理模块程序流程图

结束 图4-1学生信息查询模块程序流程图 Y

3程序1 (标识符)设计说明

#in clude

#in clude

int N1,N2,kk1,kk2,kk3;

struct couse * headl;

struct stude nt * head2;

struct couse//课程信息结构体

{

int nu ml;

char name1[20];

int score;

int n elepeo;//课程已选人数

int Melepeo;//课程人数上限

struct couse * n ext;

};

struct stude nt//学生信息结构体

{

int nu m2;

char name2[20];

int nelenum[50];〃已选课程编号

int nelen;〃已选课程数量

struct stude nt * n ext;

};

void Ms()

{

for(kk1=0;kk1<1100;kk1++)

for(kk2=0;kk2<1200;kk2++) for(kk3=0;kk3<1200;kk3++);

}

void keyboardc()〃录入课程子函数(从键盘录入)

{

struct couse *p1,*p2;

2= 0;

p1=p2=(struct couse*)malloc(sizeof(struct couse));

printf("课程编号\t课程名称\t学分\t课程人数上限\n");

scan f("%d%s%d%d",&p1-> num1,p1-> name1, &p1->score,&p1->Melepeo);

p1- >n elepeo=0;

head 仁NULL;

while(p1-> nu m1!=0)

{

2= N1+1;

if(N1==1)head 1= p1;

else p2->n ext=p1;

p2=p1;

p1=(struct couse * )malloc(sizeof(struct couse));

scan f("%d%s%d%d",&p1-> nu m1,p1-> namel, &p1->score,&p1->Melepeo);

p1- >n elepeo=0;

}

p2-> next=NULL;

}

void filec()//录入键盘子函数(从文件录入)

{

FILE * fp;

char [20];

struct couse *p1,*p2;

2= 0;

printf("输入要读入的文件路径:”);

getchar();

gets();

if((fp=fope n( ,"r"))==NULL)

{

printf("找不到%s 文件!\n",);

exit(0);

}

p1=p2=(struct couse*)malloc(sizeof(struct couse));

fsca nf(fp,"%d%s%d%d%d", &p1-> num1,p1-> namel,&p1->score,

&p1- >n elepeo,&p1->Melepeo);

head 仁NULL;

while(!feof(fp))

{

2= N1+1;

if(N1==1)head 1= p1;

else p2->n ext=p1;

p2=p1;

p1=(struct couse * )malloc(sizeof(struct couse));

fsca nf(fp,"%d%s%d%d%d", &p1-> nu m1,p1-> namel,&p1->score, &p1-> nelepeo,&p1->Mele peo);

}

p2-> next=NULL;

}

void inputc()〃录入课程主函数

{

int i;

printf("\t\t\t 录入课程信息\n”);

printf("\n1.从键盘录入\n");

printf("2.从文件录入\n”);

printf("3.返回主菜单\n”); printf("请选择(1~3):\n”); scan f("%d",&i);

switch(i)

{

case(1):keyboardc();break; case(2):filec();break; case(3):break;

}

}

void inputs()〃录入学生信息主函数{

int i;

printf("\t\t\t 录入学生信息\n");

printf("\n1.从键盘录入\n");

printf("2.从文件录入\n”);

printf("3.返回主菜单\n”); printf("请选择(1~3):\n”);

scan f("%d",&i);

switch(i)

{

case(1):keyboards();break; case(2):files();break; case(3):break;

}

}

void elective。//学生选课主函数

{

int i;

printf("\t\t\t 学生选课\n");

printf("1.查询可选课程\n”);

printf("2.查询已选课程\n”);

printf("3.返回主菜单\n”); printf("请输入(1~3):\n");

scan f("%d",&i);

switch(i)

{

case(1):cheak();break; case(2):hcheak();break; case(3):break }

}

void listc()//输出课程信息

{

struct couse * p;

p=head1;

printf(”课程编号课程名称学分课程已选人数课程人数上限\n”);

while(p!=NULL)

{

prin tf("%-8d%10s%6d%8d%12d\n",p-> nu m1,p-> name1,p->score,p->

nelepeo,p->Melepeo); p=p->n ext;

}

}

void lists()//输出学生信息

{

struct stude nt * p;

p=head2;

printf("学生学号学生姓名已选课程数量\n");

while(p!=NULL)

{

prin tf("%-4d %10s %6d\n",p-> num2,p-> name2,p-> nele n);

p=p->n ext;

}

}

void intoc()//存储课程信息

{

FILE * fp;

struct couse * p;

char [30];

printf("输入课程信息要保存的文件路径:”);

getchar();

gets();

if((fp=fope n( ,"w"))==NULL)

{

printf("\n 保存失败!");

exit(0);

}

p=head1;

while(p!=NULL)

{

fprin tf(fp,"%d %s %d %d %d\n",p->nu m1,p->n ame1,p->score,p->n elepeo,p->Melepeo);

p=p->n ext;

fclose(fp);

printf("课程信息已保存在%s中!\n",);

}

void intos()//存储学生信息

{

FILE * fp;

struct stude nt * p;

char [30];

printf("输入学生信息要保存的文件路径:”);

getchar();

gets();

if((fp=fope n(,”w"))==NULL)

{

printf("\n 保存失败!");

exit(0);

}

p=head2;

while(p!=NULL)

{

fwrite(p,sizeof(struct stude nt),1,fp); p=p->n ext;

}

fclose(fp);

printf("学生信息已保存在%s中!\n",);

}

void into()//存储信息

int i;

printf("1.存储课程信息\n");

printf("2.存储学生信息\n");

printf("3.返回主菜单\n”);

printf(” 请输入(1~3)\n");

scan f("%d",&i);

switch(i)

{

case(1):i ntoc();break;

case(2):i ntos();break;

case(3):break;

}

}

void store()〃信息主函数

{

int i;

printf("\t\t系统信息查看及存储\n");

printf("1.查看课程信息\n");

printf("2.查看学生信息\n");

printf("3.存储信息\n”);

printf("4.返回主菜单\n”);

printf("请输入(1~4):\n”);

scan f("%d",&i);

switch(i)

{

case(1):listc();break;

case(2):lists();break;

case(3):i nto();break;

case(4):break;

}

int main()/主函数

{

int i;

sta比

printf("\n\t\t\t欢迎使用学生选课系统

!\n");

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");

scan f("%d",&i);

if(i<1 || i>7)

{

printf("输入错误,请重输:\n"); goto start;

}

switch(i)

{

case(1):

{

system("cls");

break;

in putc(); goto start;

break;

}

case(2):

{

system("cls");

man ageme

ntc(); goto start;

break;

}

case(3):

{

system("cls");

in puts(); goto

start; break;

}

case(4):

{

system("cls");

man ageme

nts(); goto start;

break;

}

case(5):

{

system("cls");

elective();

goto start;

break;

}

case(6):

{

system("cls");

store();

goto start;

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 (标识符)设计说明

相关主题
相关文档
最新文档