c语言课程设计学生档案管理系统Word下载.docx
《c语言课程设计学生档案管理系统Word下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计学生档案管理系统Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
学生信息录入功能(学生信息用文件保存)--输入。
学生信息浏览功能--输出。
学生信息查询功能--按学号查询、按姓名查询。
学生信息的删除与修改(可选项)
2.4设计思路
将程序的各个功能分开独立的执行,问题有大而小,细化。
2.5算法(条列式或流程图)
主程序模块:
按退格键
创建文件模块(独立函数):
NO
YES
删除信息模块(独立函数):
不相同
相同
显示浏览信息模块(独立函数)
查找学生信息模块(独立函数):
返回主程序
2.6程序清单与运行结果
#include<
stdio.h>
stdlib.h>
string.h>
io.h>
structbirth
{
intyear,month,day;
};
structstudent
intnumber,age,tel[10];
charname[10],sex,address[20],E_mail[20];
structbirthbirthday;
structstudent*link;
voidshow()
printf("
请输入数字加回车键进行选择:
\n"
);
1、学生信息录入功能(学生信息用文件保存)--输入\n"
2、学生信息浏览功能--输出\n"
3、学生信息查询功能--按学号查询、按姓名查询\n"
4、学生信息的删除与修改(可选项)\n"
按其他任意键加回车退出程序\n"
}
\*创建文件夹并存入信息模块:
*\
voidcredit(intn)
FILE*fp;
charfpname[20];
structstudent*head,*next,*end;
inti;
请输入用于存放文件的文件路劲及文件名:
"
scanf("
%s"
fpname);
getchar();
fp=fopen(fpname,"
w+"
head=(structstudent*)malloc(sizeof(structstudent));
请输入学生学号姓名性别出生年月日地址电话e_mail:
%d%s%c%d%d%d%s%s%s"
&
head->
number,head->
name,&
sex,&
(*head).birthday.year,&
(*head).birthday.month,&
(*head).birthday.day,head->
address,head->
tel,head->
E_mail);
fprintf(fp,"
head->
name,head->
sex,(*head).birthday.year,(*head).birthday.month,(*head).birthday.day,head->
end=head;
for(i=1;
i<
n;
i++)
{
next=(structstudent*)malloc(sizeof(structstudent));
printf("
scanf("
next->
number,next->
(*next).birthday.year,&
(*next).birthday.month,&
(*next).birthday.day,next->
address,next->
tel,next->
getchar();
fprintf(fp,"
next->
name,next->
sex,(*next).birthday.year,(*next).birthday.month,(*next).birthday.day,next->
end->
link=next;
end=next;
link=NULL;
}
fclose(fp);
\*浏览信息模块:
voidshow2(intn)
structstudent*head;
请输入存放信息的文件路径以及文件名:
gets(fpname);
r+"
for(i=0;
fscanf(fp,"
%d%s%d%d%d%d%s%s%s"
\*按学号查找学生信息模块:
intsearch1(intn)
inti,checkname;
请输入要查询信息的学生学号:
%d"
checkname);
if(checkname==head->
number)
{
printf("
%d%s%c%d%d%d%s%s%s\n"
fclose(fp);
return
(1);
}
未找到"
\*按姓名查找学生信息模块:
voidsearch2(intn)
charfpname[20],checkname[10];
请输入要查询信息的学生姓名:
checkname);
if(strcmp(checkname,head->
name)==0)
未找到\n"
\*删除或修改文件信息模块:
intmost(n)
charget;
structstudent*ans[500];
charcheckname[10];
ans[0]=(structstudent*)malloc(sizeof(structstudent));
fscanf(fp,"
ans[0]->
number,ans[0]->
(*ans[0]).birthday.year,&
(*ans[0]).birthday.month,&
(*ans[0]).birthday.day,ans[0]->
address,ans[0]->
tel,ans[0]->
ans[i]=(structstudent*)malloc(sizeof(structstudent));
ans[i]->
number,ans[i]->
(*ans[i]).birthday.year,&
(*ans[i]).birthday.month,&
(*ans[i]).birthday.day,ans[i]->
address,ans[i]->
tel,ans[i]->
ans[i-1]->
link=ans[i];
ans[i]->
如果想修改信息请输入1加回车键,想删除信息输入2加回车键:
get=getchar();
if(get=='
1'
)
请输入要修改信息的学生姓名:
for(i=0;
if(strcmp(checkname,ans[i]->
{
printf("
请输入学生新信息学号姓名性别出生年月日地址电话e_mail:
getchar();
}
2'
请输入要删除的学生姓名:
ans[i-1]->
link=ans[i]->
link;
n--;
break;
fp=fopen(fpname,"
fprintf(fp,"
ans[i]->
name,ans[i]->
sex,(*ans[i]).birthday.year,(*ans[i]).birthday.month,(*ans[i]).birthday.day,ans[i]->
return(n);
\*主函数模块*\
voidmain()
charget,get2;
intn;
while
(1)
show();
get=getchar();
switch(get)
case'
:
请输入学生人数:
scanf("
n);
getchar();
credit(n);
break;
show2(n);
3'
按学号查找请输入1加回车键,按姓名查询请输入2加回车键:
get2=getchar();
if(get2=='
search1(n);
search2(n);
4'
n=most(n);
if(get!
='
&
get!
2.7总结
该程序主要使用结构体与结构化程序的设计,调用文件函数,设计函数时保持头脑思路清晰,有条理,保持各功能独立的函数来实现,需要对程序能熟练使用与掌握,我的函数侧重对单链表的使用,同时侧重文件运用时文件流动时文件信息不会流失。