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

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

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

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

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

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

学年论文

(课程论文、课程设计)

 

题  目:

学生学籍信息管理系统

作  者:

  

所在学院:

信息科学与工程学院

专业年级:

 

指导教师:

  

职  称:

  讲师     

 

2014年12月31日

1.设计内容、任务以及要求..........................

1.1设计内容、任务

1.2设计要求

2.设计思路概述....................................

2.1系统基本功能

2.2具体设计思想

2.3系统的总体流程图

3.函数设计的实现..............................

3.1结构的定义

3.2各个函数的设计简介

3.3源代码

3.4删除模块的详细介绍

4.重点程序的调试及运行............................

删除函数的测试

5.总结............................................

6.致谢............................................

7.参考文献........................................

1.设计内容、任务以及要求

1.1设计内容、任务

主要利用c语言的文件操作能力设计开发一个学生学籍管理系统,至少具有如下功能:

信息输入、输出、查找、删除、成绩排序等功能。

具体内容如下:

(1)通过提示菜单选择可以进行的操作;

(2)将学生的信息存入文件中,并命名为txl.txt;

(3)在本系统中可以进行管理系统包含的基本操作:

a.查看所有学生信息;

b.输入一个学生的姓名或学号,从当前的信息中查找,如果找到则显示该学生的相关信息,如果没找到则给出相关提示信息;

c.输入一个学生的姓名或学号,从当前信息中查找,如果找到则删除该学生的基本信息,如果没找到则给出相关提示信息;

d.将学生的成绩按降序排序;

Txl.txt文件中:

(4)学生基本信息包括:

学号、姓名、性别、班级、籍贯、分数等简单信息;

1.2设计要求

明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用c语言进行文件操作的编程技术水平;初步了解软件开发的一般方法和步骤。

2.设计思路概述

2.1系统基本功能

外部操作:

根据要求系统要有查看全部学生信息,查找、添加、删除某一个学生信息;

内部操作:

将学生的信息存入文件中,并命名为txl.txt;

为了接近实际学生学籍管理系统,增加了一个权限认证功能(使用前需要输入正确的账号及密码)。

2.2具体设计思想

(1)以结构化各个功能模块,函数间的调用精简整个函数;

(2)以全局结构来随时定义结构数组及其结构;

(3)以写一个信息存一个的思想,实现多个添加功能;

(4)以先全部读入内存,再打印信息的思想,实现显示全部信息;

(5)以先判断再打印的思想,实现查找是否有某一学生信息;

(6)以先判断再删除的思想,实现删除某一学生信息;

(7)以选择排序算法的思想,实现学生成绩的排序

 

2.3系统的总体流程图

3.函数设计的实现

3.1结构的定义及宏定义

为了方便使用结构此系统结构全为全局类型定义,如下:

structstudent_info

{charno[11];

intage;

enumSEXsex;

charname[20];

intclassno;

floatgrade;

charnationality[20];

};

typedefstructstudent_infoSTUINFO;

STUINFOtxl[100];

宏定义

#defineA1

#defineB2

#defineC3

#defineD4

#defineE5

#defineF0

全局变量

intlast=0;

3.2各个函数的设计简介

此系统一共十九个函数如下所示

1)intKey(char,char);

比较判断账户名和账户密码是否正确

2)intck(void);

显示提示窗口提示密码或者账户名错误,用鼠标回到程序

3)voidgetpassword();

密码函数

4)voidfindchoice();

检索模块中的选择查找方式的函数

5)voidfindmenu();

显示查找或删除菜单界面

6)voidnumfind();

实现按学号查找并输出功能

7)voidnamfind();

实现按姓名查找并输出功能

8)voidEstablish();

将学生信息写入内存并保存入文件

9)voiddochoice(int);

接受用户的选择,并启动相应函数

10)voidmainmenu();

显示主菜单

11)voidBead();

将文件读取到内存中

12)oidWrite();

将内存中的学生信息写入文件中

13)intgetchoice();

接受用户的选择键,并传送至dochoice(int)函数

14)voidSort();

实现排序功能

15)voidOutputall();

输出全部信息

16)voidfindchoicedelete();

17)voidNumdelete();

实现按学号删除功能

18)voidNamdelete();

实现按姓名删除功能

19)intmain(intargc,char*argv[])

主函数实现调用所有其他函数功能

3.3源代码

#include

#include

#include

#include

#include

#include

#defineA1

#defineB2

#defineC3

#defineD4

#defineE5

#defineF0

FILE*fp;

enumSEX{male,female};

structstudent_info

{charno[11];

intage;

enumSEXsex;

charname[20];

intclassno;

floatgrade;

charnationality[20];

};

 

typedefstructstudent_infoSTUINFO;

STUINFOtxl[100];

intlast=0;

intKey(char,char);

intck(void);

voidgetpassword();

voidfindchoice();

voidfindmenu();

voidnumfind();

voidnamfind();

voidEstablish();

voiddochoice(int);

voidmainmenu();

voidBead();

voidWrite();

intgetchoice();

voidSort();

voidOutputall();

voidfindchoicedelete();

voidNumdelete();

voidNamdelete();

 

intmain(intargc,char*argv[])

{intchoice;

getpassword();

Bead();

while

(1)

{mainmenu();

choice=getchoice();

dochoice(choice);

system("pause>nu1");}

return0;

}

 

voidBead()//从文件中把内容读取到内存中

{inti=0;

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

{printf("文件读取失败,请检查文件是否存在!

");

last=0;

}

else

{while(!

feof(fp))

{if(fread(&txl[i],sizeof(STUINFO),1,fp)==1)

i++;

}

last=i;

}

fclose(fp);

}

 

voidWrite()//将内存中的内容写到文件中

{inti=0;

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

{printf("文件储存失败,请检查文件是否存在!

");

exit(0);

}

while(i

{fwrite(&txl[i],sizeof(STUINFO),1,fp);

i++;

}

fclose(fp);}

 

voidmainmenu()//主菜单

{system("cls");

printf("\t\t========欢迎进入新疆大学学籍管理系统========\n");

printf("\t\t请选择以下操作:

\n");

printf("\t\t1.建立档案:

2.检索信息:

\n");

printf("\t\t3.输出全部信息:

4.排序:

\n");

printf("\t\t5.删除档案0.退出\n");

printf("\t\t============================================");

printf("\n给出你的选择0--5\n");

}

 

voidEstablish()//建立档案

{charsex;

printf("第%d个学生的学号:

\n",last+1);

scanf("%s",&txl[last].no);

printf("姓名:

\n");

scanf("%s",&txl[last].name);

printf("年龄:

\n");

scanf("%d",&txl[last].age);

printf("分数:

\n");

scanf("%f",&txl[last].grade);

printf("班级:

\n");

scanf("%d",&txl[last].classno);

printf("籍贯:

\n");

scanf("%s",&txl[last].nationality);

while

(1)

{fflush(stdin);//清除键盘缓存

printf("性别(m/f):

\n");

scanf("%c",&sex);

if(sex=='f'||sex=='m')

break;

fflush(stdin);

}

txl[last].sex=(sex=='m')?

male:

female;

last++;

Write();}

 

voidnamfind()//按姓名查找

{charname[20];

inti;

intfind=0;

printf("请输入姓名:

");

scanf("%s",&name);

for(i=0;i

find;i++)

{

if(!

strcmp(name,txl[i].name))

{find=1;

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

printf("学号:

%s\n",txl[i].no);

printf("姓名:

%s\n",txl[i].name);

printf("年龄:

%d\n",txl[i].age);

printf("分数:

%4.1f\n",txl[i].grade);

printf("籍贯:

%s\n",txl[i].nationality);

printf("性别:

%s",(txl[i].sex==male)?

"male":

"female");

}

}

if(!

find)

{

printf("对不起,姓名:

%s没有被找到",name);

}

}

 

voidnumfind()//按学号查找

{

inti;

charnum1[12];

intfind=0;

printf("请输入您要查询的学号:

");

scanf("%s",&num1);

for(i=0;i

find;i++)

{

if(!

strcmp(num1,txl[i].no))

break;

}

if(i

find)

{

printf("学号为%s的学生的基本信息为:

\n",num1);

printf("学号:

%s\n",txl[i].no);

printf("姓名:

%s\n",txl[i].name);

printf("年龄:

%d\n",txl[i].age);

printf("分数:

%4.1f\n",txl[i].grade);

printf("籍贯:

%s\n",txl[i].nationality);

printf("性别:

%s",(txl[i].sex==male)?

"male":

"female");

printf("\n");

}

else

printf("您输入的学号不存在!

\n");}

 

intgetchoice()//获得选择

{intchoice;

scanf("%d",&choice);

returnchoice;

}

 

voiddochoice(intchoice)//

{switch(choice)

{caseA:

Establish();break;

caseB:

findmenu();findchoice();break;

caseC:

Outputall();break;

caseD:

Sort();Outputall();break;

caseE:

findmenu();findchoicedelete();break;

caseF:

exit(0);

}

}

 

voidfindchoice()//选择查找方式

{

intm;

while

(1)

{

scanf("%d",&m);

switch(m)

{

case1:

numfind();

findmenu();break;

case2:

namfind();

findmenu();break;

case0:

break;

}if(m==0)

break;

}mainmenu();}

 

voidfindmenu()//查找/删除界面

{

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

printf("\t\t*欢迎使用查找/删除操作*\n");

printf("\t\t*1.按学号查找/删除*\n");

printf("\t\t*2.按姓名查找/删除*\n");

printf("\t\t*0.返回上一级*\n");

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

printf("\t\t请输入0--2:

");

}

 

voidfindchoicedelete()//选择删除方式

{

intm;

while

(1)

{

scanf("%d",&m);

switch(m)

{

case2:

Namdelete();findmenu();break;

case1:

Numdelete();findmenu();break;

case0:

break;

}

if(m==0)

break;}

mainmenu();}

voidSort()//排序

{

inti,j,k;STUINFOp;

for(i=0;i

{

k=i;

for(j=i+1;j

{

if(txl[j].grade>txl[k].grade)

k=j;}

if(k!

=i)

{p=txl[i];

txl[i]=txl[k];

txl[k]=p;

}

}

}

 

voidOutputall()//输出全部信息

{inti;

printf("学号\t年龄姓名性别籍贯分数\n");

for(i=0;i

{printf("%-s",txl[i].no);

printf("%-4d",txl[i].age);

printf("%-6s",txl[i].name);

printf("%-4s",(txl[i].sex==male)?

"male":

"female");

printf("%-4s",txl[i].nationality);

printf("%-4.1f",txl[i].grade);

printf("\n");

}

}

intKey(charp[20],charq[20])

{if(strcmp(p,"名字")==0&&strcmp(q,"nishengri")==0)

return0;

else

return1;

}

 

voidgetpassword()

{charp[20],q[20];

printf("请输入账号名-----------\n");

scanf("%s",&p);

printf("请输入账号密码-----------\n");

scanf("%s",&q);

Key(p,q);

if(Key(p,q)==0)

;

else

{system("cls");

ck();

getpassword();}

}

 

voidNamdelete()//按姓名删除

{charname[20];

inti,mark;

intfind=0;

printf("请输入姓名:

");

scanf("%s",&name);

for(i=0;i

find;i++)

{

if(!

strcmp(name,txl[i].name))

{find=1;

mark=i;

break;

}

}

if(!

find)

{

printf("sorry,name:

%s没有输入!

!

",name);

}

else

{

for(i=mark;i<=last;i++)

txl[i]=txl[i+1];

last--;

Write();printf("删除成功!

!

\n");}

}

 

voidNumdelete()//按学号删除

{charno[20];

inti,mark;

intfind=0;

printf("请输入学号");

scanf("%s",&no);

for(i=0;i

find;i++)

{

if(!

strcmp(no,txl[i].no))

{find=1;

mark=i;

break;

}

}

if(!

find)

{

printf("对不起,学号:

%s没有输入",no);

}

else

{

for(i=mark;i<=last;i++)

txl[i]=txl[i+1];

last--;

Write();

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

}

}

 

intck(void)

{

MessageBox(NULL,"密码或用户名错误","错误提示",MB_OK);

return0;

}

3.4删除模块的详细介绍

下面只重点介绍删除模块函数的设计与实现。

1)功能介绍:

删除函数主要是将已保存的某个学生信息删除,且保证其他学生的信息不受影响,适应于实际情况中的学生转学等其他特殊情况。

2)设计思想:

在c语言中,要想删除信息,只能利用覆盖思想,但为了不影响其他信息,要将后面的信息逐次往前覆盖,直到被删除信息的前一个人的信息。

最后将删除调整后的新信息重新保存入文件中,覆盖原来的文件,从而达到将文件中某个信息删除的目的。

3)具体设计

voidfindmenu()//查找/删除界面

{

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

printf("\t\t*欢迎使用查找/删除操作*\n");

printf("\t\t*1.按学号查找/删除*\n");

printf("\t\t*2.按姓名查找/删除*\n");printf("\t\t*0.返回上一级*\n");printf("\t\t***********************************************\n");

printf("\t\t请输入0--2:

");

}

先借用了检索函数的菜单,执行下面的程序

===============================================

voidfindchoicedelete()//选择删除方式

{

intm;

while

(1)

{

scanf("%d",&m);

switch(m)

{

case2:

Namdelete();findmenu();break;

case1:

Numdelete();findmenu();break;

case0:

break;}

if(m==0)

break;}

mainmenu();}

定义一个接受选择的变量m,利用switch的分支选择功能启动下一个函数—-利用姓名删除功能还是学号删除功能或是选择返回。

同时利用死循环使该功能不断进行下去,直到用户主动退出。

===================================================

 

voidNamdelete()//按姓名删除

{charname[20];

inti,mark;

intfind=0;

printf("请输入姓名:

");

scanf("%s",&name);

for(i=0;i

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

当前位置:首页 > 总结汇报 > 学习总结

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

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