高校新生报到系统.docx
《高校新生报到系统.docx》由会员分享,可在线阅读,更多相关《高校新生报到系统.docx(26页珍藏版)》请在冰豆网上搜索。
高校新生报到系统
沈阳航空工业学院
课程设计
学号
班级
姓名
指导教师
2008年3月7日
沈阳航空工业学院
课程设计任务书
一、课程设计题目:
高校新生报到系统
二、课程设计工作自2008年3月3日起至2008年3月7日止
三、课程设计内容:
用C语言编写软件完成以下任务:
①数据信息(新生学号,姓名,来自省份,被录取系别及专业,高考分数,应交学费,宿舍号,等)保存在fresh.dat文件中
②新生报到
③查询未报到的学生
④学生可以转专业
⑤按学号显示学生信息
四、课程设计要求:
程序质量:
1.贯彻结构化程序设计思想。
2.用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
3.用户界面中的菜单至少应包括“录入数据信息”、“新生报到”、“查询未报到的学生”、“专业调整”、“显示学生信息”、“退出”6项。
4.代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
课程结束后,上交课程设计说明书(打印稿和电子稿),其内容如下:
●封面
●课程设计任务书
●目录
●需求分析(分析题目的要求)
●程序流程图(总体流程图和主要功能模块流程图)
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
________学生签名:
________
目录
一、需求分析2
二、程序流程图3
三、核心技术的实现说明及相应程序段6
四、个人总结15
五、参考文献15
六、源程序16
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别是:
录入数据信息函数(input),新生报到函数(xsbd),查询未报到的学生函数(chaxun_not),转专业函数(zhuan),按学号显示学生信息函数(chaxun_student_number)。
1录入数据信息函数:
主要实现程序最初运行时新生数据信息的录入。
2新生报道函数:
报道新生,录入新生数据信息。
3查询未报到的学生函数:
在文件中读取学生信息,把没有报到的学生输出。
4学生转专业函数:
对报道的学生信息数据进行修改,输入学生学号和学生的新专业。
5按学号显示学生信息函数:
实现的是按学号显示学生记录信息。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个学生记录信息都包含新生学号,姓名,来自省份,被录取系别及专业,高考分数,应交学费,宿舍号,等内容。
二、程序流程图
1主函数流程图
2录入函数流程图
3查询学生信息函数
三、核心技术的实现说明及相应程序段
本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,录入数据信息函数,新生报到函数,查询未报到的学生函数,转专业函数,按学号显示学生信息函数是程序中较为核心的部分,下面分别进行说明。
#include"stdlib.h"
#include"stdio.h"
#include"string.h"
//定义结构体
structstudent
{
charxuehao[50];
charxingming[50];
charshengfen[50];
charxibie[50];
charzhuanye[50];
intgaokao;
intxuefei;
charsushe[50];
intbaodao;
};
1录入数据信息函数
输入学生信息函数,函数的功能是输入学生信息并且把学生信息存入文件中。
先用fopen语句以只写的方式打开文件,输入一名学生的学号、姓名等基本信息并且把学生信息写入到文件中。
关闭文件,退出
voidinput()
{
//定义文件类型指针
FILE*fp;
inti,j,test=1;
structstudentss;
//新建文件studnet.txt
if((fp=fopen("d:
\\student.txt","w+"))==NULL)
{
printf("\n文件不能代开");
return;
}
while(test==1)
{
printf("\n请输入学生学号:
");
scanf("%s",ss.xuehao);
fprintf(fp,"%s\t",ss.xuehao);
printf("\n请输入学生姓名:
");
scanf("%s",ss.xingming);
fprintf(fp,"%s\t",ss.xingming);
printf("\n请输入学生省份:
");
scanf("%s",ss.shengfen);
fprintf(fp,"%s\t",ss.shengfen);
printf("\n请输入学生系别:
");
scanf("%s",ss.xibie);
fprintf(fp,"%s\t",ss.xibie);
printf("\n请输入学生专业:
");
scanf("%s",ss.zhuanye);
fprintf(fp,"%s\t",ss.zhuanye);
printf("\n请输入学生高考分数:
");
scanf("%d",&ss.gaokao);
fprintf(fp,"%d\t",ss.gaokao);
printf("\n请输入学生学费:
");
scanf("%d",&ss.xuefei);
fprintf(fp,"%d\t",ss.xuefei);
printf("\n请输入学生宿舍:
");
scanf("%s",ss.sushe);
fprintf(fp,"%s\t",ss.sushe);
ss.baodao=1;
fprintf(fp,"%d\n",ss.baodao);
printf("\n继续录入学生信息请输入1,退出请输入其它数字");
scanf("%d",&test);
}
//关闭文件
fclose(fp);
}
2新生报道函数
新生报到函数,以读写的方式打开文件student.txt,输入报到学生的学号,在文件student.txt中读取学生信息并且把学生信息与输入的学生学号进行判断,如果两个学号相同,则学生报到信息修改为1。
关闭文件。
voidxsbd()
{
FILE*fp;
inti,j,sum,baodao;
charnumber[10];
structstudentss[20];
//打开文件student.txt
if((fp=fopen("d:
\\student.txt","r+"))==NULL)
{
printf("\n不能打开文件");
return;
}
printf("\n请输入报到学生学号:
");
scanf("%s",number);
i=0;
baodao=0;
//判断文件是否结束
while(!
feof(fp))
{
//在wenjianzhong读取学生信息到结构体中
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,&ss[i].gaokao,&ss[i].xuefei,ss[i].sushe,&ss[i].baodao);
if(strcmp(ss[i].xuehao,number)==0)
{
baodao++;
ss[i].baodao=2;
}
i++;
}
sum=i;
fclose(fp);
/*建立文件studnet.txt*/
fp=fopen("d:
\\student.txt","w+");
/*向文件中写入学生信息*/
for(i=0;i{
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,ss[i].gaokao,ss[i].xuefei,ss[i].sushe,ss[i].baodao);
}
/*关闭文件*/
fclose(fp);
}
3查询未报到的学生函数
查询没有报到的学生信息。
打开文件student.txt,并且逐行读取学生信息,判断学生是否报到,没有报到输出学生信息。
之后判断文件是否结束,当文件结束时,关闭文件退出。
否则继续读取下一个学生信息并且继续进行判断,直到文件结束为止。
voidchaxun_not()
{
FILE*fp;
inti,j,sum,baodao;
charnumber[10];
structstudentss[20];
if((fp=fopen("d:
\\student.txt","r+"))==NULL)
{
printf("\n不能打开文件");
return;
}
i=0;
baodao=0;
while(!
feof(fp))
{
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,&ss[i].gaokao,&ss[i].xuefei,ss[i].sushe,&ss[i].baodao);
if(ss[i].baodao==1)
{
baodao++;
printf("%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,ss[i].gaokao,ss[i].xuefei,ss[i].sushe,ss[i].baodao);
}
i++;
}
if(baodao==0)
{
printf("\n学生已经全部报道");
}
fclose(fp);
}
4按学号显示学生信息函数
voidchaxun_student_number()
{
FILE*fp;
inti,j,sum,baodao;
charnumber[10];
structstudentss[20];
if((fp=fopen("d:
\\student.txt","r+"))==NULL)
{
printf("\n不能打开文件");
return;
}
i=0;
while(!
feof(fp))
{
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,&ss[i].gaokao,&ss[i].xuefei,ss[i].sushe,&ss[i].baodao);
printf("%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,ss[i].gaokao,ss[i].xuefei,ss[i].sushe,ss[i].baodao);
i++;
}
fclose(fp);
}
5学生转专业函数
voidzhuan()
{
FILE*fp;
inti,j,sum,baodao;
charnumber[10];
structstudentss[20];
printf("\n请输入学生学号:
");
scanf("%s",number);
if((fp=fopen("d:
\\student.txt","r+"))==NULL)
{
printf("\n不能打开文件");
return;
}
i=0;
baodao=0;
while(!
feof(fp))
{
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,&ss[i].gaokao,&ss[i].xuefei,ss[i].sushe,&ss[i].baodao);
if(strcmp(ss[i].xuehao,number)==0)
{
printf("\n请输入学生新专业:
");
scanf("%s",ss[i].zhuanye);
baodao++;
}
i++;
}
sum=i;
if(baodao==0)
{
printf("\n文件中没有这个学生");
}
fclose(fp);
fp=fopen("d:
\\student.txt","w+");
for(i=0;i{
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,ss[i].gaokao,ss[i].xuefei,ss[i].sushe,ss[i].baodao);
}
fclose(fp);
}
主函数
voidmain()
{
inti;
while
(1)
{
printf("\n********************************高校新生报道系统********************************");
printf("\n********************************************************************************");
printf("\n***************************欢迎来到沈阳航空工业大学!
***************************");
printf("\n********************************************************************************");
printf("\n1---------数据信息录入");
printf("\n2-------------新生报到");
printf("\n3-----查询未报到的学生");
printf("\n4-----------学生转专业");
printf("\n5---按学号显示学生信息");
printf("\n6-------------退出系统");
printf("\n输入选择:
");
scanf("%d",&i);
/*多分枝选择结构*/
switch(i)
{
case1:
input();break;
case2:
xsbd();break;
case3:
chaxun_not();break;
case4:
zhuan();break;
case5:
chaxun_student_number();break;
case6:
exit(0);break;
default:
printf("\n输入错误,请重新输入");
}
}
}
四、个人总结
通过这次课设让我对计算机有了更深及更多的了解,一丝不苟的学习习惯是做好一件事的关键所在。
这次课设中我有许多东西不懂,在我不知道所措的时候我更多的选择的不是自己去想,而是去问老师同学,这样不但使他们让我明白了,我所不懂的,而且也让我了解了,老师同学之间的通力合作是多么重要。
也许以后的工作中真少不了同事与朋友之间的合作吧,这次课设也许就是一个开始。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include"stdlib.h"
#include"stdio.h"
#include"string.h"
/*定义结构体*/
structstudent
{
charxuehao[50];
charxingming[50];
charshengfen[50];
charxibie[50];
charzhuanye[50];
intgaokao;
intxuefei;
charsushe[50];
intbaodao;
};
voidinput()
{
inti,j,test=1;
structstudentss;
/*新建文件studnet.txt*/
FILE*fp;
if((fp=fopen("d:
\\student.txt","w+"))==NULL)
{
printf("\n文件不能代开");
return;
}
while(test==1)
{
printf("\n请输入学生学号:
");
scanf("%s",ss.xuehao);
fprintf(fp,"%s\t",ss.xuehao);
printf("\n请输入学生姓名:
");
scanf("%s",ss.xingming);
fprintf(fp,"%s\t",ss.xingming);
printf("\n请输入学生省份:
");
scanf("%s",ss.shengfen);
fprintf(fp,"%s\t",ss.shengfen);
printf("\n请输入学生系别:
");
scanf("%s",ss.xibie);
fprintf(fp,"%s\t",ss.xibie);
printf("\n请输入学生专业:
");
scanf("%s",ss.zhuanye);
fprintf(fp,"%s\t",ss.zhuanye);
printf("\n请输入学生高考分数:
");
scanf("%d",&ss.gaokao);
fprintf(fp,"%d\t",ss.gaokao);
printf("\n请输入学生学费:
");
scanf("%d",&ss.xuefei);
fprintf(fp,"%d\t",ss.xuefei);
printf("\n请输入学生宿舍:
");
scanf("%s",ss.sushe);
fprintf(fp,"%s\t",ss.sushe);
ss.baodao=1;
fprintf(fp,"%d\n",ss.baodao);
printf("\n继续录入学生信息请输入1,退出请输入其它数字");
scanf("%d",&test);
}
fclose(fp);
}
/*新生报到函数*/
voidxsbd()
{
FILE*fp;
inti,j,sum,baodao;
charnumber[10];
structstudentss[20];
/*打开文件student.txt*/
if((fp=fopen("d:
\\student.txt","r+"))==NULL)
{
printf("\n不能打开文件");
return;
}
printf("\n请输入报到学生学号:
");
scanf("%s",number);
i=0;
baodao=0;
/*判断文件是否结束*/
while(!
feof(fp))
{
/*在文件中读取学生信息到结构体中*/
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,&ss[i].gaokao,&ss[i].xuefei,ss[i].sushe,&ss[i].baodao);
if(strcmp(ss[i].xuehao,number)==0)
{
baodao++;
ss[i].baodao=2;
}
i++;
}
sum=i;
fclose(fp);
/*建立文件studnet.txt*/
fp=fopen("d:
\\student.txt","w+");
/*向文件中写入学生信息*/
for(i=0;i{
fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,ss[i].gaokao,ss[i].xuefei,ss[i].sushe,ss[i].baodao);
}
fclose(fp);
}
voidchaxun_not()
{
FILE*fp;
inti,j,sum,baodao;
charnumber[10];
structstudentss[20];
if((fp=fopen("d:
\\student.txt","r+"))==NULL)
{
printf("\n不能打开文件");
return;
}
i=0;
baodao=0;
while(!
feof(fp))
{
fscanf(fp,"%s\t%s\t%s\t%s\t%s\t%d\t%d\t%s\t%d\n",ss[i].xuehao,ss[i].xingming,ss[i].shengfen,ss[i].xibie,ss[i].zhuanye,&ss[i].gaokao,&ss[i].xuefei,ss[i].sushe,&ss[i].baodao);
if(ss[i].baodao==1)
{
baodao++;
printf("%s\t%s\t%