学生基本信息管理系统.docx

上传人:b****6 文档编号:15630110 上传时间:2023-07-06 格式:DOCX 页数:35 大小:276.35KB
下载 相关 举报
学生基本信息管理系统.docx_第1页
第1页 / 共35页
学生基本信息管理系统.docx_第2页
第2页 / 共35页
学生基本信息管理系统.docx_第3页
第3页 / 共35页
学生基本信息管理系统.docx_第4页
第4页 / 共35页
学生基本信息管理系统.docx_第5页
第5页 / 共35页
学生基本信息管理系统.docx_第6页
第6页 / 共35页
学生基本信息管理系统.docx_第7页
第7页 / 共35页
学生基本信息管理系统.docx_第8页
第8页 / 共35页
学生基本信息管理系统.docx_第9页
第9页 / 共35页
学生基本信息管理系统.docx_第10页
第10页 / 共35页
学生基本信息管理系统.docx_第11页
第11页 / 共35页
学生基本信息管理系统.docx_第12页
第12页 / 共35页
学生基本信息管理系统.docx_第13页
第13页 / 共35页
学生基本信息管理系统.docx_第14页
第14页 / 共35页
学生基本信息管理系统.docx_第15页
第15页 / 共35页
学生基本信息管理系统.docx_第16页
第16页 / 共35页
学生基本信息管理系统.docx_第17页
第17页 / 共35页
学生基本信息管理系统.docx_第18页
第18页 / 共35页
学生基本信息管理系统.docx_第19页
第19页 / 共35页
学生基本信息管理系统.docx_第20页
第20页 / 共35页
亲,该文档总共35页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

学生基本信息管理系统.docx

《学生基本信息管理系统.docx》由会员分享,可在线阅读,更多相关《学生基本信息管理系统.docx(35页珍藏版)》请在冰点文库上搜索。

学生基本信息管理系统.docx

学生基本信息管理系统

 

科技大学

课程设计说明书

 

C语言课程设计

——学生基本信息管理系统

学生:

玉前

学号:

1567159136

专业:

软件工程

班级:

一班

指导教师:

褚燕华

日期:

2015年1月6日

 

参考文献25

致26

 

科技大学课程设计任务书

课程名称

C语言课程设计

设计题目

学生基本信息管理系统

指导教师

褚燕华

时间

2015.1.5——2015.1.9

一、教学要求

1.巩固和加深学生对C语言课程的基本知识的理解和掌握

2.掌握C语言编程和程序调试的基本技能

3.利用C语言进行基本的软件设计

4.掌握书写程序设计说明文档的能力

5.提高运用C语言解决实际问题的能力

二、设计资料及参数

每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。

某班学生基本信息管理,包括以下功能:

v从键盘输入包括学号、、性别、出生年月日、籍贯、所在院系、专业、奖惩信息等,并将其保存在磁盘文件里

v具有进行单项查询或多项查询的功能(即按照给定的关键字等找出满足条件的纪录)

v具有插入、修改和删除信息的功能

v具有输出文件数据信息的功能

三、设计要求及成果

1.分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)

2.写出详细设计说明(至少包括功能实现分析和模块流程图)

3.编写程序代码,调试程序使其能正确运行(代码书写要规,标示符要见名知意,要有必要的注释,每人至少500行代码,不包括注释和花括号)

4.设计完成的软件要便于操作和使用

5.设计完成后提交课程设计报告(请严格按照模板进行排版)

四、进度安排

第一天 选择课程设计题目,分析课题的要求

第二天 编程

第三天 编程及调试

第四天 写课程设计报告

第五天 提交课程设计报告(打印稿及电子稿)

五、评分标准

1.根据平时上机考勤、表现和进度,教师将每天点名和检查

2.根据课程设计完成情况,必须有可运行的软件。

3.根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。

六、建议参考资料

1.《C语言程序设计》,谭浩强,清华大学

2.《C语言程序设计课程设计》,振安,机械工业

第一章需求分析

1.1引言

学生基本信息管理系统

1.2任务概述

1.建立学生信息,信息至少包括,学号,性别,年龄,出生日期,家庭地址,e_mail,地址等;

2.能够提供新建,浏览,查找,修改和删除信息的功能;

3.能够提供不同方式查询的功能;

1.3数据描述

structstudent

{

charNO[20];

charname[20];

intage;

charsex[3];

charbirthday[10];

charaddress[30];

charphone[20];

chare_mail[20];

structstudent*next;//下个结点

};

1.4功能需求

1、输入功能:

一次可以完成自定义学生人数的学生信息记录的输入。

2、删除功能:

对指定学生信息进行删除。

3、修改功能:

对指定学生信息进行修改。

4、查询功能:

选择某种方式并输入该信息查询符合条件的学生信息。

5、排序功能:

以英语课程的分数对学生信息进行排序。

6、显示功能:

将以上操作后的学生信息显示出来。

7、退出主菜单。

1.5性能需求

1、输入功能:

一次可以完成自定义学生人数的学生信息记录的输入。

2、删除功能:

对指定学生信息进行删除。

3、修改功能:

对指定学生信息进行修改。

4、查询功能:

选择某种方式并输入该信息查询符合条件的学生信息。

5、排序功能:

以英语课程的分数对学生信息进行排序。

6、显示功能:

将以上操作后的学生信息显示出来。

7、退出主菜单。

1.6运行需求

运行时需要实现各个模块功能的函数来完成运行。

1.7任务计划

输入学生基本信息,对学生基本信息进行修改,删除,排序等,能够实现通过输入,等进行查询学生信息

第二章概要设计

2.1总体设计

总体结构我们采取模块化进行程序设计,要求程序的功能设计、数据结构设计及整体结构设计合理。

也可根据自己对题目的理解增加新的功能模块。

系统以菜单界面方式(至少采用文本菜单界面,如能采用图形菜单界面更好)工作,运行界面友好,演示程序以用户和计算机的方式进行。

 

学生管理系统

4、输入你要查找学生姓名

菜单

1、新增学生信息

2、删除学生信息

3、导入学生信息

4、学生信息搜素

5、学生信息保存

6、退出

7、保存学生信息:

提示保存成功

1、输入学生信息:

学生姓名,学号,性别年龄,出生日期,电话

2、输入要删除的学生编号,删除学生信息

8,退出系统

3、输出学生的姓名,学号,性别年龄,出生日期,家庭地址,e_mail,,电话

 

如图2.1

2.2数据类型设计(或数据结构设计)

structstudent

{

charNO[20];

charname[20];

intage;

charsex[3];

charbirthday[10];

charaddress[30];

charphone[20];

chare_mail[20];

structstudent*next;//下个结点

};

 

2.3接口设计//函数声明

表2.1:

函数列表

函数名

函数首部

函数功能

Void

show_menu();

void

显示菜单

voidmenu();

void

执行菜单

Void

creat_stu();

void

建立链表

voidinsert_stu();

voidprint_stu();

void

学生信息录入

Void

search_NO();

void

以学号方式查询

Void

search_name();

void

以方式查询

voidarrage_stu();

void

排序

Void

del_stu();

void

删除学生信息

voidrevise_stu();

void

修改学生信息

voidsave();

void

保存信息

如图2.2

2.4运行界面设计

主菜单模块

采用switch()函数从选择相应菜单对应功能

switch(c)

{

getchar();

case1:

insert_stu();break;//学生信息录入

case2:

print_stu();break;//学生信息浏览

case3:

search_NO();break;//以学号方式查询信息

case4:

search_name();break;//以方式查询信息

case5:

del_stu();break;//删除学生信息

case6:

revise_stu();break;//修改学生信息

case7:

arrage_stu();break;//保存学生信息

case0:

exit(0);//退出

}

 

第三章详细设计

3.1输入模块设计

数据输入模块

采用scanf()函数输入新联系人信息插入至就结构数据当中。

printf("\t\t输入:

\t");

scanf("%s",p1->NO);//学号

printf("\t\t输入学生:

\t");

scanf("%s",p1->name);//

printf("\t\t输入学生年龄:

\t");

scanf("%d",&p1->age);//年龄

printf("\t\t输入学生性别:

\t");

scanf("%s",p1->sex);//性别

printf("\t\t输入学生出生年月:

\t");

scanf("%s",p1->birthday);//出生年月

printf("\t\t输入学生地址:

\t");

scanf("%s",p1->address);//地址

printf("\t\t输入学生:

\t");

scanf("%s",p1->phone);//

printf("\t\t输入学生E-mail:

\t");

scanf("%s",p1->e_mail);//E-mail;

n++;

3.2输出模块设计

数据浏览模块

采用分屏显示,每屏3条记录。

用fread或fscanf读文件,输出结果。

for(p=head->next;p!

=NULL;p=p->next)//读出信息

{

printf("**************学生信息浏览****************\n");

printf("\t\t:

\t%s\n",p->NO);

printf("\t\t学生:

\t%s\n",p->name);

printf("\t\t学生年龄:

\t%d\n",p->age);

printf("\t\t学生性别:

\t%s\n",p->sex);

printf("\t\t学生出生年月:

\t%s\n",p->birthday);

printf("\t\t学生地址:

\t%s\n",p->address);

printf("\t\t学生:

\t%s\t\n",p->phone);

printf("\t\t学生E-mail:

\t%s\n",p->e_mail);

printf("\n");//输出信息

}

}

3.3查找模块设计

1)按方式查找模块

通过键盘输入要查找的学生,然后与及结构数据中的信息逐一对比,找出学生信息并输出

voidsearch_name()//学生信息查找

{

STU*p=NULL;

charname[20];

if(head==NULL)//判断链表是否为空

{

printf("文档中无记录!

\n");

return;

}

printf("输入学生:

");

scanf("%s",name);

for(p=head->next;p!

=NULL;p=p->next)//读出信息

{

if(!

strcmp(p->name,name))

1)按学号查找模块

通过键盘输入要查找的,然后与结构数据中的信息逐一对比,找出学生信息并输出

voidsearch_NO()//信息查找

{

STU*p=NULL;

charNO[20];

if(head==NULL)//判断链表是否为空

{

printf("文档中无记录!

\n");

return;

}

printf("请输入:

");

scanf("%s",NO);

for(p=head->next;p!

=NULL;p=p->next)//读出信息

{

if(!

strcmp(p->NO,NO))

3.4排序模块设计

通过键盘输入学生的学号,按照学号从小到大进行排序

voidarrage_stu()

{

STU*p1,*p2;

intin=0,j;

if(head->next==NULL)//首先判断

{

printf("你还没有记录,无法排序\n");

return;

}

printf("n=%d",n);

p1=head->next;

for(in=0;in

{

for(j=0,p1=head->next;j<=n-in-3;p1=p1->next,j++)

{

if(j==0)//第一次比较第一个和第二个结点信息

{

if(strcmp(p1->NO,p1->next->NO))//比较p1本身和p1下一个结点

{

p2=p1->next;

p1->next=p1->next->next;

p2->next=p1;

head->next=p2;

p1=head->next;//从新结合CUR赋值

/*

p1=head->next;

p1=p2;

}

}

if(strcmp(p1->next->NO,p1->next->next->NO))//比较p1下一个和p1下两个结点

{

p2=p1->next;

p1->next=p1->next->next;

p2->next=p1->next->next;

p1->next->next=p2;

}

}

if(strcmp(head->next->NO,head->next->next->NO))//只有两个结点信息时直接

//比较他们两个

{

p1=head->next;

head->next=p1->next;

p1->next=p1->next->next;

head->next->next=p1;

if(n==2)//只有两个结点信息时吧第二个结点的

//next赋为空

head->next->next->next=NULL;

}

}

}

3.5保存及读取模块设计

printf("\n打不开文件!

\n");

return;

}

if(head->next==NULL)

{

printf("\n信息为空!

\n");

return;voidsave()

{

printf("*********************保存信息并结束*********");

STU*p=NULL;

FILE*fp;

char*filename="fname.txt";

if((fp=fopen("fname.txt","w"))==NULL)//出错检测

{

}

else

p=head->next;

while(p!

=NULL)

{

fprintf(fp,"%s%s%d%s%s%s%s%s\n",p->NO,p->name,p->age,

p->sex,p->birthday,p->address,p->phone,p->e_mail);//存入

//文件

p=p->next;

}

printf("保存完毕!

\n");

fclose(fp);

}

 

第四章测试分析

4.1测试程序执行情况

主菜单

输入学生信息

 

学生信息浏览

按学号查找学生信息

按查找学生信息

 

修改学生信息

4.2出现的问题和解决的方法

第一次时当输入学生信息时无法进行学生信息浏览,当引入了学生信息浏览函数,可以浏览多个学生信息。

有了学生信息修改函数可以随时修改学生信息等等。

第五章用户手册

5.1使用说明

先选择录入信息,录入结束后按对应的数字跳出,执行其他任务选择操作时点击对应的数字再按回车即可。

5.2运行说明

请勿输入不符合格式的字符,如需退出请输入对应数字。

第六章课程设计总结

在我们上机调试程序的过程中,我遇到了很多问题,这次程序设计我写了好长时间,从各种资料上找,参考,终于完成了。

在这期末考试前期,各科结课,面临着各种考试,这次的课设我更是费尽心思,有时也因这样那样的原因,抱怨过,但在完成了课设之后,我发现我错了,课程设计不仅巩固了我们的知识,还使得我们学到了平时所忽略的细节,最要的是它磨练我们的毅力让我们在大学的下一阶段能更好的成长,最后走向成功,这是值得我们每一个人体验的。

程序源代码

#include

#include

#include

#defineLENsizeof(structstudent)

//("*******************定义结构体******************");

structstudent

{

charNO[20];

charname[20];

intage;

charsex[3];//'F'表示性别男,'M'表示性别女

charbirthday[10];

charaddress[30];

charphone[20];

chare_mail[20];

structstudent*next;//下个结点

};

typedefstructstudentSTU;

STU*head=NULL;//全局指针

intn,i=0;//全局变量

//("*************************自定义函数*************");

voidshow_menu();//显示菜单

voidmenu();//执行菜单

voidcreat_stu();//建立链表

voidinsert_stu();//学生信息录入

voidprint_stu();//学生信息浏览

voidsearch_NO();//以学号方式查询信息

voidsearch_name();//以方式查询信息

voidarrage_stu();//排序

voiddel_stu();//删除学生信息

voidrevise_stu();//修改学生信息

voidsave();//保存信息

voidmain()

{

creat_stu();

menu();

}

//("********************创建链表***************");

voidcreat_stu()

{

FILE*fp;

longsize;

STU*p1,*p2;

head=(STU*)malloc(sizeof(STU));

head->next=NULL;

if((fp=fopen("fname.txt","r"))==NULL)

{

printf("这是新表\n");

return;

}

fseek(fp,0L,2);

size=ftell(fp);

if(!

size)

{

printf("这是空表\n");

return;

}//开始创建链表

rewind(fp);//移到文件首部

p2=head->next;//找到当前位置

while(!

feof(fp))

{

p1=(STU*)malloc(sizeof(STU));

fscanf(fp,"%s%s%d%s%s%s%s%s\n",p1->NO,p1->name,&p1->age,p1->sex,p1->birthday,p1->address,p1->phone,p1->e_mail);

p1->next=NULL;

//创建结点完

if(head->next==NULL)

head->next=p1;

else

p2->next=p1;

p2=p1;

n++;

}

p2->next=NULL;

fclose(fp);

}

 

//("***********************执行菜单*****************");

voidmenu()

{

intc;

show_menu();

while

(1)

{

scanf("%d",&c);

switch(c)

{

getchar();

case1:

insert_stu();break;

case2:

print_stu();break;

case3:

search_NO();break;

case4:

search_name();break;

case5:

del_stu();break;

case6:

revise_stu();break;

case7:

arrage_stu();break;

case0:

exit(0);

}//执行菜单选项

show_menu();

}

}

//("************************显示菜单****************");

voidshow_menu()

{

printf("\n");

printf("\n*********************菜单************\n");

printf("\t\t1.输入学生信息\n");

printf("\t\t2.浏览学生信息\n");

printf("\t\t3.以学号方式查询信息\n");

printf("\t\t4.以方式查询信息\n");

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

printf("\t\t6.修改学生信息\n");

printf("\t\t7.排序\n");

printf("\t\t0.退出\n");

printf("\n***************************************\n");

printf("\n请选择\n");

}

//("******************学生信息录入******************");

voidinsert_stu()//学生信息录入

{

n=0;

STU*p1=NULL,*p2=NULL;

p1=(STU*)malloc(sizeof(STU));

printf("\n****************录入学生信息*********\n");

printf("\t\t输入:

\t");

scanf("%s",p1->NO);//学号

printf("\t\t输入学生:

\t");

scanf("%s",p1->name);//

printf("\t\t输入学生年龄:

\t");

scanf("%d",&p1->age);//年龄

printf("\t\t输入学生性别:

\t");

scanf("%s",p1->sex);//性别

printf("\t\t输入学生出生年月:

\t");

scanf("%s",p1->birthday);//出生年月

printf("\t\t输入学生地址:

\t");

scanf("%s",p1->address);//地址

printf("\t\t输入学生:

\t");

scanf("%s",p1->phone);//

printf("\t\t输入学生E-mail:

\t");

scanf("%s",p1->e_mail);//E-mail;

n++;

if(head->next==NULL)

{

head=(STU*)malloc((LEN));

head->next=p1;

}

else

{

for(p2=head;p2->next!

=NULL;p2=p2->next);//找到最后的结点,将增加的结点挂在上面

p2->next=p1;

}

p1->next=NULL;

save();//保存到文件

}

//("********************学生信息浏览*************\n");

voidprint_stu()//学生信息浏览

{

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2