c语言编写学生信息管理系统

c语言编写学生信息管理系统,第1张

/*好吧,其实你可以上网看看,那么多的,你可以自己修改下*/

#include <stdio.h>

#include <malloc.h>

#include <string.h>

#include <stdlib.h>

#define NULL 0

#define LEN sizeof(struct student)

struct student

{

char name[20]

long int num

char sex[4]

int age

char address[30]

double tele_num

char aihao[20]

struct student *next

}//定义一个结构题

int TOTAL_NUM = 0//学生总数

struct student *head = NULL

void welcome ()//欢迎界面

void mainmenu ()//主界面

void record ()//记录数据

void insert(struct student *stu)//插入数据

void display(struct student *stu)//显示一个学生的信息

void displayAll ()//显示所有学生的信息

void query_by_num ()//按学号查询学生信息

void readData ()//读取文件里学生的信息

void writeData ()//向文件写入学生信息

void freeAll ()//清空链表内容

void del ()//删除学生信息

void change ()//更改学生信息

void devise (struct student *p)//选择更改内容

int main (void)

{

welcome ()

//显示主菜单

mainmenu ()

return 0

}

//显示欢迎信息

void welcome ()

{

printf ("+----------------------------------------------------+\n")

printf ("||\n")

printf ("| 欢迎使用网络工程学院信息安全092班学生信息管理系统 |\n")

printf ("||\n")

printf ("+----------------------------------------------------+\n")

}

//系统主菜单

void mainmenu ()

{

int choice

choice = -1

readData ()

printf ("\n温馨提示:为保证您的 *** 作得到保存,请按正常顺序退出系统^_^\n")

do

{

printf ("\n\n\n")

printf ("\t\t\t--------------------------------------------\n")

printf ("\t\t\t+信息安全092班学生信息管理系统 |\n")

printf ("\t\t\t--------------------------------------------\n")

printf ("\t\t\t+[1]----录入学生信息|\n")

printf ("\t\t\t+[2]----浏览学生信息|\n")

printf ("\t\t\t+[3]----查询学生信息|\n")

printf ("\t\t\t+[4]----删除学生信息|\n")

printf ("\t\t\t+[5]----修改学生信息|\n")

printf ("\t\t\t+[0]----退出系统|\n")

printf ("\t\t\t+*·*·*·*·*·*·*·*·*·*·*·*·*·*·*|\n")

printf ("\t\t\t--------------------------------------------\n")

printf ("请输入您的选择:")

scanf ("%d", &choice)

switch (choice)

{

case 0:

writeData ()

freeAll ()

exit (0)

case 1:

record ()

break

case 2:

displayAll ()

break

case 3:

query_by_num ()

break

case 4:

del ()

break

case 5:

change ()

break

default:

printf ("\n无效选项!")

break

}

}

while (choice != 0)

}

//录入学生信息

void record ()

{

struct student *p0

p0 = (struct student *)malloc(LEN)

printf ("请输入学生的姓名:")

scanf ("%s",p0->name)

printf ("请输入学生的学号:")

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

printf ("请输入学生的性别:")

scanf ("%s",p0->sex)

printf ("请输入学生的年龄:")

scanf ("%d",&p0->age)

printf ("请输入学生的地址:")

scanf ("%s",p0->address)

printf ("请输入学生的电话:")

scanf ("%lf",&p0->tele_num)

printf ("请输入学生的爱好:")

scanf ("%s",p0->aihao)

insert (p0)

printf ("该学生的信息为:\n")

printf ("-------------------------------------------------------------------------------\n")

printf ("姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n")

display (p0)

}

void insert (struct student *stu)

{

struct student *p0, *p1, *p2

p1 = head

p0 = stu

if (head == NULL)

{

head = p0

p0->next = NULL

}

else

{

while ((p0->num >p1->num)&&(p1->next != NULL))

{

p2 = p1

p1 = p1->next

}

if (p0->num <= p1->num)

{

if (head == p1)

head = p0

else

p2->next = p0

p0->next = p1

}

else

{

p1->next = p0

p0->next = NULL

}

}

TOTAL_NUM++

}

void display (struct student *p)

{

printf ("%s\t%ld\t%d\t%s\t%s\t\t%.0f\t%s\n", p->name, p->num, p->age, p->sex, p->address, p->tele_num, p->aihao)

}

//浏览学生信息

void displayAll()

{

struct student *p

printf("学生总数:%d\n", TOTAL_NUM)

p = head

if (head != NULL)

{

printf("\n姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n")

printf("-------------------------------------------------------------------------------\n")

do

{

display(p)

p = p->next

}

while(p != NULL)

}

printf ("\n")

}

//按学号查询学生信息

void query_by_num ()

{

int num

struct student *p1

printf("请输入学生的学号:")

scanf("%ld", &num)

if(head==NULL)

{

printf("无学生记录!\n")

return

}

p1 = head

while (num!=p1->num &&p1->next!=NULL)

p1 = p1->next

if (num == p1->num)

{

printf ("姓名\t学号\t\t年龄\t性别\t地址\t\t电话\t\t爱好\n")

printf ("-------------------------------------------------------------------------------\n")

display (p1)

}

else

printf ("没有该学生记录,请核对!")

}

//写入文件

void writeData ()

{

FILE* fp//文件指针

struct student *p

fp = fopen("1.txt", "w")

if (!fp)

{

printf("文件打开错误!")

return

}

fprintf(fp,"%d\n", TOTAL_NUM)

for(p = headp!= NULLp= p->next)

{

fprintf(fp,"%s\t%ld\t%s\t%d\t%s\t%.0f\t%s\n", p->name, p->num, p->sex, p->age, p->address, p->tele_num, p->aihao)

}

fclose (fp)

}

void freeAll ()

{

struct student *p1, *p2

p1 = p2=head

while(p1)

{

p2=p1->next

free (p1)

p1 = p2

}

}

//读取文件

void readData ()

{

FILE* fp//文件指针

struct student *p1, *p2

fp = fopen("1.txt", "r")

if (!fp)

{

printf("文件打开错误!")

return

}

fscanf(fp,"%d\n", &TOTAL_NUM)

head = p1 = p2 = (struct student *)malloc(LEN)

fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n", p1->name, &p1->num, p1->sex, &p1->age, p1->address, &p1->tele_num, p1->aihao)

while(!feof(fp))

{

p1 = (struct student *)malloc(LEN)

fscanf(fp,"%s\t%ld\t%s\t%d\t%s\t%lf\t%s\n", p1->name, &p1->num, p1->sex, &p1->age, p1->address, &p1->tele_num, p1->aihao)

p2->next = p1

p2 = p1

}

p2->next = NULL

fclose(fp)

}

//删除学生信息

void del ()

{

struct student *p1, *p2

long int num

if (head == NULL)

{

printf("无学生记录!\n")

return

}

printf("请输入您要删除的学生的学号:")

scanf("%ld", &num)

p1 = head

while (num != p1->num &&p1->next != NULL)

{

p2 = p1

p1 = p1->next

}

if(num == p1->num)

{

if(p1 == head)

head = p1->next

else p2->next = p1->next

free(p1)

TOTAL_NUM--

}

else

printf("没有该学生记录,请核对!\n")

}

//修改学生信息

void change ()

{

struct student *p1, *p2

long int num

if (head == NULL)

{

printf ("无学生记录!\n")

return

}

printf ("请输入您要修改的学生的学号:")

scanf ("%ld", &num)

p1 = head

while (num != p1->num &&p1->next != NULL)

{

p2 = p1

p1 = p1->next

}

if(num == p1->num)

devise (p1)

else

printf("没有该学生记录,请核对!\n")

}

void devise (struct student *p)

{

int choice

choice = -1

do

{

printf("请选择您要修改的学生的信息内容:\n")

printf("+----------------------+\n")

printf("| 姓名 请按 1 |\n")

printf("| 学号 请按 2 |\n")

printf("| 性别 请按 3 |\n")

printf("| 年龄 请按 4 |\n")

printf("| 地址 请按 5 |\n")

printf("| 电话 请按 6 |\n")

printf("| 爱好 请按 7 |\n")

printf("| 取消 请按 0 |\n")

printf("+----------------------+\n")

printf("请输入您的选择:")

scanf("%d", &choice)

switch (choice)

{

case 0:

return

case 1:

printf("请输入新姓名:")

scanf("%s", p->name)

break

case 2:

printf("请输入新学号:")

scanf("%d", &p->num)

break

case 3:

printf("请输入新性别:")

scanf("%s", p->sex)

break

case 4:

printf("请输入新年龄:")

scanf("%s", &p->age)

break

case 5:

printf("请输入新地址:")

scanf("%s", p->address)

break

case 6:

printf("请输入新电话:")

scanf("%lf", &p->tele_num)

break

case 7:

printf("请输入新爱好:")

scanf("%s", p->aihao)

break

default:

printf("\n无效选项!")

break

}

}

while(choice != 0)

}

你说的叫学籍管理系统也可。我把我的课设结果发给你,一共参考。绝对没问题。比你的全面,你只须稍加修正。

学籍管理系统

学籍信息,包括学院、班级、学号、姓名、专业、性别、出生日期,家庭地址,电话号码等。要求该系统具有浏览,增加,删除,查询,插入等功能。程序的主要实现可以用链表来实现。类设计完成后,输入足够的测试数据进行测试,将必要的测试及过程输入到文件中。菜单可以根据设计功能要求自由设计。

#include<iostream.h>

#include<fstream.h>

#include<string.h>

#include<stdlib.h>

#include"Student.h"

#include"StuList.h"

class StuList//带表头节点的链表类

class Student //链表节点类

{

friend StuList

private://每个结点的具体信息

char school[12]//学院

char major[12]//专业

char class1[12]//班级

long number //学号

char name[9] //姓名

char sex[7] //性别

char birth[12]//出生年月

long phone //电话号码

char add[20] //家庭地址

Student *next

public:

Student(char* scl=NULL,char* mal=NULL,char* cal=NULL,long No=0,char* nal=NULL,char *sal=NULL,char *bil=NULL,char *adl=NULL,long phl=0)//构造函数定义,初始化各个参数

}

class StuList //带表头节点的链表类

{

private:

Student *head,*current//定义指针

public://以下是成员函数

StuList()

~StuList()

void makeEmpty()

void add(char* scl,char* cal,char* mal,long No,char* nal,char *sal,char *bil,char *adll,long phl)

void insert(char* scl,char* cal,char* mal,long No,char* nal,char *sal,char *bil,char *adl,long phl)

void delet(long No,char* nal)

void searchStu1(char* nal)

void searchStu2(long no)

void chazhao()

void print()

void save()

}

Student::Student(char* scl,char* mal,char* cal,long No,char* nal,char *sal,char *bil,char *adl,long phl)

// Student类的构造函数定义,初始化各个参数

{

……/

}

StuList::StuList()//StuList类的构造函数

{

……

}

StuList::~StuList()//StuList类的析构函数

{

……

}

void StuList::makeEmpty() //清空链表

{……}

void StuList::searchStu1(char* nal) //按姓名查找链表中的节点,打印信息

{

int a=0

current=head->next

do

{

if(strcmp(current->name,nal)==0)//strcmp为比较字符串

{

cout<<"查到姓名为"<<current->name<<"的学生的信息:\n"

cout<<"--------------------------------------------------------------------\n"

cout<<"学院\t专业\t班级\t学号\t姓名\t性别\t生日\t住址\t电话\n"

cout<<"--------------------------------------------------------------------\n"

cout<<current->school<<"\t"<<current->major<<"\t"<<current->class1<<"\t"<<current->number<<"\t"

cout<<current->name<<"\t"<<current->sex<<"\t"<<current->birth<<"\t"<<current->add<<"\t"<<current->phone<<endl

a++

}

current=current->next

}while(current!=NULL)

if(a==0) cout<<"没找到!"<<endl

else cout<<"\n共"<<a<<"条记录!\n"

}

void StuList::searchStu2(long no) //按学号查找链表中的节点,打印信息

{

int b=0

current=head->next

do

{

if(current->number==no)

{

cout<<"查到学号为"<<current->number<<"的学生的信息:\n"

cout<<"--------------------------------------------------------------------\n"

cout<<"学院\t专业\t班级\t学号\t姓名\t性别\t生日\t住址\t电话\n"

cout<<"--------------------------------------------------------------------\n"

cout<<current->school<<"\t"<<current->major<<"\t"<<current->class1<<"\t"<<current->number<<"\t"

cout<<current->name<<"\t"<<current->sex<<"\t"<<current->birth<<"\t"<<current->add<<"\t"<<current->phone<<endl

b++

}

current=current->next

}while(current!=NULL)

if(b==0) cout<<"没找到!"<<endl

else cout<<"\n共"<<b<<"条记录!\n"

}

void StuList::print() //输出链表

{

……

}

void StuList::chazhao()//查找函数

{

if(head->next==NULL)//链表为空

{

cout<<"链表为空!"<<endl

return

}

int k

do

{

cout<<"\n\n\t\t-*-*-*-*-*-*查找功能子菜单-*-*-*-*-*-*\n"

cout<<"\t\t** **\n"

cout<<"\t\t**1、按照姓名查找 **\n"

cout<<"\t\t**2、按照学号查找 **\n"

cout<<"\t\t**3、退出查找 **\n"

cout<<"\t\t** **\n"

cout<<"\t\t-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n\n"

cout<<"请选择:"

cin>>k

char sear[16]

long no

switch(k)

{

case 1:

cout<<"姓名:"cin>>sear

StuList::searchStu1(sear)//调用按姓名查找函数

break

case 2:

cout<<"学号:"cin>>no

StuList::searchStu2(no)//调用按姓名查找函数

break

case 3:

char t

cout<<"退出查找?(y/n):"cin>>t

if(t!='y') k=4

else k=0

break

}

}while(k!=0)

}

void StuList::save()//文件保存

{

Student* p

p=head->next

fstream out

out.open("F:\\maqiong\\学籍管理系统.txt",ios::app)

out<<"********************************************************************\n"

out<<"学院\t专业\t班级\t学号\t姓名\t性别\t生日\t住址\t电话\n"

out<<"--------------------------------------------------------------------\n"

do

{ out<<p->school<<"\t"<<p->major<<"\t"<<p->class1<<"\t"<<p->number<<"\t"<<p->name<<"\t"<<p->sex<<"\t"<<p->birth<<"\t"<<p->add<<"\t"<<p->phone<<endl

p=p->next

}while(p!=NULL)

out.close()

}

void menu()//菜单函数

{

cout<<endl<<"\t"<<"*-*-*-*-*-*-*-*-*-*-菜单*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl

cout<<"\t"<<"** **"<<endl

cout<<"\t"<<"** 1.加入学生资料 2.插入一个学生**"<<endl

cout<<"\t"<<"** 3.移除一个学生 4.显示该表**"<<endl

cout<<"\t"<<"** 5.查找学生资料 6.清空该表**"<<endl

cout<<"\t"<<"** 7.显示菜单 0.退出程序**"<<endl

cout<<"\t"<<"** **"<<endl

cout<<"\t"<<"*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl<<endl

}

void main()

{

char cmd

StuList* list=NULL

list=new StuList

menu()

do

{

cout<<endl<<"请选择要进行的 *** 作序号(7-显示菜单):"//输入命令

cin>>cmd

if(list==NULL) //检查输入的命令是否合适

while(cmd!='1'&&cmd!='8'&&cmd!='0')

{cout<<"还没有建立链表,请先建立链表:"cin>>cmd}

switch(cmd) //匹配命令

{

case('1'): //加入学生信息到链表后

char insschool2[12],insclass12[12],insmajor2[12],insname2[12],inssex2[7],insbirth2[12],insadd2[12]

int insnumber2,insphone2

cout<<"请输入学生信息"<<'\n'

cout<<"学院:"cin>>insschool2

……

……

list->add(insschool2,insmajor2,insclass12,insnumber2,insname2,inssex2,insbirth2,insadd2,insphone2)

list->save()

break

case('2'): //按学号插入一个学生

char insschool3[12],insmajor3[12],insclass13[12],insname3[12],inssex3[7],insbirth3[12],insadd3[12]

int insnumber3,insphone3

cout<<"学院:"cin>>insschool3

……

……

list->insert(insschool3,insmajor3,insclass13,insnumber3,insname3,inssex3,insbirth3,insadd3,insphone3)

list->save()

break

case('3'): //删除一个学生信息

char tem

cout<<"删除一个学生?(y/n)"cin>>tem

if(tem=='y')

{

int remchar insname4[12]

cout<<"学号:"cin>>rem

cout<<"姓名:"cin>>insname4

list->delet(rem,insname4)

list->print()

list->save()

break

}else break

case('4'): //显示所有学生

list->print()break

case('5'): //查找学生信息

list->chazhao()break

case('6'): //清空链表

char tin

cout<<"删除链表退出?(y/n):"cin>>tin

if(tin=='y')

{

list->makeEmpty()

cout<<"链表为空"<<endl

break

}

else break

case('7'): //显示菜单

menu()

break

case('0'): //退出

if(list==NULL) break

char temp

cout<<"删除链表并退出?(y/n):"cin>>temp

if(temp=='y'){list->~StuList()list=NULL}

else cmd=10break

default:

cout<<"请输入菜单中的命令!"<<endl

}

}while(cmd!='0')

}

程序开发无非遵循几个步骤:

1.需求分析:通过对市场、客户调查得出需要实现的功能,你这里就自己考虑或和朋友交流得出要实现的功能,给出点个人想法:既然是学籍信息管理必然有录入、查询、显示、修改等基本功能,然后就是统计、密码、管理员和游客权限划分之类的功能,然后延伸出来的就是管理员设置、游客设置等功能。

2.结构设计:通过对功能的把握,设计程序的基本结构,我的理解:首先登陆系统肯定是一个无限循环,提供菜单对应各个功能,用户可以进入每个小功能菜单,各个小功能菜单需提供真实 *** 作和一个返回上一层 *** 作等等。

3.功能、结构都明确了就可以开始写代码了,不在详述。。。。。。。


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

原文地址:https://54852.com/yw/11078077.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存