最新基于Linux系统的学生信息管理系统.docx
《最新基于Linux系统的学生信息管理系统.docx》由会员分享,可在线阅读,更多相关《最新基于Linux系统的学生信息管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
![最新基于Linux系统的学生信息管理系统.docx](https://file1.bdocx.com/fileroot1/2022-10/26/813aeb8e-6e0c-4fe1-b284-19793cc2ea49/813aeb8e-6e0c-4fe1-b284-19793cc2ea491.gif)
最新基于Linux系统的学生信息管理系统
程序设计报告
基于Linux系统的学生信息管理系统
功能:
在Linux系统下,实现学生信息的管理功能
开发环境:
LinuxUbuntu12.04,Intel64位处理器
开发语言:
C语言
运行环境:
普通PC机
编译环境:
gccMakefile
本系统对学生信息进行管理,分有学生、老师、老板三种板块,不同权限的用户登录会进入不同的界面进行操作。
系统主界面分为注册,登录,忘记密码,关于以及退出,如果没有这个系统的账号和密码可以进行注册,注册时候会问你要注册的权限是什么,并且根据你注册的权限进去相应的界面。
登录时候需要输入账号以及密码,如果账号密码均正确将进入账号所属权限的界面;如果有错误,会根据错误类型提醒用户。
忘记密码可通过管理员用户查看进行找回。
关于则是一点具体信息。
退出则会退出此程序。
以下具体介绍每个权限中的具体功能:
1.学生界面:
学生的功能包括查看学生信息,考试,提交试卷,修改密码,返回以及退出的功能。
将各个函数封装成一个box,然后在主函数中进行调用,具体代码如下:
①box中的各函数:
#include"stu_box.h"
#include
#include
#include
staticvoidinit_node(structstu_info*head,structstu_infoinfo)
{
strcpy(head->name,info.name);
strcpy(head->sex,info.sex);
head->age=info.age;
strcpy(head->cid,info.cid);
strcpy(head->tel,info.tel);
strcpy(head->addr,info.addr);
strcpy(head->object,info.object);
head->next=head;
head->prev=head;
}
staticvoid__add(structstu_info*a,structstu_info*new,structstu_info*b)
{
a->next=new;
new->next=b;
b->prev=new;
new->prev=a;
}
staticintadd(structstu_info*head,structstu_infoinfo)
{
structstu_info*new=NULL;
new=(structstu_info*)malloc(sizeof(structstu_info));
init_node(new,info);
__add(head,new,head->next);
return1;
}
staticintread_from_stdin(structstu_box*box)
{
structstu_info*head=box->head;
structstu_infoinfo;
printf("\t\t\t\t\t\t请输入学生信息:
\n");
printf("\t\t\t\t\t\t例如:
张山男23123456789136000000上海市嵌入式\n\t\t\t\t\t\t");
scanf("%s%s%d%s%s%s%s",
info.name,info.sex,&info.age,info.cid,info.tel,
info.addr,info.object);
add(head,info);
return1;
}
staticintread_from_file(structstu_box*box)
{
structstu_info*head=box->head;
structstu_infoinfo;
//1.fopen
FILE*fp=NULL;
fp=fopen("dat/stu_info.dat","r+");
if(fp==NULL)
{
perror("fopen");
return-1;
}
while((fscanf(fp,"%s%s%d%s%s%s%s",
info.name,info.sex,&info.age,info.cid,info.tel,
info.addr,info.object))!
=EOF)
{
add(head,info);
}
fclose(fp);
return0;
}
staticintedit(structstu_box*box)
{
return1;
}
staticintdisplay(structstu_box*box)
{
structstu_info*tmp=box->head;
for(tmp=box->head->next;tmp!
=box->head;tmp=tmp->next)
{
printf("\t\t\t\t%s\t%s\t%d\t%s\t%s\t%s\t%s\n",
tmp->name,tmp->sex,tmp->age,tmp->cid,tmp->tel,
tmp->addr,tmp->object);
}
return1;
}
staticvoidinit_head(structstu_info*head)
{
structstu_infoinfo={"abc","男",
22,"123456789012345678","123456789","上海市","嵌入式"};
init_node(head,info);
}
staticintdel(structstu_box*box)
{
charname[32];
printf("\t\t\t\t\t\t请输入需要删除学生的姓名:
\n\t\t\t\t\t\t");
scanf("%s",name);
structstu_info*tmp=box->head;
for(tmp=box->head->next;tmp!
=box->head;tmp=tmp->next)
{
if(strcmp(tmp->name,name)==0)
{
tmp->prev->next=tmp->next;
tmp->next->prev=tmp->prev;
init_head(tmp);
free(tmp);
break;
}
}
return1;
}
staticintsave(structstu_box*box)
{
structstu_info*head=box->head;
structstu_info*tmp=NULL;
//1.打开文件
FILE*fp=NULL;
fp=fopen("dat/stu_info.dat","w+");
if(fp==NULL)
{
perror("fopen()");
return-1;
}
for(tmp=head->next;tmp!
=head;tmp=tmp->next)
{
//2.往文件里面写入
fprintf(fp,"%s%s%d%s%s%s%s\n",
tmp->name,tmp->sex,tmp->age,tmp->cid,tmp->tel,
tmp->addr,tmp->object);
}
//3.关闭文件
fclose(fp);
return0;
}
structstu_box*init_stu_box()
{
structstu_box*box=NULL;
box=(structstu_box*)malloc(sizeof(structstu_box));
//创建链表
structstu_info*head=NULL;
head=(structstu_info*)malloc(sizeof(structstu_info));
init_head(head);
box->head=head;
box->edit=edit;
box->del=del;
box->display=display;
box->save=save;
box->readin=read_from_stdin;
box->readfp=read_from_file;
returnbox;
}
②主函数:
#include"user_box.h"
#include
#include
#include
#include
#include"user.h"
#include"stu_box.h"
staticvoiddisplay_menu()
{
//system("clear");
printf("\t\t\t\t\t\t*****************************************\n");
printf("\t\t\t\t\t\t**\n");
printf("\t\t\t\t\t\t*1.查看学生信息*\n");
printf("\t\t\t\t\t\t*2.考试*\n");
printf("\t\t\t\t\t\t*3.提交试卷*\n");
printf("\t\t\t\t\t\t*4.修改密码*\n");
printf("\t\t\t\t\t\t*5.返回*\n");
printf("\t\t\t\t\t\t*0.退出*\n");
printf("\t\t\t\t\t\t**\n");
printf("\t\t\t\t\t\t*****************************************\n");
}
voiddisplay_stu_info(structstu_box*box)
{
box->readfp(box);
system("clear");
printf("\n\n\n\n\n");
printf("\t\t\t\t*****学生信息*****\n");
printf("\n\n\t\t\t\t+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
box->display(box);
printf("\t\t\t\t+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
box->save(box);
}
//考