新生报名系统.docx
- 文档编号:11384460
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:22
- 大小:198.38KB
新生报名系统.docx
《新生报名系统.docx》由会员分享,可在线阅读,更多相关《新生报名系统.docx(22页珍藏版)》请在冰豆网上搜索。
新生报名系统
课程设计
学号
班级
姓名
指导教师
2008年6月27日
课程设计任务书
课程设计题目:
新生报名系统
一、课程设计时间
20007~08第2学期第17周,即6月23~27日,共计1周,20学时。
二、课程设计内容:
用c语言编写软件完成新生报名系统,新生名单存放在
file18.txt文件中。
程序应具有以下菜单,并实现其功能:
(1)从file18.txt中读入新生的信息(学号,姓名,民族,省份,高考分数,专业),并保存到myfile.txt文件中;
(2)新生报到;
(3)打印所有未报到的新生;
(4)学生信息查询(根据学号,姓名,省份);
(5)将新的学生信息保存到myfile.txt文件中;
(6)退出程序。
三、课程设计要求:
程序质量:
●贯彻结构化程序设计思想。
●用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
●课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模版。
四、指导教师和学生签名:
指导教师:
_______________学生签名_____________
五、成绩
六、教师评
目录
一、需求分析..................................................4
二、程序流程图................................................6
三、核心技术的实现说明及相应程序段.........8
四、个人总结.....................................................12
五、参考文献......................................................14
六、源程序...........................................................14
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,他们的功能分别是:
录入信息函数luru(),新生报到函数baodao(),打印未报到的学生函数dayin(),查询学生信息函数chaxun(),退出函数exit(0)和主函数main()。
(显示菜单)。
1、录入信息函数,定义两文件型指针变量fp1(指向
file18.txt文本文件),fp2(指向myfile.txt文本文件),fp1指向file18.txt文件,用(fp1=fopen(“d:
\\file18.txt”,"r+”))
==NULL语句打开file18.txt文本文件,若不能打开,输出(“不能打开文件”)从file18.txt文本文件中读入新生的信息,并输入到结构体stud[i]中,再经结构体stud[i]和指针fp2传递到myfile.txt文本中,实现文件的录入和保存。
2、新生报到函数,先输入报到学生的人数,确立循环次数,再令用户输入报到学生的学号,用strcmp()函数对用户输入学生学号number与读入到结构体stud[i]中成员xuehao进行比较,若相同,令另一成员dao(原赋值为0)赋新值1。
3、打印未报到的学生函数,定义文件指针变量wenjian打开文件file18.txt,将信息赋到结构体stud[i]中,用if语句判断,输出结构体stud[i]中成员dao=0的元素项。
4、查询学生信息函数定义文件型指针变量fp1和字符型数组a[13],打开file18.txt文本文件,并将信息赋给结构体stud[i],输入12位学号给字符型数组a[13],用strcmp()函数对字符型数组a[13]和结构体变量stud[i]中成员学号比较,输出相同的结构体中的元素,没有相同的,输出(“没有该同学信息”)。
5、主函数main(),输出菜单,并用switch语句定义了6个分支,实现多功能结构的选择。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每一个学生信息都包括学号,姓名,民族,省份,分数,和专业.在程序当中,将学生使用信息类型定义为结构体类型,其他函数每次对学生信息的访问,其数据来源都是file18.txt文件,这样做不但可以保证学生信息数据的一致性,而且可以对学生信息进行永久保存,保证每次运行程序都可以采用原来的数据。
二、程序整体流程图及各子函数流程图
1.程序整体流程图
(1)录入学生信息流程图
(2)新生报到流程图
(3)打印未报到学生流程图
(4)查询学生信息流程图
三。
核心技术的实现说明及相关程序段
本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,录入信息函数luru()、新生报到函数baodao(),打印未报到学生信息函数dayin()和查询函数chaxun()是程序中较为核心的部分,下面分别进行说明
1录入信息函数luru()
录入信息函数是在文件file18.txt已经存在的情况下,此时文件要以读写方式打开,这样才可以保证以前已经存在的数据不丢失。
具体的程序段如下:
voidluru()
{
FILE*fp1,*fp2;
inti;
if((fp1=fopen("d:
\\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("d:
\\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新生报到函数baodao()
此程序的核心是以下程序段:
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找不到这个学生信息"); } } 3打印未报到学生信息 voiddayin() { FILE*wenjian; inti,flag=0; if((wenjian=fopen("d: \\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); } 4查询学生信息 voidchaxun() { FILE*fp1; inti; if((fp1=fopen("d: \\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("没有该同学信息"); } 5显示菜单函数 该函数使用了一个switch选择语句,的功能是简化其操作性,帮助用户正确使用该软件,使得该软件操作性更强,更有人性化。 具体的程序段如下: 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();luru();break; case2: clear();baodao();break; case3: clear();dayin();break; case4: clear();chaxun();break; case5: clear();exit(0);break; default: printf("\n输入错误"); } } } 四、个人总结 在C语言课程设计的这一周里,自己收获很大。 经过了在课程设计前一周的充分的准备,自己对c语言教材又系统地的看了一遍,使自己这一学年的所学知识连贯了起来,有了完整而深刻的理解,又参考了以前的c语言编程题目,弥补了理论知识层面上的漏洞和不足,使自己有准备的迎接了课设的来临。 这次的课程设计任务把文件,指针和结构体等方面的知识结合在一起进行考察,对自己的知识掌握程度要求比较高,因此自己又查阅了一些课外资料,使自己得到了进一步的充实。 经过自己的努力,老师和同学的帮助,自己完成了课设要求的任务,当然,过程中充满了辛苦和委屈,特别是当内存卡感染病毒,不得不对自己辛苦做出的程序作删除处理时,心中的痛是别人无法理解的,不过这些都已经成为自己美好的记忆,伴随自己一生。 除此之外,令我记忆深刻的是老师对工作严谨的态度,这也是一个科研工作者应有的工作作风,我会记住他的对我们程序的要求: 简练,再简练! 这些也是自己这一周的最大收获之一。 五、参考文献 1.谭浩强.C程序设计.北京: 清华大学出版社,2005 2.刘成等.C语言程序设计实验指导与习题集.北京: 中国铁道出版社,2006 3.袁蒲佳,唐谦等C语言程序设计华中科技大学出版社,2007年1月 六、源程序 #include #include #include structstudent { charxuehao[13]; charxingming[10]; charminzu[10]; charsheng[15]; intfenshu; charzhuanye[30]; intdao; }stud[20]; voidluru() { FILE*fp1,*fp2; inti; if((fp1=fopen("d: \\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("d: \\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("d: \\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("d: \\myfile.txt","r+"))==NULL) { printf("\nCannotopenfile"); return; } fclose(fp); } voidclear() { system("cls"); } voiddayin() { FILE*wenjian; inti,flag=0; if((wenjian=fopen("d: \\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("d: \\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();luru();break; case2: clear();baodao();break; case3: clear();dayin();break; case4: clear();chaxun();break; case5: clear();exit(0);break; default: printf("\n输入错误"); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新生 报名 系统