用C++编写的学生信息管理系统
#include #include #include #include //输入/输出文件流类using namespace std;class Student //定义类{ private:int tag; //删除标记 1:已删 0:未删char name[10]; //姓名int grade;//成绩int ID;public:Student() {}//构造函数int gettag() {return tag;} //获取删除标记char* getname() {return name;} //获取驾驶员编号int getID(){ return ID; }int getgrade(){ return grade;}void setname(char*na){ strcpy_s(name, na); }void setgrade(int n){ grade = n; }void deldrive(){ tag = 1; }//设置删除标记 1:已删 0:未删void addstudent(char* nname, int ngrade, int nID)//增加{ tag = 0; grade = ngrade; ID = nID; strcpy_s(name, nname);}void show()//显示信息{ cout = 60) student[i].show(); cout = 80) student[i].show(); }void studentlist();//维护~Studentlist() //析构函数,将写到txt文件中{fstream file("student.txt",ios::out);for (int i=0;i> choice; switch (choice) { case 1://新增 cout > name; cout > grade; add(name, grade); cout > a; switch (a){ case 1: cout > ID; r = findID(ID); if (r == NULL) { cout show(); system("pause"); break; case 2: cout > name; r = findname(name); if (r == NULL) { cout show(); system("pause"); break; case 0:break; default:cout > ID; r = findID(ID); if (r == NULL) { cout > grade; r->setgrade(grade); system("pause"); break; case 2: cout > name; r = findname(name); if (r == NULL) { cout > grade; r->setgrade(grade); system("pause"); break; case 0:break; default:cout << "输入错误,请重新输入"; break; } }; break; case 4://全显 show(); system("pause"); break; case 5://全删 tongji(); system("pause"); break; case 6://退出 break; default:cout << "输入错误,请重新输入"; break; }; }}//main() 函数的实现,程序的主界面的引导int main(void){ Studentlist a; a.studentlist();return 0;}
#include #include #include 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() != '
');cin >> str;return str;}student CStudent::readdata(int model) {student tmp;if(model != 1) { cout > tmp.m_id; }if(model != 2) { cout > tmp.m_age;cout > tmp.m_id;while(tmp.m_id) {if(findid(tmp.m_id) == NULL) {cout > tmp.m_age;cout > 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 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 > id;p = findid(id);if(p == NULL) {cout m_next;p->m_next = q->m_next;delete q;return true;}bool CStudent::erasename() {student *q,*p;string name;cout m_next;p->m_next = q->m_next;delete q;return true;}bool CStudent::modifyid() {student tmp,*p;unsigned id;cout > id;p = findid(id);if(p == NULL) {cout > choice;}while(choice 7);return choice;}void show(student *p) {cout m_id m_name m_age m_sex m_address m_contact m_dormitory m_next; p; p = p->m_next) show(p);cout > select;switch(select) {case 1 : cout > id;if(p = findid(id)) show(p->m_next);break;case 2 : cout m_next);break;case 0 : return;default : cout > select;switch(select) {case 1 : cout > id;if(p = a.findid(id)) {q = p->m_next;p->m_next = q->m_next;delete q;cout m_next;p->m_next = q->m_next;delete q;cout > select;switch(select) {case 1 : if(a.modifyid()) cout << "修改成功。
"; break;case 2 : if(a.modifyname()) cout << "修改成功。
"; break;case 0 : return;default : cout << "选择错误。
";}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 << "选择错误。
"; break;}}while(an);return 0;}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 100
struct student
{
char num[10];
char name[10];
char tel[11];
};
/* 以下是函数原型说明,被调函数的定义在主调函数后面时,要加此部分 */
void myprint();
void mycreate();
void mydisplay();
void mysearch();
/* sch_num与sch_name函数被mysearch调用 */
void sch_num(FILE *fp);
void sch_name(FILE *fp);
void mymodify();
void myadd();
void mydelete();
/* del_num与del_name函数被mydelete调用 */
void del_num(FILE *fp);
void del_name(FILE *fp);
void mysort();
/* sort_num与sort_name函数被mysort调用 */
void sort_num();
void sort_name();
void main()
{
char choose,yes_no;
do
{
myprint(); /* 显示主菜单 */
printf(" ");
choose=getch();
switch(choose)
{
case '1': mycreate(); break; /* 创建 */
case '2': mydisplay(); break; /* 显示 */
case '3': mysearch(); break; /* 查询 */
case '4': mymodify(); break; /* 修改 */
case '5': myadd(); break; /* 添加 */
case '6': mydelete(); break; /* 删除 */
case '7': mysort(); break; /* 排序 */
case '0': break;
default:printf("\n %c为非法选项!\n",choose);
}
if(choose=='0')
break;
printf("\n 要继续选择吗(Y/N)?\n");
do
{
yes_no=getch();
}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}while(yes_no!='Y'||yes_no!='y');
}
void myprint() /* 显示菜单界面 */
{
printf("\n\n\n\n\n\n\n\n");
printf(" |----------------------------|\n");
printf(" | 请输入选项编号(0-7): |\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");
}
/* 定义创建信息管理系统的函数 */
void mycreate()
{
int i=1;
struct student temp;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
printf("\n 请输入第1个记录:\n");
printf(" 学号(用#结束输入):");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 姓名(用#结束输入):");
gets(temp.name);
printf(" 电话号码(用#结束输入):");
gets(temp.tel);
while(temp.num[0]!='#'&&temp.name[0]!='#'&&temp.tel[0]!='#')
{
fprintf(fp,"%23s%15s%15s\n",temp.num,temp.name,temp.tel);
i++;
printf("\n 请输入第%d个记录:\n",i);
printf(" 学号(用#结束输入):");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 姓名(用#结束输入):");
gets(temp.name);
printf(" 电话号码(用#结束输入):");
gets(temp.tel);
}
fclose(fp);
}
/* 定义显示信息管理系统的函数 */
void mydisplay()
{
int n=0;
struct student temp;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
// clrscr();
printf(" 学号 姓名 电话号码\n");
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
n++;
}
if(n==0)
printf("\n 文件中无记录!\n");
else
printf("\n 文件中共有%d个记录!\n",n);
fclose(fp);
}
/* 定义查询信息管理系统的函数 */
void mysearch()
{
char c;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
printf("\n 按学号查询(h),还是按姓名查询(m)?");
c=getch();
if(c=='h'||c=='H')
sch_num(fp); /* 按学号查询 */
if(c=='m'||c=='M')
sch_name(fp); /* 按姓名查询 */
else
printf("\n 非法字符!\n");
fclose(fp);
}
/* 定义按学号查询信息管理系统的函数 */
void sch_num(FILE *fp)
{
int flag=0,n=0;
char tempnum[10];
struct student temp;
printf("\n 请输入要查询记录的学号:");
gets(tempnum);
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
if(strcmp(tempnum,temp.num)==0)
{
if(flag==0)
printf(" 学号 姓名 电话号码\n");
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
flag=1;
}
n++;
}
if(n==0)
printf("\n 文件中无记录!\n");
else
if(flag==0)
printf("\n 文件中无此人!\n");
}
/* 定义按姓名查询信息管理系统的函数 */
void sch_name(FILE *fp)
{
int flag=0,n=0;
char tempname[10];
struct student temp;
printf("\n 请输入要查询记录的姓名:");
gets(tempname);
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel);
if(strcmp(tempname,temp.name)==0)
{
if(flag==0)
printf(" 学号 姓名 电话号码\n");
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel);
flag=1;
}
n++;
}
if(n==0)
printf("\n 文件中无记录!\n");
else
if(flag==0)
printf("\n 文件中无此人!\n");
}
/* 定义修改信息管理系统的函数 */
void mymodify()
{
char c;
int n=0;
struct student *find,temp,record[100],*p; /* 最多100个记录 */
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
if(n==0)
{
printf("\n 文件中无记录!\n");
return;
}
printf("\n 请输入要修改记录的学号:");
gets(temp.num);
for(p=record;p<record+n;p++)
if(strcmp(temp.num,p->num)==0)
{
find=p; /* find记住修改记录的位置 */
break;
}
if(p==record+n)
{
printf("\n 无此人!\n");
return;
}
do
{
printf("\n 请输入正确的学号:");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 请输入正确的姓名:");
gets(temp.name);
printf(" 请输入正确的电话号码:");
gets(temp.tel);
for(p=record;p<record+n;p++)
if((strcmp(temp.num,p->num)==0)&&(p!=find))
{
printf("\n 学号重复,要重新输入吗(Y/N)?");
do
{
c=getch();
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;
}
if(p==record+n)
{
*find=temp; /* find指向需要修改记录的位置 */
break;
}
}while(c=='Y'||c=='y');
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}
/* 定义添加信息管理系统的函数 */
void myadd()
{
char c;
int n=0;
struct student temp,record[N],*p;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
do
{
printf("\n 请输入新记录的学号:");
do
{
gets(temp.num);
}while(strcmp(temp.num,"")==0);
printf(" 请输入新记录的姓名:");
gets(temp.name);
printf(" 请输入新记录的电话号码:");
gets(temp.tel);
for(p=record;p<record+n;p++)
if(strcmp(temp.num,p->num)==0)
{
printf("\n 学号重复,要重新输入吗(Y/N)?");
do
{
c=getch();
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
putchar('\n');
break;
}
if(p==record+n)
{
*p=temp;
break;
}
}while(c=='Y'||c=='y');
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n+1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}
/* 定义删除信息管理系统的函数 */
void mydelete()
{
char c;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
printf("\n 按学号删除(h),还是按姓名删除(m)?");
c=getch();
if(c=='h'||c=='H')
del_num(fp); /* 按学号删除 */
if(c=='m'||c=='M')
del_name(fp); /* 按姓名删 */
else
printf("\n 非法字符!\n");
fclose(fp);
}
/* 定义按学号删除信息管理系统的函数 */
void del_num(FILE *fp)
{
int n=0;
char tempnum[10];
struct student record[N],*p,*k;
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
printf("\n 请输入要删除记录的学号:");
gets(tempnum);
for(k=record;k<record+n;k++)
if(strcmp(tempnum,k->num)==0)
break; /* 找到要删记录结束循环 */
if(k<record+n) /* 提前结束循环,说明找到人 */
for(p=k;p<k+n-1;p++) /* 向左移一位,相当于删除记录 */
*p=*(p+1);
else
printf("\n 无此人!\n");
fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n-1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
}
/* 定义按姓名删除信息管理系统的函数 */
void del_name(FILE *fp)
{
int n=0;
char tempname[10];
struct student record[N],*p,*k;
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
printf("\n 请输入要删除记录的姓名:");
gets(tempname);
for(k=record;k<record+n;k++)
if(strcmp(tempname,k->name)==0)
break; /* 找到要删记录结束循环 */
if(k<record+n) /* 提前结束循环,说明找到人 */
for(p=k;p<k+n-1;p++) /* 向左移一位,相当于删除记录 */
*p=*(p+1);
else
printf("\n 无此人!\n");
fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n-1;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
}
/* 定义排序信息管理系统的函数 */
void mysort()
{
char c;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
fclose(fp);
printf("\n 按学号排序(h),还是按姓名排序(m)?");
c=getch();
if(c=='h'||c=='H')
sort_num(); /* 按学号排序 */
if(c=='m'||c=='M')
sort_name(); /* 按姓名排序 */
else
printf("\n 非法字符!\n");
}
/* 定义按学号排序信息管理系统的函数 */
void sort_num()
{
int i,j,k,n=0;
char c;
struct student record[N],*p,temp;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
printf("\n 按升序(s),还是按降序(j)?");
c=getch();
if(c=='s'||c=='S') /* 按学号的升序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->num,(p+j)->num)>0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
if(c=='j'||c=='J') /* 按学号的降序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->num,(p+j)->num)<0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
{
printf("\n 非法字符!\n");
return;
}
fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n;p++)
{
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
printf("%23s%15s%15s\n",p->num,p->name,p->tel);
}
fclose(fp);
}
/* 定义按姓名排序信息管理系统的函数 */
void sort_name()
{
int i,j,k,n=0;
char c;
struct student record[N],*p,temp;
FILE *fp;
fp=fopen("d:\\lbh\\guanli.dat","r+");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
p=record;
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
p++;
n++;
}
fclose(fp);
printf("\n 按升序(s),还是按降序(j)?");
c=getch();
if(c=='s'||c=='S') /* 按姓名的升序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)>0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
if(c=='j'||c=='J') /* 按姓名的降序排列 */
for(i=0;i<n-1;i++) /* 选择法排序 */
{
k=i;
for(j=i+1;j<n;j++)
if(strcmp((p+k)->name,(p+j)->name)<0)
k=j;
temp=*(p+k);
*(p+k)=*(p+i);
*(p+i)=temp;
}
else
{
printf("\n 非法字符!\n");
return;
}
fp=fopen("d:\\lbh\\guanli.dat","w");
if(fp==NULL)
{
printf("\n 打开文件失败!\n");
return;
}
for(p=record;p<record+n;p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel);
fclose(fp);
}
#include"stdio.h"
#include"stddef.h"
#include "stdlib.h"
#include"string.h"
#define MAX 10
typedef struct student{ /*定义结构体*/
char name[MAX]; /*姓名*/
int num[MAX]; /* 学号*/
char sex[MAX]; /*性别*/
int chinese; /*语文*/
int mathematic; /* 数学*/
int english; /*英语*/
int computer; /*计算机*/
struct student *next; /*结构体指针*/
}stu;
stu *head; /*头指针*/
void print() /*显示或打印函数*/
{
system("cls");
printf("\t\t\t成绩管理系统\n"); /*成绩管理系统*/
printf("<1>输入数据\t"); /*输入数据*/
printf("<2>显示\t"); /*显示*/
printf("<3>插入数据\t"); /*插入数据*/
printf("<4>访问数据\t"); /*访问数据*/
printf("<5>以前数据\t"); /*以前数据*/
printf("<6>保留数据\t"); /*保留数据*/
printf("<7>更新数据\t"); /*更新数据*/
printf("<8>语文平均成绩\t"); /*语文平均成绩*/
printf("<9>数学平均成绩\t"); /*数学平均成绩*/
printf("<10>英语平均成绩\t"); /*英语平均成绩*/
printf("<11>计算机平均成绩\t"); /*计算机平均成绩*/
printf("<12>退出\t\n"); /*退出*/
}
void cin(stu *p1) /*输入相关数据的函数*/
{ printf("姓名:\n");
scanf("%s",&p1->name);
printf("年龄:\n");
scanf("%d",&p1->num);
printf("性别:\n");
scanf("%s",&p1->sex);
printf("语文:\n");
scanf("%d",&p1->chinese);
printf("数学:\n");
scanf("%d",&p1->mathematic);
printf("英语:\n");
scanf("%d",&p1->english);
printf("计算机:\n");
scanf("%d",&p1->computer);
}
stu *cindata() /*其他数据是否继续输入的函数*/
{ stu *p1,*p2;
int i=1;
char ch;
p1=(stu *)malloc(sizeof(stu));
head=p1;
while(i)
{
cin(p1);
printf("是否继续输入数据?y/n"); /*是否继续输入数据*/
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
{ i=0;
p1->next=NULL;
}
else
{ p2=p1;
p1=(stu *)malloc(sizeof(stu));
p2->next=p1;
}
}
return(p1->next);
}
stu *lookdata(stu *p1) /*查看数据的函数*/
{
while(p1!=NULL)
{ printf("年龄:%d\t",p1->num);
printf("姓名:%s\t",p1->name);
printf("性别:%s\t",p1->sex);
printf("\n");
printf("语文:%d\t",p1->chinese);
printf("数学:%d\t",p1->mathematic);
printf("英语:%d\t",p1->english);
printf("计算机:%d\t",p1->computer);
printf("\n");
p1=p1->next;
}
return p1;
}
void insert() /*通过比较学号来插入数据的函数*/
{ stu *p1,*p3,*p2;
char ch;
p1=head;
p3=(stu *)malloc(sizeof(stu));
p3->next=NULL;
if(head==NULL){ head=p3; return;}
cin(p3);
while(p1!=NULL&&(p1->num<p3->num)) /*通过学号的比较来插入*/
{ p2=p1;p1=p1->next;}
if(p2==head) {p3->next=head; head=p3; return;}
p3->next=p1;
p2->next=p3;
}
find(stu *p2) /*通过姓名查找查看数据的函数*/
{ char name[20];
int b=0;
printf("Enter the name of the student you want to find:"); /*通过姓名查看*/
scanf("%s",name);
while(p2!=NULL)
{if(strcmp(name,p2->name)==0)
{
printf("The data you want has be found\n");
printf(" Name:%s\t",p2->name);
printf("Num:%d\t",p2->num);
printf("sex%s\t",p2->sex);
printf("\n");
printf("Chinese:%d\t",p2->chinese);
printf("Math:%d\t",p2->mathematic);
printf("English:%d\t",p2->english);
printf("Computer:%d\t",p2->computer);
printf("\n");
b=1;
}
else if(b==0)
printf("sorry not find data!");
p2=p2->next;
}
if(b==1)
{
print();
printf("Find one\n");}
else
{print();
printf("Not find\n");
}
}
void caverage() /*求各学生语文平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->chinese;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->chinese)
max=p1->chinese;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->chinese)
min=p1->chinese;
}
printf("Chinese Average:%f",aver);
printf("Chinese Max:%f",max);
printf("Chinese Min:%f",min);
}
void maverage() /*求各学生数学平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->mathematic;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->mathematic)
max=p1->mathematic;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->mathematic)
min=p1->mathematic;
}
printf("Mathe Average:%f",aver);
printf("Mathe Max:%f",max);
printf("Mathe Min:%f",min);
}
void eaverage() /*求各学生英语平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->english;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->english)
max=p1->english;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->english)
min=p1->english;
}
printf("English Average:%f",aver);
printf("English Max:%f",max);
printf("English Min:%f",min);
}
void comaverage() /*求各学生计算机平均分、最高和最低分成绩的函数*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->computer;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->computer)
max=p1->computer;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->computer)
min=p1->computer;
}
printf("Computer Average:%f",aver);
printf("Computer Max:%f",max);
printf("Computer Min:%f",min);
}
update(stu *p2) /*通过姓名查找来更新数据*/
{
char name[10]; /*p2为指向结构体struct student的指针*/
int b=0;
printf("Enter The Name"); /*输入姓名*/
scanf("%s",name);
while(p2!=NULL)
{if(strcmp(name,p2->name)==0)
{
printf("Find you data\n");
scanf("Name:%s",p2->name);
scanf("Num:%s",p2->num);
scanf("Sex:%s",p2->sex);
scanf("Chinese:%d",p2->chinese);
scanf("Math:%d",p2->mathematic);
scanf("english:%d",p2->english);
scanf("Computer:%d",p2->computer);
printf("Success!");
b=1;}
else if(b==0)
printf("Sorry not Find data!");
p2=p2->next;}
if(b==0)
{print();
printf("Sorry not Find data!");
}
else
{
print();
printf("Finish!");
}
}
save(stu *p2) /*保留数据函数*/
{
FILE *fp;
char file[10];
printf("Enter file name"); /*输入文件名*/
scanf("%s",file);
fp=fopen(file,"w");
while(p2!=NULL)
{
fprintf(fp,"%s",p2->name);
fprintf(fp,"%s",p2->num);
fprintf(fp,"%s",p2->sex);
fprintf(fp,"%d",p2->chinese);
fprintf(fp,"%d",p2->mathematic);
fprintf(fp,"%d",p2->english);
fprintf(fp,"%d",p2->computer);
p2=p2->next;
}
fclose(fp);
}
char password[7]="123456"; /*定义初始密码*/
void main() /*主函数*/
{ int choice;
stu *p2;
char s[8];
int flag=0,i; /*标志项*/
int n=3;
do{ printf("你请输入密码:\n");
scanf("%s",s);
if(!strcmp(s,password)) /*进行密码匹配验证*/
{ printf("PASS\n\n\n");
flag=1;
break;
}
else{
printf("Error Enter again:\n");
n--;
}
}
while(n>0);
if(!flag)
{printf("you have Enter 3 times!"); /*输入密码超过了3次!!*/
exit(0); /*自动退出*/
}
/*密码验证成功后进入的界面*/
printf("欢迎来到重庆航天职业技术学院\n");
printf(" 欢迎来到计算机工程系\n");
printf(" 班级:软件技术\t班号:08051051\n"); /*班级和号码*/
printf(" 是否进入系统\n"); /*问进入系统与否*/
scanf("%d",&choice);
if(choice=='n'||choice=='N')
exit(1);
print();
while(1)
{
printf("Enter choice:");
scanf("%d",&i);
if(i<1||i>13)
{
printf("再从1-13中进行选择:\n"); /*再从1-13中进行选择*/
exit(1);
}
switch(i)
{ case 1:
p2=cindata(); /*其他数据是否继续输入的函数*/
break;
case 2:
p2=lookdata(head); /*查看数据的函数*/
break;
case 3:
insert(); /*通过比较学号来插入数据的函数*/
break;
case 4:
find(head); /*通过姓名查找查看数据的函数*/
break;
case 5:
update(head); /*通过姓名查找来更新数据*/
break;
case 6:
save(head); /*保留数据函数*/
break;
case 7:
print(); /*显示或打印函数*/
break;
case 8:
caverage(); /*求各学生语文平均分、最高和最低分成绩的函数*/
break;
case 9:
maverage(); /*求各学生数学平均分、最高和最低分成绩的函数*/
break;
case 10:
eaverage(); /*求各学生英语平均分、最高和最低分成绩的函数*/
break;
case 11:
comaverage(); /*求各学生计算机平均分、最高和最低分成绩的函数*/
break;
case 12:
; /*空操作*/
case 13:
exit(1); /*退出*/
break;
}
scanf("%d",&i);
}
}
密码123456
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <iostream>
#include <ctime>
#define max 100
/////////////////////////////////////
/////strcut stu
struct stu //学生资料结构体
{
char name[10];
int num;
char adress[10];
float x,y,z,score;
int number;
};
//////////////////////////////////////////
///////student.cpp
int count=0;
int temp=0;
class student //学生类
{
private:
stu data[max];
char start_del;
public:
void input(char *ch1,int num,char *ch2,float x,float y,float z); //输入
void find(int num); //查找
void del(int num); //删除
int check_num(int num) //确定没有重复学号
{
int m=0;
while(m<=count)
if(num==data[m++].num)
break;
if(m>count)
return 0;
else
return 1;
}
void taxis(); //总分排序
void show(); //输出
};
void student::input(char *ch1,int num,char *ch2,float x,float y,float z)
{
strcpy(data[count].name,ch1);
data[count].num=num;
strcpy(data[count].adress,ch2);
data[count].x=x; data[count].y=y; data[count].z=z;
count++;
}
void student::find(int num)
{
int m=0;
while(m<=count)
if(num==data[m++].num)
break;
if(m>count)
{
cout << "很抱歉,没有该学号的学生" << endl;
start_del='n';
getch();
}
else
{
temp=count; count=m; start_del='y';
cout << "该学生的资料为" <<endl
<< "序号\t姓名\t学号\t地址\t高数\t英语\t计算机" << endl;
show();
count=temp; getch();
}
}
void student::del(int num)
{
char chose;
find(num);
if(start_del=='y')
{
cout << "确实要删除该学生资料? Y/N" << endl;
cin >> chose;
if(chose=='y'||chose=='Y')
{
int m=0;
while(m<=count)
if(num==data[m++].num)
break;
temp=count; count=m;
while(count<temp)
{
strcpy(data[count-1].name,data[count].name); data[count-1].num=data[count].num;
strcpy(data[count-1].adress,data[count].adress); data[count-1].x=data[count].x;
data[count-1].y=data[count].y; data[count-1].z=data[count].z;
count++;
}
count=temp-1;
cout << "该学生资料已删除" << endl;
}
else
cout << "学生资料未删除" << endl;
getch();
}
}
void student::taxis()
{
int x,y,array[max];
int change;
for(x=0;x<count;x++)
array[x]=data[x].score=data[x].x+data[x].y+data[x].z;
for(x=0;x<count-1;x++)
for(y=0;y<count-1-x;y++)
if(array[y]<array[y+1])
{
change=array[y];
array[y]=array[y+1];
array[y+1]=change;
}
cout << "总分\t姓名\t学号\t地址\t高数\t英语\t计算机" << endl;
for(x=0;x<count;x++)
for(y=0;y<count;y++)
if(array[x]==data[y].score)
{
cout << data[y].score << "\t" << data[y].name << "\t"
<< data[y].num << "\t" << data[y].adress << "\t"
<< data[y].x << "\t" << data[y].y << "\t"
<< data[y].z << endl;
}
getch();
}
void student::show()
{
cout << count << "\t" << data[count-1].name << "\t"
<< data[count-1].num << "\t" << data[count-1].adress << "\t"
<< data[count-1].x << "\t" << data[count-1].y << "\t"
<< data[count-1].z << endl;
}
/////////////////////
//main.cpp
void main()
{
student st;
char *ch1,*ch2,chose;
int num,find,del;
float x,y,z;
time_t t;
time(&t);
while(1)
{
system("cls");
cout << "------------------------学生管理系统------------------------" <<endl
<< " 当前系统时间是: " << ctime(&t) << endl
<< "1.输入/添加学生资料 2.输出学生资料 3.查找 4.删除 5.总分排序 6.退出" << endl << endl
<<" 请选择你要的服务(1-6)" << endl;
cin >> chose;
if(chose=='6') break;
switch(chose)
{
case '1':
{
cout << "请输入学生姓名\t学号\t地址\t高数\t英语\t计算机成绩" << endl;
ch1=new char[]; ch2=new char[];
cin >> ch1 >> num;
while(st.check_num(num))
{
cout << "学号重复,请重新输入" << endl;
cin >> num;
}
cin >> ch2 >> x >> y >> z;
st.input(ch1,num,ch2,x,y,z);
}break;
case '2':
{
temp=count; count=1;
cout << "序号\t姓名\t学号\t地址\t高数\t英语\t计算机" << endl;
while(count<=temp)
{
st.show(); count++;
}
count--; getch();
}break;
case '3':
{
cout << "请输入你要查找学生的学号" << endl;
cin >> find;
st.find(find);
}break;
case '4':
{
cout << "请输入你要删除的学生学号" << endl;
cin >> del;
st.del(del);
}break;
case '5':
{
st.taxis();
}break;
default:
{
cout << "输入错误!!!,请重新输入" << endl;
getch();
}
}
}
cout << "感谢你的使用\n" <<endl;
getch();
}
什么意思?你是想请人帮你写吗?
学生信息管理系统(C语言版)
用C\/C++编写的学生信息管理系统,最好有课程设计的论文,如果没有的话只有做好的系统也可以,代码要求50%以上注释!最好是把整套完整系统的下载地址告诉我。万分感谢!!如果可以用的... 用C\/C++编写的学生信息管理系统,最好有课程设计的论文,如果没有的话只有做好的系统也可以,代码要求50%以上注释!最好是把整套...
那位高手帮小弟用C解决下。。编写一个学生信息管理系统,主要实现下列...
那位高手帮小弟用C解决下。。编写一个学生信息管理系统,主要实现下列功能: 很急~!!1)录入功能:提供学生基本信息和某学期各科成绩的录入功能,学生信息要齐全。(2)查询功能,可以按照姓名或班级关键字查询学生基本信息。(3)修改功能,修改学生的信息和... 很急~!!1)录入功能:提供学生基本信息和某学期各科成绩的...
求:小型学生信息管理系统(用c语言编程)
求:小型学生信息管理系统(用c语言编程) 具体要求为:1.建立学生信息,每个学生的信息应包括:学号、姓名、性别、班级、至少3门课程的成绩;2.数据输入:输入学生的各项信息;3.数据修改:根据输入学生的学号可以选择修改该学... 具体要求为:1. 建立学生信息,每个学生的信息应包括:学号、姓名、性别、班级、至少3门...
第一题怎么做啊,c语言的?
关注 展开全部 C语言的增删改查的题。考察的是对c语言的链表和结构题使用的知识。大体的思路就是首先定义一个学生的结构体,然后输入一一输入数据建立顺序链表,之后编写增删改查的方法。 追问 能帮写下吗? 本回答被网友采纳 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 其他...
C语言程序设计 题目:学生信息管理系统
1题目:学生信息管理系统2程序要求:(1)学生信息录入功能1)用户从键盘输入每个学生的信息:学号、姓名、性别、数学、英语、政治、语文四门课成绩。2)可插入一个或多个学生信息到当... 1题目:学生信息管理系统 2 程序要求:(1)学生信息录入功能 1)用户从键盘输入每个学生的信息:学号、姓名、性别、数学、英语、政治...
c语言 学生信息包括,学号,姓名,五门功课的成绩.输入输出。总分排序_百 ...
for(n=0;readastu(students+n);n++);\/*用冒泡法对学生信息数组排序*\/ for(i=0;i<n;i++){ order[i]=i;\/*预置第i个输入的学生*\/ for(t=0,j=0;j<SCORES;j++)\/*求第i个学生的总分*\/ t+=students[i].scores[j];total[i]=t;}\/*冒泡排序*\/ for(i=0;i<n-1;i++)\/*共...
c语言程序设计题目
要求从键盘输入学生的数据用一个函数实现,输出成绩表(包括每个学生的学号、姓名、三门成绩及平均分数)用... 编写程序处理10个学生的信息,每个学生的信息...2008-04-15 《C语言程序设计》练习题 44 2020-01-02 C语言程序设计题目? 2013-04-13 C语言程序设计题目 2011-05-07 C语言程序设计试题 353 2019...
如何用C语言完成学生信息输入输出模块?是高手的就帮帮忙了
\/*主程序功能模块—-文件名:student.c*\/ define MAX_BAR 4 \/*最大菜单数,可以自定*\/ include"io.h"include"dos.h"include"fcntl.h"include"stdio.h"include"stdlib.h"include"math.h"include"graphics.h"include"chi_asc.c" \/*调用图形模式下汉字、字符共显功能*\/ include"public.c" \/*...
C语言编程:文件student.txt文件中保存有学生的信息(最后一条全0的表示...
C语言编程:文件student.txt文件中保存有学生的信息(最后一条全0的表示结束),含:学号(字符串 5位)、 10 A0001F25计算机系B0001M30外语系C0002M22中文系C0001F24中文系A0002M18计算机系A0003F19计算机系B0002M18外语系B0003F17外语系B0004F20外语系0000... A0001 F 25 计算机系B0001 M 30 外语系C0002 M...
帮忙设计一个C语言的学生信息管理系统
具体要求如下:1、在主程序中,先显示如下菜单:简易学生信息管理系统***系统功能菜单***---1.录入学生信息2.按成绩排序3.增加学生信息4.按学号删... 具体要求如下:1、 在主程序中,先显示如下菜单: 简易学生信息管理系统 ***系统功能菜单*** --- 1. 录入学生信息 2. 按成绩排序 3. 增加学生信息 ...
之昌两通: 刚好以前写过,捡个便宜了(就是项目是姓名、学号和各课成绩,要改的话不难)#include<iostream> #include<cstring> #include<fstream>using namespace std; int num; const int MAX_NUM_OF_STUDENTS=1000; struct Student { int no;...
岑巩县15752377722: 用C++编写一个程序 学生信息管理系统 - ?
之昌两通: #include#include#include#include#defineMax 1000usingnamespacestd;classstudent{private: char name[20]; int number; int grade;public: student(char*,int,int); char*GetName(){returnname;} int GetNo(){returnnumber;} int GetGra(){returngrade;}};...
岑巩县15752377722: 跪求用c++编写的“学生信息管理系统”程序 - ?
之昌两通: #include<iostream.h> #include<string.h> #include<iomanip.h> //using namespace std; struct student {char name[15];int number;float chinese,math,English; }; student s[50]; int i=0,n=0; double allscore[50]; void insert(); void delete1(); void find(); ...
岑巩县15752377722: 用C++语言编写学生信息管理系统 - ?
之昌两通: 程序工作量不小,大概要两个多小时才能写好调好 请先付订金 ^_^ 下面是部分,付了订金我马上继续码,这种没有太大难度/*1.该系统采用面向对象的设计方法2.声明一个学生信息类studentmessage3.学生信息应包含学号,姓名,性别,年龄,...
岑巩县15752377722: C++编写学生信息管理系统 - ?
之昌两通: #define NULL 0#include#include# define LEN sizeof(struct node) struct node { int num;float score; struct node *llink, *rlink; /* 链域,llink是左链域指针,rlink是右链域指针*/ }; struct node *creat() { struct node *p,*q,*head; int num;float score; head...
岑巩县15752377722: 用c++.类..写个学生管理系统?
之昌两通: #include <malloc.h> #include <stdio.h> #include <stdlib.h> #define LEN sizeof(struct scorenode) #define DEBUG #include <string.h> struct scorenode {int number;/*学号*/ char name[10];/*姓名*/ float yuwen;/*语文成绩*/ float yingyu;/*英语成...
岑巩县15752377722: c++学生信息管理系统 - ?
之昌两通: #include#include#include#include using namespace std;const int maxn = 32;struct student{ char id[maxn]; char name[...
岑巩县15752377722: 用c++建立编写学生管理系统 - ?
之昌两通: /************************************************************头文件*******************************************/ #ifndef NODE_CLASS #define NODE_CLASSstruct struct1 //学生信息结构体 {CString num;CString name;CString sex;int score[3]; //分别是...
岑巩县15752377722: 学生管理系统C++代码?
之昌两通: #include<iostream> #include<fstream> #include<iomanip> #include<string> using namespace std; int i; class Stud //学生类 { long no; char name[20]; char tag; char level[10]; public: float score[3]; float sum;void getdate() { tag='#'; cout<<"( 学号 ...
岑巩县15752377722: 求C++课程设计 学生信息管理系统 - ?
之昌两通: 我这里编写了一个C++学生信息管理系统;你只需要修改一点就可以了,是在DOS界面操作的,MFC的我还没有编写.#include<iostream>#include<string.h> struct student{ int id; char name[10]; int age; char sex[10]; char yuanxi[20]; int fenshu; ...