学生信息管理系统C语言课程方案.docx
《学生信息管理系统C语言课程方案.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统C语言课程方案.docx(18页珍藏版)》请在冰豆网上搜索。
学生信息管理系统C语言课程方案
课程设计报告书
所属课程名称C语言课程设计
题目 学生信息管理系统
2018年6月14日
目录
第1章需求分析
第2章整体设计
第3章详细设计
第4章系统测试
第5章课程设计心得
第6章参考文献
第一章设计内容及要求
设计“学生信息管理系统”使其具有学生信息录入功能,修改、删除、显示和查询功能。
<1)包括创建学生个人信息:
学生学号、姓名、年龄、号码、地址。
<2)学生信息添加功能。
<3)学生信息删除功能。
<3)学生信息修改功能。
<4)查询学生信息功能。
<5)显示全部学生信息功能。
第二章总体设计思路
1>程序设计组成框图
2>程序流程图<见下页)
第三章详细设计说明
1>头文件
#include
#include
#include
#include
#defineNsizeof(structstud>
2>数入口说明
main(>。
主函数;
voidmenu(>。
主菜单界面;
voidadd(>。
添加新的学生信息;
voidprint(inti>。
打印学生信息;
voidscan(>。
查找学生信息;
voidres(>。
检索学生信息界面;
voidres_name(>。
按姓名检索;
voidres_num(>。
按学号检索;
voiddel(inti>。
删除学生信息;
voidmodify(inti>。
修改学生信息;
voidfileopen(>。
打开文件;
voidfilesave(>。
保存文件;
3>调用关系
add(>
menu(>
add(>
fileopen(>
res(>
add(>
menu(>
scan(>
menu(>
main(>
modify(inti>
res_name(>
res(>
del(inti>
res_num<)
menu(>
filesave(>
第四章调试与测试
1>编译工具
VC++6.0
2>主菜单
第五章心得体会
通过这次C程序课程设计,我感受到了编程是一项非常烦琐周密的活动,它不但需要一个人周密的思考问题的能力,处理问题的能力,还需要有足够的耐心和严谨治学的作风,来不得半点马虎,一点小的错误就可能导致整个程序不能运行。
我初步学会了课程设计的基本方法,学会了怎样去借鉴别人的方法和经验,知道如何去查找资料和整合处理这些资料的能力,使我收益最大的是享受到了一种成功的喜悦。
因为C语言底子比较差,我选择的是相对容易的学生信息管理系统。
先开始,比较快速的把大体程序代码写出来了,然后是进行编译,这个环节是一个非常痛苦和艰难的,常常会因为一小点的错误而在编译失败与再次修改的漫漫循环之路中,但失败的越多,对人的考验就越多,在编译运行成功之后的享受成功的喜悦也就越多,另外在调试程序的过程中不断的思考和运用已经学到的知识,这对于自己是有很大的提高的。
由于所学的知识不多,自己的编程经验不足,仍存在一些问题,如不能实现模糊查找等功能。
按现有的知识水平有些东西暂时还无法解决,还有待于在以后的学习中不断提高和改进
第六章参考文献
1.谢希仁.计算机网络<第五版)[M].北京:
电子工业出版社,2008年2月
2.胡小强计算机网络[M]北京:
北京邮电大学出版社2005年1月
3.李丽娟《C语言程序设计教程》<第二版)[M]人民邮电出版社,2009年3月
4.李丽娟《C语言程序设计教程习题答案与实验指导》<第二版)[M]人民邮电出版社附件程序源代码
#include
#include
#include
#include
#defineNsizeof(structstud>//测结构体变量的大小//
typedefstructstud
{
charnumber[20]。
charname[20]。
charsex[20]。
charcall[20]。
charadd[20]。
structstud*next。
}fun。
//为结构体命名//
fun*creatlink(void>//创建链表信息//
{
fun*p1,*p2,*head。
//p1为前驱,p2为后继//
inti=1。
charchoice。
head=p2=(fun*>malloc(N>。
head->next=NULL。
choice='y'。
for(i=1。
choice=='y'||choice=='Y'。
i++>
{
p1=(fun*>malloc(N>。
printf("*******************************************************************************\n\n">。
printf("请输入第%d个学生的信息:
\n",i>。
printf("学号:
">。
scanf("%s",p1->number>。
printf("\n姓名:
">。
scanf("%s",p1->name>。
printf("\n性别:
">。
scanf("%s",p1->sex>。
printf("\n电话:
">。
scanf("%s",p1->call>。
printf("\n宿舍号:
">。
scanf("%s",p1->add>。
p2->next=p1。
p2=p1。
printf("\n是否继续?
(Y/N>:
">。
choice=getche(>。
printf("\n">。
}
p2->next=NULL。
return(head>。
}
voidsavelink(fun*h>//保存链表信息//
{
fun*p。
FILE*fp。
charfliename[20]。
printf("\n请输入你要保存的文件名?
">。
scanf("%s",fliename>。
if((fp=fopen(fliename,"wt">>==NULL>
{
printf("写文件出错?
按任意键退出!
">。
getche(>。
exit(1>。
}
for(p=h->next。
p!
=NULL。
p=p->next>
fprintf(fp,"%s%s%s%s%s%s\n",p->number,p->name,p->sex,p->call,p->add>。
//向文件中写入数据//
printf("文件已成功保存?
按任意键返回!
">。
getche(>。
fclose(fp>。
}
fun*readlink(void>//读出已保存文件的信息//
{
fun*head,*p,*q。
FILE*fp。
charfilename[20]。
printf("\n请输入要打开的文件名:
">。
scanf("%s",filename>。
if((fp=fopen(filename,"rt">>==NULL>
{
printf("读文件出错?
按任意键退出!
">。
getche(>。
exit(1>。
}
head=q=(fun*>malloc(N>。
head->next=NULL。
while(!
feof(fp>>
{
p=(fun*>malloc(N>。
//建立新链表,并从文件中读出数据//
fscanf(fp,"%s%s%s%s%s%s\n",p->number,p->name,p->sex,p->call,p->add>。
q->next=p。
q=p。
}
q->next=NULL。
fclose(fp>。
printf("文件信息已正确读出?
按任意键返回!
">。
getch(>。
returnhead。
}
fun*insert(fun*head>//插入信息//
{
fun*p。
p=(fun*>malloc(N>。
printf("\n请输入要插入学生的信息:
\n">。
printf("\n学号?
">。
scanf("%s",p->number>。
printf("\n姓名:
">。
scanf("%s",p->name>。
printf("\n性别:
">。
scanf("%s",p->sex>。
printf("\n电话:
">。
scanf("%s",p->call>。
printf("\n宿舍号:
">。
scanf("%s",p->add>。
if(head->next!
=NULL>
{
p->next=head->next。
//插入数据操作代码//
head->next=p。
}
printf("\n学生信息插入成功!
按任意键继续!
">。
getche(>。
returnhead。
}
fun*delet(fun*p0>//删除信息//
{
charnum[20]。
fun*p。
charchoice。
if(p0->next==NULL>
{
printf("信息出错!
按任意键退出!
">。
getch(>。
exit(1>。
}
printf("\n请输入要删除学生的学号?
">。
scanf("%s",num>。
for(p=p0->next。
strcmp(p->number,num>!
=0。
p0=p,p=p->next>。
//找到要删除的学生的信息//
printf("你要删除的信息如下,请确认是否删除:
\n">。
printf("\n学号:
%s姓名:
%s性别:
%s电话:
%s宿舍号:
%s\n\n",p->number,p->name,p->sex,p->call,p->add>。
printf("\n是Y,否N:
">。
//显示要删除的学生的信息//
choice=getche(>。
if(choice=='Y'||choice=='y'>
{
p0->next=p->next。
free(p>。
printf("\n文件删除成功!
">。
}
printf("\n按任意键结束!
">。
getche(>。
returnp0。
}
fun*modify(fun*h>//修改信息//
{
charnum[20]。
fun*p。
charchoice。
printf("\n请输入要修改学生信息的学号?
">。
scanf("%s",num>。
for(p=h。
strcmp(p->number,num>!
=0。
p=p->next>。
//找到要删除的学生的信息//
while(1>
{
printf("请输入修改后学生的信息?
\n">。
printf("学号?
">。
scanf("%s",p->number>。
printf("\n姓名:
">。
scanf("%s",p->name>。
printf("\n性别:
">。
scanf("%s",p->sex>。
printf("\n电话:
">。
scanf("%s",p->call>。
printf("\n宿舍号:
">。
scanf("%s",p->add>。
printf("修改后学生信息如下:
\n">。
printf("\n学号:
%s姓名:
%s性别:
%s电话:
%s宿舍号:
%s\n\n",p->number,p->name,p->sex,p->call,p->add>。
printf("\n确认?
是Y否N:
">。
choice=getche(>。
if(choice=='y'||choice=='Y'>break。
}
printf("\n修改成功,按任意键继续!
">。
getche(>。
returnh。
}
voidfind(fun*h>//查询信息//
{
charnum[20]。
fun*p。
printf("\n请输入你要查找的学生的学号?
">。
scanf("%s",num>。
for(p=h。
strcmp(p->number,num>!
=0。
p=p->next>。
printf("你查找的学生信息如下:
\n">。
printf("\n学号:
%s姓名:
%s性别:
%s电话:
%s宿舍号:
%s\n\n",p->number,p->name,p->sex,p->call,p->add>。
printf("按任意键继续!
">。
getche(>。
}
voidprint(fun*p>//显示全部信息//
{
p=p->next。
while(p!
=NULL>
{
printf("\n学号:
%s姓名:
%s性别:
%s电话:
%s宿舍号:
%s\n",p->number,p->name,p->sex,p->call,p->add>。
p=p->next。
}
printf("\n按任意键继续!
">。
getche(>。
}
fun*sort(fun*head>
{
fun*q,*t,*p。
p=head。
t=NULL。
while(t!
=head->next>
{
p=head。
q=p->next。
while(q->next!
=t>
{
if(strcmp(p->next->number,q->next->number>>0>/*前结点和后结点比
较大小*/
{
p->next=q->next。
q->next=q->next->next。
p->next->next=q。
}
p=p->next。
q=p->next。
}
t=q。
}
printf("学生信息排序完毕?
按任意键继续!
">。
getche(>。
print(head>。
return(head>。
/*返回头指针*/
}
voidmain(>
{
intchoice=1,i,ok=1。
//choice用于选择对数据执行操作,i循环,ok主界面选择//
fun*head,*h。
head=NULL。
for(i=1。
ok!
=0。
i++>
{
system("cls">。
printf("\n欢迎来到学生信息管理系统主界面!
\n\n\n">。
printf("\n\n\n1.创建新文件.\n\n\n">。
printf("2.读取原文件,并执行相应操作.(原文件名为:
jxx>">。
printf("\n\n\n0.退出?
">。
printf("\n\n\n\n\n请选择你要执行的操作:
">。
scanf("%d",&ok>。
if(ok==1>
{
system("cls">。
head=creatlink(>。
//创建新链表并保存文件//
savelink(head>。
}
if(ok==2>
{
head=readlink(>。
//进入文件,对已知数据进行操作//
for(i=1。
choice!
=0。
i++>
{
system("cls">。
printf("************欢迎来到学生信息管理系统************\n\n\n">。
printf("1.添加学生信息?
\n\n">。
printf("2.删除学生信息?
\n\n">。
printf("3.修改学生信息?
\n\n">。
printf("4.查询学生信息?
\n\n">。
printf("5.显示全部信息?
\n\n">。
printf("6.排序全部信息?
\n\n">。
printf("0.退出?
\n\n">。
printf("请输入你要执行的操作代码?
">。
scanf("%d",&choice>。
switch(choice>
{
case1:
h=insert(head>。
savelink(h>。
break。
//执行增,删,改完毕后对新信息进行保存//
case2:
h=delet(head>。
savelink(h>。
break。
case3:
h=modify(head>。
savelink(h>。
break。
case4:
find(head>。
break。
case5:
print(head>。
break。
case6:
h=sort(head>。
savelink(h>。
break。
case0:
break。
}
}
}
}
}