object c 学生信息管理系统

//  main.m
//  StuMIS

#import <Foundation/Foundation.h>
#import "Student.h"
#import "StuMIS.h"
int main(int argc, const char * argv[])
{

    @autoreleasepool {
     printf("欢迎进入学生信息管理系统\n");
     printf("pk国际2013,@copyright2013-2014\n\n");
        char c;
        StuMIS * sm=[[StuMIS alloc]init];
        while (YES) {
            printf("\n1 添加学生");
            printf("\n2 打印所有学生");
            printf("\n3 删除学生");
            printf("\n4 查找学生");
            printf("\n5 修改学生");
            printf("\n6 保存学生");
            printf("\n7 读取学生");
            printf("\n8 退出");
            scanf(" %c",&c);
            switch (c) {
                case '1':
                {Student * tmp=[[Student alloc]init];
                [tmp inputStudent];
                [sm addNewStu:tmp];
                }
                    break;
                case '2':
                    [sm printAllstu];
                    break;
                case '3':
                { int num;
                  printf("\n请输入学号");
                  scanf(" %d",&num);

                  [sm deleteStu:num];
                }
                    break;
                case '4':
                {int num;
                    printf("\n请输入学号");
                    scanf(" %d",&num);
                    Student * tmp;
                    tmp=[sm findStu:num];
                    [tmp printInfo];
                }
                    break;
                case '5':
                {   int num;
                    printf("\n请输入学号");
                    scanf(" %d",&num);
                    Student * tmp;
                    tmp=[sm findStu:num];
                    [tmp inputStudent];
                }
                    break;
                case '6':
                    [sm saveStu];
                    break;
                case '7':
                    [sm readStu];
                    break;
                case '8':
                    return 0;
                    break;
                default:
                    break;
            }
       
        }
   
    }
    return 0;
}
//
//  Student.h
//  StuMIS

#import <Foundation/Foundation.h>

@interface Student : NSObject<NSCoding>
{   NSString * name;
    int number;
    int age;
    int score;
}
@property NSString * name;
@property int number;
@property int age;
@property int score;
-(void)inputStudent;
-(void)printInfo;
-(void)modify:(Student *) stu;
@end

//  Student.m
#import "Student.h"

@implementation Student
@synthesize name;
@synthesize number;
@synthesize age;
@synthesize score;
//输入学生信息
-(void)inputStudent{
    printf("\n请输入学号 姓名 年龄 成绩\n");
    char nam[20];
    scanf("%d %s %d %d",&number,nam,&age,&score);
    name=[NSString stringWithFormat:@"%s",nam];
}
//打印学生信息
-(void)printInfo{
    printf("\n学号%d 姓名%s 年龄%d 成绩%d",number,[name UTF8String],age,score);
   
}
//修改信息
-(void)modify:(Student *) stu{
    self.name=stu.name;
    self.age=stu.age;
    self.score=stu.score;
}

-(void)encodeWithCoder:(NSCoder *)aCoder
{   [aCoder encodeInt:number forKey:@"number"];
    [aCoder encodeInt:age forKey:@"age"];
    [aCoder encodeObject:name forKey:@"name"];
    [aCoder encodeInt:score forKey:@"score"];
}
-(id)initWithCoder:(NSCoder *)aDecoder
{
    if (self=[super init]) {
        self.number=[aDecoder decodeIntForKey:@"number"];
        self.age=[aDecoder decodeIntForKey:@"age"];
        self.name=[aDecoder decodeObjectForKey:@"name"];
        self.score=[aDecoder decodeIntForKey:@"score"];
        } 
        return self;
}
@end
//
//  StuMIS.h
//  StuMIS

#import <Foundation/Foundation.h>
#import "Student.h"
@interface StuMIS : NSObject
{
    NSMutableArray * allStu;//保存所有学生
}
-(id)init;
-(void)addNewStu:(Student *)stu;
-(void)printAllstu;
-(Student *)findStu:(int)num;
-(void)deleteStu:(int)num;
-(void)saveStu;
-(void)readStu;
@end
//
//  StuMIS.m

#import "StuMIS.h"
@implementation StuMIS
//初始化
-(id)init{
 if(self=[super init])
 {
 allStu=[[NSMutableArray alloc]init];
 }else
 {
 return nil;
 }
    return self;
}
//添加学生信息
-(void)addNewStu:(Student *)stu{
    [allStu addObject:stu];
}
//打印所有学生信息
-(void)printAllstu{
    for(int i=0;i<[allStu count];i++)
    { Student * nows=[allStu objectAtIndex:i];
        [nows printInfo];
    }
}
//按学号查找学生信息
-(Student *)findStu:(int)num{
    for(int i=0;i<[allStu count];i++)
        { Student * nows=[allStu objectAtIndex:i];
            if(nows.number==num){
                return nows;
            }
        }
    return nil;
}
//删除学生信息
-(void)deleteStu:(int)num{
    for(int i=0;i<[allStu count];i++)
        { Student * nows=[allStu objectAtIndex:i];
            if(nows.number==num){
                [allStu removeObjectAtIndex:i];
                return;
            }
        }

}
//保存学生信息
-(void)saveStu{
    NSData *data1=[[NSData alloc]init];
    data1=[NSKeyedArchiver archivedDataWithRootObject:allStu];
    [data1 writeToFile:@"//Users//huangzhidong//Desktop//stud.txt" atomically:YES];
    NSLog(@"保存成功");
}
//读取学生信息
-(void)readStu{
    [allStu removeAllObjects];
     NSData *data2=[NSData dataWithContentsOfFile:@"//Users//huangzhidong//Desktop//stud.txt"];
NSArray *a=[NSKeyedUnarchiver unarchiveObjectWithData:data2];
    [allStu addObjectsFromArray:a];
   
        NSLog(@"读取成功");
}
@end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用C语言配合图形库来开发学生成绩管理系统的图形界面。以下是一个简单的示例,使用了C语言和GTK+图形库: ```c #include <gtk/gtk.h> // 函数原型 void on_button_clicked(GtkButton *button, gpointer user_data); void on_window_destroy(GtkWidget *window, gpointer user_data); int main(int argc, char *argv[]) { // 初始化GTK+ gtk_init(&argc, &argv); // 创建窗口和容器 GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); GtkWidget *vbox = gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(window), vbox); // 创建标签、文本框和按钮 GtkWidget *label = gtk_label_new("学生成绩管理系统"); GtkWidget *entry = gtk_entry_new(); GtkWidget *button = gtk_button_new_with_label("保存"); // 添加控件到容器 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0); // 连接信号与槽函数 g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(on_button_clicked), entry); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(on_window_destroy), NULL); // 显示窗口和控件 gtk_widget_show_all(window); // 主事件循环 gtk_main(); return 0; } // 按钮点击事件处理函数 void on_button_clicked(GtkButton *button, gpointer user_data) { const gchar *text = gtk_entry_get_text(GTK_ENTRY(user_data)); g_print("保存了学生成绩: %s\n", text); } // 窗口关闭事件处理函数 void on_window_destroy(GtkWidget *window, gpointer user_data) { gtk_main_quit(); } ``` 以上示例使用了GTK+图形库来创建窗口、标签、文本框和按钮,并使用回调函数处理按钮点击事件和窗口关闭事件。你可以根据需要进行修改和扩展,以实现你的学生成绩管理系统的图形界面。记得在编译时链接GTK+库,例如使用以下命令编译: ``` gcc -o score_management score_management.c `pkg-config --cflags --libs gtk+-2.0` ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值