c语言课程设计报告学生学籍信息管理系统Word格式文档下载.docx
《c语言课程设计报告学生学籍信息管理系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c语言课程设计报告学生学籍信息管理系统Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
12、sortByMajor——专业排序;
13、splash——建立起始界面;
14、menuRegister——输入学生的子菜单;
15、menuModify——修改学生信息的子菜单;
16、menuDelete——删除学生信息的子菜单;
17、menuSearch——查找学生的子菜单;
18、menuAllByNumber——按学号展示全部学生信息;
19、menuAllByMajor——按专业展示全部学生信息;
20、menuStatus——查询某学生的状态;
21、menuQuit——退出并保存;
四、程序运行结果测试与分析
编译并运行程序
出现以上界面并按回车键
出现设定好的主菜单
出现此界面,可以通过此界面输入学生相关信息,键入学生信息后返回主界面,输入2
即可对信息进行修改,后回到主界面键入3
即可在此界面删除某同学信息,回到主菜单键入4
即可在此界面中按学号查找某同学,返回主界面键入5
即可得到按学号排序的信息,返回主界面键入6
为按学科排列,返回主界面键入7
最后返回键入8
保存并退出程序
五、结果与心得
在本次课题设计中,我全程担任程序的设计与完善和课程设计报告的书写。
程序的书写中,由于是第一次进行菜单和链表的书写,所以在书写的过程中有大量的不严谨不合理,尤其是在子菜单的书写上,输入数据和调用函数这一部分,enum函数也是第一次使用。
以上问题在和同学的讨论后得到了一部分解决。
由于时间关系,本程序存在一些问题,目前还没有得到完全解决,比如会出现可能子菜单操作后一闪而过直接回到主菜单的情况。
个人觉得本程序的功能没有完全合理的设计,对于程序还缺乏进一步的优化与完善。
六、源代码
#include<
stdio.h>
stdlib.h>
string.h>
#defineclrscr()system("
cls"
)
#definepause()system("
PAUSE>
nul"
typedefcharString[64];
typedefenum{
Enrolled=1,ChangingMajor,Disenrolled,Retarded,Suspended,Graduated,Unknown=0
}Status;
StringStatusStr[]={"
Unknown"
"
Enrolled"
ChangingMajor"
Disenrolled"
Retarded"
Suspended"
Graduated"
};
Statusstoe(Strings){
for(inti=0;
i<
7;
i++){
if(strcmp(StatusStr[i],s)==0)return(Status)i;
}
returnUnknown;
}
Male,Female
}Gender;
typedefstruct_student{
Stringnumber;
Stringname;
Gendergender;
intage;
StringnativePlace;
Stringdepartment;
Stringmajor;
StringclassName;
Statusstatus;
struct_student*pNext;
}Student;
Student*students;
intfindStudent(Stringnumber){
Student*cur=students;
intcount=0;
while(cur!
=NULL){
if(strcmp(cur->
number,number)==0)returncount;
cur=cur->
pNext;
count++;
return-1;
intregisterStudent(Stringnumber,Stringname,Gendergender,intage,StringnativePlace,Stringdepartment,Stringmajor,StringclassName,Statusstatus){
if(findStudent(number)!
=-1)return-1;
Student*s=(Student*)malloc(sizeof(Student));
s->
gender=gender;
status=status;
age=age;
pNext=NULL;
strcpy(s->
number,number);
name,name);
nativePlace,nativePlace);
department,department);
major,major);
className,className);
if(cur==NULL)
students=s;
else{
while(cur->
pNext!
cur=cur->
}
cur->
pNext=s;
return0;
intmodifyStudent(Stringnumber,Stringname,Gendergender,intage,StringnativePlace,Stringdepartment,Stringmajor,StringclassName,Statusstatus){
intcount=findStudent(number);
if(count==-1)return-1;
count;
cur->
strcpy(cur->
intdeleteStudent(Stringnumber){
if(count==0){
students=cur->
return0;
count-1;
i++)cur=cur->
pNext=cur->
pNext->
Student*getStudent(Stringnumber){
if(count==-1)returnNULL;
returncur;
voidputStudent(Student*s,FILE*f){
fprintf(f,"
(%s)%s:
\n"
s->
number,s->
name);
Gender:
%s\n"
gender==Male?
"
Male"
:
Female"
);
Age:
%d\n"
age);
NativePlace:
nativePlace);
Dept:
department);
Major:
major);
Class:
className);
Status:
%s\n\n"
StatusStr[s->
status]);
voidputAll(FILE*stream){
putStudent(cur,stream);
voidsortByNumber(){
Student*n=NULL;
while(students!
Student*cur=students;
Student*min=students;
while(cur!
if(strcmp(min->
number,cur->
number)>
0){
min=cur;
}
deleteStudent(min->
number);
min->
Student*ncur=n;
if(ncur==NULL)
n=min;
else{
while(ncur->
ncur=ncur->
ncur->
pNext=min;
students=n;
voidsortByMajor(){
major,cur->
major)>
voidsplash(){
clrscr();
puts("
\n\n"
\t\t###################################################"
\t\t#WelcomeToStudentEnrollmentManagementSystem#"
\t\t##"
\t\t#InThisSystem,YouMayManageStudents'
#"
\t\t#EnrollmentStatus,SuchAsRegistering,#"
\t\t#Modifying,DeletingAndDoingBasicStatistics#"
\t\t#ThisSystemProvidesADialogue-BasedMenu#"
\t\t#PressAnyKeyToContinue...#"
pause();
voidmenuRegister(){
PleaseInputNumber,Name,Gender,Age,NativePlace,Department,Major,Class,Status.SeparateBySpace,EndWithAnyKey"
StringNumber,Name,GenderStr,NativePlace,Department,Major,Class,statusStr;
scanf("
%s%s%s%d%s%s%s%s%s"
Number,Name,GenderStr,&
age,NativePlace,Department,Major,Class,statusStr);
if(registerStudent(Number,Name,strupr(GenderStr)=="
MALE"
?
Male:
Female,age,NativePlace,Department,Major,Class,stoe(statusStr))==-1){
puts("
StudentExist!
PressAnyKeyToMainMenu"
fflush(stdin);
pause();
voidmenuModify(){
StringNumber,Name,GenderStr,NativePlace,Department,Major,Class,StatusStr;
Number,Name,GenderStr,age,NativePlace,Department,Major,Class,StatusStr);
if(modifyStudent(Number,Name,strupr(GenderStr)=="
male"
Female,age,NativePlace,Department,Major,Class,stoe(StatusStr))==-1){
StudentDoesn'
tExist!
voidmenuDelete(){
printf("
PleaseInputNumber:
StringNumber;
%s"
Number);
if(deleteStudent(Number)==-1){
voidmenuSearch(){
Student*s=getStudent(Number);
if(s==NULL){
return;
putStudent(s,stdout);
fflush(stdin);
voidmenuAllByNumber(){
sortByNumber();
putAll(stdout);
\nPressAnyKeyToMainMenu"
system("
pause>
voidmenuAllByMajor(){
sortByMajor();
voidmenuStatus(){
EnrollmentStatusForStudentNo.%s:
number,StatusStr[s->
voidmenuQuit(){
AreYouSureToQuit?
(Y/N,Default=N)"
charresponse;
%c"
&
response);
if(response!
='
y'
&
&
response!
Y'
)return;
SaveCurrentDatatoFile?
(Y/N,Default=Y)"
n'
N'
){
printf("
FileName:
StringfileName;
scanf("
%s"
fileName);
FILE*f=fopen(fileName,"
w"
putAll(f);
fclose(f);
DataSavedto\"
%s\"
exit(0);
voidmenuMain(){
students=NULL;
while
(1){
clrscr();
StudentEnrollmentManagementSystem\n"
1.RegisterNewStudent\n"
2.ModifyExistingStudent\n"
3.DeleteExistingStudent\n"
4.