课程设计.docx

上传人:b****6 文档编号:8838453 上传时间:2023-02-02 格式:DOCX 页数:20 大小:2.09MB
下载 相关 举报
课程设计.docx_第1页
第1页 / 共20页
课程设计.docx_第2页
第2页 / 共20页
课程设计.docx_第3页
第3页 / 共20页
课程设计.docx_第4页
第4页 / 共20页
课程设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

课程设计.docx

《课程设计.docx》由会员分享,可在线阅读,更多相关《课程设计.docx(20页珍藏版)》请在冰豆网上搜索。

课程设计.docx

课程设计

得分:

 

信电工程学院

《高级语言程序设计课程设计》报告

 

 

题目:

学生信息管理系统

班级:

10电信1

学号:

20100504161

姓名:

顾英德

指导教师:

黄为勇

 

2013年1月15日

目录

1程序目标及功能---------------------------------------------------1

1.1课题背景---------------------------------------------------1

1.2系统功能---------------------------------------------------------------1

1.3设计要求----------------------------------------------------------------1

2程序功能模块组成及流程图-------------------------------------------------2

2.1系统功能模块-----------------------------------------------------------2

2.2各模块流程图-----------------------------------------------------------2

3程序主要数据结构及函数列表---------------------------------------------4

3.1程序中使用的数据结构----------------------------------------------4

3.2函数列表--------------------------------------------------------------4

4程序代码及运行结果-------------------------------------------------------4

5总结与体会---------------------------------------------------------------------15

 

1.程序目标及功能

1.1课题背景

现代科学多元化已经开始了。

随着科学技术的快速发展和人们生活水平的提高,信息技术越来越深入人心。

计算机在人类生活和学习中充当着很重要的作用。

随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。

管理信息系统是一个不断发展的新型学科,任何一个单位要生存要发展,要高效率地把内部活动有机地组织起来,就必须建立与自身特点相适应的管理信息系统。

而建立一个方便快捷的管理系统是每个管理者所希望的。

我设计的是一个关于学生信息管理的数据库系统,通过这个系统管理员可以简捷、方便的对学生信息进行增加、浏览、删除等功能,而用户也可以通过这个系统对学生信息进行查询等功能,从而使学校和个人更方便的查找,浏览学生的信息,并通过成绩排序对学生的情况作进一步的了解,对学生的管理更加便捷。

1.2系统功能

学生信息管理系统是一个小型学生信息管理程序,该软件能够实现学生信息表的建立,学生信息的添加,学生信息的显示,指定姓名或学号查询学生信息,学生信息的删除等简单管理功能。

程序要求提供简单友好易于操作的界面。

程序以C语言/MATLAB语言开发。

1.3设计要求

本课题要求设计实现“学生信息管理系统”程序。

该程序实现学生信息管理的基本功能,包括信息表的建立、显示等功能。

要求用动态链表实现该应用程序。

用函数分别实现动态链表的建立、动态链表输出等功能。

函数要求使用指针作形参。

 

2.程序功能模块组成及流程图

2.1系统功能模块

(1)学生节点数至少10个。

学生信息包括学号,姓名,性别,年龄,籍贯,电话号码及email地址。

(2)程序主界面包括程序名称及编程者学号、姓名、班级;同时要求输入功能号码,选择进入功能模块程序。

主界面格式及选择项(供参考)如下图1“系统主菜单”:

(中文英文均可)

(3)各模块功能:

A.创建学生信息表。

动态创建学生信息表,同时输入学生信息。

学生信息表用链表实现。

链表节点个数不少于10个。

B.输出学生信息。

把链表所有结点信息以表格形式输出。

C.追加学生信息。

D.查询学生信息。

输入一个姓名,查找该学号所在结点,输出该节点信息。

E.删除学生信息。

输入学号,删除该节点。

F.保存学生信息到磁盘文件。

建立一个磁盘文件,把所建立的表格写入文件。

F.从磁盘文件中读出学生信息。

 

 

2.2各模块流程图

3程序主要数据结构及函数列表

3.1程序中使用的数据结构

使用的数据结构是线性列表

3.2函数列表

xueshengxinxi*creatlink(void)

voidsavelink(xueshengxinxi*h)

xueshengxinxi*readlink(void)

xueshengxinxi*insert(xueshengxinxi*head)

xueshengxinxi*delet(xueshengxinxi*p0)

voidfind(xueshengxinxi*h)

voidmain()

4.程序代码及运行结果

程序代码

#include"stdio.h"

#include"malloc.h"

#include"stdlib.h"

#include"string.h"

#include"conio.h"

#defineNsizeof(structstud)/*N为结构体变量的大小*/

/****************************************************************/

typedefstructstud/**/

{

charnumber[40];

charname[40];

charsex[40];

charage[80];

charcall[40];

charjiguan[80];/*把分数都声明称字符串*/

charemail[80];

structstud*next;

}xueshengxinxi;/*为结构体命名*/

/*自此,结构体的名称就是xueshengxinxi,以后可直接用这个名称来声明结构体*/

 

/****************************************************************/

/*创建链表信息,带回一个指向链表头的指针*/

xueshengxinxi*creatlink(void)

{

xueshengxinxi*p1,*p2,*head;/*p1为前一个指针,p2为后一个指针,都是临时的*/

inti=1;

charchoice;

head=p2=(xueshengxinxi*)malloc(N);/*"(xueshengxinxi*)"作用是使malloc返回的指针转换为指向结构体数据类型的指针"*"不可省,否则不是指针*/

head->next=NULL;/*新建的链表,只有一个头*/

choice='y';/*新链表,先满足初始条件*/

for(i=1;choice=='y'||choice=='Y';i++)/*循环的条件有输入者来定!

*/

{

p1=(xueshengxinxi*)malloc(N);/*p1为指向结构体类型的指针*/

printf("\n\n------------------------输入学生信息---------------------\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->age);/*输出的是字符串*/

printf("\n电话:

");

scanf("%s",p1->call);

printf("\n籍贯:

");

scanf("%s",p1->jiguan);/*输出的是字符串*/

printf("\n邮箱:

");

scanf("%s",p1->email);/*输出的是字符串*/

p2->next=p1;

p2=p1;

printf("\n是否继续?

(Y/N):

");

choice=getche();/*按任意键返回*/

printf("\n");

}

p2->next=NULL;/*这是链表的终结*/

return(head);

}

 

/***************************************************************-*/

/*保存链表信息的函数*/

voidsavelink(xueshengxinxi*h)

{

xueshengxinxi*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%s\n",p->number,p->name,p->sex,p->age,p->call,p->jiguan,p->email);//向文件中写入数据//

printf("\n文件已成功保存,按任意键返回!

");

getche();/*按任意键返回*/

fclose(fp);

}

 

/****************************************************************/

/*读出已保存文件的信息*/

xueshengxinxi*readlink(void)

{

xueshengxinxi*head,*p,*q;

FILE*fp;

charfilename[20];

printf("\n请输入要打开的文件名:

");

scanf("%s",filename);

if((fp=fopen(filename,"rt"))==NULL)

{

printf("读文件出错,按任意键退出!

");

getche();

exit

(1);

}

head=q=(xueshengxinxi*)malloc(N);

head->next=NULL;

while(!

feof(fp))

{

p=(xueshengxinxi*)malloc(N);/*建立新链表,并从文件中读出数据*/

fscanf(fp,"%s%s%s%s%s%s%s\n",p->number,p->name,p->sex,p->age,p->call,p->jiguan,p->email);

q->next=p;

q=p;

}

q->next=NULL;

fclose(fp);

printf("\n文件信息已正确读出,按任意键返回!

");

getch();

returnhead;

}

 

/****************************************************************/

xueshengxinxi*insert(xueshengxinxi*head)/*插入信息*/

{

xueshengxinxi*p;

p=(xueshengxinxi*)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->age);

printf("\n电话:

");

scanf("%s",p->call);

printf("\n籍贯:

");

scanf("%s",p->jiguan);

printf("\n邮箱:

");

scanf("%s",p->email);

if(head->next!

=NULL)

{

p->next=head->next;/*插入数据操作代码*/

head->next=p;

}

printf("\n学生信息插入成功!

按任意键继续!

");

getche();

returnhead;

}

/****************************************************************/

/*删除信息*/

xueshengxinxi*delet(xueshengxinxi*p0)

{

charnum[20];

xueshengxinxi*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你要删除的信息如下,请确认是否删除:

\n");

printf("\n学号:

%s姓名:

%s性别:

%s年龄:

%s电话:

%s籍贯:

%s邮箱:

%s\n\n",p->number,p->name,p->sex,p->age,p->call,p->jiguan,p->email);

printf("\n是Y,否N:

");/*显示要删除的学生的信息*/

choice=getche();

if(choice=='Y'||choice=='y')

{

p0->next=p->next;/**/

free(p);

printf("\n文件删除成功!

");

}

printf("\n按任意键结束!

");

getche();

returnp0;

}

/****************************************************************/

voidfind(xueshengxinxi*h)/*查询信息*/

{

charnum[20];

xueshengxinxi*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籍贯:

%s邮箱:

%s\n\n",p->number,p->name,p->sex,p->age,p->call,p->jiguan,p->email);

printf("按任意键继续!

");

getche();

}

voidprint(xueshengxinxi*p)/*显示全部信息*/

{

p=p->next;

while(p!

=NULL)

{

printf("\n学号:

%s姓名:

%s性别:

%s年龄:

%s电话:

%s籍贯:

%s邮箱:

%s\n",p->number,p->name,p->sex,p->age,p->call,p->jiguan,p->email);

p=p->next;

}

printf("\n按任意键继续!

");

getche();

}

/*******************************************************************************/

/*主函数*/

voidmain()

{

//system("color6");

/*设置颜色1(蓝色)是背景色代号F(亮白色)是前景色代号*/

intchoice=1,i,ok=1;/*choice用于选择对数据执行操作已经是1,i循环,一直会循环到i=4即退出,ok主界面选择*/

xueshengxinxi*head,*h;/*外部变量定义头指针*/

head=NULL;/*外部变量*/

i=1;

do

{

i++;

system("cls");/*把以前的操作痕迹清除*/

printf("\n================================================================\n");

printf("\n学生信息管理系统\n");

printf("\n================================================================\n");

printf("\n学号:

20100504161姓名:

顾英德班级:

10电信1班\n");

printf("\n1.建立新的学生信息.\n");

printf("\n2.读取已经建立文件.\n");

printf("\n3.退出;\n");

printf("\n================================================================\n");

printf("\n请输入你的选择:

");

scanf("%d",&ok);

if(ok==1)

{

system("cls");

head=creatlink();/*创建新链表并保存文件*/

savelink(head);

}

if(ok==2)

{

head=readlink();/*进入文件,对已知数据进行操作*/

for(i=1;choice!

=5;i++)

{

system("cls");

printf("\n\n\n----------学生信息管理系统-----------\n\n\n");

printf("1.添加学生信息;\n\n");

printf("2.删除学生信息;\n\n");

printf("3.查询学生信息;\n\n");

printf("4.显示学生信息;\n\n");

printf("5.退出;\n\n");

printf("请输入你要执行的操作序号:

");

scanf("%d",&choice);

switch(choice)

{

case1:

h=insert(head);savelink(h);break;/*增---对新信息进行保存*/

case2:

h=delet(head);savelink(h);break;/*删除后保存*/

case3:

find(head);break;/*查找*/

case4:

print(head);break;/*显示*/

case5:

printf("程序已退出\n");break;

}

}

}

}while(ok!

=3);

printf("\n系统运行由此结束!

\n\n");

}

 

5.总结与体会

通过一周的努力,终于完成了这次C语言程序设计。

在这个《学生信息管理系统》C语言课程设计中,完成了基本功能,即可以检索记录、新建新记录、删除记录、使用文件对记录进行保存和读取功能。

在开始进行课程设计时,先进行界面模块的总体把握,充分了解自己要设计的程序的总体的结构,从而,在其过程中能一个模块一个函数进行详细的构思,从而在调试程序时也显得比较轻松。

虽然出现了很多的错误,但是通过自己和同学的共同努力,终于找到错误并加以改正。

同时也要感谢老师的指导与帮助,使我能够在短时间内完成这份程序设计,十分的感谢老师。

总的来说,这次课程设计收获很多,为了完成这次设计,参考了一些书籍,细看了课本,了解了以前常忽视却很重要的东西,深化了对C语言的理解,进一步理解对C语言进行程序设计的方法和步骤,加深了结构化程序设计的思想,更重要的是,积累了很多调试程序的经验,为进一步学习C语言奠定了一定的基础,同时也为今后的学习和生活奠定了基础,有利于今后的发展。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1