程序设计学生籍贯信息记录簿.docx
- 文档编号:27010398
- 上传时间:2023-06-25
- 格式:DOCX
- 页数:19
- 大小:374.83KB
程序设计学生籍贯信息记录簿.docx
《程序设计学生籍贯信息记录簿.docx》由会员分享,可在线阅读,更多相关《程序设计学生籍贯信息记录簿.docx(19页珍藏版)》请在冰豆网上搜索。
程序设计学生籍贯信息记录簿
程序设计报告
(2012/2013学年第二学期)
题目:
学生籍贯信息记录簿
专业
学生姓名
班级学号
指导教师
指导单位
日期
评分细则
评分项
优秀
良好
中等
差
遵守机房规章制度
上机时的表现
学习态度
程序准备情况
程序设计能力
团队合作精神
课题功能实现情况
算法设计合理性
用户界面设计
报告书写认真程度
容详实程度
文字表达熟练程度
回答问题准确度
简短评语
教师签名:
年月日
评分等级
备注
评分等级有五种:
优秀、良好、中等、及格、不及格
学生籍贯信息记录簿
一、课题容和要求
编制一个学生籍贯信息记录簿,每个学生信息包括:
学号、姓名、籍贯。
具体功能:
(1)创建信息链表并以磁盘文件保存;
(2)读取磁盘文件并显示输出所有学生的籍贯信息;
(3)按学号或姓名查询其籍贯;
(4)按籍贯查询并输出该籍贯的所有学生;
(5)能添加、删除和修改学生的籍贯信息;
(6)显示输出籍和非籍学生的信息并可分别存盘。
二、需求分析
模块1:
显示基本信息(创建信息链表并以磁盘文件保存,读取磁盘文件)
模块2:
输出籍贯信息(显示输出所有学生的籍贯信息)
模块3:
根据条件查询(按学号或姓名查询其籍贯,按籍贯查询)
模块4:
输出学生信息(输出该籍贯的所有学生)
模块5:
基本信息管理(添加、删除和修改学生的籍贯信息)
模块6:
分别显示存盘(显示输出籍和非籍学生的信息并可分别存盘)
模块7:
结束程序(退出系统)
三、概要设计
四、源程序代码
#include
#include
#include
#include
#defineMAX100//宏定义最多输入人数
typedefstruct
{
charnum[50];
charname[50];
charaddress[50];
}Student;//定义了一个新的结构体类型Student
Studentstu[MAX];//定义结构体型数组
intn;//定义一个全局变量,表示第n个学生
intt;
ints=0;
voidInput();//输入信息
voidDisplay();//2.读取最初输入的信息并显示
voidReadfile();//读取文件student.dat的信息
voidModify(inti);//5.修改第i个学生的姓名和籍贯
voidSave1();//将最初输入的容存档到student.dat文件中
voidSave2();//传送格式化输出到student.dat文件
voidDis();//6.显示输出,非学生信息
voidFind(inti);//3.按学号或姓名查询籍贯
voidFinds();//4按籍贯查找学生
voidmain()
{
charchoose;
do{if(s==0)
{intM=35;
printf("欢迎大家进入邮电大学籍贯管理系统\n");
s++;
}
printf("**********************************************************\n");
printf("1.输入信息并存档\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);
}
voidSave2(intt)//传送格式化输出到student.dat文件中
{
FILE*fp;
fp=fopen("student.dat","w");//以只写的方式打开student.dat文件
fprintf(fp,"%s%s%s\n",stu[t].num,stu[t].name,stu[t].address);//格式化输出:
学号姓名地址
fclose(fp);
}
voidInput()//输入信息
{
n=0;
do
{
printf("请输入第%d个学生信息,输入Finish结束输入(输入格式:
学号姓名籍贯)\n",n+1);
scanf("%s",stu[n].num);
if(strcmp(stu[n].num,"Finish")==0)break;
scanf("%s",stu[n].name);
scanf("%s",stu[n].address);
n++;
}
while
(1);
}
voidSave1()//将最初输入的容存档到student.dat文件中
{
inti;
FILE*fp;
if((fp=fopen("student.dat","a+"))==NULL)//以读写的方式打开student.dat文件
fp=fopen("student.dat","w");//以只写的方式打开student.dat文件
for(i=0;i { fprintf(fp,"%s%s%s\n",stu[i].num,stu[i].name,stu[i].address);//用格式化输出函数输出容到student.dat } fclose(fp); } voidDisplay()//2.读取信息并显示 { inti; printf("学号姓名籍贯: \n"); for(i=0;i { printf("%5s%5s%5s\n",stu[i].num,stu[i].name,stu[i].address); } } voidFind(intf)//3.按学号或姓名查询籍贯 { inti; intchoose,k; charans[50];//定义字符串型数组,用于查找 do { printf("1.按学号查询\n"); printf("2.按姓名查找\n"); printf("3.返回主菜单\n"); scanf("%d",&choose); if(choose==1) { printf("请输入学号\n"); scanf("%s",ans); k=-1; for(i=0;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);//执行修改第t个学生的姓名和籍贯的函数 } } elseif(choose==2) { printf("请输入姓名\n"); scanf("%s",ans); k=-1; for(i=0;i if(strcmp(ans,stu[i].name)==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个学生的姓名和籍贯的函数 } } elsereturn; } while (1); } voidModify(intt)//4.修改第t个学生的姓名和籍贯 { intchoose; inti; printf("1.删除\n"); printf("2.修改\n"); scanf("%d",&choose); if(choose==1) { for(i=t;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);//传送修改过的格式化输出到student.dat文件中 } voidReadfile()//读取文本文件student.dat的信息 { FILE*fp; if((fp=fopen("student.dat","r"))==NULL)return;//以只读的方式打开student.dat文件 n=0; while(! feof(fp))//判断文件指针是否指向文件结束处 { fscanf(fp,"%s%s%s",stu[n].num,stu[n].name,&stu[n].address);//利用fscanf()函数输入信息 n++; } fclose(fp); } voidDis()//5.显示输出,非学生信息 { inti; printf("学生: \n"); printf("学号姓名籍贯\n"); for(i=0;i if(strcmp(stu[i].address,"")==0)//比较字符串大小 { printf("%s%5s%5s\n",stu[i].num,stu[i].name,stu[i].address); } } printf("\n");printf("\n"); printf("非学生: \n"); printf("学号姓名籍贯\n"); for(i=0;i if(strcmp(stu[i].address,"")! =0) { printf("%s%7s%5s\n",stu[i].num,stu[i].name,stu[i].address); } } } voidFinds() { inti,k=-1; intchoose; charans[50]; printf("请输入籍贯\n"); scanf("%s",ans); for(i=0;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.调试的画面不够美观。 七、课程设计总结 这次的程序设计和以往的上机有点不同,它要求的更多,所以设计考虑的也更多。 在写程序的过程中,我们分别写了很多程序,但大部分都有或多或少的问题,然后不能运行。 翻书,问前辈,最后一起做了一个程序。 在调试方面,我觉得问题多多,界面谈不上多友好,人性化方面做的不足,但确实,我们能力有限,想把程序做的更好更完美,但黔驴技穷。 但正如老师所说,一个学生应当具备能够回答提问的能力,所以,这方面,我会努力去提高的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 学生 籍贯 信息 记录簿