语言期末课设学生信息管理系统绝对正确代码版本.docx
- 文档编号:7669330
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:17
- 大小:105.49KB
语言期末课设学生信息管理系统绝对正确代码版本.docx
《语言期末课设学生信息管理系统绝对正确代码版本.docx》由会员分享,可在线阅读,更多相关《语言期末课设学生信息管理系统绝对正确代码版本.docx(17页珍藏版)》请在冰豆网上搜索。
语言期末课设学生信息管理系统绝对正确代码版本
沈阳理工大学
C语言课程设计
题目名称学生信息管理系统
课程名称C语言程序课程设计
学生姓名
学号
系、专业
指导教师
1前言
编写一个程序来处理同学个人信息。
通过一个结构体数组来存放输入的每一位同学的记录(包括姓名、电话号码、e_mail、地址),然后将其信息存入文件中。
输入一个姓名查询该同学的信息,并显示在屏幕上。
2需求分析
2.1要求
(1)用C语言实现程序设计;
(2)利用结构体进行相关信息处理;
(3)画出查询模块的流程图;
(4)系统的各个功能模块要求用函数的形式实现;
(5)界面友好(良好的人机互交),程序要有注释。
2.2任务
用C语言编写一个能够管理学生个人信息的管理系统。
程序运行时显示菜单,菜单内容包括:
(1)录入个人信息:
5个学生的个人信息,学生信息可以包括学号、姓名、性别、出生日期、联系电话、邮编和家庭住址等;
(2)修改个人信息:
用户可以修改个人信息,在输入某同学的编号后,进入修改信息的菜单至少包括:
①修改学生姓名②修改学生联系电话
(3)查询个人信息:
可以按学号查询;(4)浏览所有信息:
显示所有同学的信息;
(5)删除个人信息:
按学生姓名删除记录。
(6)退出系统。
其中,学生信息可以用二进制文件方式存储。
2.3运行环境
(1)windowsXP系统
(2)VC++2.0编译环境
2.4开发工具
C语言
3概要设计与详细设计
3、1系统流程图
图3.1系统流程图
4具体代码实现
4.1程序代码
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#include"conio.h"
#defineNsizeof(structstud)//测结构体变量的大小//
typedefstructstud
{
charnumber[20];
charname[20];
charsex[20];
charcall[20];
charQQ[20];
charadd[20];
structstud*next;
}Elemsn;//为结构体命名//
Elemsn*creatlink(void)//创建链表信息//
{
Elemsn*p1,*p2,*head;//p1为前驱,p2为后继//
inti=1;
charchoice;
head=p2=(Elemsn*)malloc(N);
head->next=NULL;
choice='y';
for(i=1;choice=='y'||choice=='Y';i++)
{
p1=(Elemsn*)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("\nQQ:
");
scanf("%s",p1->QQ);
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(Elemsn*h)//保存链表信息//
{
Elemsn*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->QQ,p->add);//向文件中写入数据//
printf("文件已成功保存,按任意键返回!
");
getche();
fclose(fp);
}
Elemsn*readlink(void)//读出已保存文件的信息//
{
Elemsn*head,*p,*q;
FILE*fp;
charfilename[20];
printf("\n请输入要打开的文件名:
");
scanf("%s",filename);
if((fp=fopen(filename,"rt"))==NULL)
{
printf("读文件出错,按任意键退出!
");
getche();
exit
(1);
}
head=q=(Elemsn*)malloc(N);
head->next=NULL;
while(!
feof(fp))
{
p=(Elemsn*)malloc(N);//建立新链表,并从文件中读出数据//
fscanf(fp,"%s%s%s%s%s%s\n",p->number,p->name,p->sex,p->call,p->QQ,p->add);
q->next=p;
q=p;
}
q->next=NULL;
fclose(fp);
printf("文件信息已正确读出,按任意键返回!
");
getch();
returnhead;
}
Elemsn*insert(Elemsn*head)//插入信息//
{
Elemsn*p;
p=(Elemsn*)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("\nQQ:
");
scanf("%s",p->QQ);
printf("\n宿舍号:
");
scanf("%s",p->add);
if(head->next!
=NULL)
{
p->next=head->next;//插入数据操作代码//
head->next=p;
}
printf("\n学生信息插入成功!
按任意键继续!
");
getche();
returnhead;
}
Elemsn*delet(Elemsn*p0)//删除信息//
{
charnum[20];
Elemsn*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电话:
%sQQ:
%s宿舍号:
%s\n\n",p->number,p->name,p->sex,p->call,p->QQ,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;
}
Elemsn*modify(Elemsn*h)//修改信息//
{
charnum[20];
Elemsn*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("\nQQ:
");
scanf("%s",p->QQ);
printf("\n宿舍号:
");
scanf("%s",p->add);
printf("修改后学生信息如下:
\n");
printf("\n学号:
%s姓名:
%s性别:
%s电话:
%sQQ:
%s宿舍号:
%s\n\n",p->number,p->name,p->sex,p->call,p->QQ,p->add);
printf("\n确认?
是Y否N:
");
choice=getche();
if(choice=='y'||choice=='Y')break;
}
printf("\n修改成功,按任意键继续!
");
getche();
returnh;
}
voidfind(Elemsn*h)//查询信息//
{
charnum[20];
Elemsn*p;
printf("\n请输入你要查找的学生的学号:
");
scanf("%s",num);
for(p=h;strcmp(p->number,num)!
=0;p=p->next);
printf("你查找的学生信息如下:
\n");
printf("\n学号:
%s姓名:
%s性别:
%s电话:
%sQQ:
%s宿舍号:
%s\n\n",p->number,p->name,p->sex,p->call,p->QQ,p->add);
printf("按任意键继续!
");
getche();
}
voidprint(Elemsn*p)//显示全部信息//
{
p=p->next;
while(p!
=NULL)
{
printf("\n学号:
%s姓名:
%s性别:
%s电话:
%sQQ:
%s宿舍号:
%s\n",p->number,p->name,p->sex,p->call,p->QQ,p->add);
p=p->next;
}
printf("\n按任意键继续!
");
getche();
}
Elemsn*sort(Elemsn*head)
{
Elemsn*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);/*返回头指针*/
}
main()
{
intchoice=1,i,ok=1;//choice用于选择对数据执行操作,i循环,ok主界面选择//
Elemsn*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;
}
}
}
}
}
4.2程序结果
图1主界面
图2输入学生信息操作
图3按学号查询学生信息操作
图4修改学生信息操作
图5删除学生信息操作
5.2课程设计总结
从这次C语言课程设计,我不仅学会了怎样编出一个管理系统,而且还深深的体会到编好一个程序是一件非常有意义的事。
我觉得编程不仅需要信心,还需要耐心,更需要团队合作之心,有了这些还不够,我们应该从实践出发,并从实践得到检验,不懂就是不懂,虚心求教才是解决问题的好办法。
在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。
在设计过程中,学会了运筹帷幄,学会了做人与处世。
课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.
通过这次课程设计,本人在多方面都有所提高。
提高了编程能力,绘图能力,熟悉了规范和标准,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 期末 学生 信息管理 系统 绝对 正确 代码 版本