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

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

创作编号:

GB8878185555334563BT9125XW

创作者:凤呜大王*

数据结构课程设计

设计题目:学生信息管理系统(顺序)姓名及学号:

专业班级:09计算机科学与技术

指导教师:

完成时间:

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

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

目录

一、实验目的 (1)

二、实验内容 (1)

三、基本要求 (1)

四、算法设计思想 (1)

五、算法流程图 (1)

六、算法源代码 (6)

七、运行结果 (22)

八、收获和体会 (25)

九、致谢 (25)

1. 实验目的:

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

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

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

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

2.实验内容:

输入一个班学生的学号,姓名,性别,成绩。编程插入学生信息,设计查找每个学生的信息,删除学生信息,输出学生信息,修改学生信息,报表和显示学生信息,及退出学生信息管理系统。

3.基本要求:

(1)硬件:微机,打印机各一台

(2)软件:Visual C++,windows7

4.算法设计思想

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

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

(3). 代码的编写。定义数据结构和各个功能子函数。

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

5. 算法的流程图

6. 算法源代码:

#include

#include

#include

#define OK 1

#define ERROR 0

#define OVERFLOW -2

#define MAXSIZE 10

#define List_INIT_SPACE 10 #define List_INC_SPACE 1

typedef struct

{

char number[15];

char name[10];

char sex[10];

int score;

}Elemtype;

typedef struct

{

Elemtype *elem;

int length;

int listsize;

}sqlist;

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

void creatList(sqlist *L)

{

int i=0,n;

Elemtype *newbase;

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

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;

}

else exit(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向顺序表中插入元素*/

void insertlist(sqlist*L)

{

int i,j,k;

char sign='y';

Elemtype *newbase;

Elemtype newelem;

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;

}

else exit(OVERFLOW);

}

printf("请输入要插入的同学的信息:\n");

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

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

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

scanf("%16s",https://www.360docs.net/doc/394974057.html,);

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]=https://www.360docs.net/doc/394974057.html,[k];

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

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

}

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

printf("是否还要输入?(Y or N)");

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查找学生信息*/

int findlist(sqlist *L)

{

int j;char i[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 用数组函数

return j+1;

return 0;

}

else

{

printf("请输入姓名:");

scanf("%s",i);

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

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

return j+1;

return 0;

}

}

/*4删除学生信息*/

int delnode(sqlist *L)

{

int j;char i[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--;

return 1;

}

return 0;

}

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

return 1;

}

return 0;

}

}

/*5输出学生信息*/

void printlist(sqlist *L)

{

int i;

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修改功能*/

void reviselist(sqlist *L)

{

int i,x,a=0;

char name[16];

char sex[16];

char number[16];

int score;

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

scanf("%16s",name);

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

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

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

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

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

scanf("%d",&x);

switch(x)

{

case 1:

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;

case 2:

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;

case 3:

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;

case 4:

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退出学生信息管理系统*/

void tuichu(sqlist *L)

{

if(!L->elem)

free(L->elem);

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