研究生信息管理系统.docx
- 文档编号:25531629
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:23
- 大小:293.68KB
研究生信息管理系统.docx
《研究生信息管理系统.docx》由会员分享,可在线阅读,更多相关《研究生信息管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
研究生信息管理系统
课程设计报告书
课程名称:
数据库课程设计
设计题目:
研究生信息管理系统
指导老师:
专业:
班级:
组员:
设计题目:
研究生信息管理系统
功能描述:
整个系统从总体上分为系统管理、专业管理、课程管理、研究生管理、成绩管理、用户管理;下分对应专业浏览、
课程浏览、研究生浏览、成绩浏览和修改密码。
概要设计:
系统总体流程图:
详细设计:
研究生信息管理系统界面
研究生管理代码如下:
#include
#include
#include
#include
/***********************字定义函数声明********************************/
voidAdd();//添加新学员
voidDelete();//删除已离开学员
voidSearch();//查询学员信息
voidAlter();//修改学员信息
voidViews();//显示所有学员信息
voiddelete_all();//清除所有记录
intcheck(charstrID[]);//查找文件记录中已经存在的学员ID
/*********************定义学员信息结构体**********/
structstudent
{
//学员信息(学号,姓名,性别,籍贯,电话,年级专业);
charID[10];
charname[10];
charsex[4];
charnativePlace[10];
charphone[13];
charmajor[6];
};
structstudentstu;
FILE*fp;//定义文件指针
/*********************main()主函数*************************************/
voidmain()
{
intflag;
while(flag!
=7)
{
printf("\n\t\t【社团学员管理程序】\n");
printf("\n\t\t【请选择您所要的操作】\n");
printf("\t\t‖*********************************************‖\n");
printf("\t\t‖1、添加新学员4、修改学员信息‖\n");
printf("\t\t‖2、删除以离开学员5、清除所有学员信息‖\n");
printf("\t\t‖3、查询学员信息6、显示所有学员信息‖\n");
printf("\t\t‖〖按任意键退出〗‖\n");
printf("\t\t‖*********************************************‖\n");
printf("\n");
scanf("%d",&flag);
switch(flag)
{
case1:
Add();//添加新学员
getch();
system("cls");
break;
case2:
Delete();//删除已离开学员
getch();
system("cls");
break;
case3:
Search();//查询学员信息
getch();
system("cls");
break;
case4:
Alter();//修改学员信息
getch();
system("cls");
break;
case5:
delete_all();//清空所有记录
getch();
system("cls");
break;
case6:
Views();//显示所有学员信息
getch();
system("cls");
break;
default:
exit(0);
}
}
}
/*****************插入新记录*******************************/
voidAdd()
{
if((fp=fopen("StudentMessage","ab+"))==NULL)
{
printf("学员信息文件打开失败!
");
exit
(1);
}
else
{
intcheck_add(charstuID[]);
longflength,offset;
intk=0,t;//t用来接收check()函数的传值
charstr[53];
fseek(fp,0,SEEK_END);
flength=ftell(fp)/sizeof(stu);//统计文件中有多少条记录
printf("\t请输入要插入的学员的信息:
\n");
input_message:
printf("\t学号:
");
scanf("%s",&stu.ID);
t=check_add(stu.ID);
if(t==1)
{
printf("\t》该学号已经存在,不允许重复插入!
请重新输入一个学号。
《\n");
gotoinput_message;//跳转到“input_message”标记处继续执行
}
printf("\t姓名:
");
scanf("%s",&stu.name);
printf("\t性别:
");
scanf("%s",&stu.sex);
printf("\t籍贯:
");
scanf("%s",&stu.nativePlace);
printf("\t电话:
");
scanf("%s",&stu.phone);
printf("\t民族:
");
scanf("%s",&stu.major);
rewind(fp);
//检测文件中是否有空字符串,如果有则在此处插入新记录,如果没有则插入到文件尾
while(!
feof(fp))
{
fread(&str,sizeof(stu),1,fp);
//检测到空字符串,则将fp所指向的文件关闭,以读写方式重新打开
if(strcmp(str,"")==0)
{
fclose(fp);
fp=fopen("StudentMessage","rb+");
break;
}
k++;
}
offset=sizeof(stu)*k;
fseek(fp,offset,SEEK_SET);
fwrite(&stu,sizeof(stu),1,fp);
fclose(fp);
printf("插入数据成功!
\n");
}
}
/******************检测将要插入的学号是否已存在文件记录中**************************/
intcheck(charstuID[10])
{
intid=0,k=1;
FILE*fpp;
structstudentcheckID;
if((fpp=fopen("StudentMessage","rb"))==NULL)//以只读方式打开一个二进制文件StudentMessage
{
printf("文件打开失败!
\n");
exit
(1);//打开失败,返回系统
}
while(!
feof(fpp))
{
fread(&checkID,sizeof(stu),1,fpp);
//检测用户输入的学号是否已经存在,若存在则终止程序的执行
if(strcmp(checkID.ID,stuID)==0)
{
break;
}
id++;
}
fclose(fpp);
returnid*k;
}
/********************检测输入的学号是否能插入*****************************************/
intcheck_add(charstuID[10])
{
intid;
FILE*fpp;
structstudentcheckID;
if((fpp=fopen("StudentMessage","rb"))==NULL)//以只读方式打开一个二进制文件StudentMessage
{
printf("文件打开失败!
\n");
exit
(1);//打开失败,返回系统
}
while(!
feof(fpp))
{
fread(&checkID,sizeof(stu),1,fpp);
//检测用户输入的学号是否已经存在,若存在则终止程序的执行
if(strcmp(checkID.ID,stuID)==0)
{
id=1;
break;
}
else
{
id=0;
}
}
fclose(fpp);
returnid;
}
/*******************根据用户输入的学号删除已离开学员************/
voidDelete()
{
printf("删除相应记录!
\n");
if((fp=fopen("StudentMessage","rb+"))==NULL)//以可读可写方式打开一个二进制文件
{
printf("文件打开失败!
\n");
return;
}
else
{
charmessage[10];//接收用户需要删除的学号
inti;
longflength;
fseek(fp,0,SEEK_END);//把文件指针移到文件尾
flength=ftell(fp)/sizeof(structstudent);//计算文件中有多少条记录
printf("\t请输入您要删除的学号:
");
scanf("%s",message);
i=check(message);
longoffset=sizeof(stu)*i;//记录要删除的学号的位置
if(flength==0)
{
printf("文件记录为空!
\n");
return;
}
elseif(i>flength)
{
printf("没有该学员信息!
\n");
return;
}
else
{
//将要删除的字符串全部置为空
strcpy(stu.ID,"");
strcpy(stu.name,"");
strcpy(stu.sex,"");
strcpy(stu.major,"");
strcpy(stu.phone,"");
strcpy(stu.nativePlace,"");
fseek(fp,offset,SEEK_SET);//移动指针到要删除的学号的位置
fwrite(&stu,sizeof(stu),1,fp);//将置空的信息重新写回到文件中
printf("\t\t数据删除成功!
\n");
}
fclose(fp);
}
}
/******************查找数据***************************************/
voidSearch()
{
if((fp=fopen("StudentMessage","rb"))==NULL)//以只读方式打开StudentMessage文件
{
printf("\t文件打开失败!
\n");
return;
}
else
{
charmessage[10];//接收用户需要查找的信息
inti;
longflength,offset;
fseek(fp,0,SEEK_END);//将文件指针移文件尾
flength=ftell(fp)/sizeof(structstudent);//得到文件中有多少条记录
printf("\t请输入您要查找的学号:
");
scanf("%s",message);
i=check(message);
offset=sizeof(structstudent)*i;
if(flength==0)
{
printf("\t文件记录为空!
\n");
return;
}
elseif(i>flength)
{
printf("\t\t查找失败,没有找到相应信息!
\n");
return;
}
else
{
//输出查找到的内容
rewind(fp);
fseek(fp,offset,SEEK_SET);
fread(&stu,sizeof(structstudent),1,fp);
printf("学号:
%s",stu.ID);
printf("姓名:
%s",stu.name);
printf("性别:
%s",stu.sex);
printf("籍贯:
%s",stu.nativePlace);
printf("电话:
%s",stu.phone);
printf("年级专业:
%s\n",stu.major);
}
fclose(fp);
}
}
/******************修改学员信息********************************/
voidAlter()
{
printf("修改相应记录!
\n");
if((fp=fopen("StudentMessage","rb+"))==NULL)
{
printf("文件打开失败!
\n");
exit
(1);
}
else
{
charmessage[10];//存储用户要修改的学号
inti;
longflength,offset;
fseek(fp,0,SEEK_END);//移动文件指针到文件尾
flength=ftell(fp)/sizeof(structstudent);//得到文件中有多少条记录
printf("\t请输入您要修改的学号:
");
scanf("%s",message);
i=check(message);
offset=sizeof(structstudent)*i;//记录要修改的记录在文件中的位置
if(flength==0)
{
printf("文件记录为空!
\n");
return;
}
elseif(i>flength)
{
printf("没有该学员信息!
\n");
return;
}
else
{
rewind(fp);
fseek(fp,offset,SEEK_SET);
fread(&stu,sizeof(structstudent),1,fp);
printf("该学员原来的信息:
\n");
printf("\t学号:
%s",stu.ID);
printf("姓名:
%s",stu.name);
printf("性别:
%s",stu.sex);
printf("籍贯:
%s",stu.nativePlace);
printf("电话:
%s",stu.phone);
printf("年级专业:
%s\n\n",stu.major);
printf("请更新该学员的信息:
\n");
strcpy(stu.ID,message);
printf("\t姓名:
");
scanf("%s",&stu.name);
printf("\t性别:
");
scanf("%s",&stu.sex);
printf("\t籍贯:
");
scanf("%s",&stu.nativePlace);
printf("\t电话:
");
scanf("%s",&stu.phone);
printf("\t年级专业:
");
scanf("%s",&stu.major);
fseek(fp,offset,SEEK_SET);//将文件指针指向要修改的地方
fwrite(&stu,sizeof(stu),1,fp);//将修改后的内容重新写回到原来的地方
printf("\t数据更新成功!
\n");
}
fclose(fp);
}
}
/**************显示所有学员信息************************************/
voidViews()
{
longflength;
if((fp=fopen("StudentMessage","rb"))==NULL)
{
printf("文件打开失败!
\n");
exit
(1);
}
fseek(fp,0,SEEK_END);//移动文件指针到文件尾
flength=ftell(fp)/sizeof(structstudent);//得到文件中有多少条记录
if(flength==0)
{
printf("文件中没有记录!
");
return;
}
rewind(fp);//将文件指针移动到文件头
printf("\t\t\t所有记录列表\n\n");
while(!
feof(fp))
{
fread(&stu,sizeof(stu),1,fp);
if(strcmp(stu.ID,"")!
=0)//检测文件中的空字符串,如果不是空字符串则输出
{
printf("学号:
%s",stu.ID);
printf("姓名:
%s",stu.name);
printf("性别:
%s",stu.sex);
printf("籍贯:
%s",stu.nativePlace);
printf("电话:
%s",stu.phone);
printf("年级专业:
%s\n",stu.major);
}
}
fclose(fp);
}
/********************删除所有记录********************************/
voiddelete_all()
{
intch;
printf("该操作将删除所有记录,按“0”退出,按“1”继续。
\n");
scanf("%d",&ch);
switch(ch)
{
case0:
break;
case1:
printf("将删除所有记录,继续请按“1”,退出请按“0”。
\n");
scanf("%d",&ch);
switch(ch)
{
case0:
break;
case1:
if(remove("StudentMessage")==0)//删除StudentMessage文件
{
printf("操作成功,所有记录已经删除!
");
}
else
{
perror("remove");//如果删除不成功则输出系统出错的信息
}
break;
}
}
}
运行结果及存在的问题:
主界面:
例如专业浏览、学生成绩和学生信息等。
具体表:
遇到的问题:
(1)对数据库的界面和工具还不熟练。
(2)对办公文件不太了解。
(3)对程序代码的记忆和设计还不够成熟。
(4)工作的顺序也需要一定的调整。
心得体会:
在我看来,数据库课程设计主要的目标是利用课程中学到的数据库知识和技术较好的开发设计出数据库应用系统,去解决各行各业信息化处理的要求。
当我们这组决定做研究生信息管理系统时,我们并没有盲目地写程序。
而是大家一起商量这个系统概述、系统目标、系统需求、业务流程分析、数据流程分析和数据词典。
当这些都准备好了之后,我们进行模块的分工。
当我遇到错误的时候,感到很受打击。
值得欣慰的是,在同学的帮助和大量参考书的查阅下,我还是成功啦。
我明白了遇到困难永不放弃的重要性,我知道了团队合作的重要性。
回首这一个星期的课程设计,谢谢老师对我们的不懈帮助,谢谢学校给了我们这一次实践的机会,也谢谢组员们的关怀。
这些美好的回忆美好的东西将永远伴随着我。
参考文献:
1.《数据库原理及应用》钱雪忠主编北京邮电大学出版社2007,8第二版
2.《数据库应用程序设计教程》周山芙黄京莲主编清华大学出版社
2004年
3.《全国计算机等级考试二级教程—VisualFoxPro程序设计》教育部考试中心高等教育出版社
4.贾向东.VB6.0语言在成人教育学籍管理系统中的开发与应用[J].辽宁师范大学学报(自然科学版),2001,(02)
参考网站:
1.编程爱好者
2.程序爱好者
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 研究生 信息管理 系统