程序设计--学生籍贯信息记录簿
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序设计--学生籍贯
信息记录簿
-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN
程序设计报告( 2012 /2013 学年第二学期)
题目:学生籍贯信息记录簿
专业
学生姓名
班级学号
指导教师
指导单位
日期
学生籍贯信息记录簿
一、课题内容和要求
编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。
具体功能:(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的籍贯信息;
(3)按学号或姓名查询其籍贯;
(4)按籍贯查询并输出该籍贯的所有学生;
(5)能添加、删除和修改学生的籍贯信息;
(6)显示输出江苏籍和非江苏籍学生的信息并可分别存盘。
二、需求分析
模块1:显示基本信息(创建信息链表并以磁盘文件保存,读取磁盘文件)
模块2:输出籍贯信息(显示输出所有学生的籍贯信息)
模块3:根据条件查询(按学号或姓名查询其籍贯,按籍贯查询)
模块4:输出学生信息(输出该籍贯的所有学生)
模块5:基本信息管理(添加、删除和修改学生的籍贯信息)
模块6:分别显示存盘(显示输出江苏籍和非江苏籍学生的信息并可分别存盘)模块7:结束程序(退出系统)
三、概要设计
四、源程序代码
#include<>
#include<>
#include<>
#include<>
#define MAX 100 取最初输入的信息并显示
void Readfile(); 改第i个学生的姓名和籍贯
void Save1(); 示输出江苏,非江苏学生信息
void Find(int i); 学号或姓名查询籍贯
void Finds(); 入信息并存档\n");
printf("2.读取信息并显示\n");
printf("3.按学号或姓名查询籍贯\n");
printf("4.按籍贯查询学生\n");
printf("5.修改(删除)指定姓名或学号的学生的姓名和籍贯\n");
printf("6.显示输出江苏,非江苏学生信息\n");
printf("**********************************************************\n");
scanf("%s",&choose);
switch(choose)
{
case '1':{Input();Save1();}break;
case '2':{Readfile();Display();}break;
case '3':{Readfile();Find(1);}break;
case '4':{Readfile();Finds();}break;
case '5':{Readfile();Find(0);}break;
case '6':{Readfile();Dis();}break;
default:printf("输入错误,请重新输入:\n");
}
}
while(1);
}
void Save2(int t) um,stu[t].name,stu[t].address);um);
if(strcmp(stu[n].num,"Finish")==0) break;
scanf("%s",stu[n].name);
scanf("%s",stu[n].address);
n++;
}
while(1);
}
void Save1() um,stu[i].name,stu[i].address);取信息并显示
{
int i;
printf(" 学号姓名籍贯:\n");
for(i=0;i<n;i++)
{
printf("%5s %5s %5s\n",stu[i].num ,stu[i].name ,stu[i].address);
}
}
void Find(int f) 学号或姓名查询籍贯
{
int i;
int choose,k;
char ans[50]; 学号查询\n");
printf("2.按姓名查找\n");
printf("3.返回主菜单\n");
scanf("%d",&choose);
if(choose==1)
{
printf("请输入学号\n");
scanf("%s",ans);
k=-1;
for(i=0;i<n;i++)
if(strcmp(ans,stu[i].num)==0)
{
k=i;
break;
}
if(k==-1)
printf("不存在该学生信息\n");
else
{
if(f==1)
printf("%s %s %s\n",stu[k].num,stu[k].name,stu[k].address);
else
Modify(k);ame)==0)
{
k=i;break;
}
if(k==-1)
printf("不存在该学生信息\n");
else
{
if(f==1)
printf("%s %s %s\n",stu[k].num,stu[k].name,stu[k].address);
else
Modify(k);改第t个学生的姓名和籍贯{
int choose;
int i;
printf("1.删除\n");
printf("2.修改\n");
scanf("%d",&choose);
if(choose==1)
{
for(i=t;i<n-1;i++)
{
stu[i]=stu[i+1];
}
n--;
}
else
{
printf(">>>>请重新输入该学生信息:\n");
scanf("%s %s %s",stu[t].num,stu[t].name,&stu[t].address);
}
Save2(t); um,stu[n].name,&stu[n].address);示输出江苏,非江苏学生信息{
int i;
printf("江苏学生:\n");
printf("学号姓名籍贯\n");
for(i=0;i<n;i++){
if(strcmp(stu[i].address,"江苏")==0)um,stu[i].name,stu[i].address);
}
}
printf("\n");printf("\n");
printf("非江苏学生:\n");
printf("学号姓名籍贯\n");
for(i=0;i<n;i++){
if(strcmp(stu[i].address,"江苏")!=0)
{
printf("%s %7s %5s\n",stu[i].num,stu[i].name,stu[i].address);
}
}
}
void Finds()
{
int i,k=-1;
int choose;
char ans[50];
printf("请输入籍贯\n");
scanf("%s",ans);
for(i=0;i<n;i++)
if(strcmp(ans,stu[i].address)==0)
{
k=1;
printf("%s %s %s\n",stu[i].num,stu[i].name,stu[i].address);
}
if(k=-1)
printf("无此省份学生信息\n");
return;
}
五、测试数据及其结果分析
截取了调试时的图片,基本符合要求,但然后一些不人性化的地方值得修改。
截图如下:
此处为录入信息
此处为显示和查询信息
此处为查询和修改(删除)信息以及显示江苏和非江苏籍贯学生
六、调试过程中的问题
1.在录入信息的时候,可能会填错信息,在按了回车之后,不能马上回去修改,只能全部录入完之后再选择修改(删除),进行修改,不够人性化。
2.在选择删除之后,没有删除成功的提示,不够人性化。
3.调试的画面不够美观。
七、课程设计总结
这次的程序设计和以往的上机有点不同,它要求的更多,所以设计考虑的也更多。
在写程序的过程中,我们分别写了很多程序,但大部分都有或多或少的问题,然后不能运行。
翻书,问前辈,最后一起做了一个程序。
在调试方面,我觉得问题多多,界面谈不上多友好,人性化方面做的不足,但确实,我们能力有限,想把程序做的更好更完美,但黔驴技穷。
但正如老师所说,一个学生应当具备能够回答提问的能力,所以,这方面,我会努力去提高的。