当前位置:首页 > 代码 > 正文

xml学生信息管理系统源代码(基于xml学生成绩管理系统)

admin 发布:2022-12-19 06:35 96


本篇文章给大家谈谈xml学生信息管理系统源代码,以及基于xml学生成绩管理系统对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

学生基本信息管理系统C++源代码

#include iostream

#include iomanip

#include string

using namespace std;

typedef struct student {

unsigned m_id;

string m_name;

unsigned m_age;

string m_sex;

string m_address;

string m_contact;

string m_dormitory;

struct student *m_next;

}student;

class CStudent {

private :

student *head;

public :

CStudent() {

head = new student;

head-m_id = 0;

head-m_name = "noname";

head-m_next = NULL;

}

~CStudent() {

student *p = head,*q;

while(p) {

q = p;

p = q-m_next;

delete q;

}

}

student readdata(int model); // model = 1:不读取学号,2:不读取姓名,其他,读取所有信息

void entering();

bool insert(const student astu);

student *findid(unsigned id) const;

student *findname(const string name) const;

student *findsex(const string sex) const;

student *finddormitory(const string dormitory) const;

unsigned boys() const;

unsigned girls() const;

unsigned headcount() const;

bool eraseid();

bool erasename();

bool modifyid();

bool modifyname();

void Show() const;

void query() const;

void friend statistics(const CStudent aclss);

void friend erase(CStudent aclss);

void friend modify(CStudent aclss);

};

string readstring() {

string str;

while(cin.get() != '\n');

cin  str;

return str;

}

student CStudent::readdata(int model) {

student tmp;

if(model != 1) { cout  "学    号: "; cin  tmp.m_id; }

if(model != 2) { cout  "姓    名: "; tmp.m_name = readstring(); }

cin  tmp.m_age;

cout  "性    别: ";

tmp.m_sex = readstring();

cout  "住    址: ";

tmp.m_address = readstring();

cout  "联系方式: ";

tmp.m_contact  =readstring();

cout  "寝    室: ";

tmp.m_dormitory = readstring();

return tmp;

}

void CStudent::entering() {

student tmp;

cout  "学号(0 to return): ";

cin  tmp.m_id;

while(tmp.m_id) {

if(findid(tmp.m_id) == NULL) {

cout  "姓    名: ";

tmp.m_name = readstring();

cout  "年    龄: ";

cin  tmp.m_age;

cout  "性    别: ";

tmp.m_sex = readstring();

cout  "住    址: ";

tmp.m_address = readstring();

cout  "联系方式: ";

tmp.m_contact = readstring();

cout  "寝    室: ";

tmp.m_dormitory = readstring();

insert(tmp);

}

else cout  "重复的学号:"  tmp.m_id  endl;

cout  "学号(0 to return): ";

cin  tmp.m_id;

}

}

student *CStudent::findid(unsigned id) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_id == id) return p;

return NULL;

}

student *CStudent::findname(const string name) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_name == name) return p;

return NULL;

}

student *CStudent::findsex(const string sex) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_sex == sex) return p;

return NULL;

}

student *CStudent::finddormitory(const string dormitory) const {

student *p;

for(p = head; p-m_next; p = p-m_next)

if(p-m_next-m_dormitory == dormitory) return p;

return NULL;

}

bool CStudent::insert(const student astu) {

student *newnode,*p = head;

if(p-m_next == NULL) {

p-m_next = new student(astu);

p-m_next-m_next = NULL;

return true;

}

while(p-m_next) {

if(p-m_next-m_id == astu.m_id) {

cout  "重复的学号,插入失败!\n";

return false;

}

if(p-m_next-m_id  astu.m_id) {

newnode = new student(astu);

newnode-m_next = p-m_next;

p-m_next = newnode;

return true;

}

p = p-m_next;

}

p-m_next = new student(astu);

p-m_next-m_next = NULL;

return true;

}

unsigned  CStudent::boys() const {

unsigned cnt = 0;

student *p;

for(p = head-m_next; p; p = p-m_next)

if(p-m_sex == "男") ++cnt;

return cnt;

}

unsigned CStudent::girls() const {

unsigned cnt = 0;

student *p;

for(p = head-m_next; p; p = p-m_next)

if(p-m_sex == "女") ++cnt;

return cnt;

}

unsigned CStudent::headcount() const {

unsigned cnt = 0;

student *p;

for(p = head-m_next; p; p = p-m_next,++cnt);

return cnt;

}

bool CStudent::eraseid() {

student *q,*p;

unsigned id;

cout  "输入要删除的学号:";

cin  id;

p = findid(id);

if(p == NULL) {

cout  "没有找到学号是\""  id  "\"的学生,删除失败!\n";

return false;

}

q = p-m_next;

p-m_next = q-m_next;

delete q;

return true;

}

bool CStudent::erasename() {

student *q,*p;

string name;

cout  "输入要删除人的姓名:";

name = readstring();

p = findname(name);

if(p == NULL) {

cout  "没有找到姓名是\""  name  "\"的学生,删除失败!\n";

return false;

}

q = p-m_next;

p-m_next = q-m_next;

delete q;

return true;

}

bool CStudent::modifyid() {

student tmp,*p;

unsigned id;

cout  "输入要修改的学号:";

cin  id;

p = findid(id);

if(p == NULL) {

cout  "没有找到学号是\""  id  "\"的学生,修改失败!\n";

return false;

}

tmp = readdata(1);

tmp.m_id = id;

*p = tmp;

return true;

}

bool CStudent::modifyname() {

student *p,tmp;

string name;

cout  "输入要修改人的姓名:";

name = readstring();

p = findname(name);

if(p == NULL) {

cout  "没有找到姓名是\""  name  "\"的学生,修改失败!\n";

return false;

}

tmp = readdata(2);

tmp.m_name = name;

*p = tmp;

return true;

}

int menu() {

int choice;

do {

system("cls");

cout  "\t****************************\n";

cout  "\t*   学生基本信息管理系统   *\n";

cout  "\t*==========================*\n";

cout  "\t*    1、录入学生信息       *\n";

cout  "\t*    2、显示学生信息       *\n";

cout  "\t*    3、查询学生信息       *\n";

cout  "\t*    4、添加学生信息       *\n";

cout  "\t*    5、统计学生信息       *\n";

cout  "\t*    6、删除学生信息       *\n";

cout  "\t*    7、修改学生信息       *\n";

cout  "\t*    0、退出管理系统       *\n";

cout  "\t****************************\n";

cout  "\n\t请选择:";

cin  choice;

}while(choice  0 || choice  7);

return choice;

}

void show(student *p) {

cout  p-m_id  " "  p-m_name  " "  p-m_age  " ";

cout  p-m_sex  " "  p-m_address  " ";

cout  p-m_contact  " "  p-m_dormitory  endl;

}

void CStudent::Show() const {

student *p;

cout  "----------------------------------------------------------\n";

for(p = head-m_next; p; p = p-m_next) show(p);

cout  "----------------------------------------------------------\n";

system("pause");

}

void CStudent::query() const {

int select;

unsigned id;

string name;

student *p;

cout  "1、按学号查询\n2、按姓名查询\n0、返回\n";

cin  select;

switch(select) {

case 1 : cout  "请输入学号:"; cin  id;

if(p = findid(id)) show(p-m_next);

break;

case 2 : cout  "请输入姓名:"; name = readstring();

if(p = findname(name)) show(p-m_next);

break;

case 0 : return;

default : cout  "选择错误。\n";

}

system("pause");

}

void statistics(const CStudent a) {

unsigned total = a.headcount();

unsigned boys = a.boys();

unsigned girls = a.girls();

cout  "学生总数:"  total  "人。\n";

cout  "其中,男生:"  boys  "名。";

cout  "女生:"  girls  "名。\n";

system("pause");

}

void erase(CStudent a) {

int select;

unsigned id;

string name;

student *p,*q;

cout  "1、按学号删除\n2、按姓名删除\n0、返回\n";

cin  select;

switch(select) {

case 1 : cout  "请输入学号:"; cin  id;

if(p = a.findid(id)) {

q = p-m_next;

p-m_next = q-m_next;

delete q;

cout  "成功删除 "  id  " 的信息。\n";

}

break;

case 2 : cout  "请输入姓名:"; name = readstring();

if(p = a.findname(name)) {

q = p-m_next;

p-m_next = q-m_next;

delete q;

cout  "成功删除 "  name  " 的信息。\n";

}

break;

case 0 : return;

default : cout  "选择错误。\n";

}

system("pause");

}

void modify(CStudent a) {

int select;

cout  "1、按学号修改\n2、按姓名修改\n0、返回\n";

cin  select;

switch(select) {

case 1 : if(a.modifyid()) cout  "修改成功。\n"; break;

case 2 : if(a.modifyname()) cout  "修改成功。\n"; break;

case 0 : return;

default : cout  "选择错误。\n";

}

system("pause");

}

int main() {

CStudent a;

int an;

do {

an = menu();

switch(an) {

case 1 : a.entering(); break;

case 2 : a.Show(); break;

case 3 : a.query(); break;

case 4 : a.entering(); break;

case 5 : statistics(a); break;

case 6 : erase(a); break;

case 7 : modify(a); break;

case 0 : break;

default : cout  "选择错误。\n"; break;

}

}while(an);

return 0;

}

c语言学生管理系统源代码

头文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include "stdio.h"

#include "string.h"

#include "malloc.h"

#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/

#define numsubs 5 /*学科数目*/

typedef struct message_student /*结构体定义*/

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

extern int numstus; /*学生数目*/

extern student *pointer; /*指向结构体数组*/

extern int lens;

int menu_select(); /*函数声明*/

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

void deleterecord(student stu[],int i);

void addrecord(student stud[]);

void display(student stud[],int n1,int n2);

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include "head.h"

int menu_select()

{

char c;

printf("\n\n");

printf(" | 1. 增加学生记录 5.统计信息 |\n");

printf(" | 2. 查询学生记录 6.打开文件 |\n");

printf(" | 3. 修改学生记录 7.保存文件 |\n");

printf(" | 4. 学生纪录排序 8.显示记录 |\n");

printf(" | 0.退出系统 |\n");

printf("\n\n");

printf("请选择(0-8):");

c=getchar();

getchar();

return (c-'0');

}

#include "head.h"

int findrecord(student stud[]) /*查找信息*/

{

char str[2];

int i,num;

if(numstus==0)

{

printf("没有可被查找的记录\n");

return -1;

}

else

{

printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");

gets(str);

if(str[0]=='1') /*按学号查找*/

{

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

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].number)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='2') /*按姓名查找*/

{

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

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].name)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='3') /*按名次查找*/

{

printf("请输入名次:");

scanf("%d",num);

getchar();

for(i=0;i=numstus;i++)

if(num==stud[i].index)

{

display(stud,i,i);

break;

}

else continue;

}

if(inumstus)

{

printf("没有查找所要的信息。\n");

return -1;

}

return i;

}

}

#include"head.h"

int openfile(student stu[])

{

int i=0,j;

FILE *fp;

char filename[20],str[2];

if(numstus!=0)

{

printf("已经有记录存在,是否保存?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(stu);

}

printf("请输入文件名:");

gets(filename);

numstus=0;

if((fp=fopen(filename,"rb+"))==NULL)

{

printf("无法打开该文件\n");

return(-1);

}

fscanf(fp,"%d",numstus);

fgetc(fp);

while(inumstus)

{

fscanf(fp,"%s",stu[i].number);

fscanf(fp,"%s",stu[i].name);

fscanf(fp,"%s",stu[i].sex);

for(j=0;jnumsubs;j++)

fscanf(fp,"%f",stu[i].subject[j]);

fscanf(fp,"%f",stu[i].score);

fscanf(fp,"%f",stu[i].average);

fscanf(fp,"%d",stu[i].index);

i++;

}

fclose(fp);

printf("文件读取成功\n");

printf("是否显示纪录?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

display(stu,0,numstus-1);

return(0);

}

#include "head.h"

void sort(student stud[])

{

int i,j=0;

char str[5];

student *p;

p=stud;

if(numstus==0)

{

printf("没有可供查询的记录!");

}

while(1)

{

for(i=0;;i++)

{

printf(" 请输入查询方式:");

printf("(直接输入回车则结束查询操作)\n");

printf("1.按照学号\t");

printf("2.按照姓名\t");

printf("3.按照名次\n");

gets(str);

if(strlen(str)==0) break;

if(str[0]=='1')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

else if(str[0]=='2')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

else if(str[0]=='3')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

else printf("请输入1~3");

printf("是否退出排序?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') break;

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].number,stud[j].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].number,stud[j+1].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].name,stud[j].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].name,stud[j+1].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j+1].indexstud[j].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j].indexstud[j+1].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

#include"head.h"

void statistic(student stud[]) /*新增功能,输出统计信息*/

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

printf("没有可被查找的记录\n");

else

{

while(1)

{

printf("下面将统计考试成绩\n");

printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");

c1=getchar();

printf("\t一共有个%d记录\n",numstus); /*总共记录数*/

switch(c1)

{

case '1':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[0];

if(stud[k].subject[0]stud[i].subject[0]) k=i;

if(stud[j].subject[0]stud[i].subject[0]) j=i;

}

average[0]=sum/numstus;

printf("\t科目A的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);

printf("\t科目A的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);

printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/

break;

case '2':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[1];

if(stud[k].subject[1]stud[i].subject[1]) k=i;

if(stud[j].subject[1]stud[i].subject[1]) j=i;

}

average[1]=sum/numstus;

printf("\t科目B的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);

printf("\t科目B的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);

printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/

break;

case '3':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[2];

if(stud[k].subject[2]stud[i].subject[2]) k=i;

if(stud[j].subject[2]stud[i].subject[2]) j=i;

}

average[2]=sum/numstus;

printf("\t科目C的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);

printf("\t科目C的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);

printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/

break;

case '4':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[3];

if(stud[k].subject[3]stud[i].subject[3]) k=i;

if(stud[j].subject[3]stud[i].subject[3]) j=i;

}

average[3]=sum/numstus;

printf("\t科目D的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);

printf("\t科目D的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);

printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/

break;

case '5':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[4];

if(stud[k].subject[4]stud[i].subject[4]) k=i;

if(stud[j].subject[4]stud[i].subject[4]) j=i;

}

average[4]=sum/numstus;

printf("\t科目E的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);

printf("\t科目E的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);

printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/

break;

default:printf("输入错误!请输入1~5之间的数\n");

}

sum=0;

getchar();

printf("是否继续进行统计?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') ;

else break;

}

}

}

#include"head.h"

int writetotext(student stud[]) /*将所有记录写入文件*/

{

int i=0,j;

FILE *fp;

char filename[20];

printf("输入文件名称:");

gets(filename);

fp=fopen(filename,"w");

fprintf(fp,"%d\n",numstus);

while(inumstus)

{

fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);

for(j=0;jnumsubs;j++)

fprintf(fp,"%f ",stud[i].subject[j]);

fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index);

i++;

}

fclose(fp);

printf("已成功存储!\n");

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include"head.h"

void welcome()

{

printf("\t*************************************************************\n");

printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");

printf("\t*************************************************************\n");

}

void showtable()

{

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

printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");

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

}

void display(student stud[],int n1,int n2)

{

int i;

showtable(); /*显示表头*/

for(i=n1;i=n2;i++)

printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index);

/*通过循环输出数据*/

}

void display1()

{

printf("\t\t本系统由计应精英一组亲情制作\n\n");

printf("\t\t制作人员列表: (按比划)\n");

printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");

printf("\n\n");

getchar();

}

#include"head.h"

#includestring.h

void amendrecord(student stud[])

{

char str[5]; /*供用户输入*/

int i=-1,j;

if(numstus==0) /*没有记录返回*/

printf("没有可供修改的记录!");

while(i0)

{

i=findrecord(stud);

if(i=0)

{

printf("要删除这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

deleterecord(stud,i);

count(stud);

}

else

{

printf("确定要修改这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

printf("下面请重新输入学生的信息:\n");

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

gets(stud[i].number);

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

gets(stud[i].name);

printf("请输入性别(男/女 1/0):");

gets(str);

if(str[0]=='0')

strcpy(stud[i].sex,"女");

else

strcpy(stud[i].sex,"男");

stud[i].score=0;

printf("请按顺序输入成绩:");

for(j=0;jnumsubs;j++)

{

scanf("%f",stud[i].subject[j]);

stud[i].score+=stud[i].subject[j];

}

getchar();

stud[i].average=stud[i].score/numsubs;

}

count(stud);

}

display(stud,0,numstus-1);

}

printf("是否继续进行其他修改?(y/n)\n");

gets(str);

if(str[0]=='y'||str[0]=='Y')

i=-1;

else i=1;

}

}

void deleterecord(student stu[],int i) /*删除信息*/

{

int j;

while(i=0)

{

for(j=i;jnumstus;j++)

stu[j]=stu[j+1];

numstus--;

printf("删除成功!\n");

}

}

void count(student stud[])

{

int i,j;

for(i=0;inumstus;i++)

{

stud[i].index=1;

for(j=0;jnumstus;j++)

if(stud[j].scorestud[i].score)

stud[i].index++;

}

}

#include "head.h"

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

printf("已有记录存在是否覆盖?(y/n)\n");

gets(str);

if(str[0]=='Y'||str[0]=='y')

i=0;

else i=numstus;

}

printf("请输入增加的学生信息条目数:");

scanf("%d",num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstuslens)

{

lens+=50;

pointer=(student *)realloc(pointer,lens*LEN);

}

printf("请输入学生信息:\n");

for(;inumstus;i++)

{

getchar();

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

gets(pointer[i].number);

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

gets(pointer[i].name);

printf("请输入性别(男/女 1/0):");

gets(pointer[i].sex);

if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");

else strcpy(pointer[i].sex,"男");

printf("请输入各科成绩:(按ABCDE的顺序):");

stud[i].score=0;

for(j=0;jnumsubs;j++)

{

scanf("%f",stud[i].subject[j]); /*计算总分*/

stud[i].score+=stud[i].subject[j];

}

stud[i].average=stud[i].score/numsubs; /*计算平均分*/

}

count(stud); /*附名次*/

display(stud,0,numstus-1);

getchar();

}#include "head.h"

int numstus;

int lens;

student *pointer;

void main()

{

int i=1;

char str[2];

lens=100;

pointer=(student *)malloc(lens*LEN); /*分配内存*/

numstus=0;

welcome(); /*欢迎界面*/

while(i0)

{

i=menu_select(); /*控制菜单*/

switch(i)

{

case 1:addrecord(pointer);break; /*增加学生信息*/

case 2:findrecord(pointer);break; /*查询学生信息*/

case 3:amendrecord(pointer);break; /*修改学生信息*/

case 4:sort(pointer);break; /*学生信息排序*/

case 5:statistic(pointer);break; /*统计信息*/

case 6:openfile(pointer);break; /*打开文件*/

case 7:writetotext(pointer);break; /*保存文件*/

case 8:display(pointer,0,numstus-1);break; /*显示记录*/

case 0:

if(numstus!=0) printf("是否保存当前记录?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(pointer);

i=-1;break; /*退出系统*/

default:printf("请输入数字0~8:\n");i=1; /*输入错误*/

}

}

printf("\t\t欢迎再次使用本系统。\n\n");

display1();

}

自己一改就能用,给我加分哈!

打字不易,如满意,望采纳。

学生管理系统c语言源代码帮我看看这程序出问题了?

调了一下,没啥大问题啊?

struct stu_type {

char num[15];

char name[10];

int age;

int xibie;

xibie定义为int,scanf和printf里用的是%s,改成%d就不报错了。

另外case 2: display((char*)""); break; 这一行原来的过不了,强制转换一下过了

c语言学生信息管理系统代码

代码如下:

#includestdio.h

#includemalloc.h

#includestdlib.h

#includestring.h

#includeconio.h

typedef struct examinee //考生信息结构

{   char examno[20]; //准考证号

char name[10]; //姓名

char sex[4]; //性别

short age; //年龄

char examtype[10]; //报考科目

}ElemType;

typedef struct Node //定义链表结点

{

ElemType data; //数据域

struct Node *next; //指针域

}Node,*List,*position;

List make_empty( List L ); //创建一个带头结点的空表

int is_empty( List L ); //测试链表是否是空表

int is_last( position p, List L ); //测试当前位置是否是表尾

position make_node( position p,int n ); //创建结点并输入考生信息

void put_information( position p ); //是否输出该考生信息

void put_name_information( List L ); //输出姓名为xx的考生信息

int put_pos_information( position p ); //输出该地址考生信息

void link_to_tail( List L, position p ); //将结点连接到表尾

int ciculation_make(); //循环创建考生信息

int judge_put_all(); //是否输出所有考生信息

void put_all(List L); //输出所有考生信息。

position find( List L ); //查找第一个姓名为xx的元素并返回位置

position find_previous( List L ); //查找第一个姓名为xx的元素并返回该元素直接前驱的位置

//int judge_delete_val(); //询问是否删除考生数据

int delete_val( List L ); //删除指定考生信息并输出其信息

void menu(List L); //菜单函数

List L;

//position p;

int

main( void ) 

{

List L = NULL; //定义头结点指针

position p = NULL; //定义表工作指针

L = make_empty( L ); //创建空表

printf("\t\t\t★★考生报名管理程序★★\n\t\t----------------------------------------\n");

menu(L);

return 0;

}

//创建一个带头结点的空表

List

make_empty( List L)

{

L = ( List ) malloc (sizeof( Node ));

if(NULL == L)

{

printf("内存分配失败");

exit( 1 );

}

L-next = NULL;

//printf("空表创建成功。\n");

return L;

}

//创建结点并输入考生信息

position

make_node( position p ,int n)

{

if(n) //n为1是创建结点并输入,n为0是修改

{

p = ( position ) malloc ( sizeof ( Node ));

p-next = NULL ;

}

printf("请输入考生准考证号:");

gets(p-data.examno);

printf("请输入考生姓名:");

gets(p-data.name);

do

{

printf("请输入考生性别,只能输入“男”或者“女”:");

gets(p-data.sex);

}

while( 0 != strcmp( p-data.sex, "男" ) 0 != strcmp( p-data.sex, "女" )); //判断性别是否有误

printf("请输入考生年龄:");

scanf("%hd",p-data.age);

getchar();  //如果把这句删掉,就“无法执行”下面的报考类别

/*下面的do while用来判断报考类别是否输入有误*/

do

{

printf("请输入报考类别,只能输入“数学”或“英语”或者“数据结构”:");

gets(p-data.examtype);

}

while( 0 != strcmp( "英语", p-data.examtype ) 0 != strcmp( "数学", p-data.examtype ) 0 != strcmp( "数据结构", p-data.examtype ));

if(n)

{

printf("报名成功\n");

}

else

{

printf("修改成功\n");

}

return p;

}

//前插法;

void

link_to_tail( List L, position p)

{

p-next = L-next;

L-next = p;

}

//查找第一个姓名为xx的元素并返回位置

position

find( List L )

{

position p = L-next;

char name[10];

printf("请输入你要查找的考生姓名:");

gets(name);

while( p != NULL 0 != strcmp( p-data.name , name))

{

p=p-next;

}

return p;

}

//测试链表是否是空表

int

is_empty( List L )

{

return L-next == NULL;

}

//测试当前位置是否是表尾

int

is_last( position p, List L )

{

return p-next == NULL;

}

//输出姓名为xx的考生信息

void

put_name_information( List L )

{

position p = find(L);

if(p!=NULL)

{

printf("您要查找的考生信息:\n");

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

}

else

{

printf("没有您要找的学生。\n");

}

}

//循环创建考生信息

int

ciculation_make()

{

int n = 2;

do

{

printf("是否继续创建考生信息?是请输入“1”,不是请输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//是否输出考生信息

void

put_information( position p )

{

int n=2;

do

{

printf("是否输出该考生信息?是请输入“1”,不是请输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

if(n)

{

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

}

}

//是否输出所有考生信息

int

judge_put_all()

{

int n = 2;

do

{

printf("是否输出所有考生信息?是请输入“1”,不是请输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//输出所有考生信息

void

put_all(List L)

{

if(L-next == NULL)

{

printf("现无考生报名!\n");

}

else

{

position p=L-next;

while( p != NULL )

{

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

p=p-next;

}

}

//getchar();

}

//询问是否删除考生数据

int

judge_delete_val()

{

int n = 2;

do

{

printf("是否要删除某个考生数据?是请输入“1”,不是输入“0”:");

scanf("%d",n);

getchar();

}

while( n != 0 n != 1);

return n;

}

//查找第一个姓名为xx的元素并返回其直接前驱的位置

position

find_previous( List L )

{

position q = L;

position p = L-next;

char name[10];

printf("请输入你要查找的考生姓名:");

gets(name);

while( p != NULL 0 != strcmp( p-data.name , name))

{

q=p;

p=p-next;

}

if( p != NULL )

{

return q;

}

else

return p;

}

//删除指定考生信息并输出其信息

int

delete_val(List L)

{

int n=2;

position q=NULL;

position p=find_previous( L ); //返回考生信息地址

if( NULL == p )

{

printf("你要删除的考生不存在\n");

return 0;

}

else

{

q = p-next;

p-next = q-next;

printf("删除成功。\n删除的考生信息为:\n");

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n",q-data.examno,q-data.name,q-data.sex,q-data.age,q-data.examtype);

free(q);

return 1;

}

}

//输出该地址考试信息

int

put_pos_information( position p )

{

if(p != NULL )

{

printf("准考证号:%s\t姓名:%s\t性别:%s\t年龄:%hd\t报考科目:%s\n\n",p-data.examno,p-data.name,p-data.sex,p-data.age,p-data.examtype);

return 1;

}

else

{

printf("没有您要查找的学生。");

return 0;

}

}

//菜单函数

void

menu(List L)

{

printf("\t\t\t   a. 考生报名入口\n");

printf("\t\t\t   b. 查询考生信息\n");

printf("\t\t\t   c. 修改考生信息\n");

printf("\t\t\t   d. 删除考生信息\n");

printf("\t\t\t   e. 全部考生信息\n");

printf("\t\t\t   f. 程序作者信息\n");

printf("\t\t\t   g.   退出程序\n");

char n='h';

while(n != 'g')

{

do  //确定正确输入

{

printf("请通过字母序号选择功能:");

n = getchar();

getchar();

putchar('\n');

if( n 'a' || n 'g')

{

printf("错误的字母序号。\n");

}

}

while( n 'a' || n 'g' );

switch (n)

{

case 'a':

{

printf("请输入报名考生信息:\n");

position p = make_node( p, 1 ); //创建新结点

link_to_tail( L, p ); //将新结点连接到表上

put_information( p );   //是否输出该考生信息

putchar('\n');

}

break;

case 'b':

{

put_name_information( L );

putchar('\n');

}

break;

case 'c':

{

int n=0;

position p = NULL;

printf("您正在进行修改操作。\n");

p = find(L);

n = put_pos_information( p );

if(n)

{

make_node( p , 0 );

put_information( p );   //是否输出该考生信息

}

putchar('\n');

}

break;

case 'd':

{

printf("您正在进行删除操作。\n");

delete_val( L );

putchar('\n');

}

break;

case 'e':

{

put_all( L );

putchar('\n');

}

break;

case 'f':

{

printf("              修改日期    版本号      修改人      修改内容    \n");

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

printf("              2018.6.19    v2.0       陈百川     增加主菜单\n");

printf("              2018.6.23    v3.0       陈百川   增加生成文件功能\n\n");

printf("            该版本号为v2.0\n");

putchar('\n');

}

break;

default:

break;

}

}

printf("                     感谢本次使用,祝您生活愉快。");

getch();

}

回答于 2022-12-11

关于xml学生信息管理系统源代码和基于xml学生成绩管理系统的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/3902.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载