《C语言案例实践》学生成绩管理系统Word格式.docx

上传人:b****6 文档编号:18730504 上传时间:2022-12-31 格式:DOCX 页数:29 大小:155.38KB
下载 相关 举报
《C语言案例实践》学生成绩管理系统Word格式.docx_第1页
第1页 / 共29页
《C语言案例实践》学生成绩管理系统Word格式.docx_第2页
第2页 / 共29页
《C语言案例实践》学生成绩管理系统Word格式.docx_第3页
第3页 / 共29页
《C语言案例实践》学生成绩管理系统Word格式.docx_第4页
第4页 / 共29页
《C语言案例实践》学生成绩管理系统Word格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

《C语言案例实践》学生成绩管理系统Word格式.docx

《《C语言案例实践》学生成绩管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《《C语言案例实践》学生成绩管理系统Word格式.docx(29页珍藏版)》请在冰豆网上搜索。

《C语言案例实践》学生成绩管理系统Word格式.docx

2.系统总体设计

一、编写目的

根据需求分析文档,初步提出问题的解决方案,以及软件系统的体系结构和数据结构的设计方案,并写出书面文档总体设计说明书,为下一步进行详细设计做准备。

二、总体设计

1.功能划分

该系统可以按功能进行模块划分,如图1所示。

学生信息管理系统

图1系统模块图

其中:

(1)菜单选择模块完成用户命令的接受,此模块也是学生信息管理的入口,用户所要进行的各种操作均需在此模块中进行选择,并进而调用其他模块实现相应的功能。

(2)信息输入模块完成学生信息的输入功能,输入信息包括姓名学号和成绩。

(3)信息浏览模块完成已录入学生信息的显示。

(4)信息查询模块完成学生信息的查询,查询时对应有按编号查询和按姓名查询两种方式。

(5)信息修改模块完成学生信息的修改功能。

(6)信息删除功能模块完成学生信息的删除功能。

2.数据结构

本系统中主要的数据结构就是学生的信息,包含姓名学号和成绩,在处理过程中各项可以作为一个学生的不同属性来进行处理。

3.程序流程

系统的执行应从功能菜单选择开始,依据用户的选择来进行后续的处理,直到用户选择退出系统为止,其间应对用户的选择做出判断及异常处理。

系统的流程图如图2所示:

图2程序流程图

3.详细设计

1.数据结构

(1)性别:

emumSex{male,female};

(2)学历:

enumEducation{high,junior,college,master,doctor};

(3)日期:

StructDate

{

intyear;

intmonth;

intday;

};

(4)学生信息:

StructInfo

{

charnum[5];

/*学生号*/

charname[8];

/*姓名*/

enumSexsex;

/*性别*/

structDatebirthday;

/*出生年月*/

enumEducationeducation;

/*学历*/

charduty[8];

/*职务*/

doublewage;

/*工资*/

charaddr[12];

/*地址*/

charphone[8];

/*电话*/

};

2.各个功能模块的处理流程

对应于总体设计时的系统模块图,各个功能模块的处理流程如下:

(1)信息输入模块

输入三个学生信息以初始化系统;

读入学生信息;

(2)信息浏览模块

依次输出学生信息;

(3)信息查询模块

while(继续查询)

{

if(按编号查询)

{

读入查询的学生编号;

顺序读出一个学生的信息;

if(该学生信息的编号符合条件)

输出该学生的信息;

}

}

elseif(按姓名查询)

读入查询的学生姓名;

if(该学生信息的姓名符合条件)

}

}

else

提示输入不合适;

提示是否继续查询;

}

(4)信息修改模版

while(继续修改)

提示并读入待修改的学生的编号;

顺序读出一个学生的信息;

if(该学生信息的编号符合条件)

将学生的信息进行修改;

显示修改后所有学生的信息;

}

(5)信息删除模块

while(继续删除)

提示并读入待删除的学生号;

查找是否有符合条件的学生记录;

if(有符合条件的记录)

while(所有学生信息未读完)

读出下一条记录;

if(此条记录不是待删除记录)

删除该学生信息记录;

else

提示没有符合条件的记录存在;

(7)信息排序模块

if(按姓名排序)

将第i个学生姓名和他的下一个学生姓名作对比

通过对比大小将学生信息交换依次排序;

elseif(按学号排序)

将第i个学生学号和他的下一个学生学号作对比

elseif(按成绩排序)

打印排序后的学生信息;

4.系统测试

一、设置测试数据

根据以下几个列子分析测试:

1.录入:

姓名tom学号0001成绩98

2.录入:

姓名lili学号0002成绩56

3.录入:

姓名alin学号0003成绩74

2.显示所有学生的信息。

3.增加一个学生的信息姓名john学号0004成绩88。

4.删除学生号为0002的学生信息。

5.将alin学号的信息由0003改为0005。

6.查找学号为0001的学生信息。

7.将所有学生的信息按成绩排序。

8.退出。

二、测试结果及分析

(1)学生信息录入分析图如图1所示:

(2)学生信息系统菜单界面如图2所示:

(3)显示学生信息如图3所示

(4)学生信息录入图如图4所示:

(5)学生信息删除如图5所示

(6)学生信息修改图如图6所示:

(7)学生信息查找图如图7所示:

(8)学生信息排序图如图8所示:

5.软件使用说明书

(1)根据正确的提示安装软件。

(2)Intel486以上系列、AMDK6以上系列等PC台式机和便携式电脑都可运行。

(3)打开该程序系统,浏览菜单,根据需要选择功能,进行各项操作。

操作如下:

输入三名学生信息以初始化程序

根据菜单提示输入需要的信息即可完成指令。

当信息输入正确,进入你所需要的菜单程序中:

学生信息:

显示姓名、学号、成绩。

设计总结

在本系统的开发过程中,由于组是初次开发软件,在知识、经验方面都存在着不足。

另外,在整个开发的过程中,时间也比较仓促。

因此,该系统必然会存在一些缺陷和不足。

因为对学生信息管理的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。

尽管本管理系统存在着很多不足,但其功能全面、易于日后程序更新、数据库管理容易、界面友好、操作方便、效率高、安全性好等优点是本管理系统所必需的。

通过开发这个系统,我组掌握了的项目基本开发过程,用到的知识巩固了我组对C语言的学习,但在这次设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。

附录:

部分源程序代码

#include<

stdio.h>

//写入头文件

windows.h>

conio.h>

process.h>

math.h>

string.h>

typedefstructSTU{//建立链表

charname[10];

charnum[10];

intgrade;

}st;

typedefstructnode{

stdata;

structnode*next;

}node;

node*jianli();

//函数定义

intse();

voidxianshi(node*head);

voidzengjia(node*head);

node*shanchu(node*head);

voidxiugai(node*head);

voidchazhao(node*head);

voidpaixu(node*head);

node*jianli()//建立函数

{

inti;

node*he,*tail,*p;

he=tail=NULL;

printf("

************************************\n\t学生管理系统初始化\n************************************\n\n\n请先输入3位学生的有效信息:

\n"

);

for(i=0;

i<

3;

i++)

p=(node*)malloc(sizeof(node));

p->

next=NULL;

printf("

请输入第%d位学生的信息\n"

i+1);

scanf("

%s%s%d"

p->

data.name,p->

data.num,&

p->

data.grade);

while(atoi(p->

data.num)==0||p->

data.grade<

0)

{

您输入的信息有误,请重新输入!

"

if(he==NULL)

he=p;

else

tail->

next=p;

tail=p;

p=he;

system("

cls"

************************************\n\t学生管理系统初始化\n************************************\n\n\n\n"

while(p!

=NULL)

姓名:

%s学号:

%s分数:

%d\n"

data.num,p->

p=p->

next;

已录入三个基础学生信息,按任意键进入学生管理系统菜单\n"

getch();

returnhe;

voidmain()//主函数入口

inta;

node*head;

color2e"

head=jianli();

do{system("

a=se();

switch(a)//输入选择

case1:

xianshi(head);

break;

case2:

zengjia(head);

case3:

head=shanchu(head);

case4:

xiugai(head);

case5:

chazhao(head);

case6:

paixu(head);

case7:

exit(0);

}}while

(1);

intse()//菜单界面

inti,t;

chars[10];

char*menu[]={"

***********学生管理系统**************\n\n"

"

1:

显示学生信息\n"

2:

增加学生信息\n"

3:

删除学生信息\n"

4:

修改学生信息\n"

5:

查找学生信息\n"

6:

排序学生信息\n"

7:

exit\n\n"

*************************************\n"

};

for(i=0;

9;

printf("

%s"

menu[i]);

do

请输入数字命令:

scanf("

s);

t=atoi(s);

}while(t<

0||t>

7);

returnt;

voidxianshi(node*head)//显示学生信息函数

node*p;

p=head;

voidzengjia(node*head)//增加学生信息函数

node*p,*tail,*t;

while(p!

tail=p;

p=p->

请输入新增学生的学号:

data.num);

data.num)==0)

您输入的学号有误,请重新输入!

t=head;

while(t!

if(atoi(p->

data.num)==atoi(t->

data.num))

t=head;

printf("

***********学生管理系统**************\n\n学生的学号已被使用,请重新输入学号!

continue;

}

t=t->

请输入该学生的名字、分数\n"

%s%d"

data.name,&

tail->

system("

\n按任意键返回\n"

node*shanchu(node*head)//删除学生信息函数

chard[10];

node*p,*t,*flag=NULL;

请输入需要删除学生的学号:

d);

while(strcmp(d,t->

data.num)!

=0&

&

t->

next!

flag=t;

if(strcmp(d,t->

if(strcmp(d,head->

head=head->

free(p);

flag->

next=t->

free(t);

else

没有搜索到需要删除的学生信息,请核对后再输入"

p=head;

system("

return(head);

voidxiugai(node*head)//修改学生信息函数

intd,m,flag;

charc[10],n[10],ex;

do

{system("

按姓名查找需要修改的学生信息输入1,按学号查找需要修改的学生信息输入2\t"

c);

while(atoi(c)!

=1&

atoi(c)!

=2)

输入的指令有误,请重新输入\n"

if(atoi(c)==1)

请输入需要修改学生的姓名:

n);

m=strcmp(n,p->

data.name);

while(m!

m=strcmp(n,p->

if(m==0)

\n姓名:

flag=1;

没有搜索到需要修改的学生信息,请核对后再输入\n"

flag=0;

if(atoi(c)==2)

请输入需要修改学生的学号:

%d"

&

d);

while(d!

=atoi(p->

data.num)&

{p=p->

if(d==atoi(p->

if(flag==1)

请重新输入该学生的名字、学号、分数\n"

\n修改成功!

\n还需修改学生信息请按1,退出请按任意键:

ex=getchar();

还需删除学生信息输入1,退出请按任意键:

}while(ex=='

1'

voidchazhao(node*head)//查找学生信息函数

intc,d,m;

charex,n[10];

按姓名查找输入1,按学号查找输入2\t"

c);

while(c!

c!

输入的指令有误,请重新输入"

if(c==1)

请输入需要查找学生的姓名:

i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1