C语言程序设计学生信息管理系统.docx
- 文档编号:8727119
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:270.33KB
C语言程序设计学生信息管理系统.docx
《C语言程序设计学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计学生信息管理系统.docx(17页珍藏版)》请在冰豆网上搜索。
C语言程序设计学生信息管理系统
C语言课程设计
姓名:
徐宗博
学号:
************
班级:
061092
指导教师:
曹老师
2011年6月25日
第一章:
实习内容
实习内容简介………………………………………………………
(2)
程序代号说明………………………………………………………(3)
第二章:
程序流程图
第三章:
函数模块介绍
读取文件、存储文件………………………………………………(6)
管理系统模块………………………………………………………(8)
恢复区系统模块……………………………………………………(12)
功能展示……………………………………………………………(12)
第四章:
实习总结…………………………………………………………(16)
第五章:
实习体会…………………………………………………………(17)
附录:
参考文献………………………………………………………………………(19)
源代码…………………………………………………………………………(19)
第一章:
实习内容
实习内容简介
题目:
学生通讯录管理系统
要求:
1.可实现信息的添加、删除,可按学号、姓名查询;
2.学生信息必须包含学号、姓名、学院、专业、籍贯。
地址、电话号码;
3.必须有注释。
日期:
2011年6月20日至27日,共8个半天。
地点:
信息楼301
指导老师:
曹雪莲
完成情况:
1.程序可完成信息的添加,可按学号、姓名分别查询;
2.程序可按姓名、学号分别删除,并在删除前显示删除学生的全部信息;按姓名删除,若出现同名情况,会依次出现系统提示是否删除,可选择删除或跳过;
3.在程序文件夹中有一“学生信息库”的txt文件,可查看学生系统里全部学生信息;
4.设置有一个恢复区系统,可输出、查询删除的信息,并在可同文件夹中“删除信息库”的txt文件中查看删除信息;
总体结构如下:
程序代号说明
代号说明
结构体student
结构体stu
全局变量
num
学号
inf
学生信息,包含左结构体student全部信息
n
链表节点数量
name
姓名
next
本类型结构体指针
rhead
恢复区链表头指针
academy
学院
searchnum
目标个数
major
专业
province
省份
address
地址
phone
电话号码
函数
add
增加
delet
删除(按姓名或学号)
search
查找
search_num
搜索学号
search_name
搜索姓名
输出链表上信息
print1
输出链表上单个节点的信息
save
以二进制格式储存数据
txtsave
以文本格式储存数据
crete
从二进制文件中读取信息,建立链表
deletinput
将删除信息导入恢复区链表
system
管理系统主要程序
recover
恢复区系统主要程序
此外,局部变量的含义比较固定:
head
链表头指针,若与rhead一同出现则代表管理系统链表头指针
select、input
为选择的值
filename
文件名
第二章:
程序流程图
程序流程图:
本次实习我的思路就是,先从二进制文件中读取信息,形成链表,对链表进行基本操作,如输出、添加、删除、查找。
程序结束时将链表保存在二进制文件和文本文件中。
管理系统流程图:
运行管理系统部分时,先从文件“”中读取数据(若无该文件则创建文件),构建链表;后续操作都是对于链表进行操作,如添加、查找、删除、输出等;离开该部分时则保存链表里的信息到已存在的“”,并以ASCII形式存储至“学生信息库.txt”,方便检查。
恢复区系统流程图:
恢复区系统思路与管理系统思路类似,连函数调用都是一样的,二进制文件名为“”,文本文件名为“删除信息库.txt”。
具体函数模块功能将在第三章中具体介绍。
第三章:
函数模块介绍
程序分为管理系统和恢复区系统两部分和读取文件、存储文件四部分,以下分别介绍。
读取文件、存储文件
读取文件
该函数模块(程序名为creat)于管理系统或恢复区系统运行前运行,目的是读取二进制文件信息,构建链表;若无目标文件,则创建文件。
返回值为头指针。
函数主体为:
structstu*p1,*p2;
structstu*head;
while(fread(&(p1->inf),LEN,1,fp))um);ame);
fprintf(fp,"%10s",(p->inf).academy);
fprintf(fp,"%10s",(p->inf).majoy);
fprintf(fp,"%10s",(p->inf).province);
fprintf(fp,"%10s",(p->inf).address);
fprintf(fp,"%20s\n",(p->inf).phone);
p=p->next;
}
}
管理系统模块
管理系统(名为system)主要有四个函数功能部分,分别为添加、删除、查找、输出,以下依次介绍:
添加
该模块函数名为add,无返回值,参数为链表头指针,功能为向已建立的链表中从键盘上输入信息。
函数主体为:
structstu*p1,*p2;um));
printf("\n姓名:
");scanf("%s",(p1->inf).name);
printf("\n学院:
");scanf("%s",(p1->inf).academy);
printf("\n专业:
");scanf("%s",(p1->inf).majoy);
printf("\n省份:
");scanf("%s",(p1->inf).province);
printf("\n地址:
");scanf("%s",(p1->inf).address);
printf("\n电话号码:
");scanf("%s",(p1->inf).phone);
while((p2->next)!
=NULL)学号查找的函数主体为:
printf("请输入拟删除学生学号:
\n");
longsnum=0;
scanf("%ld",&snum);
structstu*p1,*p2;
p1=head;
while(snum!
=p1->&&p1->next!
=NULL)姓名查找(包含同名情况):
intselect=0,count=0;um);
printf("\n姓名%s",(p->inf).name);
printf("\n学院%s",(p->inf).academy);
printf("\n专业%s",(p->inf).majoy);
printf("\n省份%s",(p->inf).province);
printf("\n地址%s",(p->inf).address);
printf("\n电话号码%s\n",(p->inf).phone);
p=p->next;
}
恢复区系统模块
恢复区系统(其名为recover)是为了显示被删除信息而建立的,在函数运行之初便建立了恢复区链表,头指针设为rhead,与管理系统头指针head相区别。
并且,rhead被设为全局变量,方便被函数调用。
恢复区系统主要有查找、输出功能,其功能模块基本调用管理系统的函数,所以不再赘述。
而恢复区的输入函数,即管理区删除信息时将信息输入恢复区链表的函数,上文已提及,即deletinput,此为连接恢复区与管理系统的桥梁,只不过是单行的。
函数为:
voiddeletinput(structstu*p)
序视图就是C语言的黑框,没有美观可言。
C++的视图好一些,我也想过用C++编译一个窗口,然后在程序中调用。
但是C++还没学会,而且在调试程序的过程中遇到一些困难让我遗忘了这个想法,曾看程序看到凌晨两点,所以想法没有实践。
9.在软件技术普及的今天,做个数据库已是小菜一碟,很到软件可以使用,如MicrosoftOfficeAccess,并且功能极其强大,比我花了几天时间做出来的高级不知多少倍。
与那些专业程序相比,我的这程序不值一提,也就是练习练习C语言而已。
第五章:
实习感受
此次实习在一个凉爽的夏日开始,这在武汉极反常。
因为我们考试基本考完了,只剩下一门英语了,所以实习时间比较充裕。
实习的题目也不算太难,思路很清晰,总共三步走:
1.读取文件;2.处理链表;3.保存文件。
操作的主体是链表,原以为会很轻松,但还是遇到很多问题,以前上课时从未想到过。
经历过基本一天都在看程序的时间,我发现我懂的太少,要学的太多。
对文件的操作我一直都没注意,现在才发现其乐无穷;以前觉得链表很难,现在轻松写出程序。
学习与实践果然是不可分割的。
实习中,大家八仙过海各显神通,用链表是比较传统的,而且节省内存,有的用数组,这也可以理解,方便使用,排序便利;有的直接用文件C语句查询、删除,让我大开眼界,文件还能这么用!
在写报告时看到一篇用指针数组做的程序,相当有意思。
发现水平还是不够,同学可以用C语言编出一个比较漂亮的界面,还可以随意调用文件操作,实在让人赞叹不已。
此次实习加强了我对链表的理解,很多以前迷糊的概念得到了明确,亦让我感到C语言强大之处,直接操作内存,实在很暴力。
一句诗概括此次实习,“山重水复疑无路,柳暗花明又一村”;如今C语言实习已然结束,但是对于计算机语言的学习决不能放松,“雄关漫道真如铁,而今迈步从头越”。
现在的世界是信息化的,我们现在对于Matlab的要求也很大,C语言也是其基础。
路漫漫其修远兮,吾将上下而求索。
感谢曹老师抽出时间将C语言实习提前和这八天来的指导,同时亦感谢大家这些天来的支持与帮助,此外额外感谢武汉夏天罕见的凉爽天气,感谢生活。
附录
参考书目
1.谭浩强著《C语言程序设计》2005年7月第3版298-299、300、302-303、338页
2.吴煌坚学长的实习报告
源代码
#include<>
#include<>
#include<>
#defineNULL0
#defineLENsizeof(structstudent)
#defineLENSsizeof(structstu)
structstudentum);ame);
fprintf(fp,"%10s",(p->inf).academy);
fprintf(fp,"%10s",(p->inf).majoy);
fprintf(fp,"%10s",(p->inf).province);
fprintf(fp,"%10s",(p->inf).address);
fprintf(fp,"%20s\n",(p->inf).phone);
p=p->next;
}
}
voidprint1(structstu*p)um);
printf("\n姓名%s",(p->inf).name);
printf("\n学院%s",(p->inf).academy);
printf("\n专业%s",(p->inf).majoy);
printf("\n省份%s",(p->inf).province);
printf("\n地址%s",(p->inf).address);
printf("\n电话号码%s\n",(p->inf).phone);
}
structstu*search_name(structstu*p,charsname[20])um));
printf("\n姓名:
");scanf("%s",(head->inf).name);
printf("\n学院:
");scanf("%s",(head->inf).academy);
printf("\n专业:
");scanf("%s",(head->inf).majoy);
printf("\n省份:
");scanf("%s",(head->inf).province);
printf("\n地址:
");scanf("%s",(head->inf).address);
printf("\n电话号码:
");scanf("%s",(head->inf).phone);
n++;p2->next=NULL;continue;um));
printf("\n姓名:
");scanf("%s",(p1->inf).name);
printf("\n学院:
");scanf("%s",(p1->inf).academy);
printf("\n专业:
");scanf("%s",(p1->inf).majoy);
printf("\n省份:
");scanf("%s",(p1->inf).province);
printf("\n地址:
");scanf("%s",(p1->inf).address);
printf("\n电话号码:
");scanf("%s",(p1->inf).phone);
while((p2->next)!
=NULL)um);
printf("\n姓名%s",(p->inf).name);
printf("\n学院%s",(p->inf).academy);
printf("\n专业%s",(p->inf).majoy);
printf("\n省份%s",(p->inf).province);
printf("\n地址%s",(p->inf).address);
printf("\n电话号码%s\n",(p->inf).phone);
p=p->next;
}
}
voidsystem()
{
structstu*head;xt";xt";加学生信息\n2.查找学生信息\n3.删除学生信息\n4.输出全体学生信息\n5.退出\n\n\n");找学生信息\n2.输出全体删除信息\n3.退出\n\n\n");//菜单
scanf("%d",&select);
switch(select)//菜单选择进入相关子程序
{
case1:
search(rhead);break;//搜寻
case2:
print(rhead);break;//输出
case3:
break;//跳出菜单
default:
printf("ERROR");//输入错误
}
}while(select!
=3);
printf("欢迎闪人\n");
save(rhead->next,filename2);//存储文件
}
voidmain()
{
intselect=1;
while((select==1)||(select==2))
{
printf("*********************************************\n");
printf("进入管理系统,请按1\n");
printf("进入恢复区,请按2\n");
printf("其它键离开\n");
printf("*********************************************\n");
printf("制作人:
061092徐宗博\n");
printf("请选择:
");
scanf("%d",&select);
if(select==1)system();//进入管理系统
elseif(select==2)recover();//进图恢复区
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 学生 信息管理 系统