c语言课程设计学生学籍信息管理系统大学论文.docx
- 文档编号:24728957
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:32
- 大小:288.99KB
c语言课程设计学生学籍信息管理系统大学论文.docx
《c语言课程设计学生学籍信息管理系统大学论文.docx》由会员分享,可在线阅读,更多相关《c语言课程设计学生学籍信息管理系统大学论文.docx(32页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生 学籍 信息管理 系统 大学 论文