学生信息管理系统顺序表实验.docx

上传人:b****5 文档编号:14888807 上传时间:2023-06-28 格式:DOCX 页数:23 大小:175.51KB
下载 相关 举报
学生信息管理系统顺序表实验.docx_第1页
第1页 / 共23页
学生信息管理系统顺序表实验.docx_第2页
第2页 / 共23页
学生信息管理系统顺序表实验.docx_第3页
第3页 / 共23页
学生信息管理系统顺序表实验.docx_第4页
第4页 / 共23页
学生信息管理系统顺序表实验.docx_第5页
第5页 / 共23页
学生信息管理系统顺序表实验.docx_第6页
第6页 / 共23页
学生信息管理系统顺序表实验.docx_第7页
第7页 / 共23页
学生信息管理系统顺序表实验.docx_第8页
第8页 / 共23页
学生信息管理系统顺序表实验.docx_第9页
第9页 / 共23页
学生信息管理系统顺序表实验.docx_第10页
第10页 / 共23页
学生信息管理系统顺序表实验.docx_第11页
第11页 / 共23页
学生信息管理系统顺序表实验.docx_第12页
第12页 / 共23页
学生信息管理系统顺序表实验.docx_第13页
第13页 / 共23页
学生信息管理系统顺序表实验.docx_第14页
第14页 / 共23页
学生信息管理系统顺序表实验.docx_第15页
第15页 / 共23页
学生信息管理系统顺序表实验.docx_第16页
第16页 / 共23页
学生信息管理系统顺序表实验.docx_第17页
第17页 / 共23页
学生信息管理系统顺序表实验.docx_第18页
第18页 / 共23页
学生信息管理系统顺序表实验.docx_第19页
第19页 / 共23页
学生信息管理系统顺序表实验.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生信息管理系统顺序表实验.docx

《学生信息管理系统顺序表实验.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统顺序表实验.docx(23页珍藏版)》请在冰点文库上搜索。

学生信息管理系统顺序表实验.docx

学生信息管理系统顺序表实验

数据结构课程设计

设计题目:

学生信息管理系统(顺序)

姓名及学号:

专业班级:

09计算机科学与技术

指导教师:

完成时间:

 

信息工程学院计算机科学系

课题名称

学生信息管理系统(顺序表)

院系

信息工程学院

年级专业

10计科特色

学号

姓名

成绩

1042157103

何业祥

1042157104

孔磊磊

10421571019

王舒

课题设计

目的与

设计意义

1、课题设计目的:

课程设计任务是为了实现学生信息的相关操作,方面用户快速得到学生的各种信息,并且能进行信息的更新、插入、删除等操作。

课程设计的主要目的:

熟练利用数据结构各种算法思想设计程序;掌握C语言基本语法;

通过课程设计,加深对数据结构课程所学内容的进一步理解和巩固;加深对结构化课程设计思想的理解,并设计合理的模块化结构;提高程序开发功能,能运用合理的控制流程编写清晰高效的程序;培养分析问题、解决问题的能力。

在课程设计中,我们充分发挥小组优势完成课程设计,同时也体会到小组合作的重要性与必要性。

2、课题设计意义:

 

指导教师:

年月日

安徽新华学院课程设计成绩评定表(本科)

一、实验目的………………………………………………………1

二、实验内容………………………………………………………1

三、基本要求………………………………………………………1

四、算法设计思想…………………………………………………1

五、算法流程图……………………………………………………1

六、算法源代码……………………………………………………6

七、运行结果………………………………………………………22

八、收获和体会……………………………………………………25

九、致谢……………………………………………………………25

 

1.实验目的:

通过制作学生信息管理系统

(1)基本掌握面向过程程序设计的的基本思路和方法;

(2)达到熟练掌握C语言的基本知识和技能;

(3)能够利用所学的基本知识和技能,解决简单的程序设计问题。

2.实验内容:

输入一个班学生的学号,姓名,性别,成绩。

编程插入学生信息,设计查找每个学生的信息,删除学生信息,输出学生信息,修改学生信息,报表和显示学生信息,及退出学生信息管理系统。

3.基本要求:

(1)硬件:

微机,打印机各一台

(2)软件:

VisualC++,windows7

4.算法设计思想

(1).分析程序的功能要求,划分程序功能模块。

(2).画出系统流程图。

(3).代码的编写。

定义数据结构和各个功能子函数。

(4).程序的功能调试。

5.算法的流程图

6.算法源代码:

#include

#include

#include

#defineOK1

#defineERROR0

#defineOVERFLOW-2

#defineMAXSIZE10

#defineList_INIT_SPACE10

#defineList_INC_SPACE1

typedefstruct

{

charnumber[15];

charname[10];

charsex[10];

intscore;

}Elemtype;

typedefstruct

{

Elemtype*elem;

intlength;

intlistsize;

}sqlist;

/*1创建空顺序表并初始化*/

voidcreatList(sqlist*L)

{

inti=0,n;

Elemtype*newbase;

L->elem=(Elemtype*)malloc(List_INIT_SPACE*(sizeof(Elemtype)));

if(!

L->elem)exit(OVERFLOW);

L->length=0;

L->listsize=List_INIT_SPACE;

printf("有几位同学:

\n");

scanf("%d",&n);

for(i=0;i

{

if(L->length==L->listsize)

{

newbase=(Elemtype*)realloc(L->elem,(List_INIT_SPACE+List_INC_SPACE)*sizeof(Elemtype));

if(newbase)

{

L->elem=newbase;

L->listsize+=List_INC_SPACE;

}

elseexit(OVERFLOW);

}

printf("请输入第%d名同学的信息:

\n",i+1);

printf("学号(15)\n");

scanf("%16s",L->elem[L->length].number);

printf("姓名(15)\n");

scanf("%16s",L->elem[L->length].name);

printf("性别(男:

M女:

F)\n");

scanf("%16s",L->elem[L->length].sex);

printf("成绩\n");

scanf("%10d",&L->elem[L->length].score);

L->length++;

}

printf("%d名学生信息如下:

\n",L->length);

printf("学号(15)姓名(15)性别(男:

M女:

F)成绩\n");

for(i=0;ilength;i++)

printf("%-16s%-16s%-16s%-10d\n",L->elem[i].number,L->elem[i].name,L->elem[i].sex,L->elem[i].score);

}

/*2向顺序表中插入元素*/

voidinsertlist(sqlist*L)

{

inti,j,k;

charsign='y';

Elemtype*newbase;

Elemtypenewelem;

while(sign!

='n')

{

if(L->length==L->listsize)

{

newbase=(Elemtype*)realloc(L->elem,(List_INIT_SPACE+List_INC_SPACE)*sizeof(Elemtype));

if(newbase)

{

L->elem=newbase;

L->listsize+=List_INC_SPACE;

}

elseexit(OVERFLOW);

}

printf("请输入要插入的同学的信息:

\n");

printf("学号(15)\n");

scanf("%16s",newelem.number);

printf("姓名(15)\n");

scanf("%16s",newelem.name);

printf("性别(男:

M女:

F)\n");

scanf("%16s",newelem.sex);

printf("成绩\n");

scanf("%10d",&newelem.score);

printf("要插入到第几个位置:

");

scanf("%d",&i);

while(i<1||i>L->length+1)

{

printf("不能插入到第%d个位置!

\n只能插入第1到第%d个位置上!

\n请重新输入要插入的位置:

",L->length+1);

scanf("%d",&i);

}

L->length++;

for(j=L->length-1;j>i-2;j--)

{

for(k=0;k<16;k++)

{

L->elem[j].name[k]=L->elem[j-1].name[k];

L->elem[j].number[k]=L->elem[j-1].number[k];

L->elem[j].sex[k]=L->elem[j-1].sex[k];

}

L->elem[j].score=L->elem[j-1].score;

}

j++;

for(k=0;k<16;k++)

{

L->elem[j].name[k]=newelem.name[k];

L->elem[j].number[k]=newelem.number[k];

L->elem[j].sex[k]=newelem.sex[k];

}

L->elem[j].score=newelem.score;

printf("是否还要输入?

(YorN)");

getchar();

scanf("%c",&sign);

if(sign=='n'||sign=='N')

sign='n';

}

printf("%d名学生信息如下:

\n",L->length);

printf("学号(15)姓名(15)性别(男:

M女:

F)成绩\n");

for(i=0;ilength;i++)

printf("%-16s%-16s%-16s%-10d\n",L->elem[i].number,L->elem[i].name,L->elem[i].sex,L->elem[i].score);

}

/*3查找学生信息*/

intfindlist(sqlist*L)

{

intj;chari[16];

printf("1.按学号查找\n2.按姓名查找\n请选择:

");

scanf("%d",&j);

if(j==1)

{

printf("请输入学号:

");

scanf("%s",i);

for(j=0;jlength;j++)

if(!

strcmp(i,L->elem[j].number))//i==L->elem[j].number用数组函数

returnj+1;

return0;

}

else

{

printf("请输入姓名:

");

scanf("%s",i);

for(j=0;jlength;j++)

if(!

strcmp(i,L->elem[j].name))//用数组函数

returnj+1;

return0;

}

}

/*4删除学生信息*/

intdelnode(sqlist*L)

{

intj;chari[10];

printf("1.按学号删除\n2.按姓名删除\n请选择:

");

scanf("%d",&j);

if(j==1)

{

printf("请输入学号:

");

scanf("%s",i);

for(j=0;jlength;j++)

if(!

strcmp(i,L->elem[j].number))//i==L->elem[j].number用数组函数

{

for(;jlength;j++)

L->elem[j]=L->elem[j+1];

L->length--;

return1;

}

return0;

}

else

{

printf("请输入姓名:

");

scanf("%s",i);

for(j=0;jlength;j++)

if(!

strcmp(i,L->elem[j].name))//用数组函数

{

for(;jlength;j++)

L->elem[j]=L->elem[j+1];//L->elem[j]以后的向前挪

L->length--;

return1;

}

return0;

}

}

/*5输出学生信息*/

voidprintlist(sqlist*L)

{

inti;

printf("%d名学生信息如下:

\n",L->length);

printf("学号(15)姓名(15)性别(男:

M女:

F)成绩\n");

for(i=0;ilength;i++)

printf("%-16s%-16s%-16s%-10d\n",L->elem[i].number,L->elem[i].name,L->elem[i].sex,L->elem[i].score);

}

/*6修改功能*/

voidreviselist(sqlist*L)

{

inti,x,a=0;

charname[16];

charsex[16];

charnumber[16];

intscore;

printf("请选择你要改的同学的姓名");

scanf("%16s",name);

printf("请选择你要改的同学的信息\n");

printf("1.修改学生的姓名\n");

printf("2.修改学生的学号\n");

printf("3.修改学生的性别\n");

printf("4.修改学生的成绩\n");

scanf("%d",&x);

switch(x)

{

case1:

for(i=0;ilength;i++)

{

if(strcmp(name,L->elem[i].name)==0)

{

printf("请输入新名字");

scanf("%16s",name);

strcpy(L->elem[i].name,name);

a=1;

}

}

if(a==0)

printf("对不起你要改的名字不存在\n");

break;

case2:

for(i=0;ilength;i++)

{

if(strcmp(name,L->elem[i].name)==0)

{

printf("请输入新学号");

scanf("%16s",number);

strcpy(L->elem[i].number,number);

a=1;

}

}

if(a==0)

printf("对不起你要改的名字不存在\n");

break;

case3:

for(i=0;ilength;i++)

{

if(strcmp(name,L->elem[i].name)==0)

{

printf("请输入新性别");

scanf("%16s",sex);

strcpy(L->elem[i].sex,sex);

a=1;

}

}

if(a==0)

printf("对不起你要改的名字不存在\n");

break;

case4:

for(i=0;ilength;i++)

{

if(strcmp(name,L->elem[i].name)==0)

{

printf("请输入新成绩");

scanf("%d",score);

L->elem[i].score=score;

a=1;

}

}

if(a==0)

printf("对不起你要改的名字不存在\n");

break;

}

}

/*0退出学生信息管理系统*/

voidtuichu(sqlist*L)

{

if(!

L->elem)

free(L->elem);

printf("\n\n再见,欢迎下次使用");

exit(-2);

}

voidmain()

{

sqlista,*L=&a;

inti;

printf("******************************************************************\n");

printf("*学生信息管理系统*\n");printf("*========================================\n");

printf("*1.创建学生信息库并初始化*\n");

printf("*2.添加学生信息*\n");

printf("*3.查找学生信息*\n");

printf("*4.删除学生信息*\n");

printf("*5.输出学生信息*\n");

printf("*6.修改学生信息*\n");

printf("*0.退出学生信息管理系统*\n");

printf("*========================================\n");printf("******************************************************************\n");

while

(1)

{

printf("\n\n请选择(0-6):

");

scanf("%d",&i);

while(i<0||i>6)

{

printf("只能选择0到6!

请重新选择:

");

scanf("%d",&i);

}

switch(i)

{

case1:

creatList(L);

printf("初始化完毕!

");

break;

case2:

insertlist(L);

break;

case3:

i=findlist(L);

if(!

i)

printf("没有该学生\n");

else

{

i--;

printf("要查找的学生:

\n");

printf("学号姓名性别成绩\n");

printf("%-10s%-10s%-10s%-d\n",L->elem[i].number,L->elem[i].name,L->elem[i].sex,L->elem[i].score);

}break;

case4:

i=delnode(L);

if(!

i)

printf("没有该学生\n");

else

{printf("该学生已删除");}

break;

case5:

printlist(L);break;

case6:

reviselist(L);break;

case0:

tuichu(L);

}

}

}

7.运行结果:

(1)初始化

(2)信息录入

(3)信息插入

 

(4)信息查询

(5)删除信息

(6)修改学生信息

(7)退出系统

8.收获及体会:

通过这次实训,增加了我们学习软件技术的兴趣,加强了小组成员之间的协作能力。

虽然对软件技术的具体内容还不是很了解,但通过对C语言这门课程的学习,已发现程序设计的乐趣。

在对C语言学习的过程中,我们也学到了许多关于计算机应用基础方面的知识,对计算机的机体也有了一个大体的了解。

这次实训由老师提供课题,参照范例程序,经过自己的改写,实现要求。

先做简单的输出,一步步的再做其它图案,在实际操作过程中所犯的一些错误,通过学习还会有意外的收获,感觉实训真的很有意思。

在具体操作中,对这学期所学C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到了C语言具有的语句简洁,使用灵活,执行效率高等特点。

发现上机实训的重要作用,特别是对数组和循环有了深刻的理解之后。

通过实际操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。

深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,……的寓意。

计时在此希望以后应多进行这样的实训,加长设间,培养学生独立思考问题的能力,提高实际操作水平。

致谢

本设计是在李红梅老师的悉心指导下完成的。

通过我们的设计选题、资料查找,李老师修改等方面对我进行了悉心的指导和鼓励。

值此设计完成之际,谨向指导老师李老师致以最衷心的感谢。

通过我们组成员的努力做出了这个学生管理系统,当我们看到我们的劳动成果,无比的开心,在这几个星期中,我们认真的工作,参考了大量资料,努力克服遇到的困难。

在这次课程设计中,我们一起谈论,我们一起研究,一起欢笑。

通过这次的数据结构的课程设计,让我们更加加深了它的语句思想!

让我从这次课程设计中获得了好多知识,获益匪浅!

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2