新生报到系统.docx
- 文档编号:11115127
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:25
- 大小:255.81KB
新生报到系统.docx
《新生报到系统.docx》由会员分享,可在线阅读,更多相关《新生报到系统.docx(25页珍藏版)》请在冰豆网上搜索。
新生报到系统
题目:
新生报到系统
一、课程设计时间
2010~11第2学期第15周,即6月13日~6月17日,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
(1)录入新生的信息(学号、姓名、来自省份、专业、高考分数),并保存到磁盘文件中;
(2)新生报到签到;
(3)转专业;
(4)查询统计:
可以按专业或来自省份查询符合条件的所有学生;
(5)退出。
三、课程设计要求
1.程序质量:
●贯彻结构化的程序设计思想。
●用户界面友好,功能明确,操作方便,用户界面中的菜单至少应包括“新生信息录入”、“新生报到”、“转专业”、“查询统计”等选项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2.课程设计说明书:
课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩
六、教师评语
目录
一、需求分析1
二、设计分析2
三、主要界面截图9
四、技术要点12
五、个人总结14
六、参考文献15
七、源程序16
一、需求分析
根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统是一个较典型的数据管理系统,其使用者被假定为某办公室的新生报到的管理人员,系统应该具有准确、稳定、功能齐全的特点。
1.准确性分析:
系统管理的数据涉及到学院的所有同学,数据量较大且是一种基础性数据,能够为其它方面的学生管理工作提供重要参考,所以该程序录入的信息必须准确,该程序录入信息后,一定要查询录入是否准确,然后才能进行任何步骤,这样就确保了录入信息的准确性。
2.稳定性分析:
指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3.主要功能分析:
(1)数据输入:
允许用户输入学号、姓名、专业、省份、高考分数。
(2)数据保存:
对于输入的数据,或被修改的数据应该保存到某个磁盘文件中,实现永久存储。
文件的具体格式题目未作具体要求,所以可采用随机文件,也可采用文本文件。
不管采用哪种文件形式,文件中的数据应有固定的格式,以便于程序自动读取或人工阅读。
(3)数据查询:
用户输入查询条件,系统规则地在界面显示查询结果,且显示的数据尽量全面。
当输入省份时,可查询到该学生的学号、姓名、高考成绩、到没到校、专业;当输入专业时,可查询到匹配的学生名单和信息。
二、设计分析
本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,录入信息函数、新生报到函数,转专业函数和查询函数是程序中较为核心的部分,下面分别进行说明。
1、录入信息函数:
定义一个文件型指针变量fp,用(fp=fopen("stud.dat","wb"))==NULL,若不能打开,输出(“不能打开文件”)从磁盘文件中读入新生的信息,并输入到结构体stud[i]中,再经结构体stud[i]和指针fp传递到磁盘文件中,实现文件的录入和保存。
2、新生报到函数:
确立循环次数,再令用户输入报到学生的学号,用strcmp()函数对用户输入学生学号与读入到结构体stud[i]中成员学号进行比较,若相同,则报到成功(输出1)。
3、学生转专业函数:
学生转专业函数的功能是对学生信息进行修改,首先输入修改的学生学号,并且读取文件信息,判断学号是否相同,当学号相同时,重新输入学生信息。
并且把信息保存到文件中。
4、查询统计函数:
输入查询的专业或省份,用while循环实现查询。
输入i=0,i增至100,就结束循环。
输入省份或专业就可以查询出符合条件的学生。
5、主函数:
输出菜单,并用switch语句定义了5个分支,实现多功能结构的选择。
除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
1、程序整体流程图
图一整体结构图
2、录入学生信息流程图
图二录入学生信息流程图
3新生报到签到流程图
图三新生报到签到流程图
4转专业流程图
图四转专业流程图
5查询统计流程图
图五查询统计流程图
三、主要界面截图
图一程序主界面截图
图二录入学生信息截图
图三新生报到截图
图四转专业截图
图五按专业查询截图
图六按省份查询截图
图七退出截图
四、技术要点
1、结构体的应用
定义了结构体用来描述学生的姓名、学号、专业、省份、高考分数。
具体的定义如下:
charsno[12];
charname[10];
charhome[20];
charsc[20];
intbCome;
floatscore;
所定义的结构体主要用于定义数组。
2、文件操作
包括了文件的写入和读取两个方面。
文件的写入操作,用于保存录入的学生数据,也用于保存所修改的数据。
例如如下程序段用于保存录入的学生信息:
voidwrite()
{
inti=0;
FILE*fp;
if((fp=fopen("stud.dat","wb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
while(temp[i].sno!
=NULL)
{
fwrite(&temp[i],sizeof(temp),1,fp);
i++;
}
}
3、关于程序详细说明
(1)学生信息录入:
定义一个文件型指针变量fp,从磁盘文件中读入新生的信息,并输入到结构体stud[i]中,再经结构体stud[i]和指针fp传递到磁盘文件中,实现文件的录入和保存。
(2)新生报到:
程序的主要内容是根据录入的学生信息,先判断文件是否能打开,如能打开文件,然后通过输入学生学号,实现新生报到,成功报到,用fwrite储存在磁盘文件中。
(3)转专业:
学生转专业函数的功能是对学生信息进行修改,首先输入修改的学生学号,并且读取文件信息,判断学号是否相同,当学号相同时,重新输入学生信息。
并且把信息保存到磁盘文件中。
(4)查询:
实现从系统中查询专业与省份的相关信息,其实质是对数组某个或某些元素的查询操作。
对数组元素的查询,用while循环实现查询,把查询的结果显示出来,这就实现了查询功能。
(5)退出:
只要输入服务类型5,按回车,然后按任意键就可以退出。
五、个人总结
一周的c语言课设结束了,我学到了很多知识,积累了很多经验,我通过这次课设从新复习了c语言,发现编程并不是那么简单,而最难的就要数调试了,无论多么小的错误都可能是程序运行出错,我就是因为忘加一个括号,我整整用了一个多点才找出这个错误,真让我哭笑不得,这次C语言课程设计还消除了我对C语言的错误认识,以前认为C语言就是简单的学科,其实不然,通过这次C语课程设计,使我加深了对C语言的了解,也提高了C语言的应用能力。
在多次查书翻资料请教老师同学之后,使我能够完成整个任务.这次课设使我熟练掌握知识的同时还增强了我的动手能力,使我受益终生。
此程序的优点:
储存数据大,查询功能强大,录入信息不能更改,保证安全性,且先录入学生信息,然后一定要查询看看录入没有,然后才可以执行任何步骤(1至5都可),保证准确性。
缺点:
程序中有些没用的重复语句,程序步骤较复杂,应简化些。
六、参考文献
1.谭浩强.C程序设计.北京:
清华大学出版社,2005
2.刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
3.袁蒲佳,唐谦等C语言程序设计华中科技大学出版社,2007年1月
七、源程序
#include
#include
#include
#include
#defineN100
structstud
{
charsno[12];
charname[10];
charhome[20];
charsc[20];
intbCome;
floatscore;
};
studtemp[N];
intnumber=0;
//输入学生信息
///////////////////////////////////////
intinput()
{
studtemp;
FILE*fp;
printf("输入学生信息:
(输入结束在学号处输over)\n");
if((fp=fopen("stud.dat","wb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
while
(1)
{
printf("输入学生学号:
");
scanf("%s",temp.sno);
if(!
strcmp(temp.sno,"over"))
{fclose(fp);return0;}
printf("输入学生姓名:
");
scanf("%s",temp.name);
printf("输入学生来自省份:
");
scanf("%s",temp.home);
printf("输入学生专业:
");
scanf("%s",temp.sc);
printf("输入高考分数:
");
scanf("%f",&temp.score);
temp.bCome=0;
fwrite(&temp,sizeof(temp),1,fp);
}
fclose(fp);
}
//////////////////////////////////////
/////////////////////////////////////
voidwrite()
{
inti=0;
FILE*fp;
if((fp=fopen("stud.dat","wb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
while(temp[i].sno!
=NULL)
{
fwrite(&temp[i],sizeof(temp),1,fp);
i++;
}
}
/////////////////////////////////////
//改变专业
voidchange()
{FILE*fp;
printf("输入新到学生的学生号:
");
charbuffer_no[12];
charbuffer_sc[20];
scanf("%s",buffer_no);
inti=0;
if(strcmp(buffer_no,temp[i].sno)==0)
{
while(strcmp(buffer_no,temp[i].sno)==0)
i++;
if(i>=N)
{
printf("没有要找的学生信息");
}
else
{printf("you");
printf("所换专业:
");
scanf("%s",&buffer_sc);
if((fp=fopen("stud.dat","rb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
fread(&temp[i],sizeof(stud),1,fp);
if(strcmp(buffer_no,temp[i].sno)==0)
{strcpy(temp[i].sc,buffer_sc);
}
i=0;
fread(&temp[i],sizeof(stud),1,fp);
if(strcmp(buffer_no,temp[i].sno)==0)
{strcpy(temp[i].sc,buffer_sc);
}
if((fp=fopen("stud.dat","wb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
fwrite(&temp[i],sizeof(temp),1,fp);
printf("专业转换成功\n");
}}
///////////////////
else
{printf("you");
printf("所换专业:
");
scanf("%s",&buffer_sc);
inti=0;
if((fp=fopen("stud.dat","rb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
while(strcmp(buffer_no,temp[i].sno)!
=0)
{
fread(&temp[i],sizeof(stud),1,fp);
i++;
}
fclose(fp);
if(strcmp(buffer_no,temp[i].sno)==0)
{strcpy(temp[i].sc,buffer_sc);
}
if((fp=fopen("stud.dat","wb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
i=0;if(strcmp(buffer_no,temp[i].sno)==0&&strcmp(temp[i].sc,buffer_sc)==0)
{strcpy(temp[i].sc,buffer_sc);
}
while(strcmp(buffer_no,temp[i].sno)!
=0)
{
fwrite(&temp[i],sizeof(temp),1,fp);i++;
printf("专业转换成功\n");fclose(fp);
}
}
}
/////////////////////////////////////
//新生报到
//////////////////////////////////////
voidset()
{
FILE*fp;
printf("输入新到学生的学生号:
");
charbuffer_no[20];
scanf("%s",buffer_no);
inti=0;
if(strcmp(buffer_no,temp[i].sno)==0)
{
while(strcmp(buffer_no,temp[i].sno)==0)
i++;
if(i>=N)
{
printf("没有要找的学生信息");
}
else
{
if((fp=fopen("stud.dat","rb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
fread(&temp[i],sizeof(stud),1,fp);
if(strcmp(buffer_no,temp[i].sno)==0)
{temp[i].bCome=1;
}
i=0;
fread(&temp[i],sizeof(stud),1,fp);
if(strcmp(buffer_no,temp[i].sno)==0)
{temp[i].bCome=1;
}
if((fp=fopen("stud.dat","wb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
fwrite(&temp[i],sizeof(temp),1,fp);
printf("新生报到成功\n");
}
}
///////////////////
else
{
inti=0;
if((fp=fopen("stud.dat","rb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
while(strcmp(buffer_no,temp[i].sno)!
=0)
{
fread(&temp[i],sizeof(stud),1,fp);
i++;
}
fclose(fp);
if(strcmp(buffer_no,temp[i].sno)==0)
{temp[i].bCome=1;
}
if((fp=fopen("stud.dat","wb"))==NULL)
{
printf("文件打开失败!
");
exit(0);
}
i=0;
while(strcmp(buffer_no,temp[i].sno)!
=0)
{
fwrite(&temp[i],sizeof(temp),1,fp);i++;
printf("新生报到成功\n");fclose(fp);
}
}
}
//查询
////////////////////////////////////////
voidshowStu()
{
FILE*fp;
inti=0;intm=-1;
chara[100];
printf("输入查询条件:
1、专业2、来自省份:
");
scanf("%d",&m);
switch(m)
{
case1:
printf("输入查询专业:
");
scanf("%s",a);
if((fp=fopen("stud.dat","rb"))==NULL)
{
printf("文件打开失败!
");exit(0);
}
printf("学号姓名来自省份专业分数到校否\n");
while(fread(&temp[i],sizeof(stud),1,fp)!
=0)
{if(strcmp(temp[i].sc,a)==0)
{printf("%s%s%s%s%.2f%d\n",temp[i].sno,temp[i].name,temp[i].home,temp[i].sc,temp[i].score,temp[i].bCome);
}i++;
}
fclose(fp);
break;
case2:
printf("输入查询省份:
");
scanf("%s",a);
if((fp=fopen("stud.dat","rb"))==NULL)
{
printf("文件打开失败!
");exit(0);
}
printf("学号姓名来自省份专业分数到校否\n");
while(fread(&temp[i],sizeof(stud),1,fp)!
=0)//&&strcmp(temp[i].home,a)==0)
{if(strcmp(temp[i].home,a)==0)
{printf("%s%s%s%s%.2f%d\n",temp[i].sno,temp[i].name,temp[i].home,temp[i].sc,temp[i].score,temp[i].bCome);
}i++;
}
fclose(fp);
break;
}
}
////////////////////////////////////////
voidserver(intmenu)
{
switch(menu)
{
case1:
input();break;
case2:
set();break;
case3:
change();break;
case4:
showStu();break;
case5:
exit(0);break;
}
}
//主界面
////////////////////////////////////////
voidshowWND()
{intmenu=-1;
while
(1)
{
printf("新生报道系统\n");
printf("1、录入新生信息\n");
printf("2、新生报道\n");
printf("3、学生转专业\n");
printf("4、按专业或省份查询\n");
printf("5、退出\n");
printf("输入服务类型:
");
scanf("%d",&menu);
server(menu);
}
}
voidmain()
{
showWND();
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新生 报到 系统