c语言课设学生信息管理系统.docx

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

c语言课设学生信息管理系统.docx

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

c语言课设学生信息管理系统.docx

c语言课设学生信息管理系统

沈阳航空航天大学

 

课程设计报告

 

课程设计名称:

C语言课程设计

课程设计题目:

学生信息管理系统的设计及实现

 

院(系):

计算机学院

专业:

计算机科学及技术

班级:

学号:

姓名:

指导教师:

完成日期:

第1章概要设计

1.1题目的内容及要求

课程设计的内容是设计一个简单的单词替换程序,可以替换文本文件中指定的单词。

要求:

(1)输入信息要包括学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。

(2)通过菜单进行信息的录入,查询,修改,删除等等功能。

(3)查询模块要分别用两种方式查询,学号查询,姓名查询。

(4)文件保存到文本中。

(5)采用VC环境进行调试运行。

1.2总体结构

本程序主要分为8个模块(功能模块图见图1.1):

1.主模块,主要显示系统菜单,并且读取所选功能选项。

2.信息录入模块,对学生信息进行录入。

3.信息插入模块,从所有数据中的任一位置插入学生的信息。

4.信息查询模块,对学生的信息进行查询,分两种方式:

学号查询,姓名查询。

5.信息浏览模块,将所有学生的信息逐个显示出。

6.信息删除模块,将指定信息删除。

7.信息修改模块,修改指定信息。

8.学生人数统计模块,统计当前所存储的数据条数。

图1.1功能模块图

 

第2章详细设计

2.1主模块

控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,主要应用循环和switch语句,流程如图2.1所示。

图2.1主模块流程图

注释:

本流程图主要实现了一个switch语句,合法数据域为0~7,输入0则退出,在流程图上没有0是因为数值合法且数值不为1~7的时候即为0。

2.2学生信息录入模块(input函数)

输入要输入的学生信息,可以显示已保存的学生信息内容,并将内容输出,若内容为空,将提示是否录入数据,直到选择不继续,就回到主菜单,主要流程如图2.2所示。

注释:

1.学号为字符串

2.直到输入不继续才会结束。

3.结束为回主菜单,而不是结束程序

图2.2显示模块流程图

2.3信息插入模块

插入新信息,主要将信息插入任意处,其余信息依次下移一条。

不能覆盖某一条信息,而是顺序下移。

主要流程如图2.3所示。

图2.3信息插入模块流程图

注释:

1.检测重复时会将所输入的学号跳过,对之前存在数据进行检测。

2.若没有数据,则会显示无数据并直接退回到主菜单。

2.4信息查询模块

本模块分为两种查询方式,实际上操作方式是相同的,姓名和学号均为字符串形式,主要流程如图2.4所示。

图2.4信息查询模块流程图

注释:

1.学号及学生姓名均为字符串

2.程序中会显示选项,流程图中没有表示。

2.5信息浏览模块

可以将所有已保存信息信息显示到屏幕上,计划是将其作为一个单独函数,然后突然发现该模块可以和信息插入模块联系到一起,并且可以更好地实现两个模块的功能,如果没有数据,则调用信息录入模块录入新信息,若有数据则直接显示出来,主要是将文件中的内容读取到屏幕上。

并且在信息录入时可以显示出已有信息。

2.6信息删除模块

可以删除指定学生的信息,通过学号查找来查找删除目标,在打开文件后会判定是否有数据,可以在删除时确定是否删除。

主要流程如图2.5所示。

图2.5信息删除模块流程图

注释:

1.删除后被删除项之后的数据依次向上移动

2.数据总个数会减一

2.7信息修改模块

可以修改指定学生的信息,通过学号查找来查找修改目标,在打开文件后会判定是否有数据,可以在修改时确定是否修改。

主要流程如图2.6所示。

图2.6信息修改模块统计图

注释:

1.修改时其余数据不会变化

2.8学生人数统计模块

统计数据条数,即学生人数,主要就是应用每条数据所占总长度是固定的,检测共有多少条。

第3章调试分析

1.对主函数进行调试

图为菜单

2.第一次数据录入

 

3.第二次录入出现问题

图中上部表头不能对齐,通过一次次对show函数中显示内容进行修改,最终正确对齐。

已改正

4.对信息浏览模块的检测

出现问题,出现多余信息。

改正后测试时屏幕一闪而过,但已观测到问题已改正。

5.删除模块出现问题

删除前:

删除:

删除后:

错误的删除了内容。

经仔细查看代码发现将学号的形式错误的定义成整形,已改正,图为改正结果,删除功能完全正常,如下图。

 

第4章使用说明及执行结果

运行操作及结果:

主界面,输入数字进行操作。

输入1并选择录入新信息,即输入y。

输入学生的个人信息即可。

输入完成,可以选择继续输入或退出。

选择n即回到主菜单界面。

输入2进入信息插入系统,

输入插入位置。

输入插入的信息

插入成功,按任意键返回主菜单。

输入3进入查询系统

可以分别进行学号查找和姓名查找

学号查找

姓名查找

输入4进入学生信息浏览系统,将显示所有已录入学生信息

按任意键返回主菜单

输入5进入学生信息删除界面

通过学号查找方式进行删除

删除后可以输入4确认是否删除

 

输入6可以进入信息修改界面

查找方式为学号查找

修改完成。

输入7会统计保存的数据有多少条。

输入0退出系统

参考文献

[1]IvorHorton.C语言入门经典(第五版).清华大学出版社,2013

[2]刘艳伟.C函数全能速查宝典.人民邮电出版社,2012

[3]戴艳.零基础学算法(第三版).机械工业出版社,2014

[4]郭旭文.C语言程序设计及项目实践.电子工业出版社,2011

[5]王敬华.C语言程序设计教程(第二版).清华大学出版社,2009

附录(程序清单)

程序源代码:

#include

#include

#include

#defineLENsizeof(structstudent)

#defineFORMAT"%-15s%-10s%-6d%-7s%-13s%-16s%-12s\n"

#defineALLstu[i].num,stu[i].name,stu[i].age,stu[i].sex,stu[i].birth,stu[i].address,stu[i].tel

structstudent//定义学生成绩结构体

{

charnum[15];//学号

charname[10];//姓名

intage;//年龄

charsex[7];//性别

charbirth[13];//出生年月

charaddress[16];//地址

chartel[12];//电话

};

structstudentstu[50];

voidinput();//学生信息录入系统

voidshow();//学生信息浏览系统

voidinsert();//学生信息插入系统

voidsearch();//学生信息查询系统

voiddel();//学生信息删除系统

voidmodify();//学生信息修改系统

voidall();//学生人数统计模块

intmain()

{

intnum=0;

while

(1)

{

//系统菜单界面

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

printf("\t|0.退出|\n");

printf("\t|1.学生信息录入|\n");

printf("\t|2.学生信息插入|\n");

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

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

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

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

printf("\t|7.学生人数统计|\n");

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

printf("\t请输入数字0~7:

");

scanf("%d",&num);

while(num>7||num<0)//判断输入是否合理

{

printf("\t输入错误,请重新输入:

");

scanf("%d",&num);

}

switch(num)

{

case1:

input();

system("cls");//清屏

break;

case2:

insert();

system("pause");

system("cls");

break;

case3:

search();

system("pause");

system("cls");

break;

case4:

show();

system("cls");//清屏

break;

case5:

del();

system("pause");

system("cls");

break;

case6:

modify();

system("pause");

system("cls");

break;

case7:

all();

system("pause");

system("cls");

break;

case0:

printf("\t退出系统\n");

return0;

}

}

}

voidinput()//学生信息录入系统

{

inti,m=0;//m是记录的条数

charch[2];

FILE*fp;

if((fp=fopen("data.txt","a+"))==NULL)//打开指定文件

{

printf("文件无法打开\n");

return;

}

while(!

feof(fp))

{

if(fread(&stu[m],LEN,1,fp)==1)

m++;//统计当前记录条数

}

fclose(fp);

if(m==0)

printf("没有数据\n");

else

{

system("cls");//清屏

show();//显示原有信息

}

if((fp=fopen("data.txt","wb"))==NULL)

{

printf("文件无法打开\n");

return;

}

for(i=0;i

fwrite(&stu[i],LEN,1,fp);//向指定的文件写入信息

printf("是否录入新信息(是:

y/否:

n):

");

scanf("%s",ch);

while(strcmp(ch,"y")==0)//判断是否要录入新信息

{

printf("学号:

");

scanf("%s",&stu[m].num);//输入学生学号

for(i=0;i

if(strcmp(stu[i].num,stu[m].num)==0)

{

printf("该学号已存在,请按任意键继续!

\n");

getch();

fclose(fp);

return;

}

printf("姓名:

");

scanf("%s",stu[m].name);//输入学生姓名

printf("年龄:

");

scanf("%d",&stu[m].age);//输入年龄

printf("性别:

");

scanf("%s",&stu[m].sex);//输入性别

printf("出生年月:

");

scanf("%s",&stu[m].birth);//输入出生年月

printf("地址:

");

scanf("%s",&stu[m].address);//输入地址

printf("电话:

");

scanf("%s",&stu[m].tel);//输入电话

if(fwrite(&stu[m],LEN,1,fp)!

=1)//将新录入的信息写入指定的磁盘文件

{

printf("无法保存");

getch();

}

else

{

printf("%s已保存\n",stu[m].name);

m++;

}

printf("是否继续(是:

y/否:

n):

");//询问是否继续

scanf("%s",ch);

}

fclose(fp);

printf("\t完成\n");

}

voidshow()//学生信息浏览系统

{

FILE*fp;

inti,m=0;

fp=fopen("data.txt","rb");

while(!

feof(fp))

{

if(fread(&stu[m],LEN,1,fp)==1)

m++;

}

if(m==0)

{

input();

return;

}

fclose(fp);

printf("学号姓名年龄性别出生年月地址电话\t\n");

for(i=0;i

{

printf(FORMAT,ALL);//将信息按指定格式打印

}

system("pause");

}

voidinsert()//学生信息插入系统

{

FILE*fp;

inti,j,k,m=0;

charsnum[15];

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

{

printf("无法打开\n");

return;

}

while(!

feof(fp))

if(fread(&stu[m],LEN,1,fp)==1)

m++;

if(m==0)

{

printf("没有数据\n");

fclose(fp);

return;

}

printf("请输入插入的位置\n");

scanf("%s",&snum);//输入要插入的位置

for(i=0;i

if(strcmp(snum,stu[i].num)==0)

break;

for(j=m-1;j>i;j--)

stu[j+1]=stu[j];//从最后一条记录开始均向后移一位

printf("请输入插入的学号\n");

printf("学号:

");

scanf("%s",&stu[i+1].num);

for(k=0;k

{

if(k==(i+1))

continue;

if(strcmp(stu[k].num,stu[i+1].num)==0)

{

printf("该学生已存在\n");

getch();

fclose(fp);

return;

}

}

printf("姓名:

");

scanf("%s",stu[i+1].name);//输入学生姓名

printf("年龄:

");

scanf("%d",&stu[i+1].age);//输入年龄

printf("性别:

");

scanf("%s",&stu[i+1].sex);//输入性别

printf("出生年月:

");

scanf("%s",&stu[i+1].birth);//输入出生年月

printf("地址:

");

scanf("%s",&stu[i+1].address);//输入地址

printf("电话:

");

scanf("%s",&stu[i+1].tel);//输入电话

if((fp=fopen("data.txt","wb"))==NULL)

{

printf("无法打开\n");

return;

}

for(k=0;k<=m;k++)

if(fwrite(&stu[k],LEN,1,fp)!

=1)//将修改后的记录写入磁盘文件中

{

printf("无法保存");

getch();

}

fclose(fp);

}

voidsearch()//学生信息查询系统

{

FILE*fp;

inti,m=0,sear;

charch[2];

charsnum[15];

charsname[10];

if((fp=fopen("data.txt","rb"))==NULL)

{

printf("文件无法打开\n");

return;

}

while(!

feof(fp))

if(fread(&stu[m],LEN,1,fp)==1)

m++;

fclose(fp);

if(m==0)

{

printf("没有数据\n");

return;

}

printf("\t1.学号查找\n");

printf("\t2.姓名查找\n");

printf("\t请选择查找方式:

");

scanf("%d",&sear);

if(sear==1)

{

printf("请输入学号\n");

scanf("%s",&snum);

for(i=0;i

if(strcmp(snum,stu[i].num)==0)//查找输入的学号是否在记录中

{

printf("发现该同学信息,是否显示(是:

y/否:

n):

");

scanf("%s",ch);

if(strcmp(ch,"y")==0)

{

printf("学号姓名年龄性别出生年月地址电话\t\n");

printf(FORMAT,ALL);//将查找出的结果按指定格式输出

break;

}

else

return;

}

if(i==m)

printf("没有找到该学生\n");//未找到要查找的信息

}

elseif(sear==2)

{

printf("请输入姓名\n");

scanf("%s",&sname);

for(i=0;i

if(strcmp(sname,stu[i].name)==0)//查找输入的学号是否在记录中

{

printf("发现该同学信息,是否显示(是:

y/否:

n):

");

scanf("%s",ch);

if(strcmp(ch,"y")==0)

{

printf("学号姓名年龄性别出生年月地址电话\t\n");

printf(FORMAT,ALL);//将查找出的结果按指定格式输出

break;

}

else

return;

}

if(i==m)

printf("没有找到该学生\n");//未找到要查找的信息

}

else

printf("输入错误\n");

}

voiddel()//学生信息删除系统

{

FILE*fp;

inti,j,m=0;

charsnum[15];

charch[2];

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

{

printf("无法打开\n");

return;

}

while(!

feof(fp))

if(fread(&stu[m],LEN,1,fp)==1)

m++;

fclose(fp);

if(m==0)

{

printf("没有数据\n");

return;

}

printf("请输入学号:

");

scanf("%s",&snum);

for(i=0;i

if(strcmp(snum,stu[i].num)==0)

break;

if(i==m)

{

printf("无此学生信息\n");

return;

}

printf("发现该学生信息,是否删除(是:

y/否:

n):

");

scanf("%s",ch);

if(strcmp(ch,"y")==0)//判断是否要进行删除

{

for(j=i;j

stu[j]=stu[j+1];//将后一个记录移到前一个记录的位置

m--;//记录的总个数减1

if((fp=fopen("data.txt","wb"))==NULL)

{

printf("无法打开\n");

return;

}

for(j=0;j

if(fwrite(&stu[j],LEN,1,fp)!

=1)

{

printf("无法保存\n");

getch();

}

fclose(fp);

printf("删除成功\n");

}

else

return;

}

voidmodify()//学生信息修改系统

{

FILE*fp;

inti,j,m=0;

charch[2];

charsnum[15];

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

{

printf("无法打开\n");

return;

}

while(!

feof(fp))

if(fread(&stu[m],LEN,1,fp)==1)

m++;

if(m==0)

{

printf("没有数据\n");

fclose(fp);

return;

}

printf("请输入要修改的信息的学生学号\n");

scanf("%s",&snum);

for(i=0;i

if(strcmp(snum,stu[i].num)==0)//检索记录中是否有要修改的信息

break;

if(i==m)

{

printf("无此学生信息\n");

return;

}

printf("发现该学生,是否修改(是y/否n):

\n");

scanf("%s",ch);

if(strcmp(ch,"y")==0)//判断是否要进行删除

{

printf("姓名:

");

scanf("%s",stu[i].name);//输入学生姓名

printf("年龄:

");

scanf("%d",&stu[i].age);//输入年龄

printf("性别:

");

scanf("%s",&stu[i].sex);//输入性别

printf("出生年月:

");

scanf("%s",&stu[i].birth);//输入出生年月

printf("地址:

");

scanf("%s",&stu[i].address);//输入地址

printf("电话:

");

scanf("%s",&stu[i].tel);//输入电话

}

else

return;

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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