用C语言编写学生信息管理程序(给出五个主要函数就OK啦!)

用C语言编写学生信息管理程序(给出五个主要函数就OK啦!),第1张

/*接上一楼*/

struct

Student

*create()

/*create函数定义,此函数实现创建单向动态链表*/

{

struct

Student

*head=NULL,*p1,*p2

/*head,链表的头指针;*p1,*p2,中间指针变量*/

puts("\n现在请输入学院名:")

scanf("%s",college)

puts("\n年级:")

scanf("%s",grade)

puts("\n专业和班级:")

scanf("%s",classname)

puts("\n下面请按提示依次输入数据:\n(如果要结束输入,请输入学号0)")

p1=p2=(struct

Student

*)malloc(LEN)

puts("输入第一个学生的学号:")

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

puts("输入此学生成绩:\n英语:")

scanf("%f",&p1->score.english)

puts("数学:")

scanf("%f",&p1->score.math)

puts("计算机:")

scanf("%f",&p1->score.computer)

total_and_aver(p1)/*计算总分和平均分*/

p1->grade=mark_grade(p1)

for(p1->num!=0)

{

len++

if(len==1)

head=p1

else

p2->next=p1

p2=p1

p1=(struct

Student

*)malloc(LEN)

puts("输入下一个学生的学号:")

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

puts("输入此学生成绩:\n英语:")

scanf("%f",&p1->score.english)

puts("数学:")

scanf("%f",&p1->score.math)

puts("计算机:")

scanf("%f",&p1->score.computer)

total_and_aver(p1)/*计算总分和平均分*/

p1->grade=mark_grade(p1)

}

p2->next=NULL

return

(head)

}

struct

Student

*del(struct

Student

*head,long

del_num)

/*del函数定义,此函数实现从现有链表中删除一个结点*/

{

struct

Student

*p1,*p2

if(head==NULL)

puts("空表,没有任何数据记录。\n")

else

{

for(p1=head!(del_num==p1->num||p1->next==NULL)p2=p1,p1=p1->next)

if(del_num==p1->num)

{

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

else

p2->next=p1->next

printf("学号为%ld学生的数据删除成功。\n",del_num)

--len

}

else

printf("未找到学号为%ld学生的记录。\n",del_num)

}

return

(head)

}

struct

Student

*insert(struct

Student

*head,struct

Student

*new_student)

/*insert函数定义,此函数实现向现有链表中插入一个结点或覆盖相同学号的数据*/

{

struct

Student

*p0=new_student,*p1=head,*p2

char

control

if(head==NULL)

{

head=p0

p0->next=NULL

puts("数据插入成功。\n")

}

else

{

for(((*p0).num>(*p1).num)&&(p1->next!=NULL)p2=p1,p1=p1->next)

if((*p0).num==(*p1).num)

{

printf("已经存在一个学号为%ld的学生的数据,要覆盖原有数据吗?\n输入

Y

=覆盖原有数据\n输入其它=保留原有数据\n",p0->num)

FFLUSH

scanf("%c",&control)

FFLUSH

switch

(control)

{

case

'Y':

case

'y':if(p1==head){head=p0p0->next=p1->next}

else

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

puts("数据已经更新\n")break

default:break

}

len--

}

else

if((*p0).num<(*p1).num)

{

if(p1==head)head=p0

else

p2->next=p0

p0->next=p1

puts("数据插入成功。\n")

}

else

{

p1->next=p0

p0->next=NULL

puts("数据插入成功。\n")

}

}

++len

return

(head)

}

struct

Student

*sort(struct

Student

*head)

/*sort函数定义,此函数实现对链表中的数据按照平均分高低排序*/

{

struct

Student

*p1,*p2

for(p1=headp1->next!=NULLp1=p1->next)

for(p2=p1->nextp2!=NULLp2=p2->next)

{

if(p1->score.average<p2->score.average)

{

SWAP(p1->num,p2->num)

SWAP(p1->grade,p2->grade)

SWAP(p1->score.english,p2->score.english)

SWAP(p1->score.math,p2->score.math)

SWAP(p1->score.computer,p2->score.computer)

SWAP(p1->score.total,p2->score.total)

SWAP(p1->score.average,p2->score.average)

}

}

return

head

}

/*接下一楼*/

没有分啊

给个思路

你需要一个小型的数据库来支撑你的需求,access就可以了。你用VC++或者C++

Builder来开发界面,建立一个小数据库,里面放一张图书的数据表就可以了,字段包括图书的编号(这对每一本图书来说都是唯一的),图书名称,图书的作者啊等等其他信息。添加图书其实就是对数据库的insert *** 作,只是在insert之前你要先查询下图书名称是否已经包含在数据库里。查询图书就是简单的对数据库select *** 作。修改图书就是对数据库进行Update *** 作,删除就是Delete了,只要你熟悉SQL,理解这些就很简单。最后的access文件就是你的图书信息表,你可以将它拷贝到任何支持office的电脑上打开查看。

//学生个人信息类

#include<iostream.h>

#include<string.h>

#include<fstream.h>

#include<iomanip.h>//kjljjj

class student

{private:int maxnum//学生学号最大值

int sno//学号char name[5]

char sex[2]

int agechar birth[10]//出生日期

char folk[2]//民族

char mianmao[10]//政治面貌

char department[10]//系别

long banji//班级

char speciality[10]//专业

char address[30]//学生详细家庭住址

public:

student()~

student()

void enter()//学生信息录入函数

void display()//学生信息输出函数

void setsno(int temp)

int getsno()

char *getname()

long getbanji()

char *getspeciality()

void read()

void write()

}

student::student()

{}

student::~student()

{}

int student::getsno()

{return sno}

char *student::getspeciality()

{return speciality}

long student::getbanji()

{return banji}

void student::setsno(int temp)

{sno=temp}

char *student::getname()

{return name}

void student::display()

{cout<<setw(4)<<sno<<setw(4)<<name<<setw(4)<<sex<<setw(4)<<age<<setw(4)<<folk<<setw(8)<<birth<<setw(8)<<mianmao<<setw(8)<<department<<setw(8)<<banji<<setw(8)<<speciality<<setw(8)<<address<<endl}

void student::enter()

{ ifstream tfile("max.txt",ios::binary|ios::nocreate)

if(tfile)

{ tfile.read((char *)&maxnum,sizeof maxnum)}

else

{ maxnum=1000//学生学号初始化 } tfile.close()

sno=maxnum++

ofstream ofile("max.txt")

ofile.write((char*)&maxnum,sizeof maxnum) tfile.close()

cout<<"请输入学生信息"<<endl

cout<<"学生姓名:"<<endl

cin>>name

cout<<"性别(男(n),女(m)):"<<endl

cin>>sex while(strcmp(sex,"n")!=0&&strcmp(sex,"m")!=0)

{ cout<<"错误请重新输入!"<<endl cin>>sex }

cout<<"出生日期:"<<endl

cin>>birth

cout<<"年龄:"<<endl

cin>>age

while(age<=15||age>=50)

{ cout<<"错误请重新输入!"<<endl cin>>age}

cout<<"政治面貌(团员(a),预备党员(b),党员(c)):"<<endl

cin>>mianmao

while(strcmp(mianmao,"a")!=0&&strcmp(mianmao,"b")!=0&&strcmp(mianmao,"c")!=0)

{cout<<"错误请重新输入!"<<endl cin>>mianmao}

cout<<"民族:"<<endl cin>>folk

cout<<"系别:"<<endl cin>>department

cout<<"班级:"<<endl cin>>banji

cout<<"专业:"<<endl cin>>speciality

cout<<"家庭住址:"<<endl cin>>address}//主程序部分:#include<iostream.h>

#include<fstream.h>

#include<string.h>

#include<iomanip.h>

#include<stdlib.h>

//#include"student.h"

student stu//student 类的全局变量

void read()

{ ifstream afile("student.txt",ios::nocreate) afile.read((char*)&stu,sizeof stu)

}

void write()

{ ofstream bfile("student.txt",ios::app) bfile.write((char*)&stu,sizeof stu)}

void input(void)

{ char ch stu.enter()

write()

cout<<"你还要输入下一位学生的信息吗(Y/N)!"<<endl cin>>ch

if(ch=='Y'||ch=='y')

{ input() }}

void search()

{ int j,k,i,m=0 char ch1[5],ch2[10] cout<<"请输入你的查找类型:(1.学号 2.姓名 3.专业 4.班级)"<<endl

cin>>j

while(j<=0||j>=5)

{ cout<<"错误请重新选择!"<<endlcin>>j }

if(j==1)

{ cout<<"请输入你要查找的学生的学号:"<<endl

cin>>i

}

if(j==2)

{ cout<<"请输入你要查找的学生的姓名:"<<endl

cin>>ch1

}

if(j==3)

{

cout<<"请输入你要查找的学生所在的专业:"<<endl

cin>>ch2 }

if(j==4)

{

cout<<"请输入你要查找的学生所在的班级:"<<endl cin>>k

}

ifstream dfile("student.txt",ios::nocreate) while (dfile.good())

{

dfile.read((char *) &stu,sizeof stu)

if(i==stu.getsno()||strcmp(stu.getname(),ch1)==0||

strcmp(stu.getspeciality(),ch2)==0||k==stu.getbanji())

{

cout<<"你要查找的学生信息如下:"<<endl

cout<<setw(4)<<"学号"<<setw(4)<<"姓名"<<setw(4)<<"性别"<<setw(4)<< "年龄"<<setw(4)<<"民族"<<setw(8)<<"出生日期"<<setw(8)<<"政治面貌"<< setw(8)<<"系别"<<setw(8)<<"班级"<<setw(8)<<"专业"<<setw(8)<<"联系电话"<<setw(8)<<"家庭住址"<<endl stu.display()

i=0

k=0

m=1

return

}

}

if(m!=1)

cout<<"没有找到这名学生的信息!"<<endl

}

void output()

{

int i=0

ifstream cfile("student.txt",ios::nocreate)

while(cfile)

{

if( cfile.read((char *)&stu,sizeof stu)){stu.display() i++ } }cout<<"一共有"<<i<<"个学生信息"<<endl}void menu(){ cout<<"学号:2005132040 姓名:孟琳琳班级:通信053"<<endl

cout<<" * 学籍管理系统 *"<<endl

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

cout<<" 0.退出系统 "<<endl

cout<<" 1.学生信息录入 "<<endl

cout<<" 2.学生信息查询 "<<endl

cout<<" 3.学生信息输出 "<<endl

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

cout<<" 请选择以上 *** 作(0=======3) "<<endl

}

void select()//选择菜单函数

{

int ch

while(1)

{

cin>>ch

switch(ch)

{

case 0:exit(0)menu()break

case 1:input()menu()break

case 2:search()menu()break

case 3:output()menu()break

default:menu()cout<<"输入无效请重新输入(0======== 3)"<<endlbreak

}

}

}void main()

{

menu()

select()

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7696112.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存