新生报到系统.docx
《新生报到系统.docx》由会员分享,可在线阅读,更多相关《新生报到系统.docx(19页珍藏版)》请在冰点文库上搜索。
新生报到系统
课程设计
学号
班级
姓名
指导教师
2008年6月28日
课程设计任务书
题目:
新生报到系统
一、课程设计时间
2007~08第2学期第17周,即6月23~27日,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成新生报到系统,新生名单存放在file18.txt文件中。
程序应具有以下菜单,并实现其功能:
(1)从file18.txt中读入新生的信息(学号、姓名、民族、省份、高考分数、专业),并保存到myfile.txt文件中;
(2)新生报到;
(3)打印所有未报到的新生;
(4)学生信息查询(根据学号、姓名、省份);
(5)退出程序。
三、课程设计要求
程序质量:
✧贯彻结构化的程序设计思想。
✧用户界面友好,功能明确,操作方便。
✧代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩
六、教师评语
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段5
四、个人总结7
五、参考文献8
六、源程序8
一、需求分析
本题要求将提供的数据从file18.txt中读入到myfile.txt文件中并依次将报到的新生信息录入;打印所有未报到的新生信息;查询新生信息;退出四项要求。
经过对程序设计题目的分析可知,整个程序的设计实现大致分为五个模块,其中每一个模块对应一个函数,他们的功能分别为
1、从file18.txt文件中读入信息(学号,姓名,民族,省份,高考分数,专业)并保存到myfile.txt文件中。
(insert-information函数)。
2、将报到的新生信息录入(baodao函数)。
3、打印所有未报到的学生信息。
(dayin函数)。
4、查询学生信息(chaxun函数)。
5、退出。
二、程序流程图
程序总体结构图
(1)读取信息图。
(2)新生报到函数
(3)打印未报到同学信息
(4)查询学生信息函数
三、核心技术的实现说明及相应程序段
本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,从file.18txt中读入信息到myfile.txt文件中并保存;新生报到;打印未报到的学生信息;学生信息查询为核心的部分,下面分别进行说明。
1、从file18.txt文件中读入信息并保存到myfile.txt文件中.voidinsert_informaion()
{
FILE*fp1,*fp2;
inti;
if((fp1=fopen("e:
\\file18.txt","r+"))==NULL)
{printf("\n不能打开文件");
return;
}for(i=0;i<20;i++)
{fscanf(fp1,"%s%s%s%s%d%s",stud[i].xuehao,stud[i].xingming,stud[i].minzu,stud[i].sheng,&stud[i].fenshu,stud[i].zhuanye);
}
fclose(fp1);
if((fp2=fopen("e:
\\myfile.txt","r+"))==NULL)/*打开文件*/
{printf("\n不能打开文件");
return;}
for(i=0;i<20;i++)
{fprintf(fp2,"%15s,%7s,%5s,%7s,%5d,%20s\n",stud[i].xuehao,stud[i].xingming,stud[i].minzu,stud[i].sheng,stud[i].fenshu,stud[i].zhuanye);}/*在文件中输出学生信息*/
fclose(fp2);/*关闭文件*/
}
}
2、录入报到学生信息
voidbaodao()
{
FILE*fp;
inti,flag=0,shu,j;
charnumber[20];
if((fp=fopen("e:
\\file18.txt","r+"))==NULL)
{
printf("\nCannotopenfiel");
return;
}
for(i=0;i<20;i++)
{
fscanf(fp,"%s%s%s%s%d%s",stud[i].xuehao,stud[i].xingming,
stud[i].minzu,stud[i].sheng,&stud[i].fenshu,stud[i].zhuanye);
}
printf("\n请输入本次报到的学生数量:
");
scanf("%d",&shu);
for(j=0;j{
flag=0;
printf("\n请输入学生学号:
");
scanf("%s",number);
for(i=0;i<20;i++)
{
if(strcmp(stud[i].xuehao,number)==0)/*比较输入数据与原文件中数据*/
{stud[i].dao=1;
flag++;
printf("%15s,%7s,%5s,%7s,%5d,%20s\n",stud[i].xuehao,stud[i].xingming,
stud[i].minzu,stud[i].sheng,stud[i].fenshu,stud[i].zhuanye);}
}
if(flag==0)
{
printf("\n找不到这个学生信息");
}
}
fclose(fp);
if((fp=fopen("e:
\\myfile.txt","r+"))==NULL)
{
printf("\nCannotopenfile");
return;
}
fclose(fp);
}运行结果
3、打印未报到新生信息voiddayin()
{
FILE*wenjian;
inti,flag=0;
if((wenjian=fopen("e:
\\file18.txt","r+"))==NULL)
{
printf("\nCannotopenfiel");
return;
}
printf("\n未报到的新生信息");
printf("\n");
for(i=0;i<20;i++)/*利用for循环将未到新生信息打印*/
{
fscanf(wenjian,"%s%s%s%s%d%s",stud[i].xuehao,stud[i].xingming,
stud[i].minzu,stud[i].sheng,&stud[i].fenshu,stud[i].zhuanye);
if(stud[i].dao==0)
printf("%15s,%7s,%5s,%7s,%5d,%20s\n",stud[i].xuehao,stud[i].xingming,
stud[i].minzu,stud[i].sheng,stud[i].fenshu,stud[i].zhuanye);
}
fclose(wenjian);
}
4.查询学生信息voidchaxun()
{
FILE*fp1;
inti;
if((fp1=fopen("e:
\\file18.txt","r+"))==NULL)
{
printf("\n不能打开文件");
return;
}
for(i=0;i<20;i++)
{
fscanf(fp1,"%s%s%s%s%d%s",stud[i].xuehao,stud[i].xingming,
stud[i].minzu,stud[i].sheng,&stud[i].fenshu,stud[i].zhuanye);
}
fclose(fp1);
chara[13];
puts("请输入学生信息\n");
scanf("%s",a);
{for(i=0;i<20;i++)
if(strcmp(stud[i].xuehao,a)==0)
printf("%15s,%7s,%5s,%7s,%5d,%20s\n",stud[i].xuehao,stud[i].xingming,
stud[i].minzu,stud[i].sheng,stud[i].fenshu,stud[i].zhuanye);
}
if(strcmp(stud[i].xuehao,a)!
=0)
printf("没有该同学信息");
}
四、个人总结
这次C语言课程设计消除了我对C语言的错误认识,以前认为C语言就是简单的学科,只是简单的编程设计,其实不然,每个程序都要深刻掌握其真正操作价值,有时几个语句可以通过某种方式简化或是合并,通过这次C语课程设计,使我加深了对C语言的了解,也提高了C语言的应用能力。
这次课程任务设计,主要应用了文件的打开和数据的读取等多方面知识,起初不是很清楚这些内容的我,在多次查书翻资料请教老师同学之后,使我能够完成整个任务.这次课设使我熟练掌握知识的同时还增强了我的实际动手的能力,检验了我们将所学知识应用于实践的能力,使我受益匪浅。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
#include
#include
#include
structstudent/*定义结构体*/
{charxuehao[13];
charxingming[10];
charminzu[10];
charsheng[15];
intfenshu;
charzhuanye[30];
intdao;
}stud[20];
voidinsert_informaion()/*录入信息函数*/
{FILE*fp1,*fp2;
inti;
if((fp1=fopen("e:
\\file18.txt","r+"))==NULL)
{
printf("\n不能打开文件");
return;}for(i=0;i<20;i++)
{fscanf(fp1,"%s%s%s%s%d%s",stud[i].xuehao,stud[i].xingming,stud[i].minzu,stud[i].sheng,&stud[i].fenshu,stud[i].zhuanye);}
fclose(fp1);
if((fp2=fopen("e:
\\myfile.txt","r+"))==NULL)
{printf("\n不能打开文件");
return;}
for(i=0;i<20;i++)
{
fprintf(fp2,"%15s,%7s,%5s,%7s,%5d,%20s\n",stud[i].xuehao,stud[i].xingming,stud[i].minzu,stud[i].sheng,stud[i].fenshu,stud[i].zhuanye);
}fclose(fp2);
}
voidbaodao()
{FILE*fp;
inti,flag=0,shu,j;
charnumber[20];
if((fp=fopen("e:
\\file18.txt","r+"))==NULL)
{printf("\nCannotopenfiel");
return;}
for(i=0;i<20;i++)
{fscanf(fp,"%s%s%s%s%d%s",stud[i].xuehao,stud[i].xingming,stud[i].minzu,stud[i].sheng,&stud[i].fenshu,stud[i].zhuanye);}
printf("\n请输入本次报到的学生数量:
");
scanf("%d",&shu);
for(j=0;j{flag=0;
printf("\n请输入学生学号:
");
scanf("%s",number);
for(i=0;i<20;i++)
{if(strcmp(stud[i].xuehao,number)==0)
{stud[i].dao=1;
flag++;
printf("%15s,%7s,%5s,%7s,%5d,%20s\n",stud[i].xuehao,stud[i].xingming,stud[i].minzu,stud[i].sheng,stud[i].fenshu,stud[i].zhuanye);}}
if(flag==0)
{printf("\n找不到这个学生信息");}
fclose(fp);
if((fp=fopen("e:
\\myfile.txt","r+"))==NULL)
{printf("\nCannotopenfile");
return}
fclose(fp)}
voiddayin()
{
FILE*wenjian;
inti,flag=0;
if((wenjian=fopen("e:
\\file18.txt","r+"))==NULL)
{printf("\nCannotopenfiel");
return;}
printf("\n未报到的新生信息");
printf("\n");
for(i=0;i<20;i++)
{fscanf(wenjian,"%s%s%s%s%d%s",stud[i].xuehao,stud[i].xingming,stud[i].minzu,stud[i].sheng,&stud[i].fenshu,stud[i].zhuanye);
if(stud[i].dao==0)
{printf("%15s,%7s,%5s,%7s,%5d,%20s\n",stud[i].xuehao,stud[i].xingming,stud[i].minzu,stud[i].sheng,stud[i].fenshu,stud[i].zhuanye);}
fclose(wenjian);
}
voidchaxun()/*查询函数*/
{FILE*fp1;
inti;
if((fp1=fopen("e:
\\file18.txt","r+"))==NULL)
{printf("\n不能打开文件");
return;}
for(i=0;i<20;i++)
{fscanf(fp1,"%s%s%s%s%d%s",stud[i].xuehao,stud[i].xingming,stud[i].minzu,stud[i].sheng,&stud[i].fenshu,stud[i].zhuanye);
}
fclose(fp1);
chara[13];
puts("请输入学生信息\n");
scanf("%s",a);
{for(i=0;i<20;i++)
if(strcmp(stud[i].xuehao,a)==0)/*比较数据长短*/
printf("%15s,%7s,%5s,%7s,%5d,%20s\n",stud[i].xuehao,stud[i].xingming,stud[i].minzu,stud[i].sheng,stud[i].fenshu,stud[i].zhuanye);}
if(strcmp(stud[i].xuehao,a)!
=0)
printf("没有该同学信息");}
voidmain()
{inti;
for(;;){
printf("\n--------------欢迎使用新生报到系统---------------");
printf("\n--------------1录入信息--------------------------");
printf("\n--------------2新生报到--------------------------");
printf("\n--------------3打印未报到的学生------------------");
printf("\n--------------4查询学生信息----------------------");
printf("\n--------------5退出---------------------------");
printf("\n--------------请选择-------------------------\n\t");
scanf("%d",&i);
switch(i)
{
case1:
clear();insert_informaion();break;
case2:
clear();baodao();break;
case3:
clear();dayin();break;
case4:
clear();chaxun();break;
case5:
clear();exit(0);break;
default:
printf("\n输入错误");}}}