学籍管理系统.docx

上传人:b****7 文档编号:10145244 上传时间:2023-02-08 格式:DOCX 页数:18 大小:19.03KB
下载 相关 举报
学籍管理系统.docx_第1页
第1页 / 共18页
学籍管理系统.docx_第2页
第2页 / 共18页
学籍管理系统.docx_第3页
第3页 / 共18页
学籍管理系统.docx_第4页
第4页 / 共18页
学籍管理系统.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

学籍管理系统.docx

《学籍管理系统.docx》由会员分享,可在线阅读,更多相关《学籍管理系统.docx(18页珍藏版)》请在冰豆网上搜索。

学籍管理系统.docx

学籍管理系统

学生学籍信息管理系统设计--C语言程序

#include

#include

#defineNULL0

#defineLENsizeof(structstudent)

structstudent

{longnum;

intscore;structstudent*next;

};

intn;

structstudent*creat()

{structstudent*head;

structstudent*p1,*p2;

n=0;

p1=p2=(structstudent*)malloc(LEN);

scanf("%ld,%d",&p1->num,&p1->score);

head=NULL;

while(p1->num!

=0)

{n=n+1;

if(n==1)head=p1;

elsep2->next=p1;

p2=p1;

p1=(structstudent*)malloc(LEN);

scanf("%ld,%d",&p1->num,&p1->score);

}

p2->next=NULL;

return(head);

}

voidprint(structstudent*head)

{structstudent*p;

printf("\nNow,These%drecordsare:

\n",n);

p=head;

if(head!

=NULL)

do

{printf("%ld%d\n",p->num,p->score);

p=p->next;

}while(p!

=NULL);

}

structstudent*del(structstudent*head,longnum)

{structstudent*p1,*p2;

if(head==NULL){printf("\nlistnull!

\n");gotoend;}

p1=head;

while(num!

=p1->num&&p1->next!

=NULL)

{p2=p1;p1=p1->next;}

if(num==p1->num)

{if(p1==head)head=p1->next;

elsep2->next=p1->next;

printf("delete:

%ld\n",num);

n=n-1;

}

elseprintf("%ldnotbeenfound!

\n",num);

end:

return(head);

}

structstudent*insert(structstudent*head,structstudent*stud)

{structstudent*p0,*p1,*p2;

p1=head;

p0=stud;

if(head==NULL)

{head=p0;p0->next=NULL;}

else

{

 

#include

#include

#include

#include

#include

#include

#include

#include

usingnamespacestd;

structEmployee

{//声明职工的结构作为链表节点。

//-----数据域-----

stringm_Code;

stringm_Name;

unsignedshortintm_Year;

stringm_Sex;

stringm_Post;

stringm_Department;

unsignedintm_Wage;

//链表节点的指针域---

structEmployee*Next;

};

//-----个人习惯:

取别名-------

typedefstructEmployeeNode;

typedefNode*Link;

//-------函数声明-------------

LinkCreate(LinkHead);

voidRelease(LinkHead);

LinkAdd(LinkHead);

boolSearch(LinkHead);

LinkSearch_Unique(LinkHead);

voidDisplay_List(LinkHead);

voidDisplay_Node(LinkpNode);

LinkModify(LinkHead);

LinkDel(LinkHead);

voidSave_ByFile(LinkHead,fstream&ofile);

LinkSort(LinkHead);

//-------函数实现--------------------------

LinkCreate(LinkHead)

{//创建一个带头节点的空链表。

Head=(Link)newNode;

if(!

Head)

{

cout<<"分配内存失败!

"<

returnNULL;

}

Head->m_Code="";

Head->m_Name="";

Head->m_Year=0;

Head->m_Sex="";

Head->m_Post="";

Head->m_Department="";

Head->m_Wage=0;

Head->Next=NULL;

returnHead;

}

voidRelease(LinkHead)

{//释放链表。

Linkptr;//声明一个操作用的指针。

while(Head!

=NULL)

{

ptr=Head;

Head=Head->Next;

deleteptr;//释放节点资源。

}

}

LinkAdd(LinkHead)

{//前插法添加数据。

LinkpNew;//声明一个新节点。

charagain;

stringcode,name,sex,post,department;

unsignedshortintyear;

unsignedintwage;

do

{

pNew=(Link)newNode;

//数据域。

cout<<"请输入职工代码:

";

cin>>code;

cout<

";

cin>>name;

cout<

";

cin>>year;

while(cin.fail())

{

cout<<"请输入正确的年份格式。

"<

cin.clear();

fflush(stdin);

cin>>year;

}

cout<

";

cin>>sex;

cout<

";

cin>>post;

cout<

";

cin>>department;

cout<

";

cin>>wage;

while(cin.fail())

{

cout<<"请输入正确的工资数据。

"<

cin.clear();

fflush(stdin);

cin>>wage;

}

cout<

pNew->m_Code=code;

pNew->m_Name=name;

pNew->m_Year=year;

pNew->m_Sex=sex;

pNew->m_Post=post;

pNew->m_Department=department;

pNew->m_Wage=wage;

//指针域。

pNew->Next=Head->Next;

Head->Next=pNew;

cout<<"数据添加成功!

是否继续添加?

(Y/N)"<

cin>>again;

}while(again=='Y'||again=='y');

returnHead;

}

boolSearch(LinkHead)

{//查询同时满足“姓名”和“部门”的职工信息。

Linkptr;

stringdepartment;

stringname;

ptr=Head->Next;

cout<<"请输入部门:

";

cin>>department;

cout<

";

cin>>name;

cout<

while(ptr)

{

if((ptr->m_Name==name)&&(ptr->m_Department==department))

{

Display_Node(ptr);//打印满足条件的节点。

returntrue;

}

ptr=ptr->Next;//查询下一节点。

}

cout<<"无此职工的信息。

"<

returnfalse;

}

LinkSearch_Unique_Front(LinkHead)

{//查询满足“职工代码“的职工信息(职工代码必需唯一)。

Linkptr;

stringcode;

ptr=Head;

cout<<"请输入职工代码:

";

cin>>code;

cout<

while(ptr->Next)

{

if(ptr->Next->m_Code==code)

//Display_Node(ptr);//打印满足条件的节点。

returnptr;//注意,是返回的查询到的节点的直接前趋节点。

ptr->Next=ptr->Next->Next;//查询下一节点。

}

returnptr;

}

voidDisplay_List(LinkHead)

{

Linkptr;

ptr=Head->Next;

cout<<"==================所有职工信息=================="<

while(ptr)

{

Display_Node(ptr);

ptr=ptr->Next;

}

}

voidDisplay_Node(LinkpNode)

{//在标准输出设备上输出。

cout<m_Code

<m_Name

<m_Year

<m_Sex

<m_Post

<m_Department

<m_Wage<

}

LinkModify(LinkHead)

{//修改单一个节点。

Linkptr;

ptr=Search_Unique_Front(Head);

stringcode,name,sex,post,department;

unsignedshortintyear;

unsignedintwage;

if(ptr->Next)

{

cout<<"-------你现在可以修改此职工的信息了-------"<

//数据域。

cout<<"请输入职工代码:

";

cin>>code;

cout<

";

cin>>name;

cout<

";

cin>>year;

while(cin.fail())

{

cout<<"请输入正确的年份格式。

"<

cin.clear();

fflush(stdin);

cin>>year;

}

cout<

";

cin>>sex;

cout<

";

cin>>post;

cout<

";

cin>>department;

cout<

";

cin>>wage;

while(cin.fail())

{

cout<<"请输入正确的工资数据。

"<

cin.clear();

fflush(stdin);

cin>>wage;

}

cout<

ptr->Next->m_Code=code;//因ptr是前趋节点,所以要用ptr->Next;

ptr->Next->m_Name=name;

ptr->Next->m_Year=year;

ptr->Next->m_Sex=sex;

ptr->Next->m_Post=post;

ptr->Next->m_Department=department;

ptr->Next->m_Wage=wage;

}

cout<<"没找到此职工的记录,无法修改。

"<

returnHead;

}

LinkDel(LinkHead)

{

Linkptr;

Linkptr_front;

ptr_front=Search_Unique_Front(Head);

ptr=ptr_front->Next;

if(ptr)

{

ptr_front->Next=ptr->Next;

deleteptr;//删除此节点。

}

cout<<"没找到此职工的记录,无法删除。

"<

returnHead;

}

voidSave_ByFile(LinkHead,fstream&ofile)

{

LinkpNode;

pNode=Head->Next;

ofile.clear();//清除文件结束状态。

while(pNode)

{

ofile<m_Code

<m_Name

<m_Year

<m_Sex

<m_Post

<m_Department

<m_Wage<

pNode=pNode->Next;

}

cout<<"数据文件保存成功!

"<

}

LinkSort(LinkHead)

{//我创建的是带头节点的链表。

用直接插入法。

if((Head->Next==NULL)||(Head->Next->Next==NULL))//此步条件判断非常有价值。

{

cout<<"数据节点数少于2个,不用排序!

"<

returnHead;

}

//-----------第二步;

Linkptr;

Linkptr_F;

Linkptr_N;

ptr=Head->Next->Next;

ptr_F=Head;

Head->Next->Next=NULL;//到此,分成了两个链表。

//第三步。

while(ptr)

{

ptr_N=ptr->Next;

ptr_F=Head;//ptr_F的归位。

while(ptr_F->Next)

{

if(ptr->m_Wage>ptr_F->Next->m_Wage)

{

ptr->Next=ptr_F->Next;

ptr_F->Next=ptr;

break;

}//if

else

{

ptr_F=ptr_F->Next;

}

}//while(ptr_F->Next)

if(ptr_F->Next==NULL)

{

ptr->Next=ptr_F->Next;

ptr_F->Next=ptr;//表示插到有序链表的最后面了。

}

ptr=ptr_N;//归位,准备下一次排序。

}//while(ptr)

cout<<"从高到低,排序成功!

"<

returnHead;

}

intmain()

{

LinkHead=0;

Head=Create(Head);

fstreamiofile;

iofile.open("d:

\\iofile.txt",ios_base:

:

in|ios_base:

:

out|ios_base:

:

app);//文件以三种方式打开。

if(!

iofile)

{

cout<<"打开文件失败!

"<

return-1;

}

intmenu;

while

(1)

{

cout<<"*****************************************************"<

cout<<"*====================菜单选顶=======================*"<

cout<<"*===================================================*"<

cout<<"*1.注册职工2.修改信息3.删除信息4.信息查询*"<

cout<<"*5.保存文件6.工资排行7.信息显示0.退出系统*"<

cout<<"*****************************************************"<

cout<

";

cin>>menu;

while(cin.fail())

{

cout<<"请选择正确的菜单选项。

"<

cin.clear();

fflush(stdin);

cin>>menu;

}

switch(menu)

{

case0:

cout<<"成功退出系统!

"<

return0;

case1:

Head=Add(Head);

break;

case2:

Head=Modify(Head);

break;

case3:

Head=Del(Head);

break;

case4:

Search(Head);

break;

case5:

Save_ByFile(Head,iofile);

break;

case6:

Sort(Head);

break;

case7:

Display_List(Head);

break;

default:

cout<<"请选择正确的菜单项进行操作。

多谢合作!

"<

}

}

Release(Head);

iofile.close();

return0;

}

 

可以参考我这个是以学生信息为例的

#include"stdio.h"/*I/O函数*/

#include"stdlib.h"/*其它说明*/

#include"string.h"/*字符串函数*/

#include"conio.h"/*屏幕操作函数*/

#include"mem.h"/*内存操作函数*/

#include"ctype.h"/*字符操作函数*/

#include"alloc.h"/*动态地址分配函数*/

structscore

{

intmingci;

charxuehao[8];

charmingzi[20];

floatscore[6];

}data,info[1000];

inti,j,k=0;

chartemp[20],ch;

FILE*fp,*fp1;

voidshuru()

{

if((fp=fopen("s_score.txt","ab+"))==NULL)

{

printf("cannotopenthisfile.\n");

getch();exit(0);

}

for(i=0;i<=1000;i++)

{

printf("\nPleaseshuruxuehao:

");

gets(data.xuehao);

printf("Pleaseshurumingzi:

");

gets(data.mingzi);

printf("Pleaseshuruyuwenscore:

");

gets(temp);data.score[0]=atof(temp);

printf("Pleaseshurushuxuescore:

");

gets(temp);data.score[1]=atof(temp);

printf("Pleaseinputyingyuscore:

");

gets(temp);data.score[2]=atof(temp);

printf("Pleaseshuruwuliscore:

");

gets(temp);data.score[3]=atof(temp);

printf("Pleaseshurhuaxuescore:

");

gets(temp);data.score[4]=atof(temp);

data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];

fwrite(&data,sizeof(data),1,fp);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1