当前位置:文档之家› c语言课程设计学生档案管理系统

c语言课程设计学生档案管理系统

c语言课程设计学生档案管理系统
c语言课程设计学生档案管理系统

程序设计基础课程设计

实验报告书

目录

1.设计题目 (3)

2.正文 (3)

2.1系统简介 (3)

2.2选题背景 (4)

2.3设计内容 (4)

2.4设计思路 (4)

2.5算法(条列式或流程图) (4)

2.6程序清单与运行结果 (9)

2.7总结 (15)

1.设计题目

学生信息管理系统设计

2.正文

2.1 系统简介

学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail 等。试设计一学生信息管理系统,使之能提供以下功能:

1、系统以菜单方式工作

2、学生信息录入功能(学生信息用文件保存)--输入

3、学生信息浏览功能--输出

4、学生信息查询功能--按学号查询、按姓名查询、

5、学生信息的删除与修改(可选项)

要求:使用文件方式存储数据。

2.2选题背景

经典计算机问题,设计学生信息管理系统,可以进行多项系统信息管理功能。

2.3设计内容

设计学生信息管理的各个功能。系统以菜单方式工作。学生信息录入功能(学生信息用文件保存)--输入。学生信息浏览功能--输出。学生信息查询功能--按学号查询、按姓名查询。学生信息的删除与修改(可选项)

2.4设计思路

将程序的各个功能分开独立的执行,问题有大而小,细化。

2.5算法(条列式或流程图)

主程序模块:

删除信息模块(独立函数):

显示浏览信息模块(独立函数)

查找学生信息模块(独立函数):

2.6程序清单与运行结果

#include

#include

#include

#include

struct birth

{

int year,month,day;

};

struct student

{

int number,age,tel[10];

char name[10],sex,address[20],E_mail[20];

struct birth birthday;

struct student *link;

};

void show( )

{

printf(" 请输入数字加回车键进行选择:\n");

printf(" 1、学生信息录入功能(学生信息用文件保存)--输入\n");

printf(" 2、学生信息浏览功能--输出\n");

printf(" 3、学生信息查询功能--按学号查询、按姓名查询\n");

printf(" 4、学生信息的删除与修改(可选项)\n");

printf(" 按其他任意键加回车退出程序\n");

}

\* 创建文件夹并存入信息模块: *\

void credit(int n)

{

FILE *fp;

char fpname[20];

struct student *head,*next,*end;

int i;

printf("请输入用于存放文件的文件路劲及文件名:");

scanf("%s",fpname);

getchar();

fp=fopen(fpname,"w+");

head=(struct student *)malloc(sizeof(struct student));

printf("请输入学生学号姓名性别出生年月日地址电话 e_mail:");

scanf("%d %s %c %d %d %d %s %s %s",&head->number,head->name,&head->sex,&(*h ead).birthday.year,&(*head).birthday.month,&(*head).birthday.day,head->address,head->te l,head->E_mail);

getchar();

fprintf(fp,"%d %s %c %d %d %d %s %s %s",head->number,head->name,head->sex,( *head).birthday.year,(*head).birthday.month,(*head).birthday.day,head->address,head->te l,head->E_mail);

end=head;

for(i=1;i

{

next=(struct student *)malloc(sizeof(struct student));

printf("请输入学生学号姓名性别出生年月日地址电话 e_mail:");

scanf("%d %s %c %d %d %d %s %s %s",&next->number,next->name,&next->sex,&(*n ext).birthday.year,&(*next).birthday.month,&(*next).birthday.day,next->address,next->te l,next->E_mail);

getchar();

fprintf(fp,"%d %s %c %d %d %d %s %s %s",next->number,next->name,next->sex,( *next).birthday.year,(*next).birthday.month,(*next).birthday.day,next->address,next->te l,next->E_mail);

end->link=next;

end=next;

end->link=NULL;

}

fclose(fp);

}

\* 浏览信息模块: *\

void show2(int n)

{

FILE *fp;

int i;

char fpname[20];

struct student *head;

head=(struct student *)malloc(sizeof(struct student));

printf("请输入存放信息的文件路径以及文件名:");

gets(fpname);

fp=fopen(fpname,"r+");

for(i=0;i

{

fscanf(fp,"%d %s %c %d %d %d %s %s %s",&head->number,head->name,&head->sex, &(*head).birthday.year,&(*head).birthday.month,&(*head).birthday.day,head->address,head ->tel,head->E_mail);

printf("%d %s %d %d %d %d %s %s %s",&head->number,head->name,head->sex,(*he ad).birthday.year,(*head).birthday.month,(*head).birthday.day,head->address,head->tel,h ead->E_mail);

}

fclose(fp);

}

\* 按学号查找学生信息模块: *\

int search1(int n)

{

int i,checkname;

FILE *fp;

char fpname[20];

struct student *head;

head=(struct student *)malloc(sizeof(struct student));

printf("请输入存放信息的文件路径以及文件名:");

gets(fpname);

fp=fopen(fpname,"r+");

printf("请输入要查询信息的学生学号:");

scanf("%d",&checkname);

getchar();

for(i=0;i

{

fscanf(fp,"%d %s %c %d %d %d %s %s %s",&head->number,head->name,&head->sex, &(*head).birthday.year,&(*head).birthday.month,&(*head).birthday.day,head->address,head ->tel,head->E_mail);

if(checkname==head->number)

{

printf("%d %s %c %d %d %d %s %s %s\n",head->number,head->name,head->sex,(*h ead).birthday.year,(*head).birthday.month,(*head).birthday.day,head->address,head->tel, head->E_mail);

fclose(fp);

return(1);

}

}

printf("未找到");

}

\* 按姓名查找学生信息模块: *\

void search2(int n)

{

int i;

FILE *fp;

char fpname[20],checkname[10];

struct student *head;

head=(struct student *)malloc(sizeof(struct student));

printf("请输入存放信息的文件路径以及文件名:");

gets(fpname);

fp=fopen(fpname,"r+");

printf("请输入要查询信息的学生姓名:");

scanf("%s",checkname);

getchar();

for(i=0;i

{

fscanf(fp,"%d %s %c %d %d %d %s %s %s",&head->number,head->name,&head->sex, &(*head).birthday.year,&(*head).birthday.month,&(*head).birthday.day,head->address,head ->tel,head->E_mail);

if(strcmp(checkname,head->name)==0)

{

printf("%d %s %c %d %d %d %s %s %s",head->number,head->name,head->sex,(*hea d).birthday.year,(*head).birthday.month,(*head).birthday.day,head->address,head->tel,he ad->E_mail);

fclose(fp);

return(1);

}

}

printf("未找到\n");

}

\* 删除或修改文件信息模块: *\

int most(n)

{

FILE *fp;

char get;

char fpname[20];

struct student *ans[500];

int i;

char checkname[10];

printf("请输入存放信息的文件路径以及文件名:");

gets(fpname);

fp=fopen(fpname,"r+");

ans[0]=(struct student *)malloc(sizeof(struct student));

fscanf(fp,"%d %s %c %d %d %d %s %s %s",&ans[0]->number,ans[0]->name,&ans[0] ->sex,&(*ans[0]).birthday.year,&(*ans[0]).birthday.month,&(*ans[0]).birthday.day,ans[0] ->address,ans[0]->tel,ans[0]->E_mail);

for(i=1;i

{

ans[i]=(struct student *)malloc(sizeof(struct student));

fscanf(fp,"%d %s %c %d %d %d %s %s %s",&ans[i]->number,ans[i]->name,&ans[i] ->sex,&(*ans[i]).birthday.year,&(*ans[i]).birthday.month,&(*ans[i]).birthday.day,ans[i] ->address,ans[i]->tel,ans[i]->E_mail);

ans[i-1]->link=ans[i];

}

ans[i]->link=NULL;

printf("如果想修改信息请输入1加回车键,想删除信息输入2加回车键:");

get=getchar();

getchar();

if(get=='1')

{

printf("请输入要修改信息的学生姓名:");

scanf("%s",checkname);

getchar();

for(i=0;i

{

if(strcmp(checkname,ans[i]->name)==0)

{

printf("请输入学生新信息学号姓名性别出生年月日地址电话

e_mail:");

scanf("%d %s %c %d %d %d %s %s %s",&ans[i]->number,ans[i]->name,&ans[i]->se x,&(*ans[i]).birthday.year,&(*ans[i]).birthday.month,&(*ans[i]).birthday.day,ans[i]->ad dress,ans[i]->tel,ans[i]->E_mail);

getchar();

}

}

}

if(get=='2')

{

printf("请输入要删除的学生姓名:");

scanf("%s",checkname);

getchar();

for(i=0;i

{

if(strcmp(checkname,ans[i]->name)==0)

{

ans[i-1]->link=ans[i]->link;

n--;

break;

}

}

}

fp=fopen(fpname,"w+");

for(i=0;i

{

fprintf(fp,"%d %s %c %d %d %d %s %s %s",ans[i]->number,ans[i]->name,ans[i]->sex,(*ans[i]).birthday.year,(*ans[i]).birthday.month,(*ans[i]).birthday.day,ans[i]->ad dress,ans[i]->tel,ans[i]->E_mail);

}

fclose(fp);

return(n);

}

\*主函数模块*\

void main()

{

char get,get2;

int n;

while(1)

{

show();

get=getchar();

getchar();

switch(get)

{

case '1':

printf("请输入学生人数:");

scanf("%d",&n);

getchar();

credit(n);

break;

case '2':

show2(n);

break;

case '3':

printf("按学号查找请输入1加回车键,按姓名查询请输入2加回车键:");

get2=getchar();

getchar();

if(get2=='1')

{

search1(n);

}

if(get2=='2')

{

search2(n);

}

break;

case '4':

n=most(n);

break;

}

if(get!='1'&&get!='2'&&get!='3'&&get!='4')

{

break;

}

}

}

2.7总结

该程序主要使用结构体与结构化程序的设计,调用文件函数,设计函数时保持头脑思路清晰,有条理,保持各功能独立的函数来实现,需要对程序能熟练使用与掌握,我的函数侧重对单链表的使用,同时侧重文件运用时文件流动时文件信息不会流失。

相关主题
文本预览
相关文档 最新文档