<fstream>
#include
<string.h>
#include
<iostream>
#include
<conio.h>//用getch()
using
namespace
std
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class
Student
{
public:
char
name[20]
char
Class[20]
char
Id[20]
int
Cnum
//C课程得分
int
Mnum
//数学课程得分
int
Enum
//英语课程得分
int
Gnum
//体育
int
sum
//总分
int
ave
//平均分
Student
*
Next
void
Input()
{
cin>>name
cout<<"\t\t请输入学生的班级:"
cin>>Class
cout<<"\t\t请输入学生的学号:"
cin>>Id
cout<<"\t\t请输入C++的成绩:"
cin>>Cnum
cout<<"\t\t请输入数学课程的成绩:"
cin>>Mnum
cout<<"\t\t请输入英语课程的成绩:"
cin>>Enum
cout<<"\t\t请输入日语的成绩:"
cin>>Gnum
sum=Cnum+Mnum+Enum+Gnum
ave=(Cnum+Mnum+Enum+Gnum)/4
}
void
ReadFile(istream
&
in)
{
in>>name>>Class>>Id>>Cnum>>Mnum>>Enum>>Gnum>>ave>>sum
}
void
Show()
{
cout<<"姓名:"<<name<<endl<<"班级:"<<Class<<endl<<"学号:"<<Id<<endl<<"C++:"<<Cnum<<endl
<<"数学:"<<Mnum<<endl<<"外语:"<<Enum<<endl<<"日语:"<<Gnum<<endl<<"平均成绩:"<<ave<<endl<<"总成绩:"<<sum<<endl<<endl<<endl
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class
Studentmassage
{
public:
Studentmassage()
~Studentmassage()
void
ShowMenu()
void
Find()
void
Save()
void
ModifyItem()
void
RemoveItem()
void
Swap(Student
*,Student
*)
void
Sort()
int
ListCount()
void
Display()
{
for(Student
*
p=Head->Nextp!=Endp=p->Next)
p->Show()
cout<<"输入任意字符!继续……"
getch()
}
void
AddItem()
{
End->Input()
End->Next=new
Student
End=End->Next
cout<<"添加成功!"<<endl
cout<<"输入任意字符!继续……"
getch()
}
private:
Student
*
Head,*
End
ifstream
in
ofstream
out
Student
*FindItem(char
*
name)
{
for(Student
*
p=Headp->Next!=Endp=p->Next)
if(!strcmp(p->Next->name,name))return
p
return
NULL
}
Student
*FindID(char
*
Id)
{
for(Student
*
p=Headp->Next!=Endp=p->Next)
if(!strcmp(p->Next->Id,Id))return
p
return
NULL
}
Student
*FindCLASS(char
*
Class)
{
for(Student
*
p=Headp->Next!=Endp=p->Next)
if(!strcmp(p->Next->Class,Class))return
p
return
NULL
}
}Grade
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::Studentmassage()
{
Head=new
Student
Head->Next=new
Student
End=Head->Next
in.open("sort.txt")
if(!in)
cout<<"这是一个新系统,无学生信息。请先输入。"<<endl
else
{
while(!in.eof())
{
End->ReadFile(in)
if(End->name[0]=='\0')break
End->Next=new
Student
End=End->Next
}
in.close()
cout<<"\t\t读取学生信息成功!"<<endl
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::~Studentmassage()
{
Save()
for(Student
*
tempHead->Next!=End)
{
temp=Head->Next
Head->Next=Head->Next->Next
delete
temp
}
delete
Head,End
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::ShowMenu()
{
cout<<"〓〓〓〓〓〓〓〓〓〓
☆
学
生
成
绩
管
理
系
统
☆
〓〓〓〓〓〓〓〓〓〓"<<endl
cout<<"〓〓〓〓〓〓〓★★★★★
★★★★★★★
★★★★★〓〓〓〓〓〓〓"<<endl
cout<<"〓〓〓〓〓〓〓〓〓★
☆
1.增加学生成绩
☆
★〓〓〓〓〓〓〓〓〓"<<endl
cout<<"〓〓〓〓〓〓〓〓〓★
☆
2.显示学生成绩
☆
★〓〓〓〓〓〓〓〓〓"<<endl
cout<<"〓〓〓〓〓〓〓〓〓★
☆
3.排序统计成绩
☆
★〓〓〓〓〓〓〓〓〓"<<endl
cout<<"〓〓〓〓〓〓〓〓〓★
☆
4.查找学生成绩
☆
★〓〓〓〓〓〓〓〓〓"<<endl
cout<<"〓〓〓〓〓〓〓〓〓★
☆
5.删除学生成绩
☆
★〓〓〓〓〓〓〓〓〓"<<endl
cout<<"〓〓〓〓〓〓〓〓〓★
☆
6.修改学生信息
☆
★〓〓〓〓〓〓〓〓〓"<<endl
cout<<"〓〓〓〓〓〓〓〓〓★
☆
0.安全退出系统
☆
★〓〓〓〓〓〓〓〓〓"<<endl
cout<<"\n\t\t\n\t\t请选择:"
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::Find()
{
char
name[20]
,Id[10],Class[20]
int
x
Student
*
p=NULL
cout<<"\n\t\t*********************************\n"
cout<<"\t\t※
1.按学生的姓名查找\n\t\t※
2.按学生学号查找\n\t\t※
3.按学生班级查找"
cout<<"\n\t\t*********************************\n请选择:"
cin>>x
switch(x)
{
case
1:{cout<<"\t\t请输入要查找的学生的姓名:"cin>>name
if(p=FindItem(name))
{
p->Next->Show()
cout<<"输入任意字符!继续……"
getch()
}
else
{
cout<<"\t\t没有找到该姓名的学生!"<<'\n'<<endl
cout<<"输入任意字符!继续……"
getch()
}
}break
case
2:
{
cout<<"\t\t请输入要查找的学生的学号:"cin>>Id
if(p=FindID(Id))
{
p->Next->Show()
cout<<"输入任意字符!继续……"
getch()
}
else
{
cout<<"\t\t没有找到该学号的学生!"<<'\n'<<endl
cout<<"输入任意字符!继续……"
getch()
}
}break
case
3:{cout<<"\t\t请输入要查找的学生的班级:"cin>>Class
if(p=FindCLASS(Class))
{
p->Next->Show()
cout<<"输入任意字符!继续……"
getch()
}
else
{
cout<<"\t\t没有找到该班级的学生!"<<'\n'<<endl
cout<<"输入任意字符!继续……"
getch()
}
}break
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::ModifyItem()
//修改信息
{
char
ID[20]
Student
*
p=NULL
cout<<"\t\t请输入要修改的人的学号:"cin>>ID
if(p=FindID(ID))
{
cout<<"\t\t已找到学生的信息,请输入新的信息!"<<endl
p->Next->Input()
cout<<"修改成功!"<<endl
cout<<"输入任意字符!继续……"
getch()
}
else
{
cout<<"\t\t没有找到!"<<endl
cout<<"输入任意字符!继续……"
getch()
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::RemoveItem()
//
删除信息
{
char
ID[20]
Student
*
p=NULL,*temp=NULL
cout<<"\t\t请输入要删除的学生的学号:"cin>>ID
if(p=FindID(ID))
{
temp=p->Next
p->Next=p->Next->Next
delete
temp
cout<<"\t\t删除成功!"<<endl
cout<<"输入任意字符!继续……"
getch()
}
else
{
cout<<"\t\t没有找到!"<<endl
cout<<"输入任意字符!继续……"
getch()
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::Swap(Student
*p1,
Student
*p2)
{
Student
*temp=new
Student
strcpy(temp->name,p1->name)
strcpy(temp->Id,p1->Id)
temp->Cnum=p1->Cnum
temp->Mnum=p1->Mnum
temp->Enum=p1->Enum
temp->sum=p1->sum
strcpy(p1->name,p2->name)
strcpy(p1->Id,p2->Id)
p1->Cnum=p2->Cnum
p1->Mnum=p2->Mnum
p1->Enum=p2->Enum
p1->sum=p2->sum
strcpy(p2->name,temp->name)
strcpy(p2->Id,temp->Id)
p2->Cnum=temp->Cnum
p2->Mnum=temp->Mnum
p2->Enum=temp->Enum
p2->sum=temp->sum
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int
Studentmassage::ListCount()//统计当前的记录总数
{
if(!
Head)
return
0
int
n=0
for(Student
*
p=Head->Nextp!=Endp=p->Next)
{
n++
}
return
n
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::Sort()//对当前学生进行排序
{
cout
<<"Sorting..."<<endl
Student
*p=NULL,*p1=NULL,*k=NULL
int
n=Studentmassage::ListCount()
if(n<2)
return
for(p=Head->Nextp!=Endp=p->Next)
for(k=p->Nextk!=Endk=k->Next)
{
if(p->sum>k->sum)
{
Studentmassage::Swap(p,k)
}
}
cout
<<"排序完成!"<<endl
getch()
return
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void
Studentmassage::Save()
{
out.open("sort.txt")
for(Student
*p=Head->Nextp!=Endp=p->Next)
out<<p->name<<"\t"<<p->Class<<"\t"<<p->Id<<"\t"
<<p->Cnum<<"\t"<<p->Mnum<<"\t"<<p->Enum<<"\t"<<p->Gnum<<"\t"<<p->ave<<"\t"<<p->sum<<'\n'
out.close()
}
void
code()
//密码
{
char
s1[20]="123",s2[20]
cout<<"请输入密码:"
while(cin>>s2)
{
if(!strcmp(s1,s2))
{
Grade.ModifyItem()break
}
else
cout<<"你输入的密码不正确,请重新输入:"
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int
main()
{
int
x,i=0
bool
quit=false
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl
for(i=0i<3i++)
cout<<"\t\t◎\t\t\t\t\t\t
◎"<<endl
cout<<"\t\t◎★★★★【
欢迎进入学生成绩管理系统
】★★★★◎"<<endl
for(i=0i<3i++)
cout<<"\t\t◎\t\t\t\t\t\t
◎"<<endl
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl
cout<<"请按任意键开始……"
getch()
while(!quit)
{
system("cls")
Grade.ShowMenu()
cin>>x
switch(x)
{
case
0:cout<<"★★★★感谢您的使用★★★★"<<endlquit=truebreak
case
1:Grade.AddItem()break
case
2:Grade.Display()break
case
3:Grade.Sort()break
case
4:Grade.Find()break
case
5:Grade.RemoveItem()break
case
6:code()break
}
}
return
0
}
我稍微改了下,应该可以用~
额~~你们一定要C编吗~C++不可以嘛?
就这样啦,源码在下面
#include <stdio.h>#include <string.h>
int main()
{
char str[80]
int char_number[26]
// 初始化
memset(str, 0, sizeof(str))
memset(char_number, 0, sizeof(char_number))
scanf("%s", &str)
int i = 0
for ( i = 0 str[i] != '\0' ++i)
{
if ( 'A' <= str[i] && str[i] <= 'Z' )
{ // 大写字母
++char_number[ (int)(str[i] - 'A') ]
}
else if ( 'a' <= str[i] && str[i] <= 'z' )
{ // 小写字母
++char_number[ (int)(str[i] - 'a') ]
// 对应的int数组加1,比如是字母c,则char_number[2]加一
}
}
for (i = 0 i < 26 ++i)
{
// 不输出没有的字母 可以注释掉
if (char_number[i] == 0) continue
// 输出字母以及字数
printf("%c: %d\n", (char)(i + 'a'), char_number[i])
}
return 0
}
从键盘上输入一行带有英文字母的任意字符串
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)