档案信息管理系统源码(什么是档案管理系统)
本文目录一览:
企业档案管理系统的全部Java代码
这个采用 java web 进行开发
确认需求 设计表 coding
数据库档案信息管理系统源码:mysql or sqlserver
服务器档案信息管理系统源码:Tomcat
see my (baid u) name
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(iflength)
{
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(iflength)
{
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(iflength)
{
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;
}
}
}
求C语言学生档案管理界面的源代码
# includeiostream.h
# includestring.h
# includestdio.h
# includestdlib.h
# includefstream.h
//*****定义一个学生原子的的数据结构*****//
struct stuatom
{
char *name;
int id;
char sex;
float math, eng, comp, totll, aver;
void show();
void setup();
};
//*********定义一系列对学生的操作**********//
class student
{
private:
stuatom ob[100];
int stulen;
public:
student();
void input();
void order();
void save();
void Query();
void read();
void add();
void del();
};
//********对学生数据的初始化(类的构造函数)**********//
student::student()
{
//用for循环对全部数组中的数据初始化
for(int i=0;i100;i++)
{
ob[i].math=ob[i].eng=ob[i].comp =ob[i].totll =ob[i].aver =0;
ob[i].id =0;
ob[i].sex =' ';
ob[i].name =NULL;
}
this-stulen =0;
}
//********输入学生的数据,并判断是否在规定数据域内*******//
void stuatom::setup()
{
char n[20]; char s;
int b;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
do {
cout" 学号: ";
cinb;
if(b1020||b1001)
cout"Bad data input!!"endlendl;
}while (b1001||b1020);
id=b;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
do{
name=new char[strlen(n)+1];
cout" 姓名: ";
cinn;
if( strlen(n)6 || strlen(n)4 )
cout"Bad data input!!"endlendl;
}while ( strlen(n)6 strlen(n)4 );
strcpy(name,n);
cout" 性别(m/f):" ;
cins;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (s!='m' s!='f')
{
cout"Bad data input!!"endlendl;
cout" 性别(m/f):";
cins;
}
sex=s;
float m, e, co;
cout" 数学: ";
cinm;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (m0 || m100)
{
cout"Bad data input!!"endlendl;
cout" 数学: ";
cinm;
}
math=m;
cout" 英语: ";
cine;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (e0 || e100)
{
cout"Bad data input!!"endlendl;
cout" 英语: ";
cine;
}
eng=e;
cout" 计算机: ";
cinco;
//如果输入学好在数据域内,跳出循环并且赋值。
//如果不再数据域内,一直循环到输入数据符合数据域为止
while (co0 || co100)
{
cout"Bad data input!!"endlendl;
cout" 计算机: ";
cinco;
}
comp=co;
totll=math+eng+comp;
aver=(math+eng+comp)/3;
}
//*******按照规定格式把该学生的数据显示在屏幕上******//
void stuatom::show()
{
cout.setf(ios::left);
cout.width(6);
cout""id" ";
cout.width(8);
coutname;
cout.width(10);
coutsex;
cout.width(9);
coutmath;
cout.width(9);
couteng;
cout.width(11);
coutcomp;
cout.width(10);
couttotllaverendl;
}
//**************输入学生的数据***********************//
void student::input()
{
int n;
coutendl"输入将要录入的学生数目: ";
cinn;
int j;
//通过循环输入要求输入学生个数的学生的数据。
for(j=0; jn; j++)
{
cout" 输入学生信息 "jendl;
ob[j].setup();
}
this-stulen=n; //学生个数赋值
//学生数据显示格式
system("cls");
coutendl"----------------------------- 学生信息表 ------------------------------------"endl;
coutendl" 学号 姓名 性别 数学 英语 计算机 总分 平均分"endl;
//通过循环输出所有学生数据。
for(j=0; jn; j++)
{
ob[j].show();
}
coutendl;
cout" 是否保存? (Y/N): ";
char Y;
cinY;
system("cls");
}
//**************按照一定格式显示所要查询学生的信息。**************//
void student::Query()
{
int x , i;
coutendl" 输入要查询学生的学号: ";
cinx;
coutendl" 学号 姓名 性别 数学 英语 计算机 总分 平均分"endl;
for(i=0;i=this-stulen ;i++)
{ if (x==ob[i].id)
{
cout.setf(ios::left);
cout.width(6);
cout""ob[i].id" ";
cout.width(8);
coutob[i].name;
cout.width(10);
coutob[i].sex;
cout.width(9);
coutob[i].math;
cout.width(9);
coutob[i].eng;
cout.width(11);
coutob[i].comp;
cout.width(10);
coutob[i].totllob[i].averendl;
}
}
getchar();
}
//*******************保存学生数据**************************//
void student::save()
{
int i;
ofstream outfile;
outfile.open("list.txt",ios::trunc);
if(!outfile)
{
cout"Cannot open output file!\n,";
}
//通过循环把所有的学生数据保存在list.txt里边。
for(i=0; ithis-stulen; i++)
{
outfileob[i].id" "ob[i].name" "ob[i].sex" "
ob[i].math" "ob[i].eng" "ob[i].comp" "ob[i].totll" "ob[i].averendl;
}
outfile.close();
}
//*************显示所有学生数据*********************//
void student::read()
{
int i;
system("cls");
coutendl"----------------------------- 学生信息表 ------------------------------------"endl;
coutendl" 学号 姓名 性别 数学 英语 计算机 总分 平均分"endl;
for(i=0; ithis-stulen; i++)
{
ob[i].show();
}
getchar();
}
//*******************一个学生的数据****************//
void student::add()
{
int i, d=this-stulen ;
cout"输入要添加学生的信息:"endl;
ob[d].setup();
coutendl"----------------------------- 学生信息表 ------------------------------------"endl;
coutendl" 学号 姓名 性别 数学 英语 计算机 总分 平均分"endl;
for(i=0; i=d; i++)
{
ob[i].show();
}
ofstream fout("list.txt",ios::app);
if(!fout)
{
cout"Cannot open output file!\n,";
}
//把添加的学生数据添加到list.txt里边去。
foutob[d].id" "ob[d].name" "ob[d].sex" "
ob[d].math" "ob[d].eng" "ob[d].comp" "ob[d].totll" "ob[d].averendl;
fout.close();
getchar();
}
//*********************删除指定名字学生的数据*******************//
void student::del()
{
int i,p; char x[8];
cout" 输入要删除学生名字:"endl;
cinx;
//通过for循环查找要删除学生的姓名
for(i=0; istulen; i++)
{
if(strcmp(ob[i].name,x)==0)
{
p=i;
coutendl"学号 姓名 性别 数学 英语 计算机 总成绩 平均成绩"endl;
coutob[i].id" "ob[i].name" "ob[i].sex" "ob[i].math" "ob[i].eng" "ob[i].comp" "ob[i].totll" "ob[i].averendl;
break;
}
else
continue;
}
coutendl"----------------------------- 学生信息表 ------------------------------------"endl;
coutendl" 学号 姓名 性别 数学 英语 计算机 总分 平均分"endl;
//删除了之后,应该把后面的数据往前移,把要删除的数据覆盖,并且学生长度减1
stulen--;
for(i;istulen;i++)
{
ob[i]=ob[i+1];
}
this-read ();
cout" 删除成功!"endl;
getchar();
}
//***********把学生成绩排序******************//
void student::order()
{
int k,j;
float t; char n[20];
//排序算法。
for(j = 0; j=(2-1); j++)
{
for(k=1; k=(2-j); k++)
{
if(ob[k].totll ob[k + 1].totll)
{
t = ob[k].totll;
ob[k].totll = ob[k+1].totll;
ob[k+1].totll = t;
strcpy(n, ob[k].name);
strcpy(ob[k].name, ob[k+1].name);
strcpy(ob[k+1].name, n);
}
cout" 成绩排名:"endl;
cout" 姓名 总成绩 名次"endl;
for(k=0; k=stulen; k++)
{
cout" ";
cout.setf(ios::left);
cout.width(9);
coutob[k].name;
cout.width(9);
coutob[k].totllkendl;
}
getchar();
}
}
}
//********************选择菜单。*****************//
void menu()
{
cout"\n\n";
cout"------------------ 学生成绩系统 -----------------"endlendl;
cout"\t\t1.录入与保存学生信息.\n";
cout"\t\t2.读取学生信息.\n";
cout"\t\t3.删除学生信息.\n";
cout"\t\t4.追加学生信息.\n";
cout"\t\t5.查询学生信息.\n";
cout"\t\t6.显示成绩名次.\n";
cout"\t\t7.退出系统......\n\n\n";
cout"\t\t请选择功能项: ";
}
//---------------------------------------------------------------------------------------
void main()
{
student a;
while(1)
{
int SEL;
system("cls");
menu();
cinSEL;
switch(SEL)
{
case 1:
system("cls"); a.input();a.save();break;
case 2:
system("cls"); a.read(); break;
case 3:
system("cls"); a.del(); break;
case 4:
system("cls"); a.add();break;
case 5:
system("cls"); a.Query();break;
case 6:
system("cls"); a.order();break;
case 7:
coutendl" 按任意键退出.... "endl;
getchar();
exit(0);
default:
cout"Bad input!!\n";
break;
}
}
} 我比较忙,没有亲自帮你写,你自己改改吧,框架出来了。