主程序设计说明怎么写

主程序设计说明怎么写,第1张

主程序设计说明步骤如下。

1、首先写明程序名称和程序所属的系统、子系统或模块的名称。

2、其次写明编写程序所需使用的语言,输入的方式和格式,输出的方式与格式。

3、接着写明程序处理过程说明。

4、最后写明程序运行环境说明。

详细设计说明书又可称程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序 (每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本文件可以不单独编写,有关 内容合并入概要设计说明书。

开发人员:黄涛 学号: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=1printf("信息输出完毕!\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=0knext

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=0knext

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=0knext

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=0k 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个备选的键,每个键都可以完成一个 *** 作,如:插入,删除,修改,学生信息,计算成绩等等······

注意:在使用本程序之前请认真阅读手册.

***********************************************


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10945038.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-12
下一篇2023-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存