什么是程序设计说明书
说一下
用途
设计思路
前景
什么的
程序设计说明书由系统分析员编写,交给程序设计员使用
开发人员:黄涛 学号:2004551425 计算机3班开发日期:2006年2月22日
版本:————
程序功能:建立一个简单的学生管理系统,存储的学生信息至少包括:班级,学号,姓名,各个科目的成绩.能够完成的功能至少有:输入,查询,修改,删除学生信息,计算学生的平均成绩,名次,按某个科目的成绩排序输出.注意:只能采用文件形式管理,不得采用现成的数据库管理.
开发环境:程序在Visual c++ 6.0下开发,编译工具为Vc 6.0,操作系统为Windows XP.
数据结构和算法:本程序包含数个函数,且用链表存储信息,每个节点包含一个学生的信息.
本程序中有两种结构体:
typedef struct student{ typedef struct score{
char name[MAX+1]; /*学生姓名*/ char name[MAX+1]; /*学生姓名*/
int num; /*学生学号*/ int aver; /*学生成绩*/
char class[MAX+1];/*班级*/ struct score *next; /*指向后继节点*/
int Chinese; /*语文成绩*/ }Sco,*SCO;
int English; /*英语成绩*/
int math; /*数学成绩*/
int computer; /*计算机成绩*/
struct student *next; /*指向后继节点*/
}Stu,*STU;
程序流程图如下:
*****主程序流程图 *****
主要函数功能说明
函数原型:STU insert( ); 功能:插入学生信息
入口参数:无 出口参数:无 返回值:无
函数原型:STU xiugai( );功能:修改学生信息
入口参数:无 出口参数:无 返回值:无
函数原型:STU shanchu( );功能:删除学生信息
入口参数:无 出口参数:无 返回值:无
函数原型:STU find( );功能:查找学生信息
入口参数:无 出口参数:无 返回值:无
函数原型:int xianshi( );功能:显示文件内容
入口参数:无 出口参数:无 返回值:无
函数原型:int eaverage( );功能:计算学生名次
入口参数:无 出口参数:无 返回值:无
函数原型:int chinese( );功能:语文成绩
入口参数:无 出口参数:无 返回值:无
函数原型:int english( );功能:英语成绩
入口参数:无 出口参数:无 返回值:无
函数原型:int math( ); 功能:数学成绩
入口参数:无 出口参数:无 返回值:无
函数原型:int computer( );功能:计算机成绩
入口参数:无 出口参数:无 返回值:无
函数原型:void fresh( );功能: 清屏
入口参数:无 出口参数:无 返回值:无
—————————— 说明书结束 ——————————————————
—————— 源程序 ————————
#include
#include
#include
#include
#include
#define LEN sizeof(struct student)
#define NEM sizeof(struct score)
#define MAX 8
typedef struct student{ /*学生信息节点*/
int num;
char class[MAX+1];
char name[MAX+1];
int chinese;
int english;
int math;
int computer;
struct student *next;
}Stu,*STU;
typedef struct score{
char name[MAX+1];
float aver;
struct score *next;
}Sco,*SCO;
struct score stud[1000];
FILE *fp;
void print( ) /*清屏*/
{ system("cls");
printf("\t\t\t--学生成绩管理系统--\n");
printf("creat(建立文件模型)\t");
printf("insert(插入学生信息)\t");
printf("xiugai(修改学生信息)\t\n");
printf("find(查找学生信息)\t");
printf("fresh(清屏)\t");
printf("shanchu(删除学生信息)\t\n");
printf("xianshi(显示文件内容)\t");
printf("eaverage(计算学生平均成绩和名次)\t\n");
printf("chinese(语文课程排序)\t");
printf("english(英语课程排序)\t");
printf("math(数学课程排序)\t");
printf("computer(计算机课程排序)\t");
printf("quit(退出)\t\n");
}
void cin(STU p1)
{printf("请输入姓名:");
scanf("%s",p1->name);
printf("学号:");
scanf("%d",&p1->num);
printf("班级:");
scanf("%s",p1->class);
printf("请输入成绩:\n");
printf("语文:");
scanf("%d",&p1->chinese);
printf("英语:");
scanf("%d",&p1->english);
printf("数学:");
scanf("%d",&p1->math);
printf("计算机:");
scanf("%d",&p1->computer);
}
STU creat(void) /*创建函数模型*/
{ STU head,p1,p2;
char ch;
int i=1,k=0;
p1=p2=(STU)malloc(LEN);
while(i)
{
k++;
if(k==1)
head=p1;
else
{p2->next=p1;
p2=p1;}
printf("Do you Want to Continue yes or no");
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
{ i=0;
p1->next=NULL;}
else
{p1=(STU)malloc(LEN);
cin(p1);}
}
printf("信息输入完毕.");
Indat(head);
}
Indat(STU p){ /*把链表中的信息存入到文件*/
if((fp=fopen("stulist","wb"))==NULL)
{printf("can not open file!\n");
return;
}
while(p!=NULL)
if(fwrite(p,LEN,1,fp)!=1)
{printf("file write error\n");
break;}
else
p=p->next;
printf("写入完毕!");
fclose(fp);
}
STU Outdat() /*把文件中的信息放入到链表*/
{ STU head,p1,p2,p4;
while((fp=fopen("stulist","rb"))==NULL);
printf("cannot open infile!\n");
p4=p2=p1=head=(STU)malloc(LEN);
while(1)
{ if(fread(p1,LEN,1,fp)!=1)
{printf("读出完毕!");
p4->next=NULL;
free(p1);
fclose(fp);
return(head);
}
p1=(STU)malloc(LEN);
p2->next=p1;
p4=p2;
p2=p1;
}
}
find(){ /*查找学生的信息*/
char name[10];
int b=0;
STU p3;
p3=Outdat();
printf("请输入您要查询信息的用户名:\n");
scanf("%s",name);
while(p3)
if(strcmp(name,p3->name)!=0)
p3=p3->next;
else
{ printf("这是您要查询的信息!\n");
printf("%s\t%d\t%s",p3->name,p3->num,p3->class);
printf("语文:");printf("%d\t",p3->chinese);
printf("英语:");printf("%d\t",p3->english);
printf("数学:");printf("%d\t",p3->math);
printf("计算机:");printf("%d\t",p3->computer);
b=1;printf("信息输出完毕!\n");
break;
}
if(b==0)
printf("对不起!没有与您要查的相关信息!");
}
STU insert() /*插入学生信息*/
{ STU p1,p2,p3,head;
int i=1;
char ch;
p3=Outdat();
head=p3;
p1=(STU)malloc(LEN);
printf("请输入要插入的学生信息!\n");
cin(p1);
while(i)
{ if(p3->next==NULL)
{ p1->next=NULL;
p3->next=p1;
}
else
{p1->next=p3->next;
p3->next=p1;}
printf("Do you Want to Continue yes or no");
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
i=0;
else
{ p1=(STU)malloc(LEN);
printf("请输入要插入的学生信息!\n");
cin(p1);
}
Indat(p3);}
return(head);
}
STU xiugai() /*修改学生信息*/
{ char name[10];
STU head,p3;
int b=0;
p3=Outdat();
head=p3;
printf("请输入您要修改信息的用户名:\n");
scanf("%s",name);
while(p3)
if(strcmp(name,p3->name)!=0)
p3=p3->next;
else
{printf("这是您要修改的信息!\n");
printf("%s\t%d\t%s",p3->name,p3->num,p3->class);
printf("语文:");
printf("%d\t",p3->chinese);
printf("英语:");
printf("%d\t",p3->english);
printf("数学:");
printf("%d\t",p3->math);
printf("计算机:");
printf("%d\t",p3->computer);
b=1;
printf("信息输出完毕!\n");
printf("请输入您的新信息!\n");
cin(p3);
Indat(head);
return;
}
if(b==0)
printf("对不起!没有您要查的相关信息!");
}
STU shanchu() /*删除学生信息*/
{char name[10];
STU head,p1,p3;
char ch;
int b=0;
p3=Outdat();
head=p3;
printf("请输入您要查询信息的用户名:\n");
scanf("%s",name);
while(p3)
if(strcmp(name,p3->name)!=0)
{p1=p3;
p3=p3->next;
}
else
{ printf("这是您要删除的信息!\n");
printf("%s\t%d\t%s",p3->name,p3->num,p3->class);
printf("语文:");
printf("%d\t",p3->chinese);
printf("英语:");
printf("%d\t",p3->english);
printf("数学:");
printf("%d\t",p3->math);
printf("计算机:");
printf("%d\t",p3->computer);
b=1;
printf("信息输出完毕!\n");
printf("您确实想删除以上信息吗!yes or no \n");
ch=getchar();
ch=getchar();
if(ch=='y'||ch=='Y')
{ p1->next=p3->next;
free(p3);
printf("信息删除完毕!\n");
Indat(head);
return;
}
}
if(b==0)
printf("对不起!没有与您要查的相关信息!");
}
xianshi() /*显示文件中的所有信息*/
{ STU p;
p=Outdat();
while(p!=NULL)
{printf("%s\t%d\t%s",p->name,p->num,p->class);
printf("语文:");
printf("%d\t",p->chinese);
printf("英语:");
printf("%d\t",p->english);
printf("数学:");
printf("%d\t",p->math);
printf("计算机:");
printf("%d\t\n",p->computer);
p=p->next;
}
printf("这是所有信息!");
}
eaverage()/* 计算学生的平均成绩和名次*/
{STU p3,head;
float a;
char ch;
int i, b=0,j=1;
char name[10];
SCO L,L1,L2;
p3=Outdat();
head=p3=p3->next;
L=L1=(SCO)malloc(NEM);
while(p3)//复制链表;
{ L2=L1;
a=(p3->chinese+p3->english+p3->math+p3->computer)/4;
L2->aver=a;
strcpy(L2->name,p3->name);
L1=(SCO)malloc(NEM);
L2->next=L1;
p3=p3->next;
}
L2->next=NULL;
free(L1);//while
while(j)
{L1=L2=L;
i=1;
printf("请输入您要查的用户名!\n");
scanf("%s",name);
while(L1)
if(strcmp(name,L1->name)!=0)
L1=L1->next;
else
{printf("用户已被找到!\n");
b=1;
while(L2)
if(L1->aver>L2->aver||L1->aver==L2->aver)
L2=L2->next;
else
{ i++;
L2=L2->next;}
printf("此学生的成绩情况是:\n");
printf("%s\t平均分是%f",L1->name,L1->aver);
printf("第%d名!",i);
break;
}
if(b==0) printf("对不起!没有与您要查的相关信息!");
printf("您是否还想继续 yes or no!");
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
j=0;
}
return;
}
chinese() /* 语文成绩排名 */
{STU p3,head;
SCO L,L1,L2;
int k,max,j;
p3=Outdat();
p3=p3->next;
head=p3;
max=0;
j=0;
L=L1=(SCO)malloc(NEM);
while(p3)
{ L2=L1;
L2->aver=p3->chinese;
strcpy(L2->name,p3->name);
L1=(SCO)malloc(NEM);
L2->next=L1;
p3=p3->next;
}
L2->next=NULL;
free(L1);
while(L)
{ p3=head;
max++;
while(p3)
if(L->aver>=p3->chinese)
p3=p3->next;
else
{j++;
p3=p3->next;
}
strcpy(stud[j].name,L->name);
stud[j].aver=L->aver;
L=L->next;
}
printf("语文成绩情况:\n");
for(k=0;knext;
head=p3;
max=0;
j=0;
L=L1=(SCO)malloc(NEM);
while(p3)
{ L2=L1;
L2->aver=p3->english;
strcpy(L2->name,p3->name);
L1=(SCO)malloc(NEM);
L2->next=L1;
p3=p3->next;
}
L2->next=NULL;
free(L1);
while(L)
{ p3=head;
max++;
while(p3)
if(L->aver>=p3->english)
p3=p3->next;
else
{j++;
p3=p3->next;
}
strcpy(stud[j].name,L->name);
stud[j].aver=L->aver;
L=L->next;
}
printf("英语成绩情况:\n");
for(k=0;knext;
head=p3;
max=0;
j=0;
L=L1=(SCO)malloc(NEM);
while(p3)
{ L2=L1;
L2->aver=p3->math;
strcpy(L2->name,p3->name);
L1=(SCO)malloc(NEM);
L2->next=L1;
p3=p3->next;
}
L2->next=NULL;
free(L1);
while(L)
{ p3=head;
max++;
while(p3)
if(L->aver>=p3->math)
p3=p3->next;
else
{j++;
p3=p3->next;
}
strcpy(stud[j].name,L->name);
stud[j].aver=L->aver;
L=L->next;
}
printf("数学成绩情况:\n");
for(k=0;knext;
head=p3;
max=0;
j=0;
L=L1=(SCO)malloc(NEM);
while(p3)
{ L2=L1;
L2->aver=p3->computer;
strcpy(L2->name,p3->name);
L1=(SCO)malloc(NEM);
L2->next=L1;
p3=p3->next;
}
L2->next=NULL;
free(L1);
while(L)
{ p3=head;
max++;
while(p3)
if(L->aver>=p3->computer)
p3=p3->next;
else
{j++;
p3=p3->next;
}
strcpy(stud[j].name,L->name);
stud[j].aver=L->aver;
L=L->next;
}
printf("计算机成绩情况:\n");
for(k=0;k printf("%s %f\n",stud[k].name,stud[k].aver);
printf("成绩输出完毕!");
}
void main()/*主函数*/
{ STU p;
int j;
print();
while(1)
{
printf("Enter choice:");
scanf("%d",&j);
if(j13)
{
printf("Enter num from 1 to 13:\n");
exit(1);
}
switch(j)
{case 1:
creat();
break;
case 2:
insert();
break;
case 3:
xiugai();
break;
case 4:
find();
break;
case 5:
print();
break;
case 6:
shanchu();
break;
case 7:
xianshi();
break;
case 8:
eaverage();
break;
case 9:
chinese();
break;
case 10:
english();
break;
case 11:
math();
break;
case 12:
computer();
break;
case 13:
exit(1);
break;
}
scanf("%d",&j);
}
}
———————————— 用户使用手册 ——————————
程序功能:建立一个简单的学生管理系统,存储的学生信息至少包括:班级,学号,姓名,各个科目的成绩.能够完成的功能至少有:输入,查询,修改,删除学生信息,计算学生的
平均成绩,名次,按某个科目的成绩排序输出.
完成日期:2006年2月22日
版本:———
运行环境:Windows XP
版权人:黄涛 学号:2004551425 计算机3班
硬件要求:486以上机器,32M以上RAM,32M硬盘空间
本人保留所有版权.
使用方法:打开文件目录下的可执行文件即可运行程序,程序运行时,屏幕上会显示13个备选的键,每个键都可以完成一个操作,如:插入,删除,修改,学生信息,计算成绩等等······
注意:在使用本程序之前请认真阅读手册.
***********************************************
系统设计员编写的交由程序员使用的说明书,里面有程序员要完成的工作,以及需要遵循的原则等。
什么不属于系统设计阶段的工作
系统架构设计、代码设计和设计规范的制定。系统物理配置方案设计,包括设备配置、通信网络的选择和设计以及数据库管理系统的选择等。数据存储设计,包括数据库设计、数据库的安全保密设计等。计算机处理过程设计,包括输出设计、输入设计、处理流程图设计及编写程序设计说明书等。而程序设计不在以上内容里,所以是...
C语言程序设计——课程设计——通讯录管理系统
试设计通讯录程序设计,使之能提供下列服务:建立文件,文件的存取和显示,删除记录,查询记录,可以随时检索,删除,或增加记录,也可以保存或取消新的记录。姓名可以由字符和数字混合编码。电话号码可由字符和数字组成。二、要求的设计成果(课程设计说明书、设计实物、图纸等)(1)按照分析、设计、调试和测试的软件开发过程...
建筑设计的程序一般分为哪几个阶段?
包括策划、评估、决策、设计、施工、竣工验收。1、策划决策阶段 决策阶段,又称为建设前期工作阶段,主要包括编报项目建议书和可行性研究报告两项工作内容。对于政府投资工程项目,编报项目建议书是项目建设最初阶段的工作。2、勘察设计阶段 勘察过程:复杂工程分为初勘和详勘两个阶段。为设计提供实际依据...
概要设计包括哪些内容?
问题八:如何写软件概要设计 通用的软件概要设计说明书国家有标准。例如概要设计说明书(GB8567-88)包括如下内容:1引言 1.1编写目的 1.2背景 1.3定义 1.4参考资料 2总体设计 2.1需求规定 2.2运行环境 2.3基本设计概念和处理流程 2.4结构 2.5功能器求与程序的关系 2.6人工处理过程 2.7...
系统开发过程包括哪些阶段?
所以这个阶段又称为物理设计阶段。它又分为总体设计和详细设计两个阶段,产生的技术文档是“系统设计说明书”。[2]系统实施阶段 系统实施阶段的任务包括计算机等硬件设备的购置、安装和调试,应用程序的编制和调试,人员培训,数据文件转换,系统调试与转换等。系统实施是按实施计划分阶段完成的,每个阶段应...
软件设计师考试目标
本考试旨在评估软件设计师的专业能力,合格者需掌握软件开发项目管理和软件工程的核心原则。他们能够根据系统总体设计规格说明书,进行精细的软件设计,编写详尽的程序设计规格说明书,指导程序员进行程序编写和调试。他们对软件质量有着严苛的标准,致力于优化设计并组织集成测试,以确保最终产出的软件完全符合...
洗衣机说明书
尊敬的用户,您好!我们很高兴您选择TCLTGV65洗衣机。本说明书旨在帮助您了解和使用这款洗衣机的各种功能,确保您能充分享受其带来的便捷和高效。一、产品概述 TCLTGV65洗衣机采用先进的洗涤技术,结合人性化的设计,为您提供一流的洗衣体验。其主要特点包括:大容量设计,适合家庭使用;多种洗涤程序,...
软件设计包括哪两个阶段?
2、详细设计,关注于将框架逐步求精细化为具体的数据结构和软件的算法表达。发生中的设计行为、数据、算法和程序设计都需要由现代程序所需的界面设计这一清晰的行为来结合起来。界面设计建立程序布局和人机交互机制。贯穿设计过程的质量由一系列的正式技术评定或设计排演来评价。软件设计是从软件需求规格说明...
企业管理软件开发流程
概要设计 ①系统结构设计:定义和设计软件的模块化,软件系统各模块之间的关系。②数据设计:定义数据库功能模块表结构。数据库设计要考虑到以后的扩展性。详细设计:逐个地给出各个层次中的每个程序的设计考虑。文档为总体设计说明书和详细设计说明书、数据库设计说明书。4 程序编码 此阶段是将软件设计的...
软件开发的合作流程有哪些
概要设计 ①系统结构设计:定义和设计软件的模块化,软件系统各模块之间的关系。②数据设计:定义数据库功能模块表结构。数据库设计要考虑到以后的扩展性。详细设计:逐个地给出各个层次中的每个程序的设计考虑。文档为总体设计说明书和详细设计说明书、数据库设计说明书。4 程序编码 此阶段是将软件设计的...
箕古抗病: 由系统设计员编写,交给程序员使用
通许县18854611035: 什么是程序文档? - ?
箕古抗病: 文档是指用来描述程序的内容、组成、设计、功能规格、开发情况、测试结果及使用方法的文字资料和图表等,如程序设计说明书、流程图、用户手册等. 编程开发时将必要说明加入所写代码,完成后生成文档并做必要修改.
通许县18854611035: 什么是计算机软件? - ?
箕古抗病: 计算机软件( Software,也称软件)是指计算机系统中的程序及其文档,程序是计算任务的处理对象和处理规则的描述;文档是为了便于了解程序所需的阐明性资料.程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器. ...
通许县18854611035: 软件开发需要哪些文档? - ?
箕古抗病: 可行性研究报告、需求规格说明书、项目计划、软件测试计划、概要设计说明书、详细设计说明书、编程规范、软件测试用例、软件测试报告、用户手册、安装手册、项目总结报告
通许县18854611035: 软件测试的术语SRS,HLD,LLD,BD,FD,DD分别是什么意思? - ?
箕古抗病: SRS:软件需求说明书,是指在研究用户要求的基础上,完成可行性分析和投资效益分析以后,由软件工程师或分析员编写的说明书. HLD:概要设计说明书,编制的目的是说明对程序系统的设计考虑,包括程序系统的基本处理流程、程序系...
通许县18854611035: 软件程序和文档的区别是什么? - ?
箕古抗病: 有些人对软件程序和文档不加区分,以致把两个词交叉适用.实际上软件程序和文档有本质区别.如果混淆可能会带来不利的法律后果.《计算机软件保护条例》第二条规定,本条例所称计算机软件,是指计算机程序及其有关文档.可见,程序...
通许县18854611035: 什么是计算机软件制做??
箕古抗病: 计算机软件是指计算机程序和相关文档(说明书、流程图、程序、用户手册等). 1、计算机程序:指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可被自动转换成代码化指令序列的符号化指令序列...