学生信息管理系统课程设计实验报告.docx
- 文档编号:2967789
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:56
- 大小:657.38KB
学生信息管理系统课程设计实验报告.docx
《学生信息管理系统课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统课程设计实验报告.docx(56页珍藏版)》请在冰点文库上搜索。
学生信息管理系统课程设计实验报告
学生信息管理系统课程设计实验报告
结构化程序课程设计报告
设计名称_学生信息管理系统
指导教师______________
班 级_12计算机卓越班
学生姓名刘宝王庆华徐廷政汪俊杰李昱凡
完成日期
安庆师范学院计算机与信息学院
一、
实验课题
题目:
学生信息管理系统
创建一个学生信息管理系统。
假设系统中每个学生记录只包括学号、姓名、电话号码等信息。
1、系统功能的基本要求:
(1)创建信息管理系统。
(2)显示信息管理系统;
(3)查询信息管理系统;
(4)修改信息管理系统;
(5)删除信息管理系统;
(6)排序信息管理系统;
(7)退出信息管理系统;
二、需求分析
使用链式结构,定义链表结构,使用文件储存学生信息
#ifndefCOMMON_H
#defineCOMMON_H
/*注:
此处是为了后面可能要对学生添加其他属性而预留的
typedefstructothers
{
}*POTH,OTHE;
*/
typedefstructstudent
{
charnum[10];//学号学号唯一,且不能改,作为用户登录账号
charpsw[20];//密码每人一个密码,默认学号后四位,可以自己登录修改
introot;//权限分管理员和用户,1代表管理员,0代表用户
charnam[10];//姓名
charsex[4];//性别
chardom[10];//寝室
charcls[40];//班级
charclg[40];//学院
charmbp[20];//手机
//OTHEother;//其他使用结构体嵌套,方便添加其他属性
structstudent*next;
}*PSTU,STU;
#endif
三、流程图设计
大致流程设计如下:
主函数调用登录函数voidlogin(PSTUpHead),进入登录界面
登录函数调用读取函数PSTUread(void),将学生信息从文件中读入内存
登录界面下输入用户和密码,通过与学生信息匹配,判断是管理员还是用户
如果是管理员则进入管理员界面,反则进入用户界面
管理员拥有比用户更多的权限,可以进行行新增、查询、修改等操作
相比较管理员,用户的权限少了很多。
四、算法模块设计
两大模块:
前台界面、后台控制
前台界面:
登陆界面、管理员界面、用户界面、增删查改、修改密码、关于我们
后台控制:
数据读取、数据写入、数据加密、数据解密、构建链表、记录日志
详细设计
详细说明在代码里有注释,这里不再赘述,因为代码粘过来会很乱,这里只提供函数接口等信息
登录界面
函数原型:
voidlogin(PSTUpHead)
接收参数:
pHead:
链表头结点
返回参数:
无
功能实现:
登陆界面
编写作者:
刘宝
编写时间:
2013/9/8
管理员界面
函数原型:
voidadmin(PSTUpHead,PSTUp)
接收参数:
pHead:
链表头结点p:
登录人信息所在的节点
返回参数:
无
功能实现:
管理员界面
编写作者:
刘宝
编写时间:
2013/9/7
用户界面
函数原型:
voidadmin(PSTUpHead,PSTUp)
接收参数:
pHead:
链表头结点p:
登录人信息所在的节点
返回参数:
无
功能实现:
用户界面
编写作者:
刘宝
编写时间:
2013/9/8
增删查改
函数原型:
voidadminadd(PSTUpHead,PSTUp1)
接收参数:
pHead:
链表头结点p1:
当前登录成员
返回参数:
无
功能实现:
添加一个成员
编写作者:
王庆华
编写时间:
2013/9/7
函数原型:
voidadmindelete(PSTUpHead,PSTUp1)
接收参数:
pHead:
链表头结点p1:
当前登录成员
返回参数:
无
功能实现:
删除一个成员
编写作者:
李昱凡
编写时间:
2013/9/7
函数原型:
voidadminsearch(PSTUpHead)
接收参数:
pHead:
链表头结点
返回参数:
无
功能实现:
查找一个成员的信息
编写作者:
汪俊杰
编写时间:
2013/9/7
函数原型:
voidadminchange(PSTUpHead,PSTUp1)
接收参数:
pHead:
链表头结点p1:
被修改的成员
返回参数:
无
功能实现:
修改一个成员的信息
编写作者:
徐廷政
编写时间:
2013/9/7
修改密码
函数原型:
voidchangepsw(PSTUpHead,PSTUp1)
接收参数:
pHead:
链表头结点p1:
当前登录成员
返回参数:
无
功能实现:
修改当前登录成员的密码
编写作者:
刘宝
编写时间:
2013/9/8
关于我们
函数原型:
voidabout()
接收参数:
无
返回参数:
无
功能实现:
输出“关于我们”信息
编写作者:
刘宝
编写时间:
2013/9/8
数据读写
读:
函数原型:
PSTUread(void)
接收参数:
无
返回参数:
链表头结点
功能实现:
读取数据、解密密码
编写作者:
刘宝
编写时间:
2013/9/8
写:
函数原型:
voidsave(PSTUpHead)
接收参数:
pHead:
链表头结点
返回参数:
无
功能实现:
保存数据并加密密码
编写作者:
刘宝
编写时间:
2013/9/8
构建链表
函数原型:
PSTUcreate(void)
接收参数:
无
返回参数:
返回指向这个结点的指针
功能实现:
新建一个结点
编写作者:
刘宝
编写时间:
2013/9/8
记录日志
函数原型:
voidrecord(PSTUp1,intn,PSTUp2)
接收参数:
p1:
当前登录成员n:
记录种类p2:
被操作成员
返回参数:
无
功能实现:
记录日志
编写作者:
刘宝
编写时间:
2013/9/8
五、系统测试
登陆界面
进度条登陆:
管理员登陆界面
普通用户登陆
管理员的增删查改
用户的增加:
删除用户:
查询:
1、学号查询
2、姓名查询
改学生信息
改密码
密码修改成功后,会重新登陆
日志:
关于我们:
六、系统风格
整体风格:
(1).程序块要采用缩进风格编写,使用TAB控制缩进。
(2).函数定义采用linux内核编程风格,即函数类型与函数名称不分行。
(3).左右花括号的位置采用GNU的风格,即左括号与右括号都在同一列左对起。
(4).相对独立的代码段之间,变量说明之后,插入一个空行分隔。
(5).相邻的函数块之间,插入一个空行分隔。
(6).关键字if,while,for与其后的条件判断的表达式之间,插入一个空格分隔。
注释风格:
(1).整个源文件的最顶部,说明次模块的相关信息,一般为多行注释
(2).源文件内部定义的函数实现上则,紧贴其函数实现的部分,不用空行分隔。
(3).相对独立的代码段上则,紧贴其注释说明的实现代码,不用空行分隔。
(4).简短代码行的右侧,一般为单行注释,内容不超过10个单词。
(5).对于全局变量的注释要尽量详细,包括它的功能,取值范围,各取值含义等。
(6).数据结构中的变量要做充分的注释。
(7).对于重要的分支语句、循环语句等也要加充分的注释。
六、课程设计总结
分工:
组长:
刘宝负责基层代码实现、界面设计和分配任务
组员:
王庆华负责增加模块的代码实现和撰写文档
徐廷政负责修改模块代码实现和测试程序
汪俊杰负责查找模块代码实现和PPT制作
李昱凡负责删除模块代码和提供创意以及查找相关资料
感想:
1、团队合作很重要,大家在一起讨论,集思广义才能使课题更好的完成
2、巩固了以前一些不太清楚的东西,团队合作弥补了每个人的短板
3、明白了怎么去团队合作完成一个项目
不足:
1、输密码时产生的“*”,如果输错不能删除,只能退回重新输入
2、很多函数模块没有返回值,不利于判断函数执行情况
计划用&引用参数的方式带回数据,用函数返回值来判断函数执行情况
七、源程序
#ifndefHEAD_H
#defineHEAD_H
#include
#include
#include
#include
#include
#include
#include"common.h"
voidlogin(PSTU);
PSTUcreate(void);
PSTUread(void);
voidsave(PSTU);
voidabout();
voidrecord(PSTUp1,intn,PSTUp2);
voidrecordput();
voidchangepsw(PSTUpHead,PSTUp);
intsearchnum(PSTU,PSTU,PSTU);
voiduser(PSTU,PSTU);
voidusersee(PSTUp);
voiduserchange(PSTUpHead,PSTUp);
voidadmin(PSTU,PSTU);
voidadminadd(PSTU,PSTU);
voidadminsearch(PSTU);
voidadminchange(PSTU,PSTU);
voidadmindelete(PSTU,PSTU);
#e
#include"head.h"
/*
*函数原型:
intmain(void)
*接收参数:
无
*返回参数:
整型参数,判定程序执行情况
*功能实现:
主函数
*编写作者:
刘宝
*编写时间:
2013/9/8
*/
intmain(void)
{
login(read());
return0;
}
#ifndefCOMMON_H
#defineCOMMON_H
/*
typedefstructothers
{
}*POTH,OTHE;
*/
typedefstructstudent
{
charnum[10];//学号
charpsw[20];//密码
introot;//权限
charnam[10];//姓名
charsex[4];//性别
chardom[10];//寝室
charcls[40];//班级
charclg[40];//学院
charmbp[20];//手机
//OTHEother;//其他
structstudent*next;
}*PSTU,STU;
#endif
#include"head.h"
/*
*函数原型:
voidlogin(PSTUpHead)
*接收参数:
pHead:
链表头结点
*返回参数:
无
*功能实现:
登陆界面
*编写作者:
刘宝
*编写时间:
2013/9/8
*/
voidlogin(PSTUpHead)
{
inti=0,flag=0,n;
charnum[20];
charstr[20];
charpsw[20];
PSTUp;
system("cls");
printf("\n********************************学生信息管理系统********************************\n\n");
printf("------------------\n");
printf("|请登录|\n");
printf("------------------\n\n\n");
printf("\t\t\t\t用户:
");
scanf("%s",num);
getchar();
printf("\n\t\t\t\t密码:
");
while((str[i]=getch())!
='\r')
{
i++;
printf("*");
}
str[i]='\0';
printf("\n");
p=pHead->next;
while(p->next)
{
//printf("%s\n",p->num);
if(!
strcmp(num,p->num))
{
strcpy(psw,p->psw);
flag=1;
break;
}
p=p->next;
}
if(!
flag)
{
printf("\n无此用户,请重新输入...\n");
printf("\n********************************************************************************\n");
Sleep(800);
system("cls");
login(pHead);
}
elseif(strcmp(str,psw))
{
printf("\n密码错误,请重新输入...\n");
printf("\n********************************************************************************\n");
Sleep(800);
system("cls");
login(pHead);
}
else
{
printf("\n密码正确,正在登陆...\n");
record(p,1,p);//记录日志
printf("\n");
n=80;
while(n--)
{
printf(">");
Sleep(10);
}
if(p->root)
{
admin(pHead,p);
}
else
{
user(pHead,p);
}
}
}
#include"head.h"
/*
*函数原型:
voidadmin(PSTUpHead,PSTUp)
*接收参数:
pHead:
链表头结点p:
登录人信息所在的节点
*返回参数:
无
*功能实现:
管理员界面
*编写作者:
刘宝
*编写时间:
2013/9/7
*/
voidadmin(PSTUpHead,PSTUp)
{
intm,n;
charch;
while
(1)
{
n=strlen(p->nam);
m=70-n;
system("cls");
printf("\n********************************学生信息管理系统********************************\n");
while(m--)
{
printf("");
}
printf("%s管理员\n\n",p->nam);
printf("新增(N)查询(S)修改(C)删除(D)改密(P)日志(R)关于(A)退出(X)\n\n");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("");
fflush(stdin);
scanf("%c",&ch);
switch(ch)
{
case'N':
case'n':
adminadd(pHead,p);break;//新增
case'S':
case's':
adminsearch(pHead);break;//查询
case'C':
case'c':
adminchange(pHead,p);break;//修改
case'D':
case'd':
admindelete(pHead,p);break;//删除
case'P':
case'p':
changepsw(pHead,p);break;//改密
case'R':
case'r':
recordput();break;//日志
case'A':
case'a':
about();break;//关于
case'X':
case'x':
record(p,0,p);exit(0);//退出
}
}
}
#include"head.h"
/*
*函数原型:
voidadminadd(PSTUpHead,PSTUp1)
*接收参数:
pHead:
链表头结点p1:
当前登录成员
*返回参数:
无
*功能实现:
添加一个成员
*编写作者:
刘宝
*编写时间:
2013/9/7
*/
voidadminadd(PSTUpHead,PSTUp1)
{
charch;
PSTUp;
system("cls");
printf("\n********************************学生信息管理系统********************************\n");
printf("------------------\n");
printf("|新增成员|\n");
printf("------------------\n");
p=create();
printf("\t\t\t学号:
");
scanf("%s",p->num);
if(searchnum(pHead,p,p1))
{
printf("\n\t\t\t密码:
");
scanf("%s",p->psw);
printf("\n\t\t\t权限:
");
scanf("%s",&p->root);
printf("\n\t\t\t姓名:
");
scanf("%s",p->nam);
printf("\n\t\t\t性别:
");
scanf("%s",p->sex);
printf("\n\t\t\t寝室:
");
scanf("%s",p->dom);
printf("\n\t\t\t手机:
");
scanf("%s",p->mbp);
printf("\n\t\t\t班级:
");
scanf("%s",p->cls);
printf("\n\t\t\t学院:
");
scanf("%s",p->clg);
fflush(stdin);
printf("确定新增该用户?
(Y/N)...");
scanf("%c",&ch);
fflush(stdin);
if(ch=='Y'||ch=='y')
{
p->next=pHead->next;
pHead->next=p;
save(pHead);
printf("已保存,按回车返回...");
record(p1,2,p);
getchar();
}
elseif(ch=='N'||ch=='n')
{
free(p);
printf("未保存,按回车返回...");
getchar();
}
}
}
voidchange_num(PSTU,PSTU);
voidchange_nam(PSTU,PSTU);
voidadminchange(PSTUpHead,PSTUp1)
{
charnum[10];
charch;
system("cls");
printf("\n********************************学生信息管理系统********************************\n");
printf("------------------\n");
printf("|修改信息|\n");
printf("------------------\n");
printf("\n选择查询方式:
\n");
printf("\n学号(M)姓名(N)返回(R)\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
fflush(stdin);
printf("");
scanf("%c",&ch);
system("cls");
printf("\n********************************学生信息管理系统********************************\n");
printf("------------------\n");
printf("|修改信息|\n");
printf("------------------\n");
switch(ch)
{
case'M':
case'm':
change_num(pHead,p1);break;
case'N':
case'n':
change_nam(pHead,p1);break;
case'R':
case'r':
break;
}
}
//学号查询
voidchange_num(PSTUpHead,PSTUp1)
{
intflag;
charnum[10];
PSTUp;
system("cls");
printf("\n********************************学生信息管理系统********************************\n");
printf("------------------\n");
printf("|修改信息|\n");
printf("------------------\n");
flag=0;
printf("\n\t\t\t输入学号:
");
scanf("%s",num);
p=pHead->next;
while(p->next)
{
if(!
strcmp(p->num,num))
{
flag=1;
break;
}
p=p->next;
}
if(flag==1)
{
userchange(pHead,p);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 信息管理 系统 课程设计 实验 报告