c语言程序学生籍贯信息记录簿设计.docx
《c语言程序学生籍贯信息记录簿设计.docx》由会员分享,可在线阅读,更多相关《c语言程序学生籍贯信息记录簿设计.docx(16页珍藏版)》请在冰豆网上搜索。
![c语言程序学生籍贯信息记录簿设计.docx](https://file1.bdocx.com/fileroot1/2023-6/24/640fb1e6-5d52-4efa-8457-38f3ea93091b/640fb1e6-5d52-4efa-8457-38f3ea93091b1.gif)
c语言程序学生籍贯信息记录簿设计
c语言程序学生籍贯信息记录簿设计
学生籍贯信息记录簿
课程设计报告书
班级:
方0909-1学号:
********姓名:
苑小叶指导教师:
康亚男
石家庄铁道大学四方学院
2010年07月14日
1
课程设计报告内容
1.选择题目
题目:
学生籍贯信息记录簿设计2.内容摘要
摘要:
学生籍贯信息管理系统是典型的信息管理系统,根据开发要求,主要完成对学生姓名、学号、籍贯等管理。
随着学校办学规模的不断扩大、办学层次的多样化、在校生的不断增多。
开发这系统可以是教务处老师减轻工作压力,比较系统的对学生进行管理,加快速度、加强管理,使各项管理更加规范化。
本系统管理内容广泛,全面涉及管理学生资料信息的管理。
3.索引关键词
关键词:
学生籍贯管理,结构体,循环,函数
学生籍贯信息记录簿
4.目录
1题目要求……………………………………………………………42设计思想……………………………………………………………43系统完成及功能……………………………………………………44界面设计……………………………………………………………55正文…………………………………………………………………56结论…………………………………………………………………147参考资料……………………………………………………………148后记…………………………………………………………………159附录…………………………………………………………………15
3
学生籍贯信息记录簿5.正文
1.1课程设计题目要求
1.要求利用C语言面向过程的编程思想来完成系统的设计;2.突出C语言的函数特征,以多个函数实现每一个子功能;3.画出功能模块图;
4.进行简单界面设计,能够实现友好的交互;5.具有清晰的程序流程图和数据结构的详细定义;6.熟练掌握C语言对文件的各种操作。
2.1设计思想
程序运用结构体数组和循环进行程序的编写.
3.1系统完成功能及功能框图
1每条记录包括一个学生学号、姓名、籍贯。
2输入功能:
可以一次完成无数条记录的输入。
3显示功能:
完成全部学生记录的显示。
4查找功能:
完成按姓名、学号查找学生记录,并显示。
5修改功能:
通过查找学生姓名、学号,修改学生记录。
6保存功能:
将学生记录保存到任何自定义的文件中。
7读取功能:
将保存到文件中的学生记录读取出来。
8应提供一个界面来调用各个功能,调用界面和功能的操作界面应尽可能清晰美观。
主要功能
录查删编输入询除辑出
4
学生籍贯信息记录簿4.1界面设计
5.1核心算法及说明
#include#include#include#include#defineMAX300structstudent
{
charname[10];//姓名
charno[50];//学号
charad[20];//籍贯
};
structdata
{
5
学生籍贯信息记录簿
intcount;//当前学生数组中学生的个数
structstudentstu[MAX];//学生数组
}dd;
//显示主菜单
voidmenu()
{
system("cls");
printf("\n");
printf("\t\t\t********************************\n");
printf("\t\t\t**\n");
printf("\t\t\t*学生籍贯信息记录簿*\n");
printf("\t\t\t**\n");
printf("\t\t\t*[0]退出*\n");
printf("\t\t\t*[1]查看所有学生信息*\n");
printf("\t\t\t*[2]输入学生记录*\n");
printf("\t\t\t*[3]删除学生记录*\n");
printf("\t\t\t*[4]编辑学生记录*\n");
printf("\t\t\t*[5]查询(学号)*\n");
printf("\t\t\t*[6]查询(姓名)*\n");
printf("\t\t\t*[7]查询(籍贯)*\n");
printf("\t\t\t**\n");
printf("\t\t\t********************************\n");
printf("\t\t\t*制作人:
苑小叶崔京*\n");}
//等待用户按回车后回到主菜单
voidto_menu()
{
charc1,c2;
printf("\n\n\n按回车键返回主菜单...");
scanf("%c%c",&c1,&c2);
menu();
}
//查看所有学生信息
6
学生籍贯信息记录簿voidview_data()
{
inti;
printf("姓名\t学号\t籍贯");
printf("\n------------------------------------------------------------------
-\n");
for(i=0;i
printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);
}
//将数据从结构体数组保存到文件中
voidsave_data()
{
FILE*fp;
inti,k;
k=dd.count;
fp=fopen("c:
/dada.txt","w");
fwrite(&k,sizeof(int),1,fp);
for(i=0;ifwrite(&dd.stu[i],sizeof(structstudent),1,fp);
fclose(fp);
}
//输入学生记录
voidadd_data()
{
structstudentst;
intb;
intk;
inti,j;
while
(1)
{
j=0;
7
学生籍贯信息记录簿
printf("\n请输入学生信息:
");
printf("\n姓名\t学号\t籍贯");
printf("\n---------------------------------------------------------------\n"
);
scanf("%s%s%s",st.name,st.no,st.ad);
for(i=0;i
if(strcmp(dd.stu[i].no,st.no)==0)
{
j=1;
printf("学号录入重复,请重新输入~");
break;
}
if(j==1)
continue;
if(j==0)
{
k=dd.count;
strcpy(dd.stu[k].name,st.name);
strcpy(dd.stu[k].no,st.no);
strcpy(dd.stu[k].ad,st.ad);
dd.count++;
}
printf("\n\n继续添加学生信息[1-yes0-no]:
");
scanf("%d",&b);
if(b==0)break;
}
save_data();
}
//将数据从文件读到结构体数组中
voidread_data()
{
FILE*fp;
inti,k;
8
学生籍贯信息记录簿
structstudentst;
k=0;
if(access("c:
/dada.txt",0)==-1)//如果文件不存在
{
fp=fopen("c:
/dada.txt","w");
fwrite(&k,sizeof(int),1,fp);
fclose(fp);
}
fp=fopen("c:
/dada.txt","r");
fread(&k,sizeof(int),1,fp);
dd.count=k;
for(i=0;i{
fread(&st,sizeof(structstudent),1,fp);
strcpy(dd.stu[i].name,st.name);
strcpy(dd.stu[i].no,st.no);
strcpy(dd.stu[i].ad,st.ad);
}
fclose(fp);
}
//删除学生记录
voiddelete_data()
{
inti,k;
charno[50];
printf("\n请输入要删除学生的学号:
");
scanf("%s",no);
k=-1;
for(i=0;i
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
9
学生籍贯信息记录簿
break;
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(学号-%s)!
",no);
}
else
{
for(i=k;i
{
strcpy(dd.stu[i].name,dd.stu[i+1].name);
strcpy(dd.stu[i].no,dd.stu[i+1].no);
strcpy(dd.stu[i].ad,dd.stu[i+1].ad);
}
dd.count--;
save_data();
printf("\n\n删除(学号-%s)成功!
",no);
}
}
//编辑学生记录
voidedit_data()
{
inti,k;
charno[50],ad[20];
printf("\n请输入要编辑学生的学号:
");
scanf("%s",no);
k=-1;
for(i=0;i
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
10
学生籍贯信息记录簿
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(学号-%s)!
",no);
}
else
{
printf("\n姓名:
%s,学号:
%s",dd.stu[k].name,dd.stu[k].no);
printf("\n请修改学生数据:
");
printf("\n籍贯:
");
scanf("%s",ad);
strcpy(dd.stu[k].ad,ad);
}
}
//查询(学号)
voidquery_data_no()
{
inti,k;
charno[50];
printf("\n请输入要查询学生的学号:
");
scanf("%s",no);
k=-1;
for(i=0;i
{
if(strcmp(dd.stu[i].no,no)==0)
{
{
printf("\n\n姓名\t学号\t籍贯");
printf("\n--------------------------------------------------------------
---\n");
}
11
学生籍贯信息记录簿
k=i;
printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);
}
}
if(k==-1)
{
printf("\n\n没有找到该学生(学号-%s)!
",no);
}
}
//查询(姓名)
voidquery_data_name(){
inti,k;
charname[10];
printf("\n请输入要查询学生的姓名:
");
scanf("%s",name);
k=-1;
for(i=0;i
{
if(strcmp(dd.stu[i].name,name)==0)
{
{
printf("\n\n姓名\t学号\t籍贯");
printf("\n--------------------------------------------------------------
---\n");
}
k=i;
printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);
}
}
if(k==-1)
{
12
学生籍贯信息记录簿
printf("\n\n没有找到该学生(姓名-%s)!
",name);
}
}
//查询(籍贯)
voidquery_data_address(){
inti,sum=0;charad[20];
printf("请输入籍贯信息:
");
scanf("%s",ad);
printf("该籍贯的学生有:
");
for(i=0;i
if(strcmp(dd.stu[i].ad,ad)==0)
{
printf("%s\t",dd.stu[i].name);
sum++;
}
if(sum==0)
printf("0人\n");
}
//主函数
voidmain()
{
intfun;
read_data();
menu();
while
(1)
{
printf("请输入功能号[0-7]:
",&fun);
scanf("%d",&fun);
switch(fun)
{
case0:
//退出
break;
case1:
//查看所有学生信息
13
学生籍贯信息记录簿
view_data();
break;
case2:
//输入学生记录
add_data();
break;
case3:
//删除学生记录
delete_data();
break;
case4:
//编辑学生记录
edit_data();
break;
case5:
//查询(学号)
query_data_no();
break;
case6:
//查询(姓名)
query_data_name();
break;
case7:
//查询(籍贯)
query_data_address();
break;
}
if(fun==0)break;
to_menu();
}
}
6.结论
各项功能均能实现,但程序存在缺陷,如录入重复学号,没有出现提示功能,需要修改
和完善。
7.参考资料
C语言设计第三版清华大学出版社出版
14
学生籍贯信息记录簿
8.后记
虽然该系统可以运行最基本的功能,但该系统仍然有不完善之处,有待添加更丰富的功能…….感谢康亚男老师给与的细心指导,感谢同伴的积极配合共同完成了程序.
9.附录
系统公共数据结构如下:
#difineMAX300\\定义常量N表示可录入最大学生数
inti,j、k,sum,\\i表示第几位学生,j\k都用来存放赋的值,sum表示查询时该学生不存在的学生数0人
intcount\\存放学生总人数
inti\\变量i存放循环次数
stuctstudent\\定义一个名为student的结构体,这个结构体定义了学生的基本信息
{charno\\定义学生的学号
charname\\定义学生的姓名
charad\\定义学生的籍贯
intb\\用来跳出某项功能
structstudent、structstudentstu[MAX],定义两个结构体,两者是嵌套的。
dd是全局的结构体变量名
15