学生学籍管理系统C课程设计报告正文.docx
- 文档编号:9166700
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:29
- 大小:386.31KB
学生学籍管理系统C课程设计报告正文.docx
《学生学籍管理系统C课程设计报告正文.docx》由会员分享,可在线阅读,更多相关《学生学籍管理系统C课程设计报告正文.docx(29页珍藏版)》请在冰豆网上搜索。
学生学籍管理系统C课程设计报告正文
1前言
现代科学飞速发展,世界也不断的变化,人类的生活随着科技的发展也发生着惊天动地的变化。
作为新时代的大学生,我们应该努力学习科学文化知识,以适应社会的发展要求。
以现代化的科学知识为祖国做贡献。
计算机C语言课程设计是一门实践性很强的课程,因此,我们可以从这里出发,将实践教学与理论教学达到密切结合。
。
根据实际题目,要求我小组编写一个程序来,用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
通过一个结构体数组来存放输入的每一位同学的信息(包括学号,姓名,性别,年龄,籍贯,系别,专业,班级),然后将其信息存入文件中。
输入一个学号查询该同学的信息,并显示在屏幕上。
2需求分析
2.1课程设计目的
用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
2.2课程设计任务
(1) 系统以菜单方式工作。
(2) 登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级;修改已知学号的学生信息;
(3) 删除已知学号的学生信息;
(4) 查找已知学号的学生信息;
(5)显示同一系学生信息和统计人数;
(6) 显示所有学生信息和统计人数人数;
2.3设计环境
(1)WINDOWS2000/2003/XP/7/Vista系统
(2)VisualC++或TC集成开发环境
2.4开发语言
C语言
3分析和设计
分析:
用数据文件存放学生的学籍,可对学生学籍进行注册,登录,修改,删除,查找,统计,学籍变化等操作。
(1)以系统以菜单方式工作,所以要有一个选项菜单。
printf("****************************************\n");
printf("*——请选择相应的功能——*\n");
printf("*1-----注册*\n");
printf("*2-----修改学生信息*\n");
printf("*3-----删除学生信息*\n");
printf("*4-----添加学生信息*\n");
printf("*5-----查找学生信息*\n");
printf("*6-----统计学生信息*\n");
printf("*7-----显示学生信息*\n");
printf("*8-----退出系统*\n");
printf("****************************************\n");
输出一个菜单。
(2)登记学生的学号,姓名,性别,年龄,籍贯,系别,专业,班级
定义函数ZHUCE(),用来输入学生信息,将信息存入123.txt中,inti=1;structstudenttemp;FILE*fp;fp=fopen("F:
//123.txt","w");/*指针指向文件123.txt*/
voidsave(structstudentstudent[])
{FILE*fp=NULL;fp=fopen("F:
//123.txt","ab+");fwrite(student,sizeof(structstudent),1,fp);
fclose(fp);/*将信息保存入123.txt中*/
(3)按学号查找学生信息
printf("\n请输入要查找学生信息的学号:
");
gets(tempXUEHAO);while(feof(fp)==0)
{fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",&temp.XUEHAO,&temp.XINGMING,&temp.XINGBIE,&temp.NIANLING,&temp.JIGUAN,&temp.ZHUANYE,&temp.BANJI,&temp.XIBIE);
if(strcmp(tempXUEHAO,temp.XUEHAO)==0)/*根据输入的学号从文件中诸葛查找符合条件的*/
……………..
3.1模块设计
定义结构体类型structstudent表示学生信息(包括:
学号,姓名,性别,年龄,籍贯,系别,专业,班级),定义一个结构体数组stud[],用来存放学生的信息,在F盘建一123.txt用储存学生信息。
定义函数CAIDAN(),用来输出菜单。
定义函数ZHUCE(),用来输入学生信息,将信息存入123.txt中。
定义函数XIUGAI(),用来修改学生信息,将信息存入123.txt中。
定义函数SHANCHU(),用来删除学生信息。
定义函数CHAZHO(),用来查找学生信息,可以通过学号查找、姓名超找。
……………
3.2系统流程图
+
系统流程图
3.3主要模块的流程图
main函数
YN
NY
N
NY
注册学生信息
4具体代码实现
#include
#include
#include
#include
#include
#defineN100
structstudent
{charXUEHAO[20];
charXINGMING[10];
charXINGBIE[4];
charNIANLING[10];
charJIGUAN[10];
charZHUANYE[10];
charBANJI[6];
charXIBIE[20];
}student;
voidCAIDAN();
voidZHUCE();
voidXIUGAI();
voidSHANCHU();
voiddel_XUEHAO(FILE*fp);
voiddel_XINGMING(FILE*fp);
voidCHAZHAO();
voidsch_XUEHAO(FILE*fp);
voidsch_XINGMING(FILE*fp);
voidTONGJI();
voidXIANSHI();
voidTIANJIA();
voidsave(structstudentstudent[]);
main()
{charchoose,yes_no;
do
{CAIDAN();
printf("\n请输入序号:
(1~8)");
choose=getch();
system("cls");
switch(choose)
{
case'1':
printf("%c",choose);ZHUCE();break;
case'2':
printf("%c",choose);XIUGAI();break;
case'3':
printf("%c",choose);SHANCHU();break;
case'4':
printf("%c",choose);TIANJIA();break;
case'5':
printf("%c",choose);CHAZHAO();break;
case'6':
printf("%c",choose);TONGJI();break;
case'7':
printf("%c",choose);XIANSHI();break;
case'8':
break;
default:
printf("\n%c序号不对!
\n",choose);
}
if(choose=='8')break;
printf("\n要继续选择吗?
(Y/N)\n");
do
{yes_no=getch();printf("%c",yes_no);}
while(yes_no!
='Y'&&yes_no!
='y'&&yes_no!
='N'&&yes_no!
='n');
}while(yes_no=='Y'||yes_no=='y');
}
voidCAIDAN()
{
system("cls");
printf("****************************************\n");
printf("*——请选择相应的功能——*\n");
printf("*1-----注册*\n");
printf("*2-----修改学生信息*\n");
printf("*3-----删除学生信息*\n");
printf("*4-----添加学生信息*\n");
printf("*5-----查找学生信息*\n");
printf("*6-----统计学生信息*\n");
printf("*7-----显示学生信息*\n");
printf("*8-----退出系统*\n");
printf("****************************************\n");
}
/*定义学生信息注册的函数*/
voidZHUCE()
{inti=1;
structstudenttemp;
FILE*fp;
fp=fopen("F:
//123.txt","w");
if(fp==NULL){printf("\n打开文件失败!
\n");return;}
printf("\n请输入第1个学生信息:
\n");
printf("学号(用#结束输入):
");
do
{gets(temp.XUEHAO);}
while(strcmp(temp.XUEHAO,"")==0);
printf("姓名(用#结束输入):
");gets(temp.XINGMING);
printf("性别(用#结束输入):
");gets(temp.XINGBIE);
printf("年龄(用#结束输入):
");gets(temp.NIANLING);
printf("籍贯(用#结束输入):
");gets(temp.JIGUAN);
printf("专业(用#结束输入):
");gets(temp.ZHUANYE);
printf("班级(用#结束输入):
");gets(temp.BANJI);
printf("系别(用#结束输入):
");gets(temp.XIBIE);
while(temp.XUEHAO[0]!
='#'&&temp.XINGMING[0]!
='#'&&temp.XINGBIE[0]!
='#'&&temp.NIANLING[0]!
='#'&&temp.JIGUAN[0]!
='#'&&temp.ZHUANYE[0]!
='#'&&temp.BANJI[0]!
='#'&&temp.XIBIE[0]!
='#'&&temp.XIBIE)
{fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",temp.XUEHAO,temp.XINGMING,temp.XINGBIE,temp.NIANLING,temp.JIGUAN,temp.ZHUANYE,temp.BANJI,temp.XIBIE,temp);
i++;
printf("\n请输入第%d个学生信息:
\n",i);
printf("学号(用#结束输入):
");
do
{gets(temp.XUEHAO);}
while(strcmp(temp.XUEHAO,"")==0);
printf("姓名(用#结束输入):
");gets(temp.XINGMING);
printf("性别(用#结束输入):
");gets(temp.XINGBIE);
printf("年龄(用#结束输入):
");gets(temp.NIANLING);
printf("籍贯(用#结束输入):
");gets(temp.JIGUAN);
printf("专业(用#结束输入):
");gets(temp.ZHUANYE);
printf("班级(用#结束输入):
");gets(temp.BANJI);
printf("系别(用#结束输入):
");gets(temp.XIBIE);
}
student=temp;
save(&temp);
fclose(fp);
}
/*定义保存函数*/
voidsave(structstudentstudent[])
{
FILE*fp=NULL;
fp=fopen("F:
//123.txt","ab+");
fwrite(student,sizeof(structstudent),1,fp);
fclose(fp);
}
/*定义查找学生信息的函数*/
voidCHAZHAO()
{charc;
FILE*fp;
fp=fopen("F:
//123.txt","r");
if(fp==NULL)
{printf("\n打开文件失败!
\n");return;}
printf("\n按学号查找
(1),还是按姓名查找
(2)?
");
c=getch();
putch(c);
if(c=='1')sch_XUEHAO(fp);
elseif(c=='2')sch_XINGMING(fp);
elseprintf("\n非法字符!
\n");
fclose(fp);
}
/*定义按学号查找学生信息的函数*/
voidsch_XUEHAO(FILE*fp)
{intflag=0,n=0;
chartempXUEHAO[20];
structstudenttemp;
printf("\n请输入要查找学生信息的学号:
");
gets(tempXUEHAO);
while(feof(fp)==0)
{fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",&temp.XUEHAO,&temp.XINGMING,&temp.XINGBIE,&temp.NIANLING,&temp.JIGUAN,&temp.ZHUANYE,&temp.BANJI,&temp.XIBIE);
if(strcmp(tempXUEHAO,temp.XUEHAO)==0)
{if(flag==0)
printf("学号姓名姓别年龄籍贯专业班级系别\n");
printf("%5s%10s%10s%10s%10s%10s%10s%10s\n",temp.XUEHAO,temp.XINGMING,temp.XINGBIE,temp.NIANLING,temp.JIGUAN,temp.ZHUANYE,temp.BANJI,temp.XIBIE);
flag=1;
}
n++;
}
if(n==0)printf("\n文件中无此信息!
\n");
elseif(flag==0)printf("\n文件中无此人!
\n");
}
/*定义按姓名查找学生信息的函数*/
voidsch_XINGMING(FILE*fp)
{intflag=0,n=0;
chartempXINGMING[10];
structstudenttemp;
printf("\n请输入要查找学生信息的姓名:
");
gets(tempXINGMING);
while(feof(fp)==0)
{fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",&temp.XUEHAO,&temp.XINGMING,&temp.XINGBIE,&temp.NIANLING,&temp.JIGUAN,&temp.ZHUANYE,&temp.BANJI,&temp.XIBIE);
if(strcmp(tempXINGMING,temp.XINGMING)==0)
{if(flag==0)printf("学号姓名姓别年龄籍贯专业班级系别\n");
printf("%5s%10s%10s%10s%10s%10s%10s%10s\n",temp.XUEHAO,temp.XINGMING,temp.XINGBIE,temp.NIANLING,temp.JIGUAN,temp.ZHUANYE,temp.BANJI,temp.XIBIE);
flag=1;
}
n++;
}
if(n==0)printf("\n文件中无此信息!
\n");
elseif(flag==0)printf("\n文件中无此人!
\n");
}
/*定义删除学生信息的函数*/
voidSHANCHU()
{charc;
FILE*fp;
fp=fopen("F:
//123.txt","r");
if(fp==NULL)
{printf("\n文件打开失败!
\n");return;}
printf("\n按学号删除
(1),还是按姓名删除
(2)?
");
c=getch();
putch(c);
if(c=='1')del_XUEHAO(fp);
elseif(c=='2')del_XINGMING(fp);
elseprintf("\n非法字符!
\n");
}
/*定义按学号删除学生信息的函数*/
voiddel_XUEHAO(FILE*fp)
{chartempXUEHAO[20];
intn=0,i=0,k;
structstudentstu[N];
while(feof(fp)==0)
{fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHUANYE,stu[i].BANJI,stu[i].XIBIE);i++;n++;}
fclose(fp);
printf("\n请输入要删除的学生信息的学号:
");
scanf("%s",tempXUEHAO);
printf("删除成功!
");
for(i=0;i if(strcmp(tempXUEHAO,stu[i].XUEHAO)==0)break; if(i for(k=i;k stu[k]=stu[k+1]; elseprintf("\n无此人! \n"); fp=fopen("F: //123.txt","w"); if(fp==NULL) {printf("\n文件打开失败! \n");return;} for(i=0;i fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHUANYE,stu[i].BANJI,stu[i].XIBIE); } /*定义按姓名删除学生信息的函数*/ voiddel_XINGMING(FILE*fp) {chartempXINGMING[10]; intn=0,i=0,k; structstudentstu[N]; while(feof(fp)==0) {fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHUANYE,stu[i].BANJI,stu[i].XIBIE);i++;n++;} fclose(fp); printf("\n请输入要删除的学生信息的姓名: "); scanf("%s",tempXINGMING); printf("删除成功! "); for(i=0;i if(strcmp(tempXINGMING,stu[i].XINGMING)==0)break; if(i for(k=i;k stu[k]=stu[k+1]; elseprintf("\n无此人! \n"); fp=fopen("G: //123.txt","w"); if(fp==NULL) {printf("\n文件打开失败! \n");return;} for(i=0;i fprintf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHUANYE,stu[i].BANJI,stu[i].XIBIE); } /*定义添加学生信息的函数*/ voidTIANJIA() {charc; intn=0,i=0; structstudenttemp,stu[N]; FILE*fp; fp=fopen("F: //123.txt","r"); if(fp==NULL) {printf("\n打开文件失败! \n");return;} while(feof(fp)==0) {fscanf(fp,"%5s%10s%10s%10s%10s%10s%10s%10s\n",stu[i].XUEHAO,stu[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHUANYE,stu[i].BANJI,stu[i].XIBIE);i++;n++;} fclose(fp); for(i=0;i printf("\n%s%s%s%s%s%s%s%s\n",stu[i].XUEHAO,stu[i].XINGMING,stu[i].XINGBIE,stu[i].NIANLING,stu[i].JIGUAN,stu[i].ZHUANYE,stu[i].BANJI,stu[i].XIBIE); do {printf("\n请输入新学生信息的学号: "); do {scanf("%s",temp.XUEHAO);} while(strcmp(temp.XUEHAO,"")==0); pri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 学籍 管理 系统 课程设计 报告 正文