数据结构课程设计学生籍贯管理系统.docx

上传人:b****5 文档编号:6793253 上传时间:2023-01-10 格式:DOCX 页数:18 大小:189.34KB
下载 相关 举报
数据结构课程设计学生籍贯管理系统.docx_第1页
第1页 / 共18页
数据结构课程设计学生籍贯管理系统.docx_第2页
第2页 / 共18页
数据结构课程设计学生籍贯管理系统.docx_第3页
第3页 / 共18页
数据结构课程设计学生籍贯管理系统.docx_第4页
第4页 / 共18页
数据结构课程设计学生籍贯管理系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

数据结构课程设计学生籍贯管理系统.docx

《数据结构课程设计学生籍贯管理系统.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计学生籍贯管理系统.docx(18页珍藏版)》请在冰豆网上搜索。

数据结构课程设计学生籍贯管理系统.docx

数据结构课程设计学生籍贯管理系统

 

1设计内容及要求

1.1课程设计要求

1.要求利用C语言面向过程的编程思想来完成系统的设计;

2.突出C语言的函数特征,以多个函数实现每一个子功能;

3.画出功能模块图;

4.进行简单界面设计,能够实现友好的交互;

5.具有清晰的程序流程图和数据结构的详细定义;

6.熟练掌握C语言对文件的各种操作。

1.2学生籍贯管理系统的要求

该程序应该具有下列功能:

(1)输入学生信息并以磁盘文件保存;

(2)读取磁盘文件并显示输出所有学生的籍贯信息;

(3)按学号或姓名查询其籍贯;

(4)按籍贯查询并输出该籍贯的所有学生;

(5)能添加、删除和修改学生的籍贯信息;

(6)显示输出天津籍和非天津籍学生的信息并可分别存盘;

2程序设计环境及设计思想

2.1软件设计环境

MicrosoftVisualC++6.0

2.2设计思想

该程序运用了结构体数组的输入,输出,修改及存储,采用循环的方式对程序进行编写,同时也采用循环的方式对程序进行输入、显示、查询、检索、删除、编辑等操作。

实现编程的意义。

3数据保存方式以及格式

本学生信息系统将能自动把输入的学生信息保存为C:

//data.txt文件中,在文件的读取时,系统将能自动把该二进制文件读出,并在屏幕上显示出学生信息。

前提是必须在C盘中创建data.txt文件。

4模块的调用、划分与功能图

4.1各软件模块之间的调用方式

程序中各个模块之间的调用方式主要是通过函数的调用实现的。

先使用主函数调用框架函数,然后在框架函数中调用不同功能的函数,达到对学生信息管理的目的。

4.2系统完成功能

每条记录包括一个学生学号、姓名、籍贯。

1、输入功能:

可以一次完成无数条记录的输入。

2、显示功能:

完成全部学生记录的显示。

3、查找功能:

完成按姓名、学号查找学生记录,并显示。

4、修改功能:

通过查找学生姓名、学号,修改学生记录。

5、保存功能:

将学生记录保存到任何自定义的文件中。

6、读取功能:

将保存到文件中的学生记录读取出来。

7、分类功能:

分别显示天津籍跟非天津籍的学生并分别存盘,且根据需要显示出来。

8、应提供一个界面来调用各个功能,调用界面和功能的操作界面应尽可能清晰美观。

4.3功能框图显示

 

图表1

5界面设计

功能主界面提供了良好的控制台界面,能够方便的根据功能采取相应的操作,简单明了,去除了复杂、多余的步骤。

当输入不符合要求时,则会显示相应的提示。

运行程序时,该程序显示的主界面显示如下:

图1

输入功能号:

1,则显示已经存入的学生籍贯信息记录

图2

输入功能号:

2,则显示删除学生记录界面

图3

输入功能号:

3,显示修改学生籍贯界面

图4

输入功能号:

7,显示查询所有上海籍的学生

图5

输入功能号:

8,显示天津籍跟非天津籍的学生

图6

5.1学生籍贯管理系统公共数据结构

在学生籍贯管理系统中使用的公共数据结构例举如下:

#defineMAX300\\定义常量N表示可录入最大学生数

inti,j、k,sum,\\i表示第几位学生,j\k都用来存放赋的值,sum表示查询时该学生不存在的学生数0人

intcount\\存放学生总人数

inti\\变量i存放循环次数

structstudent\\定义一个名为student的结构体,这个结构体定义了学生的基本信息

charno\\定义学生的学号

charname\\定义学生的姓名

charad\\定义学生的籍贯

intb\\用来跳出某项功能

structstudent、structstudentstu[MAX],定义两个结构体,两者是嵌套的。

dd是全局的结构体变量名

6小结

通过这次课设,我学会了如何把数据结构的知识应用到实践当中,同时也进一步加深了对c/c++语言语法的应用,以及深刻的掌握了数据结构和c/c++语言的结合运用。

在编程过程中,遇到了许多问题,在一次次的运行错误后,总是发现问题的所在,并且一步步加以改正,也从中学到了许多知识,感觉又重新学习了一次数据结构课程。

虽然我的程序还不够完善,还需加以改进以实现更多的功能,但是我会尽我最大的努力去完成它,我相信我会努力去把程序做的更加完美。

参考文献

[1]严蔚敏、吴伟民编著.数据结构(C语言版).清华大学出版社。

[2]藤国文等编著.数据结构课程设计.北京:

清华大学出版社。

[3]齐景嘉编著.数据结构(含实训).东南大学出版社。

[4]朱儒荣、朱辉等编著.数据结构常见题型解析与模拟题西北工业大学出版社。

[5]徐孝凯,贺桂英等编著.数据结构(C语言描述).清华大学出版社。

[6]徐孝凯编著.数据结构实用教程.北京:

清华大学出版社。

[7]严蔚敏,陈文博编著.数据结构及算法教程.北京:

清华大学出版社。

[8]刘振安,刘燕君等编著.C程序设计课程设计.北京:

机械出版社。

[9]李建学、李光元、吴春芳等编著.数据结构课程设计案例精编.清华大学出版社。

 

附录:

程序源代码

#include

#include

#include

#include

#defineMAX300

structstudent

{

charname[10];//姓名

charno[50];//学号

charad[20];//籍贯

};

structdata

{intcount;//当前学生数组中学生的个数

structstudentstu[MAX];//学生数组

}dd;

//显示主菜单

voidmenu()

{

system("cls");

printf("\n");

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

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

printf("\t\t\t*学生籍贯信息记录簿*\n");

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

printf("\t\t\t*[0]退出*\n");

printf("\t\t\t*[1]查看所有学生信息*\n");

printf("\t\t\t*[2]输入学生记录*\n");

printf("\t\t\t*[3]删除学生记录*\n");

printf("\t\t\t*[4]修改学生籍贯*\n");

printf("\t\t\t*[5]查询(学号)*\n");

printf("\t\t\t*[6]查询(姓名)*\n");

printf("\t\t\t*[7]查询(籍贯)*\n");

printf("\t\t\t*[8]显示天津籍与非天津籍*\n");

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

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

}

//等待用户按回车后回到主菜单

voidto_menu()

{

charc1,c2;

printf("\n\n\n按回车键返回主菜单...");

scanf("%c%c",&c1,&c2);

menu();

}

//查看所有学生信息

voidview_data()

{

inti;

printf("姓名\t学号\t\t籍贯");

printf("\n-------------------------------------------------------------------\n");

for(i=0;i

printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);

}

//将数据从结构体数组保存到文件中

voidsave_data()

{

FILE*fp;

inti,k;

k=dd.count;

fp=fopen("c:

/dada.txt","w");

fwrite(&k,sizeof(int),1,fp);

for(i=0;i

fwrite(&dd.stu[i],sizeof(structstudent),1,fp);

fclose(fp);

}

//输入学生记录

voidadd_data()

{

structstudentst;

intb;

intk;

inti,j;

while

(1)

{

j=0;

printf("\n请输入学生信息:

");

printf("\n姓名\t学号\t\t籍贯");

printf("\n---------------------------------------------------------------\n");

scanf("%s%s%s",st.name,st.no,st.ad);

for(i=0;i

if(strcmp(dd.stu[i].no,st.no)==0)

{

j=1;

printf("学号录入重复,请重新输入!

");

break;}

if(j==1)

continue;

if(j==0)

{

k=dd.count;

strcpy(dd.stu[k].name,st.name);

strcpy(dd.stu[k].no,st.no);

strcpy(dd.stu[k].ad,st.ad);

dd.count++;}

printf("\n\n继续添加学生信息[1-yes0-no]:

");

scanf("%d",&b);

if(b==0)break;

}

save_data();

}

//将数据从文件读到结构体数组中

voidread_data()

{

FILE*fp;

inti,k;

structstudentst;

k=0;

if(access("c:

/dada.txt",0)==-1)//如果文件不存在

{

fp=fopen("c:

/dada.txt","w");

fwrite(&k,sizeof(int),1,fp);

fclose(fp);

}

fp=fopen("c:

/dada.txt","r");

fread(&k,sizeof(int),1,fp);

dd.count=k;

for(i=0;i

{

fread(&st,sizeof(structstudent),1,fp);

strcpy(dd.stu[i].name,st.name);

strcpy(dd.stu[i].no,st.no);

strcpy(dd.stu[i].ad,st.ad);

}

fclose(fp);

}

//删除学生记录

voiddelete_data()

{

inti,k;

charno[50];

printf("\n请输入要删除学生的学号:

");

scanf("%s",no);

k=-1;

for(i=0;i

{

if(strcmp(dd.stu[i].no,no)==0)

{k=i;

break;

}

}

if(k==-1)

{

printf("\n\n没有找到该学生(学号-%s)!

",no);

}

else

{for(i=k;i

{

strcpy(dd.stu[i].name,dd.stu[i+1].name);

strcpy(dd.stu[i].no,dd.stu[i+1].no);

strcpy(dd.stu[i].ad,dd.stu[i+1].ad);

}

dd.count--;

save_data();

printf("\n\n删除(学号-%s)成功!

",no);

}

}

//编辑学生记录

voidedit_data()

{

inti,k;

charno[50],ad[20];

printf("\n请输入要编辑学生的学号:

");

scanf("%s",no);

k=-1;

for(i=0;i

{

if(strcmp(dd.stu[i].no,no)==0)

{

k=i;

break;

}

}

if(k==-1)

{

printf("\n\n没有找到该学生(学号-%s)!

",no);

}

else

{

printf("\n姓名:

%s,学号:

%s",dd.stu[k].name,dd.stu[k].no);

printf("\n请修改学生数据:

");

printf("\n籍贯:

");

scanf("%s",ad);

strcpy(dd.stu[k].ad,ad);

}

}

//查询(学号)

voidquery_data_no()

{

inti,k;

charno[50];

printf("\n请输入要查询学生的学号:

");

scanf("%s",no);

k=-1;

for(i=0;i

{

if(strcmp(dd.stu[i].no,no)==0)

{

{

printf("\n\n姓名\t学号\t\t籍贯");printf("\n-----------------------------------------------------------------\n");

}

k=i;

printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);

}

}

if(k==-1)

{

printf("\n\n没有找到该学生(学号-%s)!

",no);

}

}

//查询(姓名)

voidquery_data_name()

{

inti,k;

charname[10];

printf("\n请输入要查询学生的姓名:

");

scanf("%s",name);

k=-1;

for(i=0;i

{

if(strcmp(dd.stu[i].name,name)==0)

{

{

printf("\n\n姓名\t学号\t\t籍贯");printf("\n-----------------------------------------------------------------\n");

}

k=i;

printf("%s\t%s\t%s\n",dd.stu[i].name,dd.stu[i].no,dd.stu[i].ad);

}

}

if(k==-1)

{

printf("\n\n没有找到该学生(姓名-%s)!

",name);

}

}

//查询(籍贯)

voidquery_data_address()

{

inti,sum=0;charad[20];

printf("请输入籍贯信息:

");

scanf("%s",ad);

printf("该籍贯的学生有:

");

for(i=0;i

if(strcmp(dd.stu[i].ad,ad)==0)

{

printf("%s\t",dd.stu[i].name);

sum++;

}

if(sum==0)

printf("0人\n");

}

//判断显示天津籍

voidDis()

{

inti;

printf("天津学生:

\n");

printf("学号\t\t姓名籍贯\n");

for(i=0;i

if(strcmp(dd.stu[i].ad,"天津")==0)

{

printf("%s\t%7s%5s\n",dd.stu[i].no,dd.stu[i].name,dd.stu[i].ad);

}

}

printf("\n");

printf("\n");

printf("非天津学生:

\n");

printf("学号\t\t姓名籍贯\n");

for(i=0;i

{

if(strcmp(dd.stu[i].ad,"天津")!

=0)

{

printf("%s\t%7s%5s\n",dd.stu[i].no,dd.stu[i].name,dd.stu[i].ad);

}

}

}

//主函数

voidmain()

{

intfun;

read_data();

menu();

while

(1)

{

printf("请输入功能号[0-7]:

",&fun);

scanf("%d",&fun);

switch(fun)

{

case0:

//退出

break;

case1:

//查看所有学生信息

view_data();

break;

case2:

//输入学生记录

add_data();

break;

case3:

//删除学生记录

delete_data();

break;

case4:

//编辑学生记录

edit_data();

break;

case5:

//查询(学号)

query_data_no();

break;

case6:

//查询(姓名)

query_data_name();

break;

case7:

//查询(籍贯)

query_data_address();

break;

case8:

//显示天津籍与非天津籍

Dis();

break;

}

if(fun==0)break;

to_menu();

}

}

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

当前位置:首页 > 法律文书 > 调解书

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

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