学生信息系统 课程设计.docx
- 文档编号:8067999
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:17
- 大小:155.72KB
学生信息系统 课程设计.docx
《学生信息系统 课程设计.docx》由会员分享,可在线阅读,更多相关《学生信息系统 课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
学生信息系统课程设计
学生信息管理系统
学生姓名:
学号:
班级:
指导老师:
日期:
2、课程设计正文格式:
1题目及要求
学生信息管理系统
此题目要求,使用结构体静态数组存储数据,并要求使用户输入的数据或者修改后的数据能够永久保存。
1.1问题提出
详细叙述本人所要实现的题目中的问题
我编写一个学生信息管理系统,主要用来管理学生基本信息。
1.2本系统涉及的知识点
如:
结构体、数组、循环、函数、分支、文件、字符串、指针;
1.3功能分析
叙述本人所要实现的题目功能
1、添加学生信息,每个学生的信息包括:
学号、姓名、电话、生日、地址、班级;
2、根据学号删除该学生信息或删除全部学生信息;
3、根据学号、姓名查询学生信息;
4、可以以表格形式输出所有学生信息;
5、输入欲修改的那人的名字后,再次进行信息修改;
6、保存此学生信息系统;
2功能设计
画出模块层次结构图
学生信息管理系统
2.1菜单设计
2.2各功能模块的算法设计
增加学生信息模块:
1.1打开文件。
1.2用scanf输入数据,保存再结构数组中。
1.3用fwrite函数将结构体数组读入学生信息文件中,关闭文件。
显示学生信息模块:
1.1只读打开文件
1.2将文件的信息读入结构体数组中;
1.3将结构体的内容显示在窗口上。
1.4关闭文件。
查询学生信息模块:
1.1打开文件,读出信息;
1.2输入要查询的学号或姓名;
1.3如有该学号或姓名,打印该学生的信息;
1.4关闭文件。
修改学生信息模块:
1.1打开文件,读出信息;
1.2输入要修改的学生信息的学号。
1.3若有此学号,则重新输入此学生信息。
1.4覆盖原先的信息,读入文件;关闭文件。
删除学生信息模块:
1.1打开文件,读出信息,关闭文件。
1.2选择要单个删除—1.3,选择全部删除—1.5;
1.3打开文件,输入要删除的学号;
1.4若有此学号,覆盖此条信息,已少一次数,读入文件,关闭文件;若无,返回1.3;
1.5打开文件。
将空字符读入文件中,覆盖原先的信息,关闭文件。
3程序代码设计
(-)增加模块
1)函数原形:
voidadd(void)
2)功能:
利用for循环语句和scanf、getchar函数完成对结构数组的输入,再用再用fwrite函数将结构数组读入学生信息表中。
存放n个学生的信息(学号、姓名、电话、生日、地址、班级)。
3)输入输出:
无。
(二)查询模块
1)函数原形:
voidsearch(void)
2)功能:
打开文件后,根据strcmp函数进行对比,可以进行学号与姓名查询,用fread函数将文件中信息读到结构体数组中,相同就打印到窗口上。
3)输入输出:
无。
(三)修改模块
1)函数原形:
voidmodi(void)
2)功能:
输入要修改的姓名,用fread函数将文件中信息读到结构体数组中,根据strcmp函数进行对比,然后根据fwrite函数进行修改覆盖,得到新文件。
3)输入输出:
无。
(四)删除模块
1)函数原形:
voiddel(void)
2)功能:
用fread函数将文件中信息读到结构体数组中,依次将输入的学号根据strcmp函数进行对比,然后再进行选择性删除。
3)输入输出:
无。
(五)显示模块
1)函数原形:
voidprint(void)
2)功能:
用freed函数打开存储的文件使其显示在屏幕上。
3)输入输出:
无。
(六)源程序代码
#include
#include
#include
voidprint(void);//显示函数
voidadd(void);//增加函数
voidsearch(void);//查找函数
voidmodi(void);//修改函数
voiddel(void);//删除函数
//定义结构体
typedefstructstudent
{
charname[20];
charnum[20];
charban[20];
charbirthday[20];
charphone[20];
charaddress[200];
}STU;
STUstu[2000];
FILE*fp;
//主函数
intmain(void)
{
inti;
do
{
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("|---------------------------------|\n");
printf("请选择你的操作:
(1~6)\n");
scanf("%d",&i);
if(i==1)add();
if(i==2)del();
if(i==3)search();
if(i==4)print();
if(i==5)modi();
if(i==6){
printf("谢谢您的使用!
\n");
break;
}
}while(i>0&&i<7);
if(i>6||i<1)
printf("你的输入错误\n");
return0;
}
/*增加函数*/
voidadd(void)
{
intm,i;
if((fp=fopen("学生信息表.txt","a+"))==NULL)//为读写打开学生信息表文本文件
{
printf("Cannotopenfilestrikeanykeyexit!
");
getchar();
exit
(1);
}
printf("请输入要添加学生的人数:
");
scanf("%d",&m);
for(i=1;i<=m;i++)
{
printf("请输入姓名:
\n");
scanf("%s",stu[i].name);
printf("请输入学号:
\n");
scanf("%s",stu[i].num);
printf("请输入班级:
\n");
scanf("%s",stu[i].ban);
printf("请输入生日:
\n");
scanf("%s",stu[i].birthday);
printf("请输入电话号码:
\n");
scanf("%s",stu[i].phone);
printf("请输入地址:
\n");
scanf("%s",stu[i].address);
fwrite(&stu[i],sizeof(STU),1,fp);//把结构体的数据写入学生信息表中
printf("\n");
}
fclose(fp);//关闭学生信息表文本文件
}
/*显示函数*/
voidprint(void)
{
inti,n;
if((fp=fopen("学生信息表.txt","r"))==NULL)//为输入打开学生信息表文本文件
{
printf("Cannotopenfilestrikeanykeyexit!
");
exit(0);
}
for(i=0;fread(&stu[i],sizeof(STU),1,fp)!
=0;i++);//读出学生信息
n=i;
printf("姓名学号班级电话生日地址\n");printf("-------------------------------------------------------\n");
for(i=0;i { printf("%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].name,stu[i].num,stu[i].ban,stu[i].phone,stu[i].birthday,stu[i].address); printf("--------------------------------------------------------\n"); } fclose(fp);//关闭学生信息表文本文件 } /*查询函数*/ voidsearch(void) { inti,n; charnumber[20],name[20]; if((fp=fopen("学生信息表.txt","r"))==NULL)//为输入打开学生信息表文本文件 { printf("Cannotopenfilestrikeanykeyexit! "); exit(0); } for(i=0;fread(&stu[i],sizeof(STU),1,fp)! =0;i++);//读取学生信息表文本文件 n=i; intxz; printf("------------------------------------------------\n"); printf("1.学号查询\n"); printf("2.姓名查询\n"); printf("------------------------------------------------\n"); printf("请选择: \n"); scanf("%d",&xz); if(xz==1){ printf("\n请输入要查找学生的学号: "); scanf("%s",number); for(i=0;i { if(strcmp(number,stu[i].num)==0) { printf("\n该学生已找到\n"); printf("----------------------------------------\n"); printf("姓名: %s\n",stu[i].name); printf("学号: %s\n",stu[i].num); printf("班级: %s\n",stu[i].ban); printf("电话: %s\n",stu[i].phone); printf("出生日期: %s\n",stu[i].birthday); printf("地址: %s\n",stu[i].address); break; } else printf("\n没有你要找的学生! ! ! \n\n"); } } else if(xz=2){ printf("请输入要查询者的姓名: "); scanf("%s",name); for(i=0;i { if(strcmp(name,stu[i].name)==0) { printf("该学生已找到\n"); printf("----------------------------------------\n"); printf("姓名: %s\n",stu[i].name); printf("学号: %s\n",stu[i].num); printf("班级: %s\n",stu[i].ban); printf("电话: %s\n",stu[i].phone); printf("出生日期: %s\n",stu[i].birthday); printf("地址: %s\n",stu[i].address); break; } else printf("\n没有你要找的学生! ! ! \n\n"); } } fclose(fp);//关闭学生信息表文本文件 } /*修改函数*/ voidmodi(void) { inti,n; charname[20]; if((fp=fopen("学生信息表.txt","r+"))==NULL)//为读写打开学生信息表文本文件 { printf("Cannotopenfilestrikeanykeyexit! "); exit(0); } printf("请输入你要修改的学生的姓名: "); scanf("%s",name); for(i=0;fread(&stu[i],sizeof(STU),1,fp)! =0;i++); n=i; for(i=0;i if(strcmp(name,stu[i].num)==0){ printf("----------------------------------------\n"); printf("请重新输入姓名: \n");scanf("%s",stu[i].name); printf("请重新输入学号: \n");scanf("%s",stu[i].num); printf("请重新输入班级: \n");scanf("%s",stu[i].ban); printf("请重新输入电话: \n");scanf("%s",stu[i].phone); printf("请重新输入生日: \n");scanf("%s",stu[i].birthday); printf("请重新输入地址: \n");scanf("%s",stu[i].address);} fclose(fp); if((fp=fopen("学生信息表.txt","w"))==NULL){}//为输出打开学生信息表文本文件 for(i=0;i fwrite(&stu[i],sizeof(STU),1,fp);//覆盖要修改的学生信息 fclose(fp);//关闭学生信息表文本文件 } /*删除函数*/ voiddel(void) { charnumber[20],stud[300]; intflag=0,i,k,ch,n,temp; if((fp=fopen("学生信息表.txt","r"))==NULL)//为输入打开学生信息表文本文件 { printf("Cannotopenfilestrikeanykeyexit! "); getchar(); exit (1); } for(i=0;fread(&stu[i],sizeof(STU),1,fp)! =0;i++);//读出学生信息 n=i; fclose(fp); printf("********1.单个删除*****2.全部删除*********\n"); printf("输入你的选择: "); scanf("%d",&ch); if(ch==1){ loop: printf("输入要删除学生的学号: "); scanf("%s",number); for(i=0;i if(strcmp(stu[i].num,number)==0) { flag=1; k=i; } printf("************是否确定删除? *************\n"); printf("************1--是**2--否***************\n"); scanf("%d",&temp); if(temp==2) gotoloop; if(flag==0) { printf("**********列表中无此记录********\n"); gotoloop; } for(i=k;i { strcpy(stu[i].name,stu[i+1].name); strcpy(stu[i].num,stu[i+1].num); strcpy(stu[i].ban,stu[i+1].ban); strcpy(stu[i].birthday,stu[i+1].birthday); strcpy(stu[i].phone,stu[i+1].phone); strcpy(stu[i].address,stu[i+1].address); } if((fp=fopen("学生信息表.txt","w"))==NULL)//为输出打开学生信息表文本文件 { printf("Cannotopenfilestrikeanykeyexit! "); getchar(); exit (1); } n=n-1; for(i=0;i fwrite(&stu[i],sizeof(STU),1,fp);//重新输出已修改的学生信息表 fclose(fp); printf("已删除成功\n"); } if(ch==2) { printf("************是否确定删除? *************\n"); printf("************1--是**2--否***************"); scanf("%d",&temp); if((fp=fopen("学生信息表.txt","w"))==NULL)//为输出打开学生信息表文本文件 { printf("Cannotopenfilestrikeanykeyexit! "); getchar(); exit (1); } if(temp==1); fputs("",fp); printf("已全部删除\n"); fclose(fp); } } 4.运行结果测试
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生信息系统 课程设计 学生 信息系统