实 验 四:结构体
实验目的:
1.更加灵活的使用数组作为函数参数;
2.初步掌握开发一个小型实用系统的基本方法;
3.初步掌握书写程序设计开发文档的能力。
实验内容:
程序一:学生信息管理系统
编写程序,实现学生信息的管理(包括学生信息的建立、增加、删除、修改、查找),要求:
小组分工情况
小组分工情况统计表
一 需求分析
I设计一个学生成绩管理系统至少具有以下功能:
(1)菜单功能:采用文本菜单界面。
(2)学生信息的建立。
(3)学生信息的增加。
(4)学生信息的删除。
(5)学生信息的修改。
(6)学生信息的查找。
II数据库结构
struct student
{ char num[10];
char name[10];
char xibie[10];
char sex;
int age;
}st[30];
二 总体设计
框架结构图(系统的功能结构图)
程序流程图: (visio)
三、详细设计
(流程图!!!)
四、程序源代码(参考答案)
1.用结构体数组完成
2.用结构体指针完成
1. #include "stdio.h"
#include "string.h"
typedef struct node
{ char num[10];
char name[10];
char xibie[10];
char sex;
int age;
}st;
int n;
st *creslink()
{
int i;
st s[10];
printf("请输入要录入的人数:");
scanf("%d",&n);
for (i=0;i<=n-1;i++)
{ printf("请输入第%d名学生的学号,姓名,系别,年龄,性别:",i+1);
scanf("%s%s%s%d%c",s[i].num,s[i].name,s[i].xibie,&s[i].age,&s[i].sex);
}
return s;
}
int getlen(st s[])
{
return n;
}
insert(st s[],char num[],char name[],char xibie[],int age,char sex)
{ strcpy(s[n].num,num);
strcpy(s[n].name,name);
strcpy(s[n].xibie,xibie);
s[n].age=age;
s[n].sex=sex;
n++;
}
delete(st s[],char num[])
{int i,j;
for(i=0;i
if(strcmp(s[i].num,num)==0)break;
for(j=i+1;j
s[j-1]=s[j];
n--;
}
void list(st s[])
{ int i;
printf("学号\t姓名\t系别\t年龄\t性别\n");
for(i=0;i
printf("%s\t%s\t%s\t%d\t%c\n",s[i].num,s[i].name,s[i].xibie,s[i].age,s[i].sex);
}
void main()
{
int k,f,age;
char num[10],name[10],xibie[10],sex;
st *s;
while(1)
{
printf("\n\n\t\t\t学生信息管理系统\n");
printf("\t\t*************************************\n");
printf("\t\t\t1.录入学生信息\n");
printf("\t\t\t2.插入新学生信息\n");
printf("\t\t\t3.删除学生信息\n");
printf("\t\t\t4.输出学生信息\n");
printf("\t\t\t5.输出学生总数\n");
printf("\t\t\t6.退出\n");
printf("\t\t*************************************\n");
printf("请选择:");
scanf("%d",&k);
switch(k)
{case 1:s=creslink();break;
case 2: printf("请输入新学生的学号,姓名,系别,年龄,性别:");
scanf("%s%s%s%d%c",num,name,xibie,&age,&sex);
insert(s,num,name,xibie,age,sex);
break;
case 3:printf("请输入要删除的学生的学号:");
scanf("%s",num);
delete(s,num);
break;
case 4:list(s);break;
case 5:f=getlen(s);printf("学生总数为:%d",f);break;
case 6:return;
}
}
}
2.#include "stdio.h"
#include "string.h"
#define null 0
typedef struct node
{ char num[10];
char name[10];
char xibie[10];
char sex;
int age;
struct node *next;
}slink;
slink *creslink()
{
slink *head,*p,*s;
int i,n;
printf("请输入要录入的人数:");
scanf("%d",&n);
if(n<1)
return null;
p=head=(slink *)malloc(sizeof(slink));
head->next=null;
for (i=1;i<=n;i++)
{
s=(slink *)malloc(sizeof(slink));
printf("请输入第%d名学生的学号,姓名,系别,年龄,性别:",i);
scanf("%s%s%s%d%c",s->num,s->name,s->xibie,&s->age,&s->sex);
p->next=s;
p=s;
}
p->next=null;
return head;
}
int getlen(slink *head)
{
slink *p;
int n;
p=head->next;
n=0;
while (p!=null)
{
n++;
p=p->next;
}
return n;
}
insert(slink *head,char num[],char name[],char xibie[],int age,char sex)
{
slink *p,*q;
p=head;
while(p->next!=null) p=p->next;
q=(struct node *)malloc (sizeof(slink));
strcpy(q->num,num);
strcpy(q->name,name);
strcpy(q->xibie,xibie);
q->sex=sex;
q->age=age;
q->next=p->next;
p->next=q;
}
delete(slink *head,char num[])
{
slink *p,*q;
p=head;
while(p->next!=null&&strcmp(p->next->num,num)!=0)
p=p->next;
q=p->next;
p->next=q->next;
free(q);
}
void list(slink *head)
{
slink *p;
printf("学号\t姓名\t系别\t年龄\t性别\n");
p=head->next;
while(p!=null)
{
printf("%s\t%s\t%s\t%d\t%c\n",p->num,p->name,p->xibie,p->age,p->sex);
p=p->next;
}
printf("\n");
}
void main()
{
int k,f,age;
char num[10],name[10],xibie[10],sex;
slink *head;
while(1)
{
printf("\n\n\t\t\t学生信息管理系统\n");
printf("\t\t*************************************\n");
printf("\t\t\t1.录入学生信息\n");
printf("\t\t\t2.插入新学生信息\n");
printf("\t\t\t3.删除学生信息\n");
printf("\t\t\t4.输出学生信息\n");
printf("\t\t\t5.输出学生总数\n");
printf("\t\t\t6.退出\n");
printf("\t\t*************************************\n");
printf("请选择:");
scanf("%d",&k);
switch(k)
{case 1:head=creslink();break;
case 2: printf("请输入新学生的学号,姓名,系别,年龄,性别:");
scanf("%s%s%s%d%c",num,name,xibie,&age,&sex);
insert(head,num,name,xibie,age,sex);
break;
case 3:printf("请输入要删除的学生的学号:");
scanf("%s",num);
delete(head,num);
break;
case 4:list(head);break;
case 5:f=getlen(head);printf("学生总数为:%d",f);break;
case 6:return;
}
}
}
学生管理系统实验报告一实验目的上学期学习了C语言的内容学生信息管理系统有助于对C语言的学习的进一步巩固在本系统可以增强对指针数组文…
学生信息管理系统HUNANUNIVERSITY程序设计训练报告学生姓名学生学号专业班级指导老师院长系主任20xx年5月25日第1页…
C语言课程设计报告课程成绩管理系统作者:指导老师:专业班级:物流0803班完成日期:20XX/11/11.系统说明1.1系统名称课…
学生成绩管理系统实验报告实验名称学生成绩管理系统实验目的1利用所学的三种程序基本结构以及数组用户自定义函数进行一个简单管理系统的设…
实验四:结构体实验目的:1.更加灵活的使用数组作为函数参数;2.初步掌握开发一个小型实用系统的基本方法;3.初步掌握书写程序设计开…
《C语言程序设计》课程设计报告专业:班级:姓名:指导教师:二零##年十二月二十六日目录一、设计题目2二、设计目的2三、设计内容23…
福建师范大学人民武装学院C语言程序设计报告书设计名称学生成绩管理系统专业软件工程指导老师陈琳姓名黄强学号119xx20xx0262…
学生信息管理系统HUNANUNIVERSITY程序设计训练报告学生姓名学生学号专业班级指导老师院长系主任20xx年5月25日第1页…
实训报告题目学生信息管理系统院系信息科技学院专业电子信息工程姓名殷浩学号1152100135指导教师杨呈永日期20xx年6月26日…
郑州大学实训报告实训名称学生成绩管理系统设计姓名院系软件学院专业班级学号指导教师成绩时间年2月日至年月31日目录实训任务书I实训进…