当前位置:首页 » 编程语言 » 学生档案管理系统c语言

学生档案管理系统c语言

发布时间: 2023-01-15 00:48:33

㈠ 学生学籍信息管理系统 C语言设计题

学籍管理系统软件需求分析

________________________________________
编着 于博海、王利森、王艳梅、李岩、吕靖
1 引言
信息社会的高科技,商品经济化的高效益,使计算机的应用已普及到经济和社会生活的各个领域。计算机虽然与人类的关系愈来愈密切,还有人由于计算机操作不方便继续用手工劳动。为了适应现代社会人们高度强烈的时间观念,学籍管理系统软件为教学办公室带来了极大的方便。该软件是以汉语编程语言为实现语言,其功能在系统内部有源代码直接完成。通过操作手册,使用者可以了解本软件的基本工作原理。操作人员只需输入一些简单的汉字、数字,即可达到自己的目标。
1.1 编写目的
本需求的编写目的在于研究学籍管理系统软件的开发途径和应用方法。
本需求的预期读者是与学籍管理系统软件开发有联系的决策人,开发组成人员,扶助开发者,支持本项目的领导和公司人员,软件验证者。
1.2 背景及范围
本项目的名称:学籍管理系统开发软件。
本项目的任务提出者及开发者是学籍管理系统软件开发小组,用户是教学办公室。
本产品能具体化、合理化的管理学生的学籍档案,用结构化的思维方式去了解计算机的基本工作原理和汉语程序设计语言。
1.3 定义 缩写词 略语
汉语程序设计语言:它是由北京元易达科技发展有限责任公司完全自主开发,完全自主版权的计算机语言,以汉语字词为结构,最大限度的利用汉语本身的特点,是一种基于汉语基础的通用的计算机的程序设计语言。
学籍管理系统: 学籍管理是帮助教学人员、行政人员对人事档案的管理软件。使用汉语编程语言,独立完成其功能。
1.4 参考资料
<<汉语程序设计语言>> --------沈志斌 编着
电子工业出版社
<<软件工程>> --------王利福 张世琨 朱冰 编着
北京大学出版社
<<数据库原理及应用>> --------李绍原 主编
科学出版社
2 项目概述
该学籍管理系统软件目前已有比较完善的管理与使用功能,并且是计算机行业中用汉语编程来完成的新软件成员。研制学籍管理系统软件是为了满足教学办公室对学生档案管理的方便,以现代化的创新思维模式去工作。
2.1 目标
2.1.1 开发意图
a. 为了学籍管理系统更完善;
b. 为了教学办公室对学生档案的管理更方便;
c. 为了减轻行政人员的工作负担。
2.1.2 应用目标
通过本系统软件,能帮助教研人员利用计算机,快速方便的对学生学籍管理进行管理、输入、输出、查找的所需操作,使散乱的人事档案能够具体化,直观化、合理化。
2.1.3 作用及范围
本软件适用于教育界,它是比较完善的系统管理软件,对学生的学籍可以随时输入、输出、查找。
2.1.4 背景
现今学籍管理的繁索给具有强烈时间观念的行政人员带来了诸多不便,教学办公室缺少一种完善的学籍管理软件,为了对学生档案的管理方便,因此开发了本软件。
2.2 产品描述
本产品是一种依赖于汉语编程为基础的系统软件,它是以汉语编程系统词为基础,用汉语程序设计语言进行编程的产品。
2.3 产品功能
2.3.1 外部功能
学籍管理系统软件具有输入、输出、查找功能。
2.3.2 内部功能
该软件集命令、编程、编辑于一体,完成过滤、定位显示。
2.3.3 功能表

2.3.4 功能描述图

2.3.5 用户特点
本软件的使用对象是教学办公室工作人员。会汉语、懂计算机的基本操作就可以利用该软件进行所需操作。同时也会对汉语编程有认识。
2.4 一般约束
a. 本项目的开发经费不超过1万元;
b. 辅导老师2人,开发人员6人;
c. 在管理方针,硬件的限制,并行操作安全和保密方面无约束。
2.5 假设和依据
假设开发经费不到位,管理不完善,设计时没能用全得到考虑,本项目的开发都将受到很大的影响。
3 具体需求
3.1 功能需求(一)
3.1.1 规格说明
输入每个人的具体信息

3.1.2 引言
为了把个人信息(包括:学号、姓名、性别、年级、班级、系别、专业、户口所在地、家庭住址、联系电话、户口分类、考前学历、现今学历、出生日期、民族、政治面貌、身份证号、文考准考证号、自考准考证号、填卡日期、备注)输入到数据库。
3.1.3 输入
个人信息。
3.1.4 加工
通过学籍管理系统输入到数据库中。
3.1.5 输出
个人的全部信息。
3.2 功能需求(二)
3.2.1 规格说明
查询个人的全部信息。

㈡ 80分奖励给一个C语言源代码“档案管理系统的设计”

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

/*********************** 字定义函数声明 ********************************/
void Add(); //增加记录
void Delete(); //删除记录
void Search(); //查找记录
void Alter(); //修改记录
void Views(); //查看所有记录
void delete_all(); //清除所有记录
int check(char strID[]); //查找文件记录中已经存在的学生ID

/********************* 定义学生信息结构体 **********/
struct student
{
//学生信息(学号,姓名,性别,籍贯,电话,住址,民族);
char ID[10];
char name[10];
char sex[4];
char nativePlace[10];
char phone[13];
char nation[6];
};
struct student stu;

FILE *fp;//定义文件指针

/********************* main() 主函数 *************************************/
void main()
{

int flag;

while(flag!=7)
{
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");

scanf("%d",&flag);
switch(flag)
{
case 1:
Add(); //增加记录
getch();
system("cls");
break;
case 2:
Delete(); //删除记录
getch();
system("cls");
break;
case 3:
Search(); //查找记录
getch();
system("cls");
break;
case 4:
Alter(); //修改记录
getch();
system("cls");
break;
case 5:
delete_all(); //清空所有记录
getch();
system("cls");
break;
case 6:
Views(); //查看所有记录
getch();
system("cls");
break;
default:
exit(0);
}
}
}

/***************** 插入新记录 *******************************/
void Add()
{
if((fp=fopen("StudentMessage","ab+"))==NULL)
{
printf("学生信息文件打开失败!");
exit(1);
}
else
{
int check_add(char stuID[]);
long flength,offset;
int k=0,t; //t用来接收check()函数的传值
char str[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");
goto input_message; //跳转到“input_message”标记处继续执行
}
printf("\t姓名:");
scanf("%s",&stu.name);
printf("\t性别:");
scanf("%s",&stu.sex);
printf("\t籍贯:");
scanf("%s",&stu.nation);
printf("\t电话:");
scanf("%s",&stu.phone);
printf("\t名族:");
scanf("%s",&stu.nativePlace);

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");
}
}

/****************** 检测将要插入的学号是否已存在文件记录中 **************************/
int check(char stuID[10])
{
int id=0,k=1;
FILE *fpp;
struct student checkID;
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);
return id*k;
}

/******************** 检测输入的学号是否能插入 *****************************************/
int check_add(char stuID[10])
{
int id;
FILE *fpp;
struct student checkID;
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);
return id;
}

/******************* 根据用户输入的学号删除记录 ************/
void Delete()
{
printf("删除相应记录!\n");
if((fp=fopen("StudentMessage","rb+"))==NULL) //以可读可写方式打开一个二进制文件
{
printf("文件打开失败!\n");
return;
}
else
{
char message[10]; //接收用户需要删除的学号
int i;
long flength;

fseek(fp,0,SEEK_END); //把文件指针移到文件尾
flength=ftell(fp)/sizeof(struct student); //计算文件中有多少条记录
printf("\t请输入您要删除的学号:");
scanf("%s",message);

i=check(message);

long offset=sizeof(stu)*i; //记录要删除的学号的位置
if(flength==0)
{
printf("文件记录为空!\n");
return;
}
else if(i>flength)
{
printf("没有该学生信息!\n");
return;
}
else
{
//将要删除的字符串全部置为空
strcpy(stu.ID,"");
strcpy(stu.name,"");
strcpy(stu.sex,"");
strcpy(stu.nation,"");
strcpy(stu.phone,"");
strcpy(stu.nativePlace,"");
fseek(fp,offset,SEEK_SET); //移动指针到要删除的学号的位置
fwrite(&stu,sizeof(stu),1,fp); //将置空的信息重新写回到文件中
printf("\t\t数据删除成功!\n");
}
fclose(fp);
}
}

/****************** 查找数据 ***************************************/
void Search()
{
if((fp=fopen("StudentMessage","rb"))==NULL) //以只读方式打开StudentMessage文件
{
printf("\t文件打开失败!\n");
return;
}
else
{
char message[10]; //接收用户需要查找的信息
int i;
long flength,offset;
fseek(fp,0,SEEK_END); //将文件指针移文件尾
flength=ftell(fp)/sizeof(struct student); //得到文件中有多少条记录
printf("\t请输入您要查找的学号:");
scanf("%s",message);

i=check(message);

offset=sizeof(struct student)*i;
if(flength==0)
{
printf("\t文件记录为空!\n");
return;
}
else if(i>flength)
{
printf("\t\t查找失败,没有找到相应信息!\n");
return;
}
else
{
//输出查找到的内容
rewind(fp);
fseek(fp,offset,SEEK_SET);
fread(&stu,sizeof(struct student),1,fp);
printf("学号:%s ",stu.ID);
printf("姓名:%s ",stu.name);
printf("性别:%s ",stu.sex);
printf("籍贯:%s ",stu.nation);
printf("电话:%s ",stu.phone);
printf("民族:%s\n",stu.nativePlace);
}
fclose(fp);
}
}

/****************** 修改记录 ********************************/
void Alter()
{
printf("修改相应记录!\n");
if((fp=fopen("StudentMessage","rb+"))==NULL)
{
printf("文件打开失败!\n");
exit(1);
}
else
{
char message[10]; //存储用户要修改的学号
int i;
long flength,offset;
fseek(fp,0,SEEK_END); //移动文件指针到文件尾
flength=ftell(fp)/sizeof(struct student); //得到文件中有多少条记录
printf("\t请输入您要修改的学号:");
scanf("%s",message);
i=check(message);

offset=sizeof(struct student)*i; //记录要修改的记录在文件中的位置

if(flength==0)
{
printf("文件记录为空!\n");
return;
}
else if(i>flength)
{
printf("没有该学生信息!\n");
return;
}
else
{
rewind(fp);
fseek(fp,offset,SEEK_SET);
fread(&stu,sizeof(struct student),1,fp);

printf("该学生原来的信息:\n");
printf("\t学号:%s ",stu.ID);
printf("姓名:%s ",stu.name);
printf("性别:%s ",stu.sex);
printf("籍贯:%s ",stu.nation);
printf("电话:%s ",stu.phone);
printf("名族:%s\n\n",stu.nativePlace);

printf("请更新该学生的信息:\n");
strcpy(stu.ID,message);
printf("\t姓名:");
scanf("%s",&stu.name);
printf("\t性别:");
scanf("%s",&stu.sex);
printf("\t籍贯:");
scanf("%s",&stu.nation);
printf("\t电话:");
scanf("%s",&stu.phone);
printf("\t名族:");
scanf("%s",&stu.nativePlace);

fseek(fp,offset,SEEK_SET); //将文件指针指向要修改的地方
fwrite(&stu,sizeof(stu),1,fp); //将修改后的内容重新写回到原来的地方

printf("\t数据更新成功!\n");
}
fclose(fp);
}
}

/************** 查看所有记录 ************************************/
void Views()
{
long flength;

if((fp=fopen("StudentMessage","rb"))==NULL)
{
printf("文件打开失败!\n");
exit(1);
}

fseek(fp,0,SEEK_END); //移动文件指针到文件尾
flength=ftell(fp)/sizeof(struct student); //得到文件中有多少条记录
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.nation);
printf("电话:%s ",stu.phone);
printf("民族:%s\n",stu.nativePlace);
}
}

fclose(fp);
}

/******************** 删除所有记录 ********************************/
void delete_all()
{
int ch;
printf("该操作将删除所有记录,按“0”退出,按“1”继续。\n");
scanf("%d",&ch);
switch(ch)
{
case 0:
break;
case 1:
printf("将删除所有记录,继续请按“1”,退出请按“0”。\n");
scanf("%d",&ch);
switch(ch)
{
case 0:
break;
case 1:
if (remove("StudentMessage") == 0) //删除StudentMessage文件
{
printf("操作成功,所有记录已经删除!");
}
else
{
perror("remove"); //如果删除不成功则输出系统出错的信息
}
break;
}
}
}

热点内容
安卓动态草地怎么下载 发布:2025-07-15 06:11:12 浏览:579
文件存储中的日期 发布:2025-07-15 05:57:00 浏览:671
python基础教程源码 发布:2025-07-15 05:56:18 浏览:247
php接受xml 发布:2025-07-15 05:51:04 浏览:927
机顶盒怎么看密码 发布:2025-07-15 05:46:48 浏览:921
电脑配置低怎么变得不卡 发布:2025-07-15 05:34:08 浏览:844
ios火影忍者手游脚本 发布:2025-07-15 05:31:34 浏览:82
iphone支付密码忘了怎么办 发布:2025-07-15 05:30:55 浏览:775
c语言打开网页 发布:2025-07-15 05:21:33 浏览:640
如何制作我的世界模组服务器 发布:2025-07-15 05:21:33 浏览:903