软件工程毕业设计c语言课程设计学生学籍信息管理系统Word格式.docx

上传人:b****8 文档编号:22446559 上传时间:2023-02-04 格式:DOCX 页数:32 大小:289KB
下载 相关 举报
软件工程毕业设计c语言课程设计学生学籍信息管理系统Word格式.docx_第1页
第1页 / 共32页
软件工程毕业设计c语言课程设计学生学籍信息管理系统Word格式.docx_第2页
第2页 / 共32页
软件工程毕业设计c语言课程设计学生学籍信息管理系统Word格式.docx_第3页
第3页 / 共32页
软件工程毕业设计c语言课程设计学生学籍信息管理系统Word格式.docx_第4页
第4页 / 共32页
软件工程毕业设计c语言课程设计学生学籍信息管理系统Word格式.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

软件工程毕业设计c语言课程设计学生学籍信息管理系统Word格式.docx

《软件工程毕业设计c语言课程设计学生学籍信息管理系统Word格式.docx》由会员分享,可在线阅读,更多相关《软件工程毕业设计c语言课程设计学生学籍信息管理系统Word格式.docx(32页珍藏版)》请在冰豆网上搜索。

软件工程毕业设计c语言课程设计学生学籍信息管理系统Word格式.docx

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

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

Txl.txt文件中:

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

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

1.2设计要求

明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;

提高学生用高级语言进行程序设计的能力,重点提高用c语言进行文件操作的编程技术水平;

初步了解软件开发的一般方法和步骤。

2.设计思路概述

外部操作:

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

内部操作:

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

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

(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<

stdio.h>

string.h>

stdlib.h>

memory.h>

conio.h>

windows.h>

FILE*fp;

enumSEX{male,female};

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()//将内存中的内容写到文件中

wb"

文件储存失败,请检查文件是否存在!

exit(0);

while(i<

last)

{fwrite(&

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

i++;

voidmainmenu()//主菜单

{system("

cls"

printf("

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

\t\t请选择以下操作:

\n"

\t\t1.建立档案:

2.检索信息:

\n"

\t\t3.输出全部信息:

4.排序:

\t\t5.删除档案0.退出\n"

\t\t============================================"

\n给出你的选择0--5\n"

voidEstablish()//建立档案

{charsex;

第%d个学生的学号:

last+1);

scanf("

%s"

&

txl[last].no);

姓名:

txl[last].name);

年龄:

%d"

txl[last].age);

分数:

%f"

txl[last].grade);

班级:

txl[last].classno);

籍贯:

txl[last].nationality);

{fflush(stdin);

//清除键盘缓存

性别(m/f):

%c"

sex);

if(sex=='

f'

||sex=='

m'

break;

fflush(stdin);

txl[last].sex=(sex=='

)?

male:

female;

last++;

Write();

voidnamfind()//按姓名查找

{charname[20];

inti;

intfind=0;

请输入姓名:

name);

for(i=0;

i<

last&

&

!

find;

i++)

{

if(!

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

{find=1;

printf("

========================================\n"

printf("

学号:

%s\n"

txl[i].no);

姓名:

txl[i].name);

%d\n"

txl[i].age);

%4.1f\n"

txl[i].grade);

txl[i].nationality);

性别:

%s"

(txl[i].sex==male)?

"

male"

:

female"

}

if(!

find)

对不起,姓名:

%s没有被找到"

name);

voidnumfind()//按学号查找

{

charnum1[12];

请输入您要查询的学号:

num1);

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

break;

}

if(i<

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

num1);

else

您输入的学号不存在!

intgetchoice()//获得选择

choice);

returnchoice;

voiddochoice(intchoice)//

{switch(choice)

{caseA:

Establish();

caseB:

findmenu();

findchoice();

caseC:

Outputall();

caseD:

Sort();

Outputall();

caseE:

findchoicedelete();

caseF:

voidfindchoice()//选择查找方式

intm;

scanf("

m);

switch(m)

case1:

numfind();

findmenu();

case2:

namfind();

case0:

}if(m==0)

}mainmenu();

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

\t\t***********************************************\n"

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

\t\t*1.按学号查找/删除*\n"

\t\t*2.按姓名查找/删除*\n"

\t\t*0.返回上一级*\n"

\t\t请输入0--2:

voidfindchoicedelete()//选择删除方式

Namdelete();

Numdelete();

findmenu();

case0:

if(m==0)

mainmenu();

voidSort()//排序

inti,j,k;

STUINFOp;

for(i=0;

last-1;

k=i;

for(j=i+1;

j<

last;

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;

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

);

{printf("

%-s"

%-4d"

%-6s"

%-4s"

%-4.1f"

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

{if(strcmp(p,"

名字"

)==0&

strcmp(q,"

nishengri"

)==0)

return1;

voidgetpassword()

{charp[20],q[20];

请输入账号名-----------\n"

p);

请输入账号密码-----------\n"

q);

Key(p,q);

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

;

ck();

voidNamdelete()//按姓名删除

inti,mark;

请输入姓名:

mark=i;

sorry,name:

%s没有输入!

!

else

for(i=mark;

=last;

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

last--;

Write();

删除成功!

voidNumdelete()//按学号删除

{charno[20];

请输入学号"

no);

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

对不起,学号:

%s没有输入"

no);

printf("

删除成功.\n"

intck(void)

MessageBox(NULL,"

密码或用户名错误"

错误提示"

MB_OK);

return0;

3.4删除模块的详细介绍

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

1)功能介绍:

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

2)设计思想:

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

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

3)具体设计

\t\t***********************************************\n"

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

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

break;

if(m==0)

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

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

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

for(i=

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

当前位置:首页 > 党团工作 > 其它

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

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